Skip to content

Commit

Permalink
GH-740: optimize imports (#741)
Browse files Browse the repository at this point in the history
  • Loading branch information
rain1024 committed Jun 22, 2024
1 parent d8d2159 commit 7b35824
Showing 1 changed file with 24 additions and 20 deletions.
44 changes: 24 additions & 20 deletions underthesea/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@
# -*- coding: utf-8 -*-
import os
import sys
from functools import lru_cache


__author__ = """Vu Anh"""
__email__ = 'anhv.ict91@gmail.com'

# Check python version
try:
version_info = sys.version_info
if version_info < (3, 6, 0):
raise RuntimeError("underthesea requires Python 3.6 or later")
if version_info < (3, 7, 0):
raise RuntimeError("underthesea requires Python 3.y or later")
except Exception:
pass

Expand Down Expand Up @@ -40,33 +42,35 @@
from .pipeline.chunking import chunk
from .pipeline.ner import ner

try:
from underthesea.pipeline.classification import classify
except Exception:
pass
try:
from underthesea.pipeline.sentiment import sentiment
except Exception:
pass
optional_imports = {
'classify': 'underthesea.pipeline.classification',
'sentiment': 'underthesea.pipeline.sentiment',
'lang_detect': 'underthesea.pipeline.lang_detect',
'dependency_parse': 'underthesea.pipeline.dependency_parse'
}

try:
from underthesea.pipeline.lang_detect import lang_detect
except Exception as e:
print(e)

@lru_cache(maxsize=None)
def get_optional_import(module_name, object_name):
try:
module = __import__(module_name, fromlist=[object_name])
return getattr(module, object_name)
except ImportError:
return None

# lazy loading
def dependency_parse(*args, **kwargs):
from underthesea.pipeline.dependency_parse import dependency_parse
return dependency_parse(*args, **kwargs)

for name, module in optional_imports.items():
globals()[name] = get_optional_import(module, name)

__all__ = [
'sent_tokenize',
'text_normalize',
'word_tokenize', 'pos_tag', 'chunk',
'word_tokenize',
'pos_tag',
'chunk',
'ner',
'lang_detect',
'classify', 'sentiment',
'classify',
'sentiment',
'dependency_parse'
]

0 comments on commit 7b35824

Please sign in to comment.