aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/command
diff options
context:
space:
mode:
authorOfek Lev <ofekmeister@gmail.com>2020-06-14 12:58:52 -0400
committerOfek Lev <ofekmeister@gmail.com>2020-06-14 13:42:57 -0400
commit01121d057bea0128c34a92813c51ba3ec4902fce (patch)
treea1eb624750b77620d37328ae805eb8c8c5cfd994 /setuptools/command
parent74de4e985eda49e38ece5805e05197dd4d2d9c8a (diff)
downloadexternal_python_setuptools-01121d057bea0128c34a92813c51ba3ec4902fce.tar.gz
external_python_setuptools-01121d057bea0128c34a92813c51ba3ec4902fce.tar.bz2
external_python_setuptools-01121d057bea0128c34a92813c51ba3ec4902fce.zip
Decrease start-up time of editable-installed entry points on newer versions of Python
Diffstat (limited to 'setuptools/command')
-rw-r--r--setuptools/command/easy_install.py43
1 files changed, 30 insertions, 13 deletions
diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
index 5a9576ff..a82b1655 100644
--- a/setuptools/command/easy_install.py
+++ b/setuptools/command/easy_install.py
@@ -2070,19 +2070,36 @@ class ScriptWriter:
gui apps.
"""
- 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()
+ try:
+ from importlib.metadata import distribution # noqa: F401
+
+ template = textwrap.dedent(r"""
+ # EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r
+ __requires__ = %(spec)r
+ import re
+ import sys
+ from importlib.metadata import distribution
+
+ if __name__ == '__main__':
+ sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
+ for entry_point in distribution(%(spec)r).entry_points:
+ if entry_point.group == %(group)r and entry_point.name == %(name)r:
+ sys.exit(entry_point.load()())
+ """).lstrip() # noqa: E501
+ except ImportError:
+ 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
command_spec_class = CommandSpec