pkg-about 2.2.0__tar.gz → 2.4.0__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 (30) hide show
  1. {pkg_about-2.2.0 → pkg_about-2.4.0}/CHANGES.rst +11 -0
  2. {pkg_about-2.2.0/src/pkg_about.egg-info → pkg_about-2.4.0}/PKG-INFO +9 -11
  3. {pkg_about-2.2.0 → pkg_about-2.4.0}/README.rst +1 -1
  4. {pkg_about-2.2.0 → pkg_about-2.4.0}/noxfile.py +15 -8
  5. pkg_about-2.4.0/pyproject.toml +229 -0
  6. {pkg_about-2.2.0 → pkg_about-2.4.0}/src/pkg_about/_about.py +1 -4
  7. {pkg_about-2.2.0 → pkg_about-2.4.0/src/pkg_about.egg-info}/PKG-INFO +9 -11
  8. pkg_about-2.4.0/src/pkg_about.egg-info/requires.txt +3 -0
  9. {pkg_about-2.2.0 → pkg_about-2.4.0}/tests/__init__.py +1 -1
  10. {pkg_about-2.2.0 → pkg_about-2.4.0}/tests/__main__.py +3 -2
  11. {pkg_about-2.2.0 → pkg_about-2.4.0}/tests/test_main.py +1 -5
  12. pkg_about-2.2.0/pyproject.toml +0 -210
  13. pkg_about-2.2.0/src/pkg_about.egg-info/requires.txt +0 -6
  14. {pkg_about-2.2.0 → pkg_about-2.4.0}/LICENSE +0 -0
  15. {pkg_about-2.2.0 → pkg_about-2.4.0}/MANIFEST.in +0 -0
  16. {pkg_about-2.2.0 → pkg_about-2.4.0}/docs/CHANGES.rst +0 -0
  17. {pkg_about-2.2.0 → pkg_about-2.4.0}/docs/README.rst +0 -0
  18. {pkg_about-2.2.0 → pkg_about-2.4.0}/docs/_static/.keep +0 -0
  19. {pkg_about-2.2.0 → pkg_about-2.4.0}/docs/_templates/.keep +0 -0
  20. {pkg_about-2.2.0 → pkg_about-2.4.0}/docs/conf.py +0 -0
  21. {pkg_about-2.2.0 → pkg_about-2.4.0}/docs/index.rst +0 -0
  22. {pkg_about-2.2.0 → pkg_about-2.4.0}/setup.cfg +0 -0
  23. {pkg_about-2.2.0 → pkg_about-2.4.0}/src/pkg_about/__about__.py +0 -0
  24. {pkg_about-2.2.0 → pkg_about-2.4.0}/src/pkg_about/__init__.py +0 -0
  25. {pkg_about-2.2.0 → pkg_about-2.4.0}/src/pkg_about/py.typed +0 -0
  26. {pkg_about-2.2.0 → pkg_about-2.4.0}/src/pkg_about.egg-info/SOURCES.txt +0 -0
  27. {pkg_about-2.2.0 → pkg_about-2.4.0}/src/pkg_about.egg-info/dependency_links.txt +0 -0
  28. {pkg_about-2.2.0 → pkg_about-2.4.0}/src/pkg_about.egg-info/top_level.txt +0 -0
  29. {pkg_about-2.2.0 → pkg_about-2.4.0}/src/pkg_about.egg-info/zip-safe +0 -0
  30. {pkg_about-2.2.0 → pkg_about-2.4.0}/tests/data/setup.cfg +0 -0
@@ -1,6 +1,17 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ 2.4.0 (2026-05-11)
5
+ ------------------
6
+ - Added support for GraalPy 3.12
7
+ - Dropped support for Python 3.10 (due to compatibility issues).
8
+ - Fix for nox 'lint' session.
9
+ - Setup update and improvement.
10
+
11
+ 2.3.0 (2026-03-30)
12
+ ------------------
13
+ - Setup update and improvement.
14
+
4
15
  2.2.0 (2026-02-13)
5
16
  ------------------
6
17
  - Added support for Python 3.15
@@ -1,14 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pkg_about
3
- Version: 2.2.0
3
+ Version: 2.4.0
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>
7
7
  License-Expression: Zlib
8
8
  Project-URL: Homepage, https://pypi.org/project/pkg-about/
9
9
  Project-URL: Documentation, https://karpierz.github.io/pkg_about/
10
- Project-URL: Download, https://pypi.org/project/pkg-about/
11
10
  Project-URL: History, https://karpierz.github.io/pkg_about/CHANGES.html
11
+ Project-URL: Download, https://pypi.org/project/pkg-about/
12
12
  Project-URL: Repository, https://github.com/karpierz/pkg_about
13
13
  Project-URL: Tracker, https://github.com/karpierz/pkg_about/issues
14
14
  Project-URL: Sponsoring, https://www.paypal.com/donate/?hosted_button_id=FX8L7CJUGLW7S
@@ -16,28 +16,26 @@ Keywords: pkg_about,__about__,packaging
16
16
  Platform: any
17
17
  Classifier: Development Status :: 5 - Production/Stable
18
18
  Classifier: Intended Audience :: Developers
19
- Classifier: Operating System :: OS Independent
20
19
  Classifier: Natural Language :: Polish
20
+ Classifier: Operating System :: OS Independent
21
21
  Classifier: Programming Language :: Python
22
- Classifier: Programming Language :: Python :: 3
23
- Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3 :: Only
24
23
  Classifier: Programming Language :: Python :: 3.11
25
24
  Classifier: Programming Language :: Python :: 3.12
26
25
  Classifier: Programming Language :: Python :: 3.13
27
26
  Classifier: Programming Language :: Python :: 3.14
28
27
  Classifier: Programming Language :: Python :: 3.15
29
- Classifier: Programming Language :: Python :: 3 :: Only
30
28
  Classifier: Programming Language :: Python :: Implementation :: CPython
31
29
  Classifier: Programming Language :: Python :: Implementation :: PyPy
30
+ Classifier: Programming Language :: Python :: Implementation :: GraalPy
32
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
33
32
  Classifier: Typing :: Typed
34
- Requires-Python: <4.0.0,>=3.10.0
33
+ Requires-Python: <4.0.0,>=3.11.0
35
34
  Description-Content-Type: text/x-rst; charset=UTF-8
36
35
  License-File: LICENSE
37
- Requires-Dist: importlib-metadata>=4.6; python_full_version < "3.10.2"
38
36
  Requires-Dist: typing-extensions>=4.15.0
39
- Requires-Dist: packaging>=26.0.0
40
- Requires-Dist: build>=1.4.0
37
+ Requires-Dist: packaging>=26.2.0
38
+ Requires-Dist: build>=1.5.0
41
39
  Dynamic: license-file
42
40
 
43
41
  pkg_about
@@ -75,7 +73,7 @@ Installation
75
73
 
76
74
  Prerequisites:
77
75
 
78
- + Python 3.10 or higher
76
+ + Python 3.11 or higher
79
77
 
80
78
  * https://www.python.org/
81
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
@@ -56,14 +56,14 @@ def cleanup(session: nox.Session) -> None:
56
56
  cmd = here/".clean.cmd"
57
57
  if cmd.is_file(): subprocess.run([cmd], stderr=subprocess.DEVNULL)
58
58
  rmtree(here/"build")
59
- rmtree(here/"dist"),
59
+ rmtree(here/"dist")
60
60
  for item in here.glob("src/*.egg-info"): rmtree(item)
61
61
  for item in here.glob("**/__pycache__"): rmtree(item)
62
62
  for item in here.glob("**/.mypy_cache"): rmtree(item)
63
63
  rmtree(here/".tox")
64
64
  rmtree(here/".nox")
65
65
 
66
- @nox.session(python=[*PY_VERSIONS, "pypy3.10", "pypy3.11"])
66
+ @nox.session(python=[*PY_VERSIONS, "pypy3.11", "graalpy3.12"])
67
67
  def tests(session: nox.Session) -> None:
68
68
  """Running tests"""
69
69
  session.install(".", "--group=test")
@@ -74,10 +74,15 @@ def tests(session: nox.Session) -> None:
74
74
  def coverage(session: nox.Session) -> None:
75
75
  """Running code coverage analysis"""
76
76
  session.install(".", "--group=coverage")
77
- session.py("-m", "coverage", "erase")
78
- session.py("-m", "coverage", "run", "-m", "tests", *session.posargs, success_codes=range(0, 256))
79
- session.py("-m", "coverage", "html", success_codes=range(0, 256))
80
- session.py("-m", "coverage", "report")
77
+ env_dir = Path(session.virtualenv.location)
78
+ data_file = env_dir/".coverage"
79
+ html_dir = env_dir/'.coverage.html'
80
+ session.py("-m", "coverage", "erase", f"--data-file={data_file}")
81
+ session.py("-m", "coverage", "run", f"--data-file={data_file}", "-m", "tests",
82
+ *session.posargs, success_codes=range(0, 256))
83
+ session.py("-m", "coverage", "html", f"--data-file={data_file}", f"--directory={html_dir}",
84
+ success_codes=range(0, 256))
85
+ session.py("-m", "coverage", "report", f"--data-file={data_file}")
81
86
 
82
87
  @nox.session(python=[PY_DEFAULT])
83
88
  def docs(session: nox.Session) -> None:
@@ -146,4 +151,6 @@ def typing(session: nox.Session) -> None:
146
151
  def lint(session: nox.Session) -> None:
147
152
  """Checking code style and quality"""
148
153
  session.install(".", "--group=lint")
149
- session.py("-m", "flake8", here/"src/")
154
+ env_dir = Path(session.virtualenv.location)
155
+ out_file = env_dir/"flake8out.txt"
156
+ session.py("-m", "flake8", "--output-file", out_file, here/"src/")
@@ -0,0 +1,229 @@
1
+ # Copyright (c) 2020 Adam Karpierz
2
+ # SPDX-License-Identifier: Zlib
3
+
4
+ [build-system]
5
+ build-backend = "setuptools.build_meta"
6
+ requires = [ "setuptools>=81.0.0", "packaging>=26.2.0" ]
7
+
8
+ [project]
9
+ name = "pkg_about"
10
+ version = "2.4.0"
11
+ description = "Unified access to Python package metadata at runtime."
12
+ keywords = [ "pkg_about", "__about__", "packaging" ]
13
+ license = "Zlib"
14
+ license-files = [ "LICENSE" ]
15
+ authors = [
16
+ { name = "Adam Karpierz", email = "adam@karpierz.net" },
17
+ ]
18
+ maintainers = [
19
+ { name = "Adam Karpierz", email = "adam@karpierz.net" },
20
+ ]
21
+ urls.Homepage = "https://pypi.org/project/pkg-about/"
22
+ urls.Documentation = "https://karpierz.github.io/pkg_about/"
23
+ urls.History = "https://karpierz.github.io/pkg_about/CHANGES.html"
24
+ urls.Download = "https://pypi.org/project/pkg-about/"
25
+ urls.Repository = "https://github.com/karpierz/pkg_about"
26
+ urls.Tracker = "https://github.com/karpierz/pkg_about/issues"
27
+ urls.Sponsoring = "https://www.paypal.com/donate/?hosted_button_id=FX8L7CJUGLW7S"
28
+ requires-python = ">=3.11.0,<4.0.0"
29
+ classifiers = [
30
+ "Development Status :: 5 - Production/Stable",
31
+ "Intended Audience :: Developers",
32
+ "Natural Language :: Polish",
33
+ "Operating System :: OS Independent",
34
+ "Programming Language :: Python",
35
+ "Programming Language :: Python :: 3 :: Only",
36
+ "Programming Language :: Python :: 3.11",
37
+ "Programming Language :: Python :: 3.12",
38
+ "Programming Language :: Python :: 3.13",
39
+ "Programming Language :: Python :: 3.14",
40
+ "Programming Language :: Python :: 3.15",
41
+ "Programming Language :: Python :: Implementation :: CPython",
42
+ "Programming Language :: Python :: Implementation :: PyPy",
43
+ "Programming Language :: Python :: Implementation :: GraalPy",
44
+ "Topic :: Software Development :: Libraries :: Python Modules",
45
+ "Typing :: Typed",
46
+ ]
47
+ dynamic = [ "readme" ]
48
+ # scripts.pkg_about = "pkg_about.__main__:main"
49
+ # gui-scripts.pkg_about-gui = "pkg_about:main_gui"
50
+ # entry-points.pkg_about.magical.epoint = "pkg_about:main_epoint"
51
+ dependencies = [
52
+ # mandatory
53
+ "typing-extensions>=4.15.0",
54
+ "packaging>=26.2.0",
55
+ # others
56
+ "build>=1.5.0",
57
+ ]
58
+
59
+ [dependency-groups]
60
+ base = [
61
+ "pip>=26.1.1; platform_python_implementation!='GraalVM'",
62
+ "pip>=24.3.1; platform_python_implementation=='GraalVM'",
63
+ "setuptools>=81.0.0",
64
+ ]
65
+ test = [
66
+ { include-group = "base" },
67
+ "deepdiff>=9.0.0",
68
+ "rich>=15.0.0",
69
+ "appdirs==1.4.4",
70
+ ]
71
+ coverage = [
72
+ { include-group = "test" },
73
+ "coverage>=7.14.0",
74
+ "covdefaults>=2.3.0",
75
+ "diff-cover>=10.2.0",
76
+ ]
77
+ docs = [
78
+ { include-group = "base" },
79
+ "sphinx>=9.0.4",
80
+ "pygments_ansi_color>=0.3.0", # fix sphinx load error
81
+ "roman_numerals>=4.1.0", # -||-
82
+ "sphinx-autodoc-typehints>=3.6.1",
83
+ "sphinx-toolbox>=4.1.2",
84
+ "sphinx-tabs>=3.4.5", # Do not change - sphinx-toolbox requires <3.4.7
85
+ "sphinx-copybutton>=0.5.2",
86
+ "sphinxcontrib-spelling>=8.0.2",
87
+ "sphinx-lint>=1.0.2",
88
+ "restructuredtext-lint>=2.0.2",
89
+ "nbsphinx>=0.9.8",
90
+ ]
91
+ build = [
92
+ { include-group = "test" },
93
+ "check-manifest>=0.51",
94
+ "build>=1.5.0",
95
+ "twine>=6.2.0",
96
+ ]
97
+ publish = [
98
+ "twine>=6.2.0",
99
+ ]
100
+ typing = [
101
+ { include-group = "base" },
102
+ "mypy>=2.1.0",
103
+ "mypy_extensions>=1.1.0",
104
+ "types-setuptools>=81.0.0.20260209",
105
+ ]
106
+ lint = [
107
+ { include-group = "test" },
108
+ "flake8>=7.3.0",
109
+ "flake8-in-file-ignores>=0.3.0",
110
+ "flake8-pyproject>=1.2.4",
111
+ "flake8-docstrings>=1.7.0",
112
+ "pep8-naming>=0.15.1",
113
+ "flake8-builtins>=3.1.0",
114
+ "flake8-deprecated>=2.3.0",
115
+ ]
116
+
117
+ [tool.setuptools]
118
+ dynamic.readme = { file = [ "README.rst" ], content-type = "text/x-rst; charset=UTF-8" }
119
+ include-package-data = true
120
+ platforms = [ "any" ]
121
+ zip-safe = true
122
+ packages.find.namespaces = false
123
+ packages.find.where = [ "src" ]
124
+ package-dir."" = "src"
125
+ # package-dir."pkg_about.tests" = "tests"
126
+ package-data.pkg_about = [
127
+ ]
128
+ exclude-package-data."*" = [
129
+ "*.c", "*.h",
130
+ "*.cpp", "*.hpp",
131
+ "*.cxx", "*.hxx",
132
+ "*.pyx", "*.pxd",
133
+ ]
134
+ exclude-package-data.pkg_about = [
135
+ ]
136
+
137
+ [tool.coverage]
138
+ # run
139
+ run.source = [
140
+ "pkg_about",
141
+ "tests",
142
+ ]
143
+ run.omit = [
144
+ "**/tests/tman_*.py",
145
+ ]
146
+ run.branch = true
147
+ run.plugins = [ "covdefaults" ]
148
+ # report
149
+ report.exclude_also = [
150
+ # Regexes
151
+ # Have to re-enable the standard pragma
152
+ '^\s*if\s+self\.debug\s*:',
153
+ '^\s*if\s+__debug__\s*:',
154
+ '^\s*if\s+(0|False|None)\s*:',
155
+ '''if\s+__name__.*\s*==\s*['"]__main__['"]\s*:''',
156
+ '^\s*@unittest\.skip\s*\(',
157
+ '''^\s*@unittest\.skipIf\s*\(\s*sys\.platform\.startswith\s*\(\s*['"]win['"]\s*\)''',
158
+ '^\s*@unittest\.skipIf\s*\(\s*is_windows\s*,',
159
+ '^\s*@unittest\.skipIf\s*\(\s*is_cpython\s*,',
160
+ '\s*if\s+typing\.TYPE_CHECKING\s*:',
161
+ ]
162
+ report.omit = [
163
+ "tests/run.py",
164
+ ]
165
+ report.skip_covered = false
166
+
167
+ [tool.flake8]
168
+ filename = [ "*.py", "*.pyx" ]
169
+ # include = [ "tests" ]
170
+ # exclude = [ ".nox", ".tox", "*.egg", ".git", "__pycache__",
171
+ # "build", "_build", "docs/_build", "dist" ]
172
+ exclude = [ "_vendor" ]
173
+ max-line-length = 99
174
+ ignore = [
175
+ # pycodestyle error and warning codes
176
+ "E126", # Continuation line over-indented for hanging indent
177
+ "E203", # Whitespace before ",", ";", or ":"
178
+ "E221", # Multiple spaces before operator
179
+ "E251", # Unexpected spaces around keyword / parameter equals
180
+ "E302", # Expected 2 blank lines, found 0
181
+ "E701", # Multiple statements on one line (colon)
182
+ "E702", # Multiple statements on one line (semicolon)
183
+ "E731", # Do not assign a lambda expression, use a def
184
+ "E122", # Continuation line missing indentation or outdented
185
+ "E127", # Continuation line over-indented for visual indent
186
+ "E128", # Continuation line under-indented for visual indent
187
+ "E222", # Multiple spaces after operator
188
+ "E272", # Multiple spaces before keyword
189
+ "E241", # Multiple spaces after ","
190
+ "E266", # Too many leading "#" for block comment
191
+ "E226", # Missing whitespace around arithmetic operator
192
+ "W503", # Line break occurred before a binary operator
193
+ # pydocstyle error and warning codes
194
+ "D100", # Missing docstring in public module
195
+ "D101", # Missing docstring in public class
196
+ "D102", # Missing docstring in public method
197
+ "D103", # Missing docstring in public function
198
+ "D104", # Missing docstring in public package
199
+ "D202", # No blank lines allowed after function docstring
200
+ "D400", # First line should end with a period
201
+ "D401", # First line should be in imperative mood; try rephrasing
202
+ # pep8-naming error and warning codes
203
+ "N801", # Class names should use CapWords convention (class names)
204
+ "N802", # Function name should be lowercase (function names)
205
+ "N803", # Argument name should be lowercase (function arguments)
206
+ "N806", # Variable in function should be lowercase
207
+ # Other error and warning codes
208
+ "I100", # Your import statements are in the wrong order
209
+ ]
210
+ # (e.g. "E4", "W") default: "E121", "E123", "126", "226", "E24", "704"
211
+ # select = [ "E", "W", "F", "N", "I" ]
212
+ # show-source = true
213
+ # verbose = false
214
+ # quiet = true
215
+ count = true
216
+
217
+ [tool.mypy]
218
+ python_version = "3.11"
219
+ strict = true
220
+ sqlite_cache = true
221
+ warn_unused_configs = true
222
+ exclude_gitignore = true
223
+ install_types = true
224
+ non_interactive = true
225
+ pretty = true
226
+ check_untyped_defs = true
227
+ # ignore_missing_imports = true
228
+ files = [ "src" ]
229
+ # exclude = [ "docs/", "tests/" ]
@@ -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,14 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pkg_about
3
- Version: 2.2.0
3
+ Version: 2.4.0
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>
7
7
  License-Expression: Zlib
8
8
  Project-URL: Homepage, https://pypi.org/project/pkg-about/
9
9
  Project-URL: Documentation, https://karpierz.github.io/pkg_about/
10
- Project-URL: Download, https://pypi.org/project/pkg-about/
11
10
  Project-URL: History, https://karpierz.github.io/pkg_about/CHANGES.html
11
+ Project-URL: Download, https://pypi.org/project/pkg-about/
12
12
  Project-URL: Repository, https://github.com/karpierz/pkg_about
13
13
  Project-URL: Tracker, https://github.com/karpierz/pkg_about/issues
14
14
  Project-URL: Sponsoring, https://www.paypal.com/donate/?hosted_button_id=FX8L7CJUGLW7S
@@ -16,28 +16,26 @@ Keywords: pkg_about,__about__,packaging
16
16
  Platform: any
17
17
  Classifier: Development Status :: 5 - Production/Stable
18
18
  Classifier: Intended Audience :: Developers
19
- Classifier: Operating System :: OS Independent
20
19
  Classifier: Natural Language :: Polish
20
+ Classifier: Operating System :: OS Independent
21
21
  Classifier: Programming Language :: Python
22
- Classifier: Programming Language :: Python :: 3
23
- Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3 :: Only
24
23
  Classifier: Programming Language :: Python :: 3.11
25
24
  Classifier: Programming Language :: Python :: 3.12
26
25
  Classifier: Programming Language :: Python :: 3.13
27
26
  Classifier: Programming Language :: Python :: 3.14
28
27
  Classifier: Programming Language :: Python :: 3.15
29
- Classifier: Programming Language :: Python :: 3 :: Only
30
28
  Classifier: Programming Language :: Python :: Implementation :: CPython
31
29
  Classifier: Programming Language :: Python :: Implementation :: PyPy
30
+ Classifier: Programming Language :: Python :: Implementation :: GraalPy
32
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
33
32
  Classifier: Typing :: Typed
34
- Requires-Python: <4.0.0,>=3.10.0
33
+ Requires-Python: <4.0.0,>=3.11.0
35
34
  Description-Content-Type: text/x-rst; charset=UTF-8
36
35
  License-File: LICENSE
37
- Requires-Dist: importlib-metadata>=4.6; python_full_version < "3.10.2"
38
36
  Requires-Dist: typing-extensions>=4.15.0
39
- Requires-Dist: packaging>=26.0.0
40
- Requires-Dist: build>=1.4.0
37
+ Requires-Dist: packaging>=26.2.0
38
+ Requires-Dist: build>=1.5.0
41
39
  Dynamic: license-file
42
40
 
43
41
  pkg_about
@@ -75,7 +73,7 @@ Installation
75
73
 
76
74
  Prerequisites:
77
75
 
78
- + Python 3.10 or higher
76
+ + Python 3.11 or higher
79
77
 
80
78
  * https://www.python.org/
81
79
 
@@ -0,0 +1,3 @@
1
+ typing-extensions>=4.15.0
2
+ packaging>=26.2.0
3
+ build>=1.5.0
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2020 Adam Karpierz
1
+ # Copyright (c) 1994 Adam Karpierz
2
2
  # SPDX-License-Identifier: Zlib
3
3
 
4
4
  __all__ = ('top_dir', 'test_dir')
@@ -10,14 +10,15 @@ from . import test_dir
10
10
  log = logging.getLogger(__name__)
11
11
 
12
12
 
13
- def test_suite(names=None, omit=()):
13
+ def test_suite(names=None, include=(), exclude=()):
14
14
  from . import __name__ as pkg_name
15
15
  from . import __path__ as pkg_path
16
16
  import unittest
17
17
  import pkgutil
18
18
  if names is None:
19
19
  names = [name for _, name, _ in pkgutil.iter_modules(pkg_path)
20
- if name.startswith("test_") and name not in omit]
20
+ if (name.startswith("test_") or name in include)
21
+ and name not in exclude]
21
22
  names = [".".join((pkg_name, name)) for name in names]
22
23
  tests = unittest.defaultTestLoader.loadTestsFromNames(names)
23
24
  return tests
