summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--setuptools/command/egg_info.py39
1 files changed, 23 insertions, 16 deletions
diff --git a/setuptools/command/egg_info.py b/setuptools/command/egg_info.py
index 473b7aa4..b98b84d4 100644
--- a/setuptools/command/egg_info.py
+++ b/setuptools/command/egg_info.py
@@ -715,23 +715,30 @@ def write_arg(cmd, basename, filename, force=False):
cmd.write_or_delete_file(argname, filename, value, force)
-def write_entries(cmd, basename, filename):
- ep = cmd.distribution.entry_points
-
- if isinstance(ep, str) or ep is None:
- data = ep
- else:
- def to_str(contents):
- if isinstance(contents, str):
- return contents
- eps = EntryPoint.parse_group('anything', contents)
- return '\n'.join(sorted(map(str, eps.values())))
- data = ''.join(
- f'[{section}]\n{to_str(contents)}\n\n'
- for section, contents in sorted(ep.items())
- )
+@functools.singledispatch
+def entry_points_definition(eps):
+ """
+ Given a Distribution.entry_points, produce a multiline
+ string definition of those entry points.
+ """
+ def to_str(contents):
+ if isinstance(contents, str):
+ return contents
+ parsed = EntryPoint.parse_group('anything', contents)
+ return '\n'.join(sorted(map(str, parsed.values())))
+ return ''.join(
+ f'[{section}]\n{to_str(contents)}\n\n'
+ for section, contents in sorted(eps.items())
+ )
- cmd.write_or_delete_file('entry points', filename, data, True)
+
+entry_points_definition.register(type(None), lambda x: x)
+entry_points_definition.register(str, lambda x: x)
+
+
+def write_entries(cmd, basename, filename):
+ defn = entry_points_definition(cmd.distribution.entry_points)
+ cmd.write_or_delete_file('entry points', filename, defn, True)
def get_pkg_info_revision():