mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-24 21:01:52 +08:00
Allow third-party versions to end in asterisk (#6129)
This is a first step towards #6095, where x.y and x.y.* are treated as equivalent. The next step is to update existing versions to use x.y.* where applicable and then treat x.y differently. Co-authored-by: Akuli <akuviljanen17@gmail.com>
This commit is contained in:
@@ -95,15 +95,17 @@ The metadata file describes the stubs package using the
|
||||
[TOML file format](https://toml.io/en/). Currently, the following keys are
|
||||
supported:
|
||||
|
||||
* `version`: The latest version of the library that the stubs support.
|
||||
* `version`: The versions of the library that the stubs support.
|
||||
For libraries that reflect API changes in the version number only
|
||||
the parts indicating the API level should be specified. In the case
|
||||
of [Semantic Versioning](https://semver.org/) that is the first two
|
||||
components. When the stubs are updated to a newer version
|
||||
the parts indicating the API level should be specified, with an
|
||||
asterisk representing the API-independent part. In the case
|
||||
of [Semantic Versioning](https://semver.org/), this version could look
|
||||
like this: `2.7.*`. When the stubs are updated to a newer version
|
||||
of the library, the version of the stub should be bumped (note that
|
||||
previous versions are still available on PyPI). Some legacy stubs are
|
||||
marked with version `0.1`, indicating that their supported version is
|
||||
unknown and needs to be updated.
|
||||
unknown and needs to be updated. Other stubs don't use the asterisk
|
||||
to denote the API-independent part.
|
||||
* `python2` (default: `false`): If set to `true`, the top-level stubs
|
||||
support both Python 2 and Python 3.
|
||||
* `requires` (optional): A list of other stub packages or packages with type
|
||||
|
||||
@@ -169,7 +169,7 @@ def check_metadata():
|
||||
assert "version" in data, f"Missing version for {distribution}"
|
||||
version = data["version"]
|
||||
msg = f"Unsupported Python version {version}"
|
||||
assert re.match(r"^\d+\.\d+(\.\d+)?$", version), msg
|
||||
assert re.match(r"^\d+(\.\d+)*(\.\*)?$", version), msg
|
||||
for key in data:
|
||||
assert key in metadata_keys, f"Unexpected key {key} for {distribution}"
|
||||
assert isinstance(data.get("python2", False), bool), f"Invalid python2 value for {distribution}"
|
||||
|
||||
@@ -47,9 +47,12 @@ def run_stubtest(dist: Path) -> None:
|
||||
pip_exe = str(venv_dir / "bin" / "pip")
|
||||
python_exe = str(venv_dir / "bin" / "python")
|
||||
|
||||
dist_version = metadata.get("version")
|
||||
if dist_version is None or dist_version == "0.1":
|
||||
dist_version = metadata["version"]
|
||||
assert isinstance(dist_version, str)
|
||||
if dist_version == "0.1":
|
||||
dist_req = dist.name
|
||||
elif dist_version.endswith(".*"):
|
||||
dist_req = f"{dist.name}=={dist_version}"
|
||||
else:
|
||||
dist_req = f"{dist.name}=={dist_version}.*"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user