Commit 4918afcc authored by Jason R. Coombs's avatar Jason R. Coombs Committed by GitHub

Merge pull request #2197 from pypa/feature/unified-entry-point

Unify the entry point template.
parents 1d841d78 9db4553f
Console script wrapper for editable installs now has a unified template and honors importlib_metadata if present for faster script execution on older Pythons.
...@@ -2070,33 +2070,37 @@ class ScriptWriter: ...@@ -2070,33 +2070,37 @@ class ScriptWriter:
gui apps. gui apps.
""" """
if sys.version_info >= (3, 8): template = textwrap.dedent(r"""
template = textwrap.dedent(r""" # EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r
# EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r import re
import re import sys
import sys
try:
from importlib.metadata import distribution 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]) def importlib_load_entry_point(spec, group, name):
for entry_point in distribution(%(spec)r.split('==')[0]).entry_points: dist_name, _, _ = spec.partition('==')
if entry_point.group == %(group)r and entry_point.name == %(name)r: matches = (
sys.exit(entry_point.load()()) entry_point
""").lstrip() # noqa: E501 for entry_point in distribution(dist_name).entry_points
else: if entry_point.group == group and entry_point.name == name
template = textwrap.dedent(r""" )
# EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r return next(matches).load()
__requires__ = %(spec)r
import re
import sys globals().setdefault('load_entry_point', importlib_load_entry_point)
from pkg_resources import load_entry_point
if __name__ == '__main__': if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit( sys.exit(load_entry_point(%(spec)r, %(group)r, %(name)r)())
load_entry_point(%(spec)r, %(group)r, %(name)r)() """).lstrip()
)
""").lstrip() # noqa: E501
command_spec_class = CommandSpec command_spec_class = CommandSpec
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment