pkg-about 2.3.0__tar.gz → 2.4.1__tar.gz

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.
Files changed (29) hide show
  1. {pkg_about-2.3.0 → pkg_about-2.4.1}/CHANGES.rst +5 -6
  2. {pkg_about-2.3.0/src/pkg_about.egg-info → pkg_about-2.4.1}/PKG-INFO +6 -7
  3. {pkg_about-2.3.0 → pkg_about-2.4.1}/README.rst +1 -1
  4. {pkg_about-2.3.0 → pkg_about-2.4.1}/noxfile.py +19 -17
  5. {pkg_about-2.3.0 → pkg_about-2.4.1}/pyproject.toml +18 -18
  6. {pkg_about-2.3.0 → pkg_about-2.4.1}/src/pkg_about/_about.py +1 -4
  7. {pkg_about-2.3.0 → pkg_about-2.4.1/src/pkg_about.egg-info}/PKG-INFO +6 -7
  8. pkg_about-2.4.1/src/pkg_about.egg-info/requires.txt +3 -0
  9. {pkg_about-2.3.0 → pkg_about-2.4.1}/tests/test_main.py +1 -5
  10. pkg_about-2.3.0/src/pkg_about.egg-info/requires.txt +0 -6
  11. {pkg_about-2.3.0 → pkg_about-2.4.1}/LICENSE +0 -0
  12. {pkg_about-2.3.0 → pkg_about-2.4.1}/MANIFEST.in +0 -0
  13. {pkg_about-2.3.0 → pkg_about-2.4.1}/docs/CHANGES.rst +0 -0
  14. {pkg_about-2.3.0 → pkg_about-2.4.1}/docs/README.rst +0 -0
  15. {pkg_about-2.3.0 → pkg_about-2.4.1}/docs/_static/.keep +0 -0
  16. {pkg_about-2.3.0 → pkg_about-2.4.1}/docs/_templates/.keep +0 -0
  17. {pkg_about-2.3.0 → pkg_about-2.4.1}/docs/conf.py +0 -0
  18. {pkg_about-2.3.0 → pkg_about-2.4.1}/docs/index.rst +0 -0
  19. {pkg_about-2.3.0 → pkg_about-2.4.1}/setup.cfg +0 -0
  20. {pkg_about-2.3.0 → pkg_about-2.4.1}/src/pkg_about/__about__.py +0 -0
  21. {pkg_about-2.3.0 → pkg_about-2.4.1}/src/pkg_about/__init__.py +0 -0
  22. {pkg_about-2.3.0 → pkg_about-2.4.1}/src/pkg_about/py.typed +0 -0
  23. {pkg_about-2.3.0 → pkg_about-2.4.1}/src/pkg_about.egg-info/SOURCES.txt +0 -0
  24. {pkg_about-2.3.0 → pkg_about-2.4.1}/src/pkg_about.egg-info/dependency_links.txt +0 -0
  25. {pkg_about-2.3.0 → pkg_about-2.4.1}/src/pkg_about.egg-info/top_level.txt +0 -0
  26. {pkg_about-2.3.0 → pkg_about-2.4.1}/src/pkg_about.egg-info/zip-safe +0 -0
  27. {pkg_about-2.3.0 → pkg_about-2.4.1}/tests/__init__.py +0 -0
  28. {pkg_about-2.3.0 → pkg_about-2.4.1}/tests/__main__.py +0 -0
  29. {pkg_about-2.3.0 → pkg_about-2.4.1}/tests/data/setup.cfg +0 -0
@@ -1,14 +1,13 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
- 2.3.0 (2026-03-30)
5
- ------------------
6
- - Setup update and improvement.
7
-
8
- 2.2.0 (2026-02-13)
4
+ 2.4.1 (2026-05-17)
9
5
  ------------------
6
+ - Added support for GraalPy 3.12
10
7
  - Added support for Python 3.15
11
- - Setup update (mainly dependencies).
8
+ - Dropped support for Python 3.10 (due to compatibility issues).
9
+ - Fix for nox 'lint' session.
10
+ - Setup update, fixes and improvement.
12
11
 
13
12
  2.1.2 (2026-01-27)
14
13
  ------------------
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pkg_about
3
- Version: 2.3.0
3
+ Version: 2.4.1
4
4
  Summary: Unified access to Python package metadata at runtime.
5
5
  Author-email: Adam Karpierz <adam@karpierz.net>
6
6
  Maintainer-email: Adam Karpierz <adam@karpierz.net>
@@ -20,7 +20,6 @@ Classifier: Natural Language :: Polish
20
20
  Classifier: Operating System :: OS Independent
