aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2020-06-15 16:34:22 -0400
committerJason R. Coombs <jaraco@jaraco.com>2020-06-15 16:34:22 -0400
commit9bb11490f57d8d77cd789e9719588a8603dc375b (patch)
treeb5dcbe8c9568600bb31f182dc3d38f17541b1762
parent1d841d78acd267ff2599a8bd9a90e264f233463a (diff)
downloadexternal_python_setuptools-9bb11490f57d8d77cd789e9719588a8603dc375b.tar.gz
external_python_setuptools-9bb11490f57d8d77cd789e9719588a8603dc375b.tar.bz2
external_python_setuptools-9bb11490f57d8d77cd789e9719588a8603dc375b.zip
Unify the entry point template.
-rw-r--r--setuptools/command/easy_install.py54
1 files changed, 29 insertions, 25 deletions
diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
index 2563f313..81526b9a 100644
--- a/setuptools/command/easy_install.py
+++ b/setuptools/command/easy_install.py
@@ -2070,33 +2070,37 @@ class ScriptWriter:
gui apps.
"""
- if sys.version_info >= (3, 8):
- template = textwrap.dedent(r"""
- # EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r
- import re
- import sys
+ template = textwrap.dedent(r"""
+ # EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r
+ import re
+ import sys
+
+ try:
from importlib.metadata import distribution
+ except ImportError:
+ try:
+ from importlib_metadata import distribution
+ except ImportError:
+ from pkg_resources import load_entry_point
- if __name__ == '__main__':
- sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
- for entry_point in distribution(%(spec)r.split('==')[0]).entry_points:
- if entry_point.group == %(group)r and entry_point.name == %(name)r:
- sys.exit(entry_point.load()())
- """).lstrip() # noqa: E501
- else:
- template = textwrap.dedent(r"""
- # EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r
- __requires__ = %(spec)r
- import re
- import sys
- from pkg_resources import load_entry_point
-
- if __name__ == '__main__':
- sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
- sys.exit(
- load_entry_point(%(spec)r, %(group)r, %(name)r)()
- )
- """).lstrip() # noqa: E501
+
+ def importlib_load_entry_point(spec, group, name):
+ dist_name, _, _ = spec.partition('==')
+ matches = (
+ entry_point
+ for entry_point in distribution(dist_name).entry_points
+ if entry_point.group == group and entry_point.name == name
+ )
+ return next(matches).load()
+
+
+ globals().setdefault('load_entry_point', importlib_load_entry_point)
+
+
+ if __name__ == '__main__':
+ sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
+ sys.exit(load_entry_point(%(spec)r, %(group)r, %(name)r)())
+ """).lstrip()
command_spec_class = CommandSpec