summaryrefslogtreecommitdiff
path: root/setuptools/dist.py
diff options
context:
space:
mode:
authorPaul Ganssle <git@m.ganssle.io>2021-10-15 14:04:45 -0400
committerPaul Ganssle <git@m.ganssle.io>2021-10-15 14:08:48 -0400
commit816cc9a42a3649387ff3de13b0239ff1680fec5f (patch)
treeba282b4f0c35cbebb7d6dd2cf9d894b5cdf308dc /setuptools/dist.py
parent3dd1af099fc1379935a975a2a5f1561870c9dc92 (diff)
downloadpython-setuptools-git-816cc9a42a3649387ff3de13b0239ff1680fec5f.tar.gz
WIP: Reject packages without required metadata
This needs tests and probably formatting stuff.
Diffstat (limited to 'setuptools/dist.py')
-rw-r--r--setuptools/dist.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/setuptools/dist.py b/setuptools/dist.py
index 8e2111a5..84c06f93 100644
--- a/setuptools/dist.py
+++ b/setuptools/dist.py
@@ -466,6 +466,29 @@ class Distribution(_Distribution):
)
self._finalize_requires()
+ def _validate_metadata(self):
+ required = ["name", "version"]
+ missing = []
+
+ for req_attr in required:
+ if getattr(self.metadata, req_attr) is None:
+ missing.append(req_attr)
+
+ if missing:
+ if len(missing) == 1:
+ message = "%s attribute" % missing[0]
+ else:
+ message = "%s and %s attributes" % (", ".join(missing[:-1]),
+ missing[-1])
+ raise DistutilsSetupError(
+ "Required package metadata is missing: please supply the %s." % message
+ )
+
+ def run_commands(self):
+ self._validate_metadata()
+ super().run_commands()
+
+
def _set_metadata_defaults(self, attrs):
"""
Fill-in missing metadata fields not supported by distutils.