21
21
  Classifier: Programming Language :: Python
22
22
  Classifier: Programming Language :: Python :: 3 :: Only
23
- Classifier: Programming Language :: Python :: 3.10
24
23
  Classifier: Programming Language :: Python :: 3.11
25
24
  Classifier: Programming Language :: Python :: 3.12
26
25
  Classifier: Programming Language :: Python :: 3.13
@@ -28,15 +27,15 @@ Classifier: Programming Language :: Python :: 3.14
28
27
  Classifier: Programming Language :: Python :: 3.15
29
28
  Classifier: Programming Language :: Python :: Implementation :: CPython
30
29
  Classifier: Programming Language :: Python :: Implementation :: PyPy
30
+ Classifier: Programming Language :: Python :: Implementation :: GraalPy
31
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
32
32
  Classifier: Typing :: Typed
33
- Requires-Python: <4.0.0,>=3.10.0
33
+ Requires-Python: <4.0.0,>=3.11.0
34
34
  Description-Content-Type: text/x-rst; charset=UTF-8
35
35
  License-File: LICENSE
36
- Requires-Dist: importlib-metadata>=4.6; python_full_version < "3.10.2"
37
36
  Requires-Dist: typing-extensions>=4.15.0
38
- Requires-Dist: packaging>=26.0.0
39
- Requires-Dist: build>=1.4.2
37
+ Requires-Dist: packaging>=26.2.0
38
+ Requires-Dist: build>=1.5.0
40
39
  Dynamic: license-file
41
40
 
42
41
  pkg_about
@@ -74,7 +73,7 @@ Installation
74
73
 
75
74
  Prerequisites:
76
75
 
77
- + Python 3.10 or higher
76
+ + Python 3.11 or higher
78
77
 
79
78
  * https://www.python.org/
80
79
 
@@ -33,7 +33,7 @@ Installation
33
33
 
34
34
  Prerequisites:
35
35
 
36
- + Python 3.10 or higher
36
+ + Python 3.11 or higher
37
37
 
38
38
  * https://www.python.org/
39
39
 
@@ -2,7 +2,7 @@
2
2
  # SPDX-License-Identifier: Zlib
3
3
 
4
4
  # /// script
5
- # dependencies = ["nox>=2026.2.9", "nox_ext", "nox_lib"]
5
+ # dependencies = ["nox>=2026.4.10", "nox_ext", "nox_lib"]
6
6
  # ///
7
7
 
8
8
  from __future__ import annotations
@@ -47,14 +47,15 @@ rmtree = partial(shutil.rmtree, ignore_errors=True)
47
47
  def prepare(session: nox.Session) -> None:
48
48
  """Preparing the repository"""
49
49
  cmd = here/".aprep.cmd"
50
- if cmd.is_file(): subprocess.run([cmd])
50
+ if cmd.is_file(): session.run(cmd, external=True)
51
51
 
52
52
  @nox.session(python=[PY_DEFAULT], default=False)
53
53
  def cleanup(session: nox.Session) -> None:
54
54
  """Cleaning the repository"""
55
- #no_package = true
55
+ # no_package = true
56
56
  cmd = here/".clean.cmd"
57
- if cmd.is_file(): subprocess.run([cmd], stderr=subprocess.DEVNULL)
57
+ if cmd.is_file():
58
+ session.run(cmd, stderr=subprocess.DEVNULL, external=True)
58
59
  rmtree(here/"build")
59
60
  rmtree(here/"dist")
60
61
  for item in here.glob("src/*.egg-info"): rmtree(item)
@@ -63,7 +64,7 @@ def cleanup(session: nox.Session) -> None:
63
64
  rmtree(here/".tox")
64
65
  rmtree(here/".nox")
65
66
 
66
- @nox.session(python=[*PY_VERSIONS, "pypy3.10", "pypy3.11"])
67
+ @nox.session(python=[*PY_VERSIONS, "pypy3.11", "graalpy3.12"])
67
68
  def tests(session: nox.Session) -> None:
68
69
  """Running tests"""
69
70
  session.install(".", "--group=test")
@@ -76,7 +77,7 @@ def coverage(session: nox.Session) -> None:
76
77
  session.install(".", "--group=coverage")
77
78
  env_dir = Path(session.virtualenv.location)
78
79
  data_file = env_dir/".coverage"
79
- html_dir = env_dir/'.coverage.html'
80
+ html_dir = env_dir/".coverage_html"
80
81
  session.py("-m", "coverage", "erase", f"--data-file={data_file}")
