diff options
| author | Paul Ganssle <git@m.ganssle.io> | 2021-10-15 14:04:45 -0400 |
|---|---|---|
| committer | Paul Ganssle <git@m.ganssle.io> | 2021-10-15 14:08:48 -0400 |
| commit | 816cc9a42a3649387ff3de13b0239ff1680fec5f (patch) | |
| tree | ba282b4f0c35cbebb7d6dd2cf9d894b5cdf308dc /setuptools/dist.py | |
| parent | 3dd1af099fc1379935a975a2a5f1561870c9dc92 (diff) | |
| download | python-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.py | 23 |
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. |
