|
6 | 6 | from typing import TYPE_CHECKING |
7 | 7 |
|
8 | 8 | from packaging.utils import canonicalize_name |
| 9 | +from packaging.version import Version |
9 | 10 |
|
10 | 11 | from variantlib.constants import VARIANT_ABI_DEPENDENCY_NAMESPACE |
11 | 12 | from variantlib.models.variant import VariantDescription |
@@ -34,9 +35,11 @@ def _normalize_package_name(name: str) -> str: |
34 | 35 | return canonicalize_name(name).replace("-", "_") |
35 | 36 |
|
36 | 37 |
|
37 | | -def _normalize_package_version(version: str) -> str: |
38 | | - # VALIDATION_VALUE_REGEX does not accepts "+" |
39 | | - return version.split("+", maxsplit=1)[0] |
| 38 | +def _generate_version_matches(version: str) -> Generator[str]: |
| 39 | + vspec = Version(version) |
| 40 | + yield f"{vspec.major}" |
| 41 | + yield f"{vspec.major}.{vspec.minor}" |
| 42 | + yield f"{vspec.major}.{vspec.minor}.{vspec.micro}" |
40 | 43 |
|
41 | 44 |
|
42 | 45 | def filter_variants( |
@@ -169,25 +172,27 @@ def sort_and_filter_supported_variants( |
169 | 172 | ) |
170 | 173 | continue |
171 | 174 |
|
172 | | - supported_vprops.append( |
| 175 | + supported_vprops.extend( |
173 | 176 | VariantProperty( |
174 | 177 | namespace=VARIANT_ABI_DEPENDENCY_NAMESPACE, |
175 | 178 | feature=_normalize_package_name(pkg_name), |
176 | | - value=_normalize_package_version(pkg_version), |
| 179 | + value=_ver, |
177 | 180 | ) |
| 181 | + for _ver in _generate_version_matches(pkg_version) |
178 | 182 | ) |
179 | 183 |
|
180 | 184 | # 2. Automatically populate from the current python environment |
181 | 185 | packages = [ |
182 | 186 | (dist.metadata["Name"], dist.version) for dist in metadata.distributions() |
183 | 187 | ] |
184 | 188 | for pkg_name, pkg_version in sorted(packages): |
185 | | - supported_vprops.append( |
| 189 | + supported_vprops.extend( |
186 | 190 | VariantProperty( |
187 | 191 | namespace=VARIANT_ABI_DEPENDENCY_NAMESPACE, |
188 | 192 | feature=_normalize_package_name(pkg_name), |
189 | | - value=_normalize_package_version(pkg_version), |
| 193 | + value=_ver, |
190 | 194 | ) |
| 195 | + for _ver in _generate_version_matches(pkg_version) |
191 | 196 | ) |
192 | 197 |
|
193 | 198 | # 3. Adding `VARIANT_ABI_DEPENDENCY_NAMESPACE` at the back of`namespace_priorities` |
|
0 commit comments