81
82
  session.py("-m", "coverage", "run", f"--data-file={data_file}", "-m", "tests",
82
83
  *session.posargs, success_codes=range(0, 256))
@@ -91,8 +92,8 @@ def docs(session: nox.Session) -> None:
91
92
  html_dir = here/"build/docs/html"
92
93
  session.py("-m", "sphinxlint", "-i", "#arch", "-i", ".nox", "-i", ".tox",
93
94
  "-i", "build", "-i", "dist", "-i", ".mypy_cache")
94
- #session.run("python","-m", "sphinx.apidoc", "-f", *[session.site_packages/f"{item}/"
95
- # for item in PKG.TOP_LEVELS])
95
+ # session.py("-m", "sphinx.apidoc", "-f", *[session.site_packages/f"{item}/"
96
+ # for item in PKG.TOP_LEVELS])
96
97
  session.py("-m", "sphinx.cmd.build", "-W", "-a", "-b", "html", "-E", here/"docs", html_dir)
97
98
  session.py("-m", "sphinx.cmd.build", "-W", "-a", "-b", "doctest", here/"docs", html_dir)
98
99
  session.py("-m", "sphinx.cmd.build", "-W", "-a", "-b", "linkcheck", here/"docs", html_dir)
@@ -119,9 +120,9 @@ def publish(session: nox.Session) -> None:
119
120
  env_dir = Path(session.virtualenv.location)
120
121
  gh_pages_dir = env_dir/"gh-pages"
121
122
  rmtree(gh_pages_dir)
122
- session.run("git", "worktree", "prune")
123
- #session.run("git", "worktree", "add", gh_pages_dir, "gh-pages")
124
- session.run("git", "worktree", "add", "-B", "gh-pages", gh_pages_dir)
123
+ session.git("worktree", "prune")
124
+ # session.git("worktree", "add", gh_pages_dir, "gh-pages")
125
+ session.git("worktree", "add", "-B", "gh-pages", gh_pages_dir)
125
126
  # clean old docs
126
127
  (gh_pages_dir/".nojekyll").touch()
127
128
  for fpath in gh_pages_dir.iterdir():
@@ -133,23 +134,24 @@ def publish(session: nox.Session) -> None:
133
134
  # copy new docs
134
135
  copytree(here/"build/docs/html", gh_pages_dir, dirs_exist_ok=True)
135
136
  # commit + push
136
- session.run("git", "-C", gh_pages_dir, "add", ".")
137
- session.run("git", "-C", gh_pages_dir, "commit", "-m", "Update documentation")
138
- session.run("git", "-C", gh_pages_dir, "push", "--force", "origin", "gh-pages")
137
+ session.git("-C", gh_pages_dir, "add", ".")
138
+ session.git("-C", gh_pages_dir, "commit", "-m", "Update documentation")
139
+ session.git("-C", gh_pages_dir, "push", "--force", "origin", "gh-pages")
139
140
  # remove worktree
140
- session.run("git", "worktree", "remove", "--force", gh_pages_dir)
141
+ session.git("worktree", "remove", "--force", gh_pages_dir)
141
142
  rmtree(gh_pages_dir)
142
- session.run("git", "worktree", "prune")
143
+ session.git("worktree", "prune")
143
144
 
144
145
  @nox.session(python=[PY_DEFAULT])
145
146
  def typing(session: nox.Session) -> None:
146
147
  """Static type checking"""
147
- session.install(".", "--group=type")
148
+ session.install(".", "--group=typing")
148
149
  session.py("-m", "mypy")
149
150
 
150
151
  @nox.session(python=[PY_DEFAULT])
151
152
  def lint(session: nox.Session) -> None:
152
153
  """Checking code style and quality"""
153
154
  session.install(".", "--group=lint")
155
+ env_dir = Path(session.virtualenv.location)
154
156
  out_file = env_dir/"flake8out.txt"
155
157
  session.py("-m", "flake8", "--output-file", out_file, here/"src/")
@@ -3,11 +3,11 @@
3
3
 
4
4
  [build-system]
5
5
  build-backend = "setuptools.build_meta"
6
- requires = [ "setuptools>=81.0.0", "packaging>=26.0.0" ]
6
+ requires = [ "setuptools>=81.0.0", "packaging>=26.2.0" ]
7
7
 
8
8
  [project]
9
9
  name = "pkg_about"
10
- version = "2.3.0"
10
+ version = "2.4.1"
11
11
  description = "Unified access to Python package metadata at runtime."
12
12
  keywords = [ "pkg_about", "__about__", "packaging" ]
13
13
  license = "Zlib"
