Skip to content

Commit

Permalink
Merge pull request #2963 from gotmax23/load_entry
Browse files Browse the repository at this point in the history
replace pkg_resources.load_entry_point
  • Loading branch information
benoitc committed May 13, 2023
2 parents b7242be + 7f480da commit 59bbcdc
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 10 deletions.
1 change: 1 addition & 0 deletions THANKS
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ Stephen DiCato <Locker537@gmail.com>
Stephen Holsapple <sholsapp@gmail.com>
Steven Cummings <estebistec@gmail.com>
Sébastien Fievet <zyegfryed@gmail.com>
Tal Einat <532281+taleinat@users.noreply.github.com>
Talha Malik <talham7391@hotmail.com>
TedWantsMore <TedWantsMore@gmx.com>
Teko012 <112829523+Teko012@users.noreply.github.com>
Expand Down
18 changes: 15 additions & 3 deletions gunicorn/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,10 @@
import traceback
import warnings

import pkg_resources
try:
import importlib.metadata as importlib_metadata
except ImportError:
import importlib_metadata

from gunicorn.errors import AppImportError
from gunicorn.workers import SUPPORTED_WORKERS
Expand Down Expand Up @@ -54,6 +57,15 @@ def _setproctitle(title):
pass


def load_entry_point(distribution, group, name):
dist_obj = importlib_metadata.distribution(distribution)
eps = [ep for ep in dist_obj.entry_points
if ep.group == group and ep.name == name]
if not eps:
raise ImportError("Entry point %r not found" % ((group, name),))
return eps[0].load()


def load_class(uri, default="gunicorn.workers.sync.SyncWorker",
section="gunicorn.workers"):
if inspect.isclass(uri):
Expand All @@ -68,7 +80,7 @@ def load_class(uri, default="gunicorn.workers.sync.SyncWorker",
name = default

try:
return pkg_resources.load_entry_point(dist, section, name)
return load_entry_point(dist, section, name)
except Exception:
exc = traceback.format_exc()
msg = "class uri %r invalid or not found: \n\n[%s]"
Expand All @@ -85,7 +97,7 @@ def load_class(uri, default="gunicorn.workers.sync.SyncWorker",
break

try:
return pkg_resources.load_entry_point(
return load_entry_point(
"gunicorn", section, uri
)
except Exception:
Expand Down
2 changes: 1 addition & 1 deletion gunicorn/workers/geventlet.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
except ImportError:
raise RuntimeError("eventlet worker requires eventlet 0.24.1 or higher")
else:
from pkg_resources import parse_version
from packaging.version import parse as parse_version
if parse_version(eventlet.__version__) < parse_version('0.24.1'):
raise RuntimeError("eventlet worker requires eventlet 0.24.1 or higher")

Expand Down
2 changes: 1 addition & 1 deletion gunicorn/workers/ggevent.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
except ImportError:
raise RuntimeError("gevent worker requires gevent 1.4 or higher")
else:
from pkg_resources import parse_version
from packaging.version import parse as parse_version
if parse_version(gevent.__version__) < parse_version('1.4'):
raise RuntimeError("gevent worker requires gevent 1.4 or higher")

Expand Down
7 changes: 2 additions & 5 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,8 @@ def run_tests(self):


install_requires = [
# We depend on functioning pkg_resources.working_set.add_entry() and
# pkg_resources.load_entry_point(). These both work as of 3.0 which
# is the first version to support Python 3.4 which we require as a
# floor.
'setuptools>=3.0',
'importlib_metadata; python_version<"3.8"',
'packaging',
]

extras_require = {
Expand Down

0 comments on commit 59bbcdc

Please sign in to comment.