@@ -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,210 +0,0 @@
1
- # Copyright (c) 2020 Adam Karpierz
2
- # SPDX-License-Identifier: Zlib
3
-
4
- [build-system]
5
- requires = ['setuptools>=81.0.0', 'packaging>=26.0.0']
6
- build-backend = 'setuptools.build_meta'
7
-
8
- [project]
9
- name = 'pkg_about'
10
- version = '2.2.0'
11
- description = 'Unified access to Python package metadata at runtime.'
12
- authors = [
13
- { name = 'Adam Karpierz', email = 'adam@karpierz.net' },
14
- ]
15
- maintainers = [
16
- { name = 'Adam Karpierz', email = 'adam@karpierz.net' },
17
- ]
18
- license = 'Zlib'
19
- license-files = ['LICENSE']
20
- urls.Homepage = 'https://pypi.org/project/pkg-about/'
21
- urls.Documentation = 'https://karpierz.github.io/pkg_about/'
22
- urls.Download = 'https://pypi.org/project/pkg-about/'
23
- urls.History = 'https://karpierz.github.io/pkg_about/CHANGES.html'
24
- urls.Repository = 'https://github.com/karpierz/pkg_about'
25
- urls.Tracker = 'https://github.com/karpierz/pkg_about/issues'
26
- urls.Sponsoring = 'https://www.paypal.com/donate/?hosted_button_id=FX8L7CJUGLW7S'
27
- keywords = ['pkg_about', '__about__', 'packaging']
28
- classifiers = [
29
- 'Development Status :: 5 - Production/Stable',
30
- 'Intended Audience :: Developers',
31
- 'Operating System :: OS Independent',
32
- 'Natural Language :: Polish',
33
- 'Programming Language :: Python',
34
- 'Programming Language :: Python :: 3',
35
- 'Programming Language :: Python :: 3.10',
36
- 'Programming Language :: Python :: 3.11',
37
- 'Programming Language :: Python :: 3.12',
38
- 'Programming Language :: Python :: 3.13',
39
- 'Programming Language :: Python :: 3.14',
40
- 'Programming Language :: Python :: 3.15',
41
- 'Programming Language :: Python :: 3 :: Only',
42
- 'Programming Language :: Python :: Implementation :: CPython',
43
- 'Programming Language :: Python :: Implementation :: PyPy',
44
- 'Topic :: Software Development :: Libraries :: Python Modules',
45
- 'Typing :: Typed',
46
- ]
47
- requires-python = '>=3.10.0,<4.0.0'
48
- dependencies = [
49
- # mandatory
50
- 'importlib-metadata>=4.6 ; python_full_version < "3.10.2"', # Fixes a stdlib bug
51
- 'typing-extensions>=4.15.0',
52
- 'packaging>=26.0.0',
53
- # others
54
- 'build>=1.4.0',
55
- ]
56
- dynamic = ['readme']
57
- #scripts.'pkg_about' = 'pkg_about.__main__:main'
58
- #gui-scripts.'pkg_about-gui' = 'pkg_about:main_gui'
59
- #entry-points.'pkg_about.magical'.epoint = 'pkg_about:main_epoint'
60
-
61
- [dependency-groups]
62
- base = [
63
- 'pip>=26.0.1',
64
- 'setuptools>=81.0.0',
65
- ]
66
- test = [
67
- { include-group = 'base' },
68
- 'tomli>=2.4.0 ; python_version < "3.11"',
69
- 'deepdiff>=8.6.1',
70
- 'rich>=14.3.2',
71
- 'appdirs==1.4.4',
72
- ]
73
- coverage = [
74
- { include-group = 'test' },
75
- 'coverage>=7.13.4',
76
- 'covdefaults>=2.3.0',
77
- 'diff-cover>=10.2.0',
78
- ]
79
- docs = [
80
- { include-group = 'base' },
81
- 'sphinx>=8.1.3',
82
- 'pygments_ansi_color>=0.3.0', # fix sphinx load error
83
- 'roman_numerals>=4.1.0', # -||-
84
- 'sphinx-autodoc-typehints>=3.0.1',
85
- 'sphinx-toolbox>=4.1.2',
86
- 'sphinx-tabs>=3.4.5', # Do not change - sphinx-toolbox requires <3.4.7
87
- 'sphinx-copybutton>=0.5.2',
88
- 'sphinxcontrib-spelling>=8.0.2',
89
- 'sphinx-lint>=1.0.2',
90
- 'restructuredtext-lint>=2.0.2',
91
- 'nbsphinx>=0.9.8',
92
- ]
93
- build = [
94
- { include-group = 'test' },
95
- 'check-manifest>=0.51',
96
- 'build>=1.4.0',
97
- 'twine>=6.2.0',
98
- ]
99
- publish = [
100
- 'twine>=6.2.0',
101
- ]
102
- typing = [
103
- { include-group = 'base' },
104
- 'mypy>=1.19.1',
105
- 'mypy_extensions>=1.1.0',
106
- 'types-setuptools>=81.0.0.20260209',
107
- ]
108
- lint = [
109
- { include-group = 'test' },
110
- 'flake8>=7.3.0',
111
- 'flake8-in-file-ignores>=0.3.0',
112
- 'flake8-pyproject>=1.2.4',
113
- 'flake8-docstrings>=1.7.0',
114
- 'pep8-naming>=0.15.1',
115
- 'flake8-builtins>=3.1.0',
116
- 'flake8-deprecated>=2.3.0',
117
- ]
118
-
119
- [tool.setuptools.dynamic]
120
- readme = { file = ['README.rst'], content-type = 'text/x-rst; charset=UTF-8' }
121
-
122
- [tool.setuptools]
123
- include-package-data = true
124
- platforms = ['any']
125
- zip-safe = true
126
-
127
- [tool.setuptools.packages.find]
128
- namespaces = false
129
- where = ['src']
130
-
131
- [tool.setuptools.package-dir]
132
- '' = 'src'
133
- #'pkg_about.tests' = 'tests'
134
-
135
- [tool.setuptools.package-data]
136
- pkg_about = [
137
- ]
138
-
139
- [tool.setuptools.exclude-package-data]
140
- '*' = ['*.c','*.h','*.cpp','*.hpp','*.cxx','*.hxx','*.pyx','*.pxd']
141
- pkg_about = [
142
- ]
143
-
144
- [tool.coverage]
145
- # run
146
- run.source = [
147
- 'pkg_about',
148
- 'tests',
149
- ]
150
- run.omit = [
151
- '**/tests/tman_*.py',
152
- ]
153
- run.branch = true
154
- run.data_file = '.nox/coverage/.coverage'
155
- run.plugins = ['covdefaults']
156
- # report
157
- report.exclude_also = [
158
- # Regexes
159
- # Have to re-enable the standard pragma
160
- '^\s*if\s+self\.debug\s*:',
161
- '^\s*if\s+__debug__\s*:',
162
- '^\s*if\s+(0|False)\s*:',
163
- '''if\s+__name__.*\s*==\s*['"]__main__['"]\s*:''',
164
- '^\s*@unittest\.skip\(',
165
- '^\s*@unittest\.skipIf\(sys\.platform\.startswith\("win"\)',
166
- '^\s*@unittest\.skipIf\(is_windows,',
167
- '^\s*@unittest\.skipIf\(is_cpython,',
168
- 'if typing.TYPE_CHECKING:',
169
- ]
170
- report.omit = [
171
- 'tests/run.py',
172
- ]
173
- report.skip_covered = false
174
- # html report
175
- html.directory = '.nox/coverage/.coverage.html'
176
-
177
- [tool.flake8]
178
- filename = ['*.py','*.pyx']
179
- #include = ['tests']
180
- #exclude = ['.nox','.tox','*.egg','.git','__pycache__','build','_build','docs/_build','dist']
181
- exclude = ['_vendor']
182
- max-line-length = 99
183
- ignore = ['E126','E203','E221','E251','E302','E701','E702','E731',
184
- 'E122','E127','E128','E222','E272','E241','E266','E226',
185
- 'D100','D101','D102','D103','D104','D400','D401','D202',
186
- 'N806','N802','N803','N801',
187
- 'I100','W503']
188
- # (e.g. 'E4','W') default: 'E121','E123','126','226','E24','704'
189
- #select =
190
- #select = ['E','W','F','N','I']
191
- output-file = '.nox/lint/flake8out.txt'
192
- count = true
193
- #show-pep8,
194
- #show-source
195
- #verbose
196
- #quiet
197
-
198
- [tool.mypy]
199
- python_version = '3.10'
200
- strict = true
201
- sqlite_cache = true
202
- warn_unused_configs = true
203
- exclude_gitignore = true
204
- install_types = true
205
- non_interactive = true
206
- pretty = true
207
- check_untyped_defs = true
208
- #ignore_missing_imports = true
209
- files = ['src']
210
- #exclude = ['docs/', 'tests/']
@@ -1,6 +0,0 @@
1
- typing-extensions>=4.15.0
2
- packaging>=26.0.0
3
- build>=1.4.0
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