sphobjinv 2.3.1.3__tar.gz → 2.4__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 (112) hide show
  1. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/CHANGELOG.md +145 -4
  2. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/CONTRIBUTING.md +17 -16
  3. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/LICENSE.txt +1 -1
  4. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/MANIFEST.in +1 -2
  5. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/PKG-INFO +34 -38
  6. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/README.md +26 -28
  7. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/make.bat +1 -1
  8. sphobjinv-2.4/doc/source/_static/mouseover_example.png +0 -0
  9. sphobjinv-2.4/doc/source/_templates/footer.html +21 -0
  10. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/index.rst +2 -2
  11. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api_usage.rst +24 -24
  12. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/cli/convert.rst +11 -10
  13. sphobjinv-2.4/doc/source/cli/index.rst +60 -0
  14. sphobjinv-2.4/doc/source/cli/soi_root.rst +26 -0
  15. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/cli/suggest.rst +7 -8
  16. sphobjinv-2.4/doc/source/cli/textconv.rst +85 -0
  17. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/conf.py +14 -32
  18. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/customfile.rst +1 -1
  19. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/index.rst +3 -3
  20. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/syntax.rst +13 -13
  21. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/pyproject.toml +16 -9
  22. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/requirements-dev.txt +1 -6
  23. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/requirements-flake8.txt +1 -1
  24. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/setup.py +2 -2
  25. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/__init__.py +1 -1
  26. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/__main__.py +1 -1
  27. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/_vendored/__init__.py +1 -1
  28. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/_vendored/fuzzywuzzy/__init__.py +1 -1
  29. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/__init__.py +1 -1
  30. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/convert.py +5 -5
  31. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/core.py +27 -4
  32. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/load.py +10 -10
  33. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/parser.py +40 -2
  34. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/paths.py +4 -4
  35. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/suggest.py +6 -6
  36. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/ui.py +7 -3
  37. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/write.py +1 -1
  38. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/data.py +1 -1
  39. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/enum.py +1 -1
  40. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/error.py +1 -1
  41. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/fileops.py +1 -1
  42. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/inventory.py +2 -2
  43. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/re.py +3 -8
  44. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/schema.py +1 -1
  45. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/version.py +2 -2
  46. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/zlib.py +1 -2
  47. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv.egg-info/SOURCES.txt +8 -11
  48. {sphobjinv-2.3.1.3 → sphobjinv-2.4/tests}/conftest.py +33 -30
  49. sphobjinv-2.4/tests/enum.py +39 -0
  50. sphobjinv-2.4/tests/fixtures_http.py +129 -0
  51. sphobjinv-2.4/tests/resource/objects_attrs.inv +0 -0
  52. sphobjinv-2.4/tests/resource/objects_attrs.json +1 -0
  53. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/resource/objects_attrs.txt +86 -35
  54. sphobjinv-2.4/tests/resource/objects_pdfminer.inv +0 -0
  55. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_api_fail.py +2 -3
  56. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_api_good.py +31 -13
  57. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_api_good_nonlocal.py +13 -6
  58. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_cli.py +6 -9
  59. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_cli_nonlocal.py +49 -32
  60. sphobjinv-2.4/tests/test_cli_textconv.py +160 -0
  61. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_fixture.py +2 -2
  62. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_intersphinx.py +2 -3
  63. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_valid_objects.py +2 -2
  64. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tox.ini +46 -19
  65. sphobjinv-2.3.1.3/doc/source/_static/mouseover_example.png +0 -0
  66. sphobjinv-2.3.1.3/doc/source/_templates/footer.html +0 -21
  67. sphobjinv-2.3.1.3/doc/source/cli/implementation/convert.rst +0 -7
  68. sphobjinv-2.3.1.3/doc/source/cli/implementation/core.rst +0 -8
  69. sphobjinv-2.3.1.3/doc/source/cli/implementation/index.rst +0 -19
  70. sphobjinv-2.3.1.3/doc/source/cli/implementation/load.rst +0 -8
  71. sphobjinv-2.3.1.3/doc/source/cli/implementation/parser.rst +0 -8
  72. sphobjinv-2.3.1.3/doc/source/cli/implementation/paths.rst +0 -8
  73. sphobjinv-2.3.1.3/doc/source/cli/implementation/suggest.rst +0 -7
  74. sphobjinv-2.3.1.3/doc/source/cli/implementation/ui.rst +0 -8
  75. sphobjinv-2.3.1.3/doc/source/cli/implementation/write.rst +0 -8
  76. sphobjinv-2.3.1.3/doc/source/cli/index.rst +0 -62
  77. sphobjinv-2.3.1.3/tests/resource/objects_attrs.json +0 -1
  78. sphobjinv-2.3.1.3/tests/test_flake8_ext.py +0 -73
  79. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/AUTHORS.md +0 -0
  80. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/Makefile +0 -0
  81. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/css/custom.css +0 -0
  82. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/extlink.svg +0 -0
  83. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/no-leven.csv +0 -0
  84. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/soi-logo.png +0 -0
  85. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/soi-logo_duo.png +0 -0
  86. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/soi-logo_duo_border.png +0 -0
  87. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/soi-logo_duo_border.xcf +0 -0
  88. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/suggest_timing.png +0 -0
  89. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/suggest_timing.xlsx +0 -0
  90. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/suggest_timing_commands.txt +0 -0
  91. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/with-leven.csv +0 -0
  92. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/data.rst +0 -0
  93. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/enum.rst +0 -0
  94. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/error.rst +0 -0
  95. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/fileops.rst +0 -0
  96. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/inventory.rst +0 -0
  97. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/re.rst +0 -0
  98. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/schema.rst +0 -0
  99. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/zlib.rst +0 -0
  100. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/isphx/objpull.py +0 -0
  101. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/levenshtein.rst +0 -0
  102. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/setup.cfg +0 -0
  103. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/_vendored/fuzzywuzzy/LICENSE.txt +0 -0
  104. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/_vendored/fuzzywuzzy/fuzz.py +0 -0
  105. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/_vendored/fuzzywuzzy/process.py +0 -0
  106. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/_vendored/fuzzywuzzy/tests.py +0 -0
  107. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/_vendored/fuzzywuzzy/utils.py +0 -0
  108. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/__init__.py +0 -0
  109. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/resource/objects_attrs_17_2_0.inv +0 -0
  110. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/resource/objects_attrs_20_3_0.inv +0 -0
  111. /sphobjinv-2.3.1.3/tests/resource/objects_attrs.inv → /sphobjinv-2.4/tests/resource/objects_attrs_22_1.inv +0 -0
  112. {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/resource/objects_sarge.inv +0 -0
@@ -2,15 +2,149 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
- The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
6
6
  and this project follows an extension of
7
- [Semantic Versioning](http://semver.org/spec/v2.0.0.html), where a bump in a
7
+ [Semantic Versioning](https://semver.org/spec/v2.0.0.html), where a bump in a
8
8
  fourth number represents an administrative maintenance release with no code
9
9
  changes.
10
10
 
11
- ### *Unreleased*
11
+ ### [2.4] - 2026-03-23
12
12
 
13
- ...
13
+ #### Added
14
+
15
+ * Add `sphobjinv-textconv` CLI entrypoint ([#331]).
16
+ * Takes a single required argument, the path to a local inventory file, and
17
+ emits the plaintext inventory to `stdout`.
18
+ * The target use-case is as a Git textconv, primarily intended for
19
+ compressed `objects.inv` files; but, it will work with any valid type of
20
+ input file.
21
+
22
+ #### Tests
23
+
24
+ * Remove flake8_ext test file and machinery ([#336]).
25
+ * pytest environment now can easily de-sync from the flake8 environment
26
+ since flake8 is running in tox now.
27
+ * It was really always over-cautious, too.
28
+
29
+ * Exclude `setup.py` from coverage ([#336]).
30
+ * Necessary due to a change in coverage.py behavior, maybe?
31
+ * Definitely is not expected to run during execution of the test suite.
32
+
33
+ * Remove unused `ensure_doc_scratch` fixture from `conftest.py` ([#336]).
34
+ * Obsolete now that the README shell examples aren't doctested.
35
+
36
+ * Add 3.13t and 3.14t to `tox` test matrix ([#333]).
37
+ * Also add report of the current GIL status to the `tox` env output.
38
+
39
+ * Filter newly emerged `ResourceWarning` emitted from implicit cleanup of
40
+ `tempfile` resources ([#333]).
41
+
42
+ * Add tests exercising the new `sphobjinv-textconv` CLI entrypoint ([#331]).
43
+ * Required generalizing the `run_cmdline_test` fixture so that tests can
44
+ choose between the core and textconv entrypoints.
45
+
46
+ * Update `tox` env test matrix for `py310` to `py314` ([#325]).
47
+
48
+ * Update test path calculations to always be relative to `__file__` ([#325]).
49
+
50
+ * Relocate `conftest.py` into `tests` ([#325]).
51
+ * Since the new HTTP server fixtures are going in their own source file, it
52
+ made the most sense to pull `conftest.py` into the `tests/` directory
53
+ also.
54
+ * Required some updates to paths in fixtures &c.
55
+
56
+ * Convert HTTP/URL nonloc tests to use a transient local HTTP server ([#325]).
57
+ * See `tests/fixtures_http.py`.
58
+ * With the increased caution many sites, including GitHub, are applying to
59
+ incoming traffic, using 'raw' GitHub assets in the `sphobjinv` repository
60
+ has become too flaky.
61
+ * So, we stand up our own HTTP server as a session-scope fixture, and point
62
+ (nearly) all of the URL tests at the local server.
63
+ * A small number of tests remain that do still reach out to an internet
64
+ `objects.inv`.
65
+ * A small number of outside-world URL tests remain, to docsets that (so far)
66
+ have been cooperative. Time will tell if we need to find others.
67
+
68
+ #### Internal
69
+
70
+ * Convert `build` call into a `tox` env and remove `build` from
71
+ `requirements-dev.txt` ([#336]).
72
+
73
+ * Remove redundant packages from `requirements-dev.txt` and
74
+ `requirements-ci.txt` that are pulled in by the `-e .` line ([#336]).
75
+
76
+ * Add `tests/resource/objects_pdfminer*` to `MANIFEST.in`, to make that
77
+ inventory available to the docs build in the sdist unpack-and-test workflow
78
+ job ([#336]).
79
+ * Otherwise the docs job emits a warning. Not fatal, but better to have a
80
+ clean build.
81
+
82
+ * Pin Actions versions to SHAs and de-persist credentials ([#336]).
83
+ * Closes [#322].
84
+
85
+ * Add Actions workflow to error on a non-draft release branch if any `#VER#`
86
+ markers remain in docs source ([#331]).
87
+
88
+ * Augment `black` and `flake8` `tox` envs to run `--version` first ([#327]).
89
+
90
+ * Remove `-r requirements-flake.txt` from `requirements-dev.txt` ([#327]).
91
+ * `flake8` should always be run via `tox`.
92
+
93
+ * Add `tox` env to run `isort` and execute across codebase ([#327]).
94
+
95
+ * Add `flake8-isort` to `flake8` requirements and remove `flake8-import-order`
96
+ ([#327]).
97
+ * Also remove `flake8-import-order` config from `tox.ini`.
98
+
99
+ * Bump dev-pin Sphinx to v8.1.3 ([#325]).
100
+ * Two different version constraints at the moment:
101
+ * Sphinx v8.2 doesn't support Python 3.10 (primary constraint)
102
+ * Newest `sphinx-rtd-theme` only supports Sphinx `<9` (secondary).
103
+
104
+ * Add `push` trigger for `all_core_tests.yml` workflow for `main` branch
105
+ ([#320]).
106
+ * This will provide `main` branch CI results for this workflow, for the
107
+ GitHub badge to report.
108
+
109
+ #### Documentation
110
+
111
+ * Update Sphinx, attrs, Python, etc. content to freshen and to match the new
112
+ inventories in the test resources ([#336]).
113
+
114
+ * Dynamically retrieve the current values of `PrsConst.SUGGEST_CONFIRM_LENGTH`
115
+ and `PrsConst.DEF_THRESH` to define their replaces in `conf.py` ([#331]).
116
+
117
+ * Add `cli/textconv.rst` to document the new `sphobjinv-textconv` CLI
118
+ entrypoint ([#331]).
119
+
120
+ * Cull some superfluous replaces in `conf.py` ([#331]).
121
+
122
+ * Relocate the 'help' and 'version' CLI usage documentation content to a new
123
+ 'orphan' page ([#331]).
124
+ * This keeps the content in the `objects.inv`, for completeness, but keeps
125
+ it off of the docs nav.
126
+
127
+ * Revise 'CLI Usage' documentation to incorporate the `sphobjinv-textconv`
128
+ entrypoint ([#331]).
129
+
130
+ * Remove the 'CLI Implementation' "API reference" docs ([#331]).
131
+ * They're not part of the public API contract, and they don't actually help
132
+ understand how the CLI is implemented; so, why bother maintaining them?
133
+ * Also cull the various `replace` directives defined in `conf.py` for these
134
+ docs.
135
+
136
+ #### Administrative
137
+
138
+ * Convert several `http://` to `https://` across the project ([#333]).
139
+
140
+ * Add formal support for Python 3.14 ([#325]).
141
+
142
+ * Drop support for Python 3.9 (EOL) ([#325]).
143
+
144
+ * Bump 'core' dev and CI Python version to 3.13 ([#325]).
145
+
146
+ * Update the GitHub badge to point to the new `all_core_tests.yml` workflow
147
+ ([#320]) instead of the now-removed `ci_tests.yml`.
14
148
 
15
149
 
16
150
  ### [2.3.1.3] - 2025-05-26
@@ -680,3 +814,10 @@ changes.
680
814
  [#306]: https://github.com/bskinn/sphobjinv/pull/306
681
815
  [#315]: https://github.com/bskinn/sphobjinv/pull/315
682
816
  [#316]: https://github.com/bskinn/sphobjinv/pull/316
817
+ [#320]: https://github.com/bskinn/sphobjinv/pull/320
818
+ [#322]: https://github.com/bskinn/sphobjinv/issues/322
819
+ [#325]: https://github.com/bskinn/sphobjinv/pull/325
820
+ [#327]: https://github.com/bskinn/sphobjinv/pull/327
821
+ [#331]: https://github.com/bskinn/sphobjinv/pull/331
822
+ [#333]: https://github.com/bskinn/sphobjinv/pull/333
823
+ [#336]: https://github.com/bskinn/sphobjinv/pull/336
@@ -39,12 +39,12 @@ $ git clone https://github.com/{you}/sphobjinv
39
39
  ```
40
40
 
41
41
  Then, create a virtual environment for the project, in whatever location you
42
- prefer. Any Python interpreter 3.9+ *should* work fine.
42
+ prefer. Any Python interpreter 3.10+ *should* work fine.
43
43
 
44
44
  I prefer to use `virtualenv` and create in `./env`:
45
45
 
46
46
  ```bash
47
- $ python3.12 -m virtualenv env --prompt="sphobjinv"
47
+ $ python3.13 -m virtualenv env --prompt="sphobjinv"
48
48
  ```
49
49
 
50
50
  Activate the environment:
@@ -122,6 +122,10 @@ flag:
122
122
  $ pytest --nonloc
123
123
  ```
124
124
 
125
+ Most of these nonlocal tests now use an ephemeral local web server instead of
126
+ reaching out to the web, and so should run even without network access and
127
+ should just run faster in general.
128
+
125
129
  When putting together a PR, at minimum, please add/augment the test suite as
126
130
  necessary to maintain 100% test coverage. To the extent possible, please go
127
131
  beyond this and add tests that check potential edge cases, bad/malformed/invalid
@@ -140,16 +144,16 @@ Note that while [`tox`](https://tox.wiki/en/latest/) *is* configured for the
140
144
  project, it is **not** set up to be an everyday test runner. Instead, its
141
145
  purpose for testing is to execute an extensive matrix of test environments
142
146
  checking for the compatibility of different Python and dependency versions. You
143
- can run it if you want, but you'll need working versions of all of Python 3.9
144
- through 3.13 installed and on `PATH` as `python3.9`, `python3.10`, etc. The
145
- nonlocal test suite is run for each `tox` environment, so it's best to use at
146
- most two parallel sub-processes to avoid oversaturating your network bandwidth;
147
- e.g.:
147
+ can run it if you want, but you'll need working versions of all of Python 3.10
148
+ through 3.14 installed and on `PATH` as `python3.10`, `python3.11`, etc., as
149
+ well as free-threaded versions for Python 3.13 onward as `python3.13t`, etc. The
150
+ test matrix can be accelerated by using `tox`'s parallel execution mode; e.g.:
148
151
 
149
152
  ```bash
150
153
  $ tox -rp2
151
154
  ```
152
155
 
156
+
153
157
  ## Code Autoformatting
154
158
 
155
159
  The project is set up with a `tox` environment to blacken the codebase; run with:
@@ -244,20 +248,17 @@ with `make linkcheck`.
244
248
 
245
249
  ## Continuous Integration
246
250
 
247
- Both Github Actions and Azure Pipelines are set up for the project, and should
248
- run on any forks of the repository.
251
+ Github Actions workflows are set up for the project, and should run on any forks
252
+ of the repository. Note that the CI runs differently on draft versus non-draft
253
+ PRs: on draft PRs, the only workflow that runs runs tests on Windows and Linux
254
+ with one Python version; whereas on non-draft PRs, a complete test matrix of
255
+ platforms and Python versions is run, as well as doctests and linting checks.
249
256
 
250
- Github Actions runs the test suite on Linux for Python 3.9 through 3.13, as well
257
+ Github Actions runs the test suite on Linux for Python 3.10 through 3.14, as well
251
258
  as the `flake8` lints and the Sphinx doctests. By default, the Github Actions
252
259
  will run on all commits, but the workflows can be skipped per-commit by
253
260
  including `[skip ci]` in the commit message.
254
261
 
255
- The Azure Pipelines CI runs an extensive matrix of cross-platform and
256
- cross-Python-version tests, as well as numerous other checks. Due to its length,
257
- it is configured to run only on release branches and PRs to `main` or `stable`.
258
- The Azure Pipelines workflows now [also obey `[skip ci]`
259
- directives](https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/azure-repos-git?view=azure-devops&tabs=yaml#skipping-ci-for-individual-pushes).
260
-
261
262
 
262
263
  ## CHANGELOG
263
264
 
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2016-2025 Brian Skinn and community contributors
3
+ Copyright (c) 2016-2026 Brian Skinn and community contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of
6
6
  this software and associated documentation files (the "Software"), to deal in
@@ -6,10 +6,9 @@ graft src/sphobjinv/_vendored/fuzzywuzzy
6
6
  graft doc/source
7
7
  include doc/make.bat doc/Makefile
8
8
 
9
- include conftest.py
10
9
  graft tests
11
10
  prune tests/resource
12
- include tests/resource/objects_attrs* tests/resource/objects_sarge*
11
+ include tests/resource/objects_attrs* tests/resource/objects_sarge* tests/resource/objects_pdfminer*
13
12
 
14
13
  global-exclude __pycache__/*
15
14
  prune **/*.egg-info
@@ -1,18 +1,16 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sphobjinv
3
- Version: 2.3.1.3
3
+ Version: 2.4
4
4
  Summary: Sphinx objects.inv Inspection/Manipulation Tool
5
5
  Author-email: Brian Skinn <brian.skinn@gmail.com>
6
- License: MIT License
7
- Project-URL: Homepage, https://github.com/bskinn/sphobjinv
6
+ License-Expression: MIT
8
7
  Project-URL: Changelog, https://github.com/bskinn/sphobjinv/blob/main/CHANGELOG.md
9
8
  Project-URL: Docs, https://sphobjinv.readthedocs.io/en/stable/
10
- Project-URL: Thank, https://fosstodon.org/@btskinn
11
9
  Project-URL: Donate, https://github.com/sponsors/bskinn
10
+ Project-URL: Homepage, https://github.com/bskinn/sphobjinv
11
+ Project-URL: Thank, https://fosstodon.org/@btskinn
12
12
  Keywords: sphinx,sphinx-doc,inventory,manager,inspector
13
13
  Platform: any
14
- Classifier: License :: OSI Approved
15
- Classifier: License :: OSI Approved :: MIT License
16
14
  Classifier: Natural Language :: English
17
15
  Classifier: Environment :: Console
18
16
  Classifier: Framework :: Sphinx
@@ -21,23 +19,23 @@ Classifier: Operating System :: OS Independent
21
19
  Classifier: Programming Language :: Python
22
20
  Classifier: Programming Language :: Python :: 3
23
21
  Classifier: Programming Language :: Python :: 3 :: Only
24
- Classifier: Programming Language :: Python :: 3.9
25
22
  Classifier: Programming Language :: Python :: 3.10
26
23
  Classifier: Programming Language :: Python :: 3.11
27
24
  Classifier: Programming Language :: Python :: 3.12
28
25
  Classifier: Programming Language :: Python :: 3.13
26
+ Classifier: Programming Language :: Python :: 3.14
29
27
  Classifier: Topic :: Documentation
30
28
  Classifier: Topic :: Documentation :: Sphinx
31
29
  Classifier: Topic :: Software Development
32
30
  Classifier: Topic :: Software Development :: Documentation
33
31
  Classifier: Topic :: Utilities
34
32
  Classifier: Development Status :: 5 - Production/Stable
35
- Requires-Python: >=3.9
33
+ Requires-Python: >=3.10
36
34
  Description-Content-Type: text/markdown
37
35
  License-File: LICENSE.txt
38
36
  Requires-Dist: attrs>=19.2
39
37
  Requires-Dist: certifi
40
- Requires-Dist: jsonschema>=3.0
38
+ Requires-Dist: jsonschema>=3.1.1
41
39
  Dynamic: description
42
40
  Dynamic: description-content-type
43
41
  Dynamic: license-file
@@ -86,26 +84,24 @@ For internal cross-references, locate `objects.inv` within `build/html`:
86
84
  ```none
87
85
  $ sphobjinv suggest doc/build/html/objects.inv as_rst -st 58
88
86
 
89
- ------------------------------------------------
87
+ -----------------------------------------------------------------------------------------------------------
90
88
 
91
89
  Cannot infer intersphinx_mapping from a local objects.inv.
92
90
 
93
- ------------------------------------------------
91
+ -----------------------------------------------------------------------------------------------------------
94
92
 
95
93
  Project: sphobjinv
96
- Version: 2.3
97
-
98
- 220 objects in inventory.
94
+ Version: 2.4
99
95
 
100
- ------------------------------------------------
96
+ 151 objects in inventory.
101
97
 
102
- 11 results found at/above current threshold of 58.
98
+ -----------------------------------------------------------------------------------------------------------
103
99
 
100
+ 10 results found at/above current threshold of 58.
104
101
 
105
102
  Name Score
106
103
  --------------------------------------------------- -------
107
104
  :py:property:`sphobjinv.data.SuperDataObj.as_rst` 60
108
- :py:class:`sphobjinv.cli.parser.PrsConst` 59
109
105
  :py:class:`sphobjinv.data.DataFields` 59
110
106
  :py:class:`sphobjinv.data.DataObjBytes` 59
111
107
  :py:class:`sphobjinv.data.DataObjStr` 59
@@ -128,31 +124,31 @@ cross-reference the `linspace` function from numpy (see
128
124
  [here][numpy linspace]):
129
125
 
130
126
  ```none
131
- $ sphobjinv suggest https://numpy.org/doc/1.26/reference/index.html linspace -su
127
+ $ sphobjinv suggest https://numpy.org/doc/2.4/reference/index.html linspace -su
132
128
 
133
- Attempting https://numpy.org/doc/1.26/reference/index.html ...
129
+ Attempting https://numpy.org/doc/2.4/reference/index.html ...
134
130
  ... no recognized inventory.
135
- Attempting "https://numpy.org/doc/1.26/reference/index.html/objects.inv" ...
131
+ Attempting "https://numpy.org/doc/2.4/reference/index.html/objects.inv" ...
136
132
  ... HTTP error: 404 Not Found.
137
- Attempting "https://numpy.org/doc/1.26/reference/objects.inv" ...
133
+ Attempting "https://numpy.org/doc/2.4/reference/objects.inv" ...
138
134
  ... HTTP error: 404 Not Found.
139
- Attempting "https://numpy.org/doc/1.26/objects.inv" ...
135
+ Attempting "https://numpy.org/doc/2.4/objects.inv" ...
140
136
  ... inventory found.
141
137
 
142
- ----------------------------------------------------------------------------------
138
+ -----------------------------------------------------------------------------------------------------------
143
139
 
144
140
  The intersphinx_mapping for this docset is LIKELY:
145
141
 
146
- (https://numpy.org/doc/1.26/, None)
142
+ (https://numpy.org/doc/2.4/, None)
147
143
 
148
- ----------------------------------------------------------------------------------
144
+ -----------------------------------------------------------------------------------------------------------
149
145
 
150
146
  Project: NumPy
151
- Version: 1.26
147
+ Version: 2.4
152
148
 
153
- 8152 objects in inventory.
149
+ 8456 objects in inventory.
154
150
 
155
- ----------------------------------------------------------------------------------
151
+ -----------------------------------------------------------------------------------------------------------
156
152
 
157
153
  8 results found at/above current threshold of 75.
158
154
 
@@ -198,13 +194,13 @@ inventory creation/modification:
198
194
  >>> import sphobjinv as soi
199
195
  >>> inv = soi.Inventory('doc/build/html/objects.inv')
200
196
  >>> print(inv)
201
- <Inventory (fname_zlib): sphobjinv v2.3, 220 objects>
197
+ <Inventory (fname_zlib): sphobjinv v2.4, 151 objects>
202
198
  >>> inv.project
203
199
  'sphobjinv'
204
200
  >>> inv.version
205
- '2.3'
201
+ '2.4'
206
202
  >>> inv.objects[0]
207
- DataObjStr(name='sphobjinv.cli.convert', domain='py', role='module', priority='0', uri='cli/implementation/convert.html#module-$', dispname='-')
203
+ DataObjStr(name='sphobjinv.data', domain='py', role='module', priority='0', uri='api/data.html#module-$', dispname='-')
208
204
 
209
205
  ```
210
206
 
@@ -221,7 +217,7 @@ Available on [PyPI][pypi link target] (`pip install sphobjinv`).
221
217
  Source on [GitHub][github repo]. Bug reports and feature requests are welcomed
222
218
  at the [Issues][github issue tracker] page there.
223
219
 
224
- Copyright (c) Brian Skinn 2016-2025
220
+ Copyright (c) 2016-2026 Brian Skinn and community contributors
225
221
 
226
222
  The `sphobjinv` documentation (including docstrings and README) is licensed
227
223
  under a [Creative Commons Attribution 4.0 International License][cc-by 4.0]
@@ -231,8 +227,8 @@ under a [Creative Commons Attribution 4.0 International License][cc-by 4.0]
231
227
 
232
228
  [black badge]: https://img.shields.io/badge/code%20style-black-000000.svg
233
229
  [black link target]: https://github.com/psf/black
234
- [cc-by 4.0]: http://creativecommons.org/licenses/by/4.0/
235
- [soi docs inv export]: http://sphobjinv.readthedocs.io/en/v2.3.1.2/api_usage.html#exporting-an-inventory
230
+ [cc-by 4.0]: https:/creativecommons.org/licenses/by/4.0/
231
+ [soi docs inv export]: https://sphobjinv.readthedocs.io/en/v2.4/api_usage.html#exporting-an-inventory
236
232
  [github issue tracker]: https://github.com/bskinn/sphobjinv/issues
237
233
  [github repo]: https://github.com/bskinn/sphobjinv
238
234
  [gitter badge]: https://badges.gitter.im/sphobjinv/community.svg
@@ -242,11 +238,11 @@ under a [Creative Commons Attribution 4.0 International License][cc-by 4.0]
242
238
  [mit license]: https://opensource.org/licenses/MIT
243
239
  [numpy linspace]: https://numpy.org/doc/1.26/reference/generated/numpy.linspace.html
244
240
  [pepy badge]: https://pepy.tech/badge/sphobjinv/month
245
- [pepy link target]: https://pepy.tech/projects/sphobjinv?timeRange=threeMonths&category=version&includeCIDownloads=true&granularity=daily&viewType=chart&versions=2.0.*%2C2.1.*%2C2.2.*%2C2.3.*
241
+ [pepy link target]: https://pepy.tech/projects/sphobjinv?timeRange=threeMonths&category=version&includeCIDownloads=true&granularity=daily&versions=2.3.*%2C2.4*
246
242
  [pypi badge]: https://img.shields.io/pypi/v/sphobjinv.svg?logo=pypi]
247
243
  [pypi link target]: https://pypi.org/project/sphobjinv
248
244
  [python versions badge]: https://img.shields.io/pypi/pyversions/sphobjinv.svg?logo=python
249
- [readthedocs badge]: https://img.shields.io/readthedocs/sphobjinv/v2.3.1.2.svg
250
- [readthedocs link target]: http://sphobjinv.readthedocs.io/en/v2.3.1.2/
251
- [workflow badge]: https://img.shields.io/github/actions/workflow/status/bskinn/sphobjinv/ci_tests.yml?logo=github&branch=main
245
+ [readthedocs badge]: https://img.shields.io/readthedocs/sphobjinv/v2.4.svg
246
+ [readthedocs link target]: https://sphobjinv.readthedocs.io/en/v2.4/
247
+ [workflow badge]: https://img.shields.io/github/actions/workflow/status/bskinn/sphobjinv/all_core_tests.yml?logo=github&branch=main
252
248
  [workflow link target]: https://github.com/bskinn/sphobjinv/actions
@@ -42,26 +42,24 @@ For internal cross-references, locate `objects.inv` within `build/html`:
42
42
  ```none
43
43
  $ sphobjinv suggest doc/build/html/objects.inv as_rst -st 58
44
44
 
45
- ------------------------------------------------
45
+ -----------------------------------------------------------------------------------------------------------
46
46
 
47
47
  Cannot infer intersphinx_mapping from a local objects.inv.
48
48
 
49
- ------------------------------------------------
49
+ -----------------------------------------------------------------------------------------------------------
50
50
 
51
51
  Project: sphobjinv
52
- Version: 2.3
52
+ Version: 2.4
53
53
 
54
- 220 objects in inventory.
54
+ 151 objects in inventory.
55
55
 
56
- ------------------------------------------------
57
-
58
- 11 results found at/above current threshold of 58.
56
+ -----------------------------------------------------------------------------------------------------------
59
57
 
58
+ 10 results found at/above current threshold of 58.
60
59
 
61
60
  Name Score
62
61
  --------------------------------------------------- -------
63
62
  :py:property:`sphobjinv.data.SuperDataObj.as_rst` 60
64
- :py:class:`sphobjinv.cli.parser.PrsConst` 59
65
63
  :py:class:`sphobjinv.data.DataFields` 59
66
64
  :py:class:`sphobjinv.data.DataObjBytes` 59
67
65
  :py:class:`sphobjinv.data.DataObjStr` 59
@@ -84,31 +82,31 @@ cross-reference the `linspace` function from numpy (see
84
82
  [here][numpy linspace]):
85
83
 
86
84
  ```none
87
- $ sphobjinv suggest https://numpy.org/doc/1.26/reference/index.html linspace -su
85
+ $ sphobjinv suggest https://numpy.org/doc/2.4/reference/index.html linspace -su
88
86
 
89
- Attempting https://numpy.org/doc/1.26/reference/index.html ...
87
+ Attempting https://numpy.org/doc/2.4/reference/index.html ...
90
88
  ... no recognized inventory.
91
- Attempting "https://numpy.org/doc/1.26/reference/index.html/objects.inv" ...
89
+ Attempting "https://numpy.org/doc/2.4/reference/index.html/objects.inv" ...
92
90
  ... HTTP error: 404 Not Found.
93
- Attempting "https://numpy.org/doc/1.26/reference/objects.inv" ...
91
+ Attempting "https://numpy.org/doc/2.4/reference/objects.inv" ...
94
92
  ... HTTP error: 404 Not Found.
95
- Attempting "https://numpy.org/doc/1.26/objects.inv" ...
93
+ Attempting "https://numpy.org/doc/2.4/objects.inv" ...
96
94
  ... inventory found.
97
95
 
98
- ----------------------------------------------------------------------------------
96
+ -----------------------------------------------------------------------------------------------------------
99
97
 
100
98
  The intersphinx_mapping for this docset is LIKELY:
101
99
 
102
- (https://numpy.org/doc/1.26/, None)
100
+ (https://numpy.org/doc/2.4/, None)
103
101
 
104
- ----------------------------------------------------------------------------------
102
+ -----------------------------------------------------------------------------------------------------------
105
103
 
106
104
  Project: NumPy
107
- Version: 1.26
105
+ Version: 2.4
108
106
 
109
- 8152 objects in inventory.
107
+ 8456 objects in inventory.
110
108
 
111
- ----------------------------------------------------------------------------------
109
+ -----------------------------------------------------------------------------------------------------------
112
110
 
113
111
  8 results found at/above current threshold of 75.
114
112
 
@@ -154,13 +152,13 @@ inventory creation/modification:
154
152
  >>> import sphobjinv as soi
155
153
  >>> inv = soi.Inventory('doc/build/html/objects.inv')
156
154
  >>> print(inv)
157
- <Inventory (fname_zlib): sphobjinv v2.3, 220 objects>
155
+ <Inventory (fname_zlib): sphobjinv v2.4, 151 objects>
158
156
  >>> inv.project
159
157
  'sphobjinv'
160
158
  >>> inv.version
161
- '2.3'
159
+ '2.4'
162
160
  >>> inv.objects[0]
163
- DataObjStr(name='sphobjinv.cli.convert', domain='py', role='module', priority='0', uri='cli/implementation/convert.html#module-$', dispname='-')
161
+ DataObjStr(name='sphobjinv.data', domain='py', role='module', priority='0', uri='api/data.html#module-$', dispname='-')
164
162
 
165
163
  ```
166
164
 
@@ -177,7 +175,7 @@ Available on [PyPI][pypi link target] (`pip install sphobjinv`).
177
175
  Source on [GitHub][github repo]. Bug reports and feature requests are welcomed
178
176
  at the [Issues][github issue tracker] page there.
179
177
 
180
- Copyright (c) Brian Skinn 2016-2025
178
+ Copyright (c) 2016-2026 Brian Skinn and community contributors
181
179
 
182
180
  The `sphobjinv` documentation (including docstrings and README) is licensed
183
181
  under a [Creative Commons Attribution 4.0 International License][cc-by 4.0]
@@ -187,8 +185,8 @@ under a [Creative Commons Attribution 4.0 International License][cc-by 4.0]
187
185
 
188
186
  [black badge]: https://img.shields.io/badge/code%20style-black-000000.svg
189
187
  [black link target]: https://github.com/psf/black
190
- [cc-by 4.0]: http://creativecommons.org/licenses/by/4.0/
191
- [soi docs inv export]: http://sphobjinv.readthedocs.io/en/latest/api_usage.html#exporting-an-inventory
188
+ [cc-by 4.0]: https:/creativecommons.org/licenses/by/4.0/
189
+ [soi docs inv export]: https://sphobjinv.readthedocs.io/en/latest/api_usage.html#exporting-an-inventory
192
190
  [github issue tracker]: https://github.com/bskinn/sphobjinv/issues
193
191
  [github repo]: https://github.com/bskinn/sphobjinv
194
192
  [gitter badge]: https://badges.gitter.im/sphobjinv/community.svg
@@ -198,11 +196,11 @@ under a [Creative Commons Attribution 4.0 International License][cc-by 4.0]
198
196
  [mit license]: https://opensource.org/licenses/MIT
199
197
  [numpy linspace]: https://numpy.org/doc/1.26/reference/generated/numpy.linspace.html
200
198
  [pepy badge]: https://pepy.tech/badge/sphobjinv/month
201
- [pepy link target]: https://pepy.tech/projects/sphobjinv?timeRange=threeMonths&category=version&includeCIDownloads=true&granularity=daily&viewType=chart&versions=2.0.*%2C2.1.*%2C2.2.*%2C2.3.*
199
+ [pepy link target]: https://pepy.tech/projects/sphobjinv?timeRange=threeMonths&category=version&includeCIDownloads=true&granularity=daily&versions=2.3.*%2C2.4*
202
200
  [pypi badge]: https://img.shields.io/pypi/v/sphobjinv.svg?logo=pypi]
203
201
  [pypi link target]: https://pypi.org/project/sphobjinv
204
202
  [python versions badge]: https://img.shields.io/pypi/pyversions/sphobjinv.svg?logo=python
205
203
  [readthedocs badge]: https://img.shields.io/readthedocs/sphobjinv/latest.svg
206
- [readthedocs link target]: http://sphobjinv.readthedocs.io/en/latest/
207
- [workflow badge]: https://img.shields.io/github/actions/workflow/status/bskinn/sphobjinv/ci_tests.yml?logo=github&branch=main
204
+ [readthedocs link target]: https://sphobjinv.readthedocs.io/en/latest/
205
+ [workflow badge]: https://img.shields.io/github/actions/workflow/status/bskinn/sphobjinv/all_core_tests.yml?logo=github&branch=main
208
206
  [workflow link target]: https://github.com/bskinn/sphobjinv/actions
@@ -21,7 +21,7 @@ if errorlevel 9009 (
21
21
  echo.may add the Sphinx directory to PATH.
22
22
  echo.
23
23
  echo.If you don't have Sphinx installed, grab it from
24
- echo.http://sphinx-doc.org/
24
+ echo.https://sphinx-doc.org/
25
25
  exit /b 1
26
26
  )
27
27
 
@@ -0,0 +1,21 @@
1
+ {% extends "!footer.html" %}
2
+
3
+ {%-block extrafooter %}
4
+
5
+ {{ super() }}
6
+
7
+ <br /><br />
8
+
9
+ <p class="footer-license">
10
+ Logo and favicon adapted from freely-available image at
11
+ https://heypik.com/images/hand-drawn-cartoon-color-tourist-attraction-sphinx_8ZU4501.html
12
+ (retrieved July 2019; now defunct).
13
+ </p>
14
+
15
+ <p class="footer-license">
16
+ <a rel="license" href="https://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
17
+ &nbsp;&nbsp;
18
+ <span xmlns:dct="https://purl.org/dc/terms/" property="dct:title">The sphobjinv documentation</span> is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
19
+ </p>
20
+
21
+ {% endblock %}
@@ -1,7 +1,7 @@
1
1
  .. API page
2
2
 
3
- API
4
- ===
3
+ API Reference
4
+ =============
5
5
 
6
6
  Most (all?) of the objects documented in the below submodules
7
7
  are also exposed at the |soi| package root. For example,