diff --git a/jieba/_compat.py b/jieba/_compat.py index 4ea3f7ac..4347ba06 100644 --- a/jieba/_compat.py +++ b/jieba/_compat.py @@ -15,13 +15,14 @@ def setLogLevel(log_level): check_paddle_install = {'is_paddle_installed': False} try: - import pkg_resources + from importlib import resources - get_module_res = lambda *res: pkg_resources.resource_stream(__name__, - os.path.join(*res)) + get_module_res = lambda f: str(resources.files('jieba').joinpath(f)) except ImportError: - get_module_res = lambda *res: open(os.path.normpath(os.path.join( - os.getcwd(), os.path.dirname(__file__), *res)), 'rb') + # backward compatibility (Python 3.8 or below) + # install this backport via `pip install importlib_resources` if needed + import importlib_resources + get_module_res = lambda f: str(importlib_resources.files('jieba').joinpath(f)) def enable_paddle(): @@ -51,27 +52,17 @@ def enable_paddle(): "Now, back to jieba basic cut......") -PY2 = sys.version_info[0] == 2 default_encoding = sys.getfilesystemencoding() -if PY2: - text_type = unicode - string_types = (str, unicode) - - iterkeys = lambda d: d.iterkeys() - itervalues = lambda d: d.itervalues() - iteritems = lambda d: d.iteritems() - -else: - text_type = str - string_types = (str,) - xrange = range - - iterkeys = lambda d: iter(d.keys()) - itervalues = lambda d: iter(d.values()) - iteritems = lambda d: iter(d.items()) +# Dropped Python 2 support +text_type = str +string_types = (str,) +xrange = range +iterkeys = lambda d: iter(d.keys()) +itervalues = lambda d: iter(d.values()) +iteritems = lambda d: iter(d.items()) def strdecode(sentence): if not isinstance(sentence, text_type):