@@ -25,7 +25,7 @@ urls.Download = "https://pypi.org/project/pkg-about/"
25
25
  urls.Repository = "https://github.com/karpierz/pkg_about"
26
26
  urls.Tracker = "https://github.com/karpierz/pkg_about/issues"
27
27
  urls.Sponsoring = "https://www.paypal.com/donate/?hosted_button_id=FX8L7CJUGLW7S"
28
- requires-python = ">=3.10.0,<4.0.0"
28
+ requires-python = ">=3.11.0,<4.0.0"
29
29
  classifiers = [
30
30
  "Development Status :: 5 - Production/Stable",
31
31
  "Intended Audience :: Developers",
@@ -33,7 +33,6 @@ classifiers = [
33
33
  "Operating System :: OS Independent",
34
34
  "Programming Language :: Python",
35
35
  "Programming Language :: Python :: 3 :: Only",
36
- "Programming Language :: Python :: 3.10",
37
36
  "Programming Language :: Python :: 3.11",
38
37
  "Programming Language :: Python :: 3.12",
39
38
  "Programming Language :: Python :: 3.13",
@@ -41,6 +40,7 @@ classifiers = [
41
40
  "Programming Language :: Python :: 3.15",
42
41
  "Programming Language :: Python :: Implementation :: CPython",
43
42
  "Programming Language :: Python :: Implementation :: PyPy",
43
+ "Programming Language :: Python :: Implementation :: GraalPy",
44
44
  "Topic :: Software Development :: Libraries :: Python Modules",
45
45
  "Typing :: Typed",
46
46
  ]
@@ -50,37 +50,37 @@ dynamic = [ "readme" ]
50
50
  # entry-points.pkg_about.magical.epoint = "pkg_about:main_epoint"
51
51
  dependencies = [
52
52
  # mandatory
53
- "importlib-metadata>=4.6; python_full_version<'3.10.2'", # Fixes a stdlib bug
54
53
  "typing-extensions>=4.15.0",
55
- "packaging>=26.0.0",
54
+ "packaging>=26.2.0",
56
55
  # others
57
- "build>=1.4.2",
56
+ "build>=1.5.0",
58
57
  ]
59
58
 
60
59
  [dependency-groups]
61
60
  base = [
62
- "pip>=26.0.1",
61
+ "pip>=26.1.1; platform_python_implementation!='GraalVM'",
62
+ "pip>=24.3.1; platform_python_implementation=='GraalVM'",
63
63
  "setuptools>=81.0.0",
64
64
  ]
65
65
  test = [
66
66
  { include-group = "base" },
67
- "tomli>=2.4.1; python_version<'3.11'",
68
- "deepdiff>=9.0.0",
69
- "rich>=14.3.3",
67
+ "deepdiff>=9.1.0; python_version<'3.15' and platform_python_implementation!='GraalVM'",
68
+ "deepdiff<=9.0.0; python_version>='3.15' or platform_python_implementation=='GraalVM'",
69
+ "rich>=15.0.0",
70
70
  "appdirs==1.4.4",
71
71
  ]
72
72
  coverage = [
73
73
  { include-group = "test" },
74
- "coverage>=7.13.5",
74
+ "coverage>=7.14.0",
75
75
  "covdefaults>=2.3.0",
76
76
  "diff-cover>=10.2.0",
77
77
  ]
78
78
  docs = [
79
79
  { include-group = "base" },
80
- "sphinx>=8.1.3",
80
+ "sphinx>=9.0.4",
81
81
  "pygments_ansi_color>=0.3.0", # fix sphinx load error
82
82
  "roman_numerals>=4.1.0", # -||-
83
- "sphinx-autodoc-typehints>=3.0.1",
83
+ "sphinx-autodoc-typehints>=3.6.1",
84
84
  "sphinx-toolbox>=4.1.2",
85
85
  "sphinx-tabs>=3.4.5", # Do not change - sphinx-toolbox requires <3.4.7
86
86
  "sphinx-copybutton>=0.5.2",
@@ -92,15 +92,15 @@ docs = [
92
92
  build = [
93
93
  { include-group = "test" },
94
94
  "check-manifest>=0.51",
95
- "build>=1.4.2",
95
+ "build>=1.5.0",
96
96
  "twine>=6.2.0",
97
97
  ]
98
98
  publish = [
99
99
  "twine>=6.2.0",
100
100
  ]
101
- type = [
101
+ typing = [
102
102
  { include-group = "base" },
103
- "mypy>=1.19.1",
103
+ "mypy>=2.1.0",
104
104
  "mypy_extensions>=1.1.0",
105
105
  "types-setuptools>=81.0.0.20260209",
106
106
  ]
@@ -216,7 +216,7 @@ ignore = [
216
216
  count = true
217
217
 
218
218
  [tool.mypy]
219
- python_version = "3.10"
219
+ python_version = "3.11"
220
220
  strict = true
221
221
  sqlite_cache = true
222
222
  warn_unused_configs = true
@@ -16,10 +16,7 @@ if sys.version_info >= (3, 12, 6):
16
16
  getaddresses = partial(getaddresses, strict=False)
17
17
  parseaddr = partial(parseaddr, strict=False)
18
18
  else: pass # pragma: no cover
19
- if sys.version_info >= (3, 10, 2):
20
- import importlib.metadata as importlib_metadata
21
- else: # pragma: no cover
22
- import importlib_metadata # type: ignore[no-redef,import-not-found]
19
+ import importlib.metadata as importlib_metadata
23
20
  import packaging.version
24
21
  import build.util
25
22
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pkg_about
3
- Version: 2.3.0
3
+ Version: 2.4.1
4
4
  Summary: Unified access to Python package metadata at runtime.
5
5
  Author-email: Adam Karpierz <adam@karpierz.net>
6
6
  Maintainer-email: Adam Karpierz <adam@karpierz.net>
@@ -20,7 +20,6 @@ Classifier: Natural Language :: Polish
20
20
  Classifier: Operating System :: OS Independent
21
21
  Classifier: Programming Language :: Python
22
22
  Classifier: Programming Language :: Python :: 3 :: Only
23
- Classifier: Programming Language :: Python :: 3.10
24
23
  Classifier: Programming Language :: Python :: 3.11
25
24
  Classifier: Programming Language :: Python :: 3.12
26
25
  Classifier: Programming Language :: Python :: 3.13
@@ -28,15 +27,15 @@ Classifier: Programming Language :: Python :: 3.14
28
27
  Classifier: Programming Language :: Python :: 3.15
29
28
  Classifier: Programming Language :: Python :: Implementation :: CPython
30
29
  Classifier: Programming Language :: Python :: Implementation :: PyPy
30
+ Classifier: Programming Language :: Python :: Implementation :: GraalPy
31
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
32
32
  Classifier: Typing :: Typed
33
- Requires-Python: <4.0.0,>=3.10.0
33
+ Requires-Python: <4.0.0,>=3.11.0
34
34
  Description-Content-Type: text/x-rst; charset=UTF-8
35
35
  License-File: LICENSE
36
- Requires-Dist: importlib-metadata>=4.6; python_full_version < "3.10.2"
37
36
  Requires-Dist: typing-extensions>=4.15.0
38
- Requires-Dist: packaging>=26.0.0
39
- Requires-Dist: build>=1.4.2
37
+ Requires-Dist: packaging>=26.2.0
38
+ Requires-Dist: build>=1.5.0
40
39
  Dynamic: license-file
41
40
 
42
41
  pkg_about
@@ -74,7 +73,7 @@ Installation
74
73
 
75
74
  Prerequisites:
76
75
 
77
- + Python 3.10 or higher
76
+ + Python 3.11 or higher
78
77
 
79
78
  * https://www.python.org/
80
79
 
@@ -0,0 +1,3 @@
1
+ typing-extensions>=4.15.0
2
+ packaging>=26.2.0
3
+ build>=1.5.0
@@ -2,12 +2,12 @@
2
2
  # SPDX-License-Identifier: Zlib
3
3
 
4
4
  import unittest
5
- import sys
6
5
  import os
7
6
  import copy
8
7
  import stat
9
8
  import shutil
10
9
  from pathlib import Path
10
+ import tomllib
11
11
 
12
12
  from . import test_dir
13
13
 
@@ -27,10 +27,6 @@ class MainTestCase(unittest.TestCase):
27
27
  @classmethod
28
28
  def setUpClass(cls):
29
29
  pyproject_path = Path(__file__).resolve().parent.parent/"pyproject.toml"
30
- if sys.version_info >= (3, 11):
31
- import tomllib
32
- else: # pragma: no cover
33
- import tomli as tomllib
34
30
  with pyproject_path.open("rb") as file:
35
31
  metadata = tomllib.load(file).get("project", {})
36
32
  cls.version_expected = metadata["version"]
@@ -1,6 +0,0 @@
1
- typing-extensions>=4.15.0
2
- packaging>=26.0.0
3
- build>=1.4.2
4
-
5
- [:python_full_version < "3.10.2"]
6
- importlib-metadata>=4.6
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes