py-api-dumper 4.2.1__tar.gz → 4.2.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.
Files changed (33) hide show
  1. py_api_dumper-4.2.3/.github/dependabot.yml +11 -0
  2. py_api_dumper-4.2.3/.github/workflows/publish.yml +76 -0
  3. py_api_dumper-4.2.3/.github/workflows/test.yml +72 -0
  4. py_api_dumper-4.2.3/.gitignore +8 -0
  5. py_api_dumper-4.2.3/.pre-commit-config.yaml +43 -0
  6. py_api_dumper-4.2.3/LICENSES/MIT.txt +18 -0
  7. {py_api_dumper-4.2.1/src/py_api_dumper.egg-info → py_api_dumper-4.2.3}/PKG-INFO +2 -2
  8. py_api_dumper-4.2.3/REUSE.toml +23 -0
  9. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/pyproject.toml +27 -7
  10. py_api_dumper-4.2.3/requirements-dev.txt +8 -0
  11. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/src/py_api_dumper/__init__.py +6 -1
  12. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3/src/py_api_dumper.egg-info}/PKG-INFO +2 -2
  13. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/src/py_api_dumper.egg-info/SOURCES.txt +10 -0
  14. py_api_dumper-4.2.3/src/py_api_dumper.egg-info/scm_file_list.json +29 -0
  15. py_api_dumper-4.2.3/src/py_api_dumper.egg-info/scm_version.json +8 -0
  16. /py_api_dumper-4.2.1/LICENSES/MIT.txt → /py_api_dumper-4.2.3/LICENSE +0 -0
  17. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/LICENSES/CC0-1.0.txt +0 -0
  18. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/MANIFEST.in +0 -0
  19. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/README.md +0 -0
  20. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/setup.cfg +0 -0
  21. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/src/py_api_dumper/cli.py +0 -0
  22. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/src/py_api_dumper.egg-info/dependency_links.txt +0 -0
  23. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/src/py_api_dumper.egg-info/entry_points.txt +0 -0
  24. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/src/py_api_dumper.egg-info/top_level.txt +0 -0
  25. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/test/api_ref/__init__.py +0 -0
  26. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/test/api_ref/_priv_mod.py +0 -0
  27. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/test/api_ref/api_ref.txt +0 -0
  28. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/test/api_ref/ext_mod.c +0 -0
  29. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/test/api_ref/pub_mod.py +0 -0
  30. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/test/conftest.py +0 -0
  31. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/test/setup.py +0 -0
  32. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/test/test_diff.py +0 -0
  33. {py_api_dumper-4.2.1 → py_api_dumper-4.2.3}/test/test_dump.py +0 -0
@@ -0,0 +1,11 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "pip" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "weekly"
@@ -0,0 +1,76 @@
1
+ name: Publish package
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+ workflow_dispatch: null
8
+
9
+ jobs:
10
+ publish:
11
+ runs-on: ubuntu-latest
12
+
13
+ environment: ${{ github.event_name == 'workflow_dispatch' && 'testpypi' || 'pypi' }}
14
+
15
+ permissions:
16
+ id-token: write
17
+ attestations: write
18
+ contents: read
19
+
20
+ env:
21
+ SETUPTOOLS_SCM_OVERRIDES_FOR_PY_API_DUMPER: '{local_scheme="no-local-version"}'
22
+
23
+ steps:
24
+ - name: Checkout source code
25
+ uses: actions/checkout@v4
26
+ with:
27
+ fetch-depth: 0
28
+
29
+ - name: Set up Python
30
+ uses: actions/setup-python@v5
31
+ with:
32
+ python-version: '3.11'
33
+
34
+ - name: Initialise project
35
+ uses: nick-fields/retry@v2
36
+ with:
37
+ timeout_minutes: 5
38
+ max_attempts: 3
39
+ retry_wait_seconds: 30
40
+ command: |
41
+ python -m pip install --upgrade pip
42
+ python -m pip install ppqs
43
+ ppqs init
44
+ ppqs version
45
+
46
+ - name: Perform linting checks
47
+ run: |
48
+ ppqs lint
49
+
50
+ - name: Build project
51
+ run: |
52
+ ppqs build
53
+
54
+ - name: Run tests
55
+ run: |
56
+ ppqs test
57
+
58
+ - name: Validate metadata
59
+ run: |
60
+ twine check dist/*
61
+
62
+ - name: Attest build
63
+ uses: actions/attest-build-provenance@v2
64
+ with:
65
+ subject-path: "dist/*"
66
+
67
+ - name: Publish to PyPI
68
+ uses: pypa/gh-action-pypi-publish@release/v1
69
+ if: ${{ github.event_name == 'push' }}
70
+
71
+ - name: Publish to TestPyPI
72
+ uses: pypa/gh-action-pypi-publish@release/v1
73
+ if: ${{ github.event_name == 'workflow_dispatch' }}
74
+ with:
75
+ repository-url: https://test.pypi.org/legacy/
76
+ skip-existing: true
@@ -0,0 +1,72 @@
1
+ name: Test package
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - "*"
7
+ pull_request:
8
+ branches:
9
+ - "*"
10
+
11
+ jobs:
12
+ test:
13
+ runs-on: ubuntu-latest
14
+
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ python-version:
19
+ - "3.11"
20
+ - "3.12"
21
+ - "3.13"
22
+ - "3.14"
23
+ - "3.15"
24
+
25
+ steps:
26
+ - name: Checkout
27
+ uses: actions/checkout@v4
28
+ with:
29
+ fetch-depth: 0
30
+
31
+ - name: Set up Python ${{ matrix.python-version }}
32
+ uses: actions/setup-python@v5
33
+ with:
34
+ python-version: ${{ matrix.python-version }}
35
+
36
+ - name: Initialise project
37
+ uses: nick-fields/retry@v2
38
+ with:
39
+ timeout_minutes: 5
40
+ max_attempts: 3
41
+ retry_wait_seconds: 30
42
+ command: |
43
+ python -m pip install --upgrade pip
44
+ python -m pip install ppqs
45
+ ppqs init
46
+ ppqs version
47
+
48
+ - name: Perform linting checks
49
+ run: |
50
+ ppqs lint
51
+
52
+ - name: Build project
53
+ run: |
54
+ ppqs build
55
+
56
+ - name: Run tests
57
+ run: |
58
+ ppqs test
59
+
60
+ - name: Clean up build files
61
+ run: |
62
+ ppqs clean
63
+
64
+ all-done:
65
+ runs-on: ubuntu-latest
66
+
67
+ needs: test
68
+
69
+ steps:
70
+ - name: All done
71
+ run: |
72
+ echo All done
@@ -0,0 +1,8 @@
1
+ .coverage
2
+ /dist
3
+ /src/*.egg-info
4
+ /test/*.tmp
5
+ /test/*.tmp.gz
6
+ /test/api_ref/*.o
7
+ /test/api_ref/*.so
8
+ __pycache__
@@ -0,0 +1,43 @@
1
+ default_install_hook_types: [pre-commit, post-commit]
2
+
3
+ repos:
4
+
5
+ - repo: https://github.com/pre-commit/pre-commit-hooks
6
+ rev: v6.0.0
7
+ hooks:
8
+ - id: mixed-line-ending
9
+ args: [--fix=lf]
10
+ - id: trailing-whitespace
11
+ - id: end-of-file-fixer
12
+ - id: check-added-large-files
13
+ - id: check-toml
14
+ - id: check-yaml
15
+ - id: file-contents-sorter
16
+ args: [--unique]
17
+ files: ^\.gitattributes$|^\.gitignore$|^requirements-dev\.txt$
18
+
19
+ - repo: https://github.com/astral-sh/ruff-pre-commit
20
+ rev: v0.17.4
21
+ hooks:
22
+ - id: ruff-check
23
+
24
+ - repo: https://github.com/jsh9/pydoclint
25
+ rev: 0.12.0
26
+ hooks:
27
+ - id: pydoclint
28
+
29
+ - repo: https://github.com/assorted-pre-commit-hooks/copyright
30
+ rev: v0.12
31
+ hooks:
32
+ - id: copyright
33
+
34
+ - repo: https://github.com/psf/black
35
+ rev: 26.10.1
36
+ hooks:
37
+ - id: black
38
+ args: [--target-version=py311]
39
+
40
+ - repo: https://github.com/pre-commit/mirrors-mypy
41
+ rev: v2.4.1
42
+ hooks:
43
+ - id: mypy
@@ -0,0 +1,18 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Karl Wette
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
6
+ associated documentation files (the "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
9
+ following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all copies or substantial
12
+ portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
15
+ LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
16
+ EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
18
+ USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: py-api-dumper
3
- Version: 4.2.1
3
+ Version: 4.2.3
4
4
  Summary: Python API dumping and comparison tool
5
5
  Author-email: Karl Wette <karl.wette@anu.edu.au>
6
6
  License-Expression: MIT
@@ -8,7 +8,7 @@ Project-URL: Homepage, https://github.com/kwwette/py-api-dumper
8
8
  Project-URL: Issues, https://github.com/kwwette/py-api-dumper/issues
9
9
  Classifier: Programming Language :: Python :: 3
10
10
  Classifier: Operating System :: OS Independent
11
- Requires-Python: >=3.10
11
+ Requires-Python: >=3.11
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSES/MIT.txt
14
14
  License-File: LICENSES/CC0-1.0.txt
@@ -0,0 +1,23 @@
1
+ version = 1
2
+
3
+ [[annotations]]
4
+ path = [
5
+ ".github/**",
6
+ ".gitignore",
7
+ ".pre-commit-config.yaml",
8
+ "MANIFEST.in",
9
+ "README.md",
10
+ "pyproject.toml",
11
+ "requirements-dev.txt",
12
+ "test/api_ref/api_ref.txt",
13
+ ]
14
+ SPDX-FileCopyrightText = "NONE"
15
+ SPDX-License-Identifier = "CC0-1.0"
16
+
17
+ [[annotations]]
18
+ path = [
19
+ "src/**/*.py",
20
+ "test/**/*.c",
21
+ "test/**/*.py",
22
+ ]
23
+ SPDX-License-Identifier = "MIT"
@@ -1,5 +1,5 @@
1
1
  [build-system]
2
- requires = ["setuptools>=64.0"]
2
+ requires = ["setuptools>=80", "setuptools-scm>=8"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
@@ -8,10 +8,13 @@ description = "Python API dumping and comparison tool"
8
8
  authors = [
9
9
  { name = "Karl Wette", email = "karl.wette@anu.edu.au" },
10
10
  ]
11
- requires-python = ">=3.10"
11
+ requires-python = ">=3.11"
12
12
  readme = "README.md"
13
13
  license = "MIT"
14
- license-files = ["LICENSES/MIT.txt", "LICENSES/CC0-1.0.txt"]
14
+ license-files = [
15
+ 'LICENSES/MIT.txt',
16
+ 'LICENSES/CC0-1.0.txt',
17
+ ]
15
18
  classifiers = [
16
19
  "Programming Language :: Python :: 3",
17
20
  "Operating System :: OS Independent",
@@ -25,8 +28,9 @@ Issues = "https://github.com/kwwette/py-api-dumper/issues"
25
28
  [project.scripts]
26
29
  py-api-dumper = "py_api_dumper.cli:cli"
27
30
 
28
- [tool.setuptools.dynamic]
29
- version = {attr = "py_api_dumper.__version__"}
31
+ [tool.setuptools_scm]
32
+ scm.git.pre_parse = "fail_on_shallow"
33
+ local_scheme = "node-and-timestamp"
30
34
 
31
35
  [tool.ruff]
32
36
  fix = true
@@ -88,12 +92,28 @@ script = """
88
92
  python -m pytest ...
89
93
  """
90
94
 
95
+ [tool.ppqs.scripts.version]
96
+ description = "Print the current package version"
97
+ script = "python -m setuptools_scm"
98
+
99
+ [tool.ppqs.scripts.tag]
100
+ description = "Tag a release"
101
+ script = [
102
+ ["git", "status"],
103
+ ["git", "diff", "--quiet", "--exit-code"],
104
+ ["ppqs", "lint"],
105
+ ["ppqs", "build"],
106
+ ["ppqs", "test"],
107
+ ["git", "commit", "--allow-empty", "-m", "Version {1}.{2}.{3}"],
108
+ ["git", "tag", "-a", "-m", "Version {1}.{2}.{3}", "v{1}.{2}.{3}"],
109
+ ]
110
+
91
111
  [tool.ppqs.scripts.upload]
92
112
  description = "Upload package"
93
113
  script = [
94
- ["ppqs", "test"],
114
+ ["ppqs", "lint"],
95
115
  ["ppqs", "build"],
96
- ["twine", "upload", ["dist", "*"]],
116
+ ["ppqs", "test"],
97
117
  ["git", "push", "origin"],
98
118
  ["git", "push", "origin", "--tags"],
99
119
  ]
@@ -0,0 +1,8 @@
1
+ build>=1.6.1
2
+ coverage>=7.17.1
3
+ pre-commit>=3.7
4
+ pytest-cov>=7.1.0
5
+ pytest>=9.2.0
6
+ setuptools-scm>=8
7
+ setuptools>=80
8
+ twine>=7.0.0
@@ -12,6 +12,7 @@ import inspect
12
12
  import json
13
13
  import pkgutil
14
14
  import sys
15
+ from importlib.metadata import PackageNotFoundError, version
15
16
  from pathlib import Path
16
17
  from types import ModuleType, NoneType
17
18
  from typing import (
@@ -30,7 +31,11 @@ from typing import (
30
31
  )
31
32
 
32
33
  __author__ = "Karl Wette"
33
- __version__ = "4.2.1"
34
+
35
+ try:
36
+ __version__ = version("py-api-dumper")
37
+ except PackageNotFoundError: # pragma: no cover
38
+ __version__ = "0.0.0.dev0"
34
39
 
35
40
  APIFilterType = TypeVar("APIFilterType", bound="APIFilter")
36
41
  APIDumpType = TypeVar("APIDumpType", bound="APIDump")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: py-api-dumper
3
- Version: 4.2.1
3
+ Version: 4.2.3
4
4
  Summary: Python API dumping and comparison tool
5
5
  Author-email: Karl Wette <karl.wette@anu.edu.au>
6
6
  License-Expression: MIT
@@ -8,7 +8,7 @@ Project-URL: Homepage, https://github.com/kwwette/py-api-dumper
8
8
  Project-URL: Issues, https://github.com/kwwette/py-api-dumper/issues
9
9
  Classifier: Programming Language :: Python :: 3
10
10
  Classifier: Operating System :: OS Independent
11
- Requires-Python: >=3.10
11
+ Requires-Python: >=3.11
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSES/MIT.txt
14
14
  License-File: LICENSES/CC0-1.0.txt
@@ -1,6 +1,14 @@
1
+ .gitignore
2
+ .pre-commit-config.yaml
3
+ LICENSE
1
4
  MANIFEST.in
2
5
  README.md
6
+ REUSE.toml
3
7
  pyproject.toml
8
+ requirements-dev.txt
9
+ .github/dependabot.yml
10
+ .github/workflows/publish.yml
11
+ .github/workflows/test.yml
4
12
  LICENSES/CC0-1.0.txt
5
13
  LICENSES/MIT.txt
6
14
  src/py_api_dumper/__init__.py
@@ -9,6 +17,8 @@ src/py_api_dumper.egg-info/PKG-INFO
9
17
  src/py_api_dumper.egg-info/SOURCES.txt
10
18
  src/py_api_dumper.egg-info/dependency_links.txt
11
19
  src/py_api_dumper.egg-info/entry_points.txt
20
+ src/py_api_dumper.egg-info/scm_file_list.json
21
+ src/py_api_dumper.egg-info/scm_version.json
12
22
  src/py_api_dumper.egg-info/top_level.txt
13
23
  test/conftest.py
14
24
  test/setup.py
@@ -0,0 +1,29 @@
1
+ {
2
+ "files": [
3
+ ".github/dependabot.yml",
4
+ ".github/workflows/publish.yml",
5
+ ".github/workflows/test.yml",
6
+ ".gitignore",
7
+ ".pre-commit-config.yaml",
8
+ "LICENSE",
9
+ "LICENSES/CC0-1.0.txt",
10
+ "LICENSES/MIT.txt",
11
+ "MANIFEST.in",
12
+ "README.md",
13
+ "REUSE.toml",
14
+ "pyproject.toml",
15
+ "requirements-dev.txt",
16
+ "src/py_api_dumper/__init__.py",
17
+ "src/py_api_dumper/cli.py",
18
+ "test/api_ref/__init__.py",
19
+ "test/api_ref/_priv_mod.py",
20
+ "test/api_ref/api_ref.txt",
21
+ "test/api_ref/ext_mod.c",
22
+ "test/api_ref/pub_mod.py",
23
+ "test/conftest.py",
24
+ "test/other_mod/__init__.py",
25
+ "test/setup.py",
26
+ "test/test_diff.py",
27
+ "test/test_dump.py"
28
+ ]
29
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "4.2.3",
3
+ "distance": 0,
4
+ "node": "g0c9a3cff8e57e79e4f097f7d90dbd5b5993f18f0",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-11-07"
8
+ }
File without changes
File without changes
File without changes