pkg-about 2.4.1__tar.gz → 2.4.3__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.
- {pkg_about-2.4.1 → pkg_about-2.4.3}/CHANGES.rst +12 -3
- {pkg_about-2.4.1/src/pkg_about.egg-info → pkg_about-2.4.3}/PKG-INFO +1 -1
- {pkg_about-2.4.1 → pkg_about-2.4.3}/docs/conf.py +18 -1
- pkg_about-2.4.3/noxfile.py +94 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/pyproject.toml +7 -6
- {pkg_about-2.4.1 → pkg_about-2.4.3/src/pkg_about.egg-info}/PKG-INFO +1 -1
- pkg_about-2.4.1/noxfile.py +0 -157
- {pkg_about-2.4.1 → pkg_about-2.4.3}/LICENSE +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/MANIFEST.in +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/README.rst +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/docs/CHANGES.rst +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/docs/README.rst +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/docs/_static/.keep +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/docs/_templates/.keep +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/docs/index.rst +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/setup.cfg +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/src/pkg_about/__about__.py +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/src/pkg_about/__init__.py +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/src/pkg_about/_about.py +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/src/pkg_about/py.typed +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/src/pkg_about.egg-info/SOURCES.txt +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/src/pkg_about.egg-info/dependency_links.txt +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/src/pkg_about.egg-info/requires.txt +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/src/pkg_about.egg-info/top_level.txt +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/src/pkg_about.egg-info/zip-safe +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/tests/__init__.py +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/tests/__main__.py +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/tests/data/setup.cfg +0 -0
- {pkg_about-2.4.1 → pkg_about-2.4.3}/tests/test_main.py +0 -0
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
-
2.4.
|
|
4
|
+
2.4.3 (2026-06-01)
|
|
5
5
|
------------------
|
|
6
6
|
- Added support for GraalPy 3.12
|
|
7
|
-
-
|
|
7
|
+
- Full support for Python 3.15
|
|
8
8
|
- Dropped support for Python 3.10 (due to compatibility issues).
|
|
9
9
|
- Fix for nox 'lint' session.
|
|
10
|
-
- Setup
|
|
10
|
+
- Setup updates, fixes and improvements.
|
|
11
|
+
|
|
12
|
+
2.3.0 (2026-03-30)
|
|
13
|
+
------------------
|
|
14
|
+
- Setup update and improvement.
|
|
15
|
+
|
|
16
|
+
2.2.0 (2026-02-13)
|
|
17
|
+
------------------
|
|
18
|
+
- Added support for Python 3.15
|
|
19
|
+
- Setup update (mainly dependencies).
|
|
11
20
|
|
|
12
21
|
2.1.2 (2026-01-27)
|
|
13
22
|
------------------
|
|
@@ -44,22 +44,29 @@ needs_sphinx = '8.1.3'
|
|
|
44
44
|
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
|
45
45
|
# ones.
|
|
46
46
|
extensions = [
|
|
47
|
+
'myst_parser',
|
|
47
48
|
'sphinx.ext.autodoc',
|
|
48
49
|
'sphinx.ext.autosummary',
|
|
49
50
|
'sphinx.ext.doctest',
|
|
50
51
|
'sphinx.ext.intersphinx',
|
|
51
52
|
#'sphinx.ext.todo',
|
|
52
53
|
#'sphinx.ext.coverage',
|
|
54
|
+
'sphinx.ext.viewcode',
|
|
53
55
|
'sphinx.ext.ifconfig',
|
|
54
56
|
'sphinx.ext.napoleon',
|
|
55
57
|
'sphinx_autodoc_typehints',
|
|
56
|
-
#'sphinx_toolbox',
|
|
57
58
|
'sphinx_tabs.tabs',
|
|
59
|
+
'sphinx-prompt',
|
|
58
60
|
'sphinx_copybutton',
|
|
59
61
|
'sphinxcontrib.spelling',
|
|
60
62
|
'nbsphinx',
|
|
61
63
|
]
|
|
62
64
|
|
|
65
|
+
source_suffix = {
|
|
66
|
+
'.rst': 'restructuredtext',
|
|
67
|
+
'.md': 'markdown',
|
|
68
|
+
}
|
|
69
|
+
|
|
63
70
|
# Needed for e.g. linkcheck builder
|
|
64
71
|
tls_verify = False
|
|
65
72
|
|
|
@@ -97,6 +104,16 @@ html_static_path = ['_static']
|
|
|
97
104
|
|
|
98
105
|
# -- Extension configuration -------------------------------------------------
|
|
99
106
|
|
|
107
|
+
# -- Options for MyST extension ----------------------------------------------
|
|
108
|
+
|
|
109
|
+
myst_enable_extensions = [
|
|
110
|
+
'colon_fence', # ```{note} ... ```
|
|
111
|
+
'deflist', # definitions list
|
|
112
|
+
'fieldlist', # fields as in reST
|
|
113
|
+
'html_admonition', # :::note
|
|
114
|
+
'html_image', # 
|
|
115
|
+
]
|
|
116
|
+
|
|
100
117
|
# -- Options for autodoc extension -------------------------------------------
|
|
101
118
|
|
|
102
119
|
autoclass_content = 'both'
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Copyright (c) 2026 Adam Karpierz
|
|
2
|
+
# SPDX-License-Identifier: Zlib
|
|
3
|
+
|
|
4
|
+
# /// script
|
|
5
|
+
# dependencies = ["nox>=2026.4.10", "nox_ext", "nox_lib"]
|
|
6
|
+
# ///
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Any
|
|
11
|
+
import sys
|
|
12
|
+
import os
|
|
13
|
+
import shutil
|
|
14
|
+
import subprocess
|
|
15
|
+
import warnings
|
|
16
|
+
|
|
17
|
+
import nox
|
|
18
|
+
import nox_ext
|
|
19
|
+
import nox_lib
|
|
20
|
+
from nox_ext import print, pprint
|
|
21
|
+
from nox_lib.util import Path, copytree, rmtree
|
|
22
|
+
|
|
23
|
+
env = os.environ
|
|
24
|
+
|
|
25
|
+
# Configuration
|
|
26
|
+
|
|
27
|
+
PKG = nox.get_package_data()
|
|
28
|
+
|
|
29
|
+
PYPROJECT = nox.project.load_toml("pyproject.toml")
|
|
30
|
+
PY_VERSIONS = nox.project.python_versions(PYPROJECT)
|
|
31
|
+
PY_DEFAULT = "3.13"
|
|
32
|
+
|
|
33
|
+
# Prevent Python from writing bytecode
|
|
34
|
+
env["PYTHONDONTWRITEBYTECODE"] = "1"
|
|
35
|
+
# env["PKG_INITIAL_BUILD"] = "1"
|
|
36
|
+
|
|
37
|
+
# Sessions
|
|
38
|
+
|
|
39
|
+
@nox.session(python=[PY_DEFAULT], default=False,
|
|
40
|
+
requires=["cleanup"])
|
|
41
|
+
def prepare(session: nox.Session) -> None:
|
|
42
|
+
"""Preparing the repository"""
|
|
43
|
+
nox_lib.prepare.prep_cmd(session)
|
|
44
|
+
|
|
45
|
+
@nox.session(python=[PY_DEFAULT], default=False)
|
|
46
|
+
def cleanup(session: nox.Session) -> None:
|
|
47
|
+
"""Cleaning the repository"""
|
|
48
|
+
nox_lib.cleanup.clean_cmd(session)
|
|
49
|
+
nox_lib.cleanup.cleanup(session)
|
|
50
|
+
|
|
51
|
+
@nox.session(python=[*PY_VERSIONS, "pypy3.11", "graalpy3.12"])
|
|
52
|
+
def tests(session: nox.Session) -> None:
|
|
53
|
+
"""Running tests"""
|
|
54
|
+
session.install(".", "--group=test")
|
|
55
|
+
nox_lib.tests.unittests(session)
|
|
56
|
+
|
|
57
|
+
@nox.session(python=[PY_DEFAULT])
|
|
58
|
+
def coverage(session: nox.Session) -> None:
|
|
59
|
+
"""Running code coverage analysis"""
|
|
60
|
+
session.install(".", "--group=coverage")
|
|
61
|
+
nox_lib.coverage.coverage(session)
|
|
62
|
+
|
|
63
|
+
@nox.session(python=[PY_DEFAULT])
|
|
64
|
+
def docs(session: nox.Session) -> None:
|
|
65
|
+
"""Building documentation and running doc tests"""
|
|
66
|
+
session.install(".", "--group=docs")
|
|
67
|
+
nox_lib.docs.sphinx(session)
|
|
68
|
+
|
|
69
|
+
@nox.session(python=[PY_DEFAULT], default=False,
|
|
70
|
+
requires=["tests", "docs"])
|
|
71
|
+
def build(session: nox.Session) -> None:
|
|
72
|
+
"""Building the package"""
|
|
73
|
+
session.install("--group=build")
|
|
74
|
+
nox_lib.build.build(session)
|
|
75
|
+
|
|
76
|
+
@nox.session(python=[PY_DEFAULT], default=False,
|
|
77
|
+
requires=["build"])
|
|
78
|
+
def publish(session: nox.Session) -> None:
|
|
79
|
+
"""Publishing the package and documentation"""
|
|
80
|
+
session.install("--group=publish")
|
|
81
|
+
nox_lib.publish.on_pypi(session)
|
|
82
|
+
nox_lib.publish.docs_on_gh_pages(session)
|
|
83
|
+
|
|
84
|
+
@nox.session(python=[PY_DEFAULT])
|
|
85
|
+
def typing(session: nox.Session) -> None:
|
|
86
|
+
"""Static type checking"""
|
|
87
|
+
session.install(".", "--group=typing")
|
|
88
|
+
nox_lib.typing.mypy(session)
|
|
89
|
+
|
|
90
|
+
@nox.session(python=[PY_DEFAULT])
|
|
91
|
+
def lint(session: nox.Session) -> None:
|
|
92
|
+
"""Checking code style and quality"""
|
|
93
|
+
session.install(".", "--group=lint")
|
|
94
|
+
nox_lib.lint.flake8(session)
|
|
@@ -7,7 +7,7 @@ requires = [ "setuptools>=81.0.0", "packaging>=26.2.0" ]
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "pkg_about"
|
|
10
|
-
version = "2.4.
|
|
10
|
+
version = "2.4.3"
|
|
11
11
|
description = "Unified access to Python package metadata at runtime."
|
|
12
12
|
keywords = [ "pkg_about", "__about__", "packaging" ]
|
|
13
13
|
license = "Zlib"
|
|
@@ -58,7 +58,7 @@ dependencies = [
|
|
|
58
58
|
|
|
59
59
|
[dependency-groups]
|
|
60
60
|
base = [
|
|
61
|
-
"pip>=26.1.
|
|
61
|
+
"pip>=26.1.2; platform_python_implementation!='GraalVM'",
|
|
62
62
|
"pip>=24.3.1; platform_python_implementation=='GraalVM'",
|
|
63
63
|
"setuptools>=81.0.0",
|
|
64
64
|
]
|
|
@@ -71,18 +71,19 @@ test = [
|
|
|
71
71
|
]
|
|
72
72
|
coverage = [
|
|
73
73
|
{ include-group = "test" },
|
|
74
|
-
"coverage>=7.14.
|
|
74
|
+
"coverage>=7.14.1",
|
|
75
75
|
"covdefaults>=2.3.0",
|
|
76
|
-
"diff-cover>=10.
|
|
76
|
+
"diff-cover>=10.3.0",
|
|
77
77
|
]
|
|
78
78
|
docs = [
|
|
79
79
|
{ include-group = "base" },
|
|
80
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
|
+
"myst-parser>=5.1.0",
|
|
83
84
|
"sphinx-autodoc-typehints>=3.6.1",
|
|
84
|
-
"sphinx-
|
|
85
|
-
"sphinx-
|
|
85
|
+
"sphinx-tabs>=3.5.0",
|
|
86
|
+
"sphinx-prompt>=1.10.2",
|
|
86
87
|
"sphinx-copybutton>=0.5.2",
|
|
87
88
|
"sphinxcontrib-spelling>=8.0.2",
|
|
88
89
|
"sphinx-lint>=1.0.2",
|
pkg_about-2.4.1/noxfile.py
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2026 Adam Karpierz
|
|
2
|
-
# SPDX-License-Identifier: Zlib
|
|
3
|
-
|
|
4
|
-
# /// script
|
|
5
|
-
# dependencies = ["nox>=2026.4.10", "nox_ext", "nox_lib"]
|
|
6
|
-
# ///
|
|
7
|
-
|
|
8
|
-
from __future__ import annotations
|
|
9
|
-
|
|
10
|
-
from typing import Any
|
|
11
|
-
import sys
|
|
12
|
-
import os
|
|
13
|
-
from pathlib import Path
|
|
14
|
-
from functools import partial
|
|
15
|
-
import shutil
|
|
16
|
-
import subprocess
|
|
17
|
-
import warnings
|
|
18
|
-
|
|
19
|
-
import nox
|
|
20
|
-
import nox_ext
|
|
21
|
-
from nox_ext import print, pprint
|
|
22
|
-
|
|
23
|
-
here = Path(__file__).resolve().parent
|
|
24
|
-
env = os.environ
|
|
25
|
-
|
|
26
|
-
# Configuration
|
|
27
|
-
|
|
28
|
-
PKG = nox.get_package_data(here)
|
|
29
|
-
|
|
30
|
-
PYPROJECT = nox.project.load_toml("pyproject.toml")
|
|
31
|
-
PY_VERSIONS = nox.project.python_versions(PYPROJECT)
|
|
32
|
-
PY_DEFAULT = "3.13"
|
|
33
|
-
|
|
34
|
-
# Prevent Python from writing bytecode
|
|
35
|
-
env["PYTHONDONTWRITEBYTECODE"] = "1"
|
|
36
|
-
# env["PKG_INITIAL_BUILD"] = "1"
|
|
37
|
-
|
|
38
|
-
# Helpers & Utils
|
|
39
|
-
|
|
40
|
-
copytree = shutil.copytree
|
|
41
|
-
rmtree = partial(shutil.rmtree, ignore_errors=True)
|
|
42
|
-
|
|
43
|
-
# Sessions
|
|
44
|
-
|
|
45
|
-
@nox.session(python=[PY_DEFAULT], default=False,
|
|
46
|
-
requires=["cleanup"])
|
|
47
|
-
def prepare(session: nox.Session) -> None:
|
|
48
|
-
"""Preparing the repository"""
|
|
49
|
-
cmd = here/".aprep.cmd"
|
|
50
|
-
if cmd.is_file(): session.run(cmd, external=True)
|
|
51
|
-
|
|
52
|
-
@nox.session(python=[PY_DEFAULT], default=False)
|
|
53
|
-
def cleanup(session: nox.Session) -> None:
|
|
54
|
-
"""Cleaning the repository"""
|
|
55
|
-
# no_package = true
|
|
56
|
-
cmd = here/".clean.cmd"
|
|
57
|
-
if cmd.is_file():
|
|
58
|
-
session.run(cmd, stderr=subprocess.DEVNULL, external=True)
|
|
59
|
-
rmtree(here/"build")
|
|
60
|
-
rmtree(here/"dist")
|
|
61
|
-
for item in here.glob("src/*.egg-info"): rmtree(item)
|
|
62
|
-
for item in here.glob("**/__pycache__"): rmtree(item)
|
|
63
|
-
for item in here.glob("**/.mypy_cache"): rmtree(item)
|
|
64
|
-
rmtree(here/".tox")
|
|
65
|
-
rmtree(here/".nox")
|
|
66
|
-
|
|
67
|
-
@nox.session(python=[*PY_VERSIONS, "pypy3.11", "graalpy3.12"])
|
|
68
|
-
def tests(session: nox.Session) -> None:
|
|
69
|
-
"""Running tests"""
|
|
70
|
-
session.install(".", "--group=test")
|
|
71
|
-
session.py("--version")
|
|
72
|
-
session.py("-m", "tests", *session.posargs)
|
|
73
|
-
|
|
74
|
-
@nox.session(python=[PY_DEFAULT])
|
|
75
|
-
def coverage(session: nox.Session) -> None:
|
|
76
|
-
"""Running code coverage analysis"""
|
|
77
|
-
session.install(".", "--group=coverage")
|
|
78
|
-
env_dir = Path(session.virtualenv.location)
|
|
79
|
-
data_file = env_dir/".coverage"
|
|
80
|
-
html_dir = env_dir/".coverage_html"
|
|
81
|
-
session.py("-m", "coverage", "erase", f"--data-file={data_file}")
|
|
82
|
-
session.py("-m", "coverage", "run", f"--data-file={data_file}", "-m", "tests",
|
|
83
|
-
*session.posargs, success_codes=range(0, 256))
|
|
84
|
-
session.py("-m", "coverage", "html", f"--data-file={data_file}", f"--directory={html_dir}",
|
|
85
|
-
success_codes=range(0, 256))
|
|
86
|
-
session.py("-m", "coverage", "report", f"--data-file={data_file}")
|
|
87
|
-
|
|
88
|
-
@nox.session(python=[PY_DEFAULT])
|
|
89
|
-
def docs(session: nox.Session) -> None:
|
|
90
|
-
"""Building documentation and running doc tests"""
|
|
91
|
-
session.install(".", "--group=docs")
|
|
92
|
-
html_dir = here/"build/docs/html"
|
|
93
|
-
session.py("-m", "sphinxlint", "-i", "#arch", "-i", ".nox", "-i", ".tox",
|
|
94
|
-
"-i", "build", "-i", "dist", "-i", ".mypy_cache")
|
|
95
|
-
# session.py("-m", "sphinx.apidoc", "-f", *[session.site_packages/f"{item}/"
|
|
96
|
-
# for item in PKG.TOP_LEVELS])
|
|
97
|
-
session.py("-m", "sphinx.cmd.build", "-W", "-a", "-b", "html", "-E", here/"docs", html_dir)
|
|
98
|
-
session.py("-m", "sphinx.cmd.build", "-W", "-a", "-b", "doctest", here/"docs", html_dir)
|
|
99
|
-
session.py("-m", "sphinx.cmd.build", "-W", "-a", "-b", "linkcheck", here/"docs", html_dir)
|
|
100
|
-
|
|
101
|
-
@nox.session(python=[PY_DEFAULT], default=False,
|
|
102
|
-
requires=["tests", "docs"])
|
|
103
|
-
def build(session: nox.Session) -> None:
|
|
104
|
-
"""Building the package"""
|
|
105
|
-
session.install("--group=build")
|
|
106
|
-
session.py("-m", "check_manifest", "-v")
|
|
107
|
-
session.py("-m", "build")
|
|
108
|
-
# Verify distribution files
|
|
109
|
-
session.py("-m", "twine", "check", "dist/*")
|
|
110
|
-
|
|
111
|
-
@nox.session(python=[PY_DEFAULT], default=False,
|
|
112
|
-
requires=["build"])
|
|
113
|
-
def publish(session: nox.Session) -> None:
|
|
114
|
-
"""Publishing the package and documentation"""
|
|
115
|
-
session.install("--group=publish")
|
|
116
|
-
# Publish on PyPI
|
|
117
|
-
session.py("-m", "twine", "upload", "dist/*")
|
|
118
|
-
# Publish documentation on GitHub Pages
|
|
119
|
-
# checkout gh-pages worktree
|
|
120
|
-
env_dir = Path(session.virtualenv.location)
|
|
121
|
-
gh_pages_dir = env_dir/"gh-pages"
|
|
122
|
-
rmtree(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)
|
|
126
|
-
# clean old docs
|
|
127
|
-
(gh_pages_dir/".nojekyll").touch()
|
|
128
|
-
for fpath in gh_pages_dir.iterdir():
|
|
129
|
-
if fpath.name not in (".git",".nojekyll"):
|
|
130
|
-
if fpath.is_dir():
|
|
131
|
-
rmtree(fpath)
|
|
132
|
-
else:
|
|
133
|
-
fpath.unlink(missing_ok=True)
|
|
134
|
-
# copy new docs
|
|
135
|
-
copytree(here/"build/docs/html", gh_pages_dir, dirs_exist_ok=True)
|
|
136
|
-
# commit + push
|
|
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")
|
|
140
|
-
# remove worktree
|
|
141
|
-
session.git("worktree", "remove", "--force", gh_pages_dir)
|
|
142
|
-
rmtree(gh_pages_dir)
|
|
143
|
-
session.git("worktree", "prune")
|
|
144
|
-
|
|
145
|
-
@nox.session(python=[PY_DEFAULT])
|
|
146
|
-
def typing(session: nox.Session) -> None:
|
|
147
|
-
"""Static type checking"""
|
|
148
|
-
session.install(".", "--group=typing")
|
|
149
|
-
session.py("-m", "mypy")
|
|
150
|
-
|
|
151
|
-
@nox.session(python=[PY_DEFAULT])
|
|
152
|
-
def lint(session: nox.Session) -> None:
|
|
153
|
-
"""Checking code style and quality"""
|
|
154
|
-
session.install(".", "--group=lint")
|
|
155
|
-
env_dir = Path(session.virtualenv.location)
|
|
156
|
-
out_file = env_dir/"flake8out.txt"
|
|
157
|
-
session.py("-m", "flake8", "--output-file", out_file, here/"src/")
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|