winipedia-utils 0.4.33__py3-none-any.whl → 0.4.34__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of winipedia-utils might be problematic. Click here for more details.

@@ -7,6 +7,7 @@ from typing import Any
7
7
  import winipedia_utils
8
8
  from winipedia_utils.modules.module import make_obj_importpath
9
9
  from winipedia_utils.modules.package import get_src_package
10
+ from winipedia_utils.projects.poetry.config import PyprojectConfigFile
10
11
  from winipedia_utils.text.config import YamlConfigFile
11
12
  from winipedia_utils.text.string import split_on_uppercase
12
13
 
@@ -149,7 +150,9 @@ class Workflow(YamlConfigFile):
149
150
  {
150
151
  "name": "Setup Python",
151
152
  "uses": "actions/setup-python@main",
152
- "with": {"python-version": "3.x"},
153
+ "with": {
154
+ "python-version": PyprojectConfigFile.get_latest_possible_python_version() # noqa: E501
155
+ },
153
156
  }
154
157
  )
155
158
  steps.append(
@@ -3,6 +3,9 @@
3
3
  from pathlib import Path
4
4
  from typing import Any, cast
5
5
 
6
+ from packaging.specifiers import SpecifierSet
7
+ from packaging.version import Version
8
+
6
9
  from winipedia_utils.modules.package import get_src_package, make_name_from_package
7
10
  from winipedia_utils.testing.convention import TESTS_PACKAGE_NAME
8
11
  from winipedia_utils.text.config import ConfigFile, TomlConfigFile
@@ -130,6 +133,24 @@ class PyprojectConfigFile(TomlConfigFile):
130
133
  """Get the main author name."""
131
134
  return cls.get_main_author()["name"]
132
135
 
136
+ @classmethod
137
+ def get_latest_possible_python_version(cls) -> str:
138
+ """Get the latest possible python version."""
139
+ constraint = cls.load()["project"]["requires-python"]
140
+ spec = constraint.strip().strip('"').strip("'")
141
+ sset = SpecifierSet(spec)
142
+ # find upper bound specifiers
143
+ uppers = [Version(sp.version) for sp in sset if sp.operator in ("<", "<=")]
144
+ if uppers:
145
+ top = max(uppers)
146
+ # if strict "<", we might treat it as “one less” in minor
147
+ if any(sp.operator == "<" and Version(sp.version) == top for sp in sset):
148
+ # subtract one minor
149
+ return f"{top.major}.{top.minor - 1}"
150
+ return f"{top.major}.{top.minor}"
151
+ # no upper bound → “3.x”
152
+ return "3.x"
153
+
133
154
 
134
155
  class TypedConfigFile(ConfigFile):
135
156
  """Config file for py.typed."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: winipedia-utils
3
- Version: 0.4.33
3
+ Version: 0.4.34
4
4
  Summary: A package with many utility functions
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -15,7 +15,7 @@ winipedia_utils/git/github/repo/protect.py,sha256=_BtYRtGrZPPyR_CuFGkoPugCvuDib4
15
15
  winipedia_utils/git/github/repo/repo.py,sha256=OqoOfqDhe_Iik71dNqi4h3fGrMno33hSjk0bpNg3eZk,7865
16
16
  winipedia_utils/git/github/workflows/__init__.py,sha256=BPdntTwFEyBMJ6MyT7gddPHswvRdH9tsRtfK72VSV7Y,57
17
17
  winipedia_utils/git/github/workflows/base/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
18
- winipedia_utils/git/github/workflows/base/base.py,sha256=6QyRPUHaTjHOLcA3Le2qffcMEzjvI0wZMOc9y2MIGr0,9575
18
+ winipedia_utils/git/github/workflows/base/base.py,sha256=t2jYHVpvhCaKpaZI9Yhr8YJEp-2D_G4VUJKVVYIUolc,9749
19
19
  winipedia_utils/git/github/workflows/health_check.py,sha256=cPjSJxNy9h0bKNK69crmcERACx4VGR2XytyZ1JM_wMQ,1567
20
20
  winipedia_utils/git/github/workflows/publish.py,sha256=TPbSp5QH2vVl55UdqE_kjf1HIkdubcgqWlkLjWFX5EA,1378
21
21
  winipedia_utils/git/github/workflows/release.py,sha256=hnMT12J17LmFpPCTzva-lW95MOFDQ-1bAOrTVCxeaR8,1301
@@ -45,7 +45,7 @@ winipedia_utils/os/__init__.py,sha256=cBRq8hWhaWvYeC3cSBYL6Y70kM9COQWHj8vVxxSadI
45
45
  winipedia_utils/os/os.py,sha256=K_5FD1sC1h5aSdtqXAG0uq90sSweLYLkgkRPQS0Jfxg,1768
46
46
  winipedia_utils/projects/__init__.py,sha256=_iYHzUcTPmutpsExPDcMF9OQDgnz-kTSuWens9iP9bI,52
47
47
  winipedia_utils/projects/poetry/__init__.py,sha256=tbvV3wYd3H39hjjlKbF84Irj4hYgv1A7KWyXdCQzFro,59
48
- winipedia_utils/projects/poetry/config.py,sha256=dei-jinjcwme6oAMO1Wxk7_O7Ac6s0g6PXBglfsTvcw,5296
48
+ winipedia_utils/projects/poetry/config.py,sha256=B4y92K17TbyCZhwYpebSSR92f6V7vJ2CslIxtOST7JQ,6189
49
49
  winipedia_utils/projects/poetry/poetry.py,sha256=JC-N7NjYCHxUSCGbdpvQltJDabfvTIKLgd62d9XhACo,1174
50
50
  winipedia_utils/projects/project.py,sha256=rirg4xCIOTI6w7cLWufAVHAix7FGicvaCd9OnZQP8dA,521
51
51
  winipedia_utils/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
@@ -87,7 +87,7 @@ winipedia_utils/testing/tests/conftest.py,sha256=BLgUJtLecOwuEsIyJ__0buqovd5AhiG
87
87
  winipedia_utils/text/__init__.py,sha256=j2bwtK6kyeHI6SnoBjpRju0C1W2n2paXBDlNjNtaUxA,48
88
88
  winipedia_utils/text/config.py,sha256=lt5QIXS2cY_aS0emZztcG6nRYwiqFKe0lGEq6msMF5E,7434
89
89
  winipedia_utils/text/string.py,sha256=yXmwOab5hXyVQG1NwlWDpy2prj0U7Vb2F5HKLT2Y77Q,3382
90
- winipedia_utils-0.4.33.dist-info/METADATA,sha256=Js4VMX8o1DB7mTF_pfcyb3sT4dbeUQDI49fo1r-EzZc,13344
91
- winipedia_utils-0.4.33.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
92
- winipedia_utils-0.4.33.dist-info/licenses/LICENSE,sha256=o316mE2gGzd__JT69p7S_zlOmKiHh8YjpImCCcWyTvM,1066
93
- winipedia_utils-0.4.33.dist-info/RECORD,,
90
+ winipedia_utils-0.4.34.dist-info/METADATA,sha256=aIHqDFVCXBySf0btbjzd0AeXgLfPe2dWQlEGAugpqCg,13344
91
+ winipedia_utils-0.4.34.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
92
+ winipedia_utils-0.4.34.dist-info/licenses/LICENSE,sha256=o316mE2gGzd__JT69p7S_zlOmKiHh8YjpImCCcWyTvM,1066
93
+ winipedia_utils-0.4.34.dist-info/RECORD,,