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