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.
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/CHANGELOG.md +145 -4
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/CONTRIBUTING.md +17 -16
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/LICENSE.txt +1 -1
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/MANIFEST.in +1 -2
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/PKG-INFO +34 -38
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/README.md +26 -28
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/make.bat +1 -1
- sphobjinv-2.4/doc/source/_static/mouseover_example.png +0 -0
- sphobjinv-2.4/doc/source/_templates/footer.html +21 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/index.rst +2 -2
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api_usage.rst +24 -24
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/cli/convert.rst +11 -10
- sphobjinv-2.4/doc/source/cli/index.rst +60 -0
- sphobjinv-2.4/doc/source/cli/soi_root.rst +26 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/cli/suggest.rst +7 -8
- sphobjinv-2.4/doc/source/cli/textconv.rst +85 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/conf.py +14 -32
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/customfile.rst +1 -1
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/index.rst +3 -3
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/syntax.rst +13 -13
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/pyproject.toml +16 -9
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/requirements-dev.txt +1 -6
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/requirements-flake8.txt +1 -1
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/setup.py +2 -2
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/__init__.py +1 -1
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/__main__.py +1 -1
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/_vendored/__init__.py +1 -1
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/_vendored/fuzzywuzzy/__init__.py +1 -1
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/__init__.py +1 -1
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/convert.py +5 -5
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/core.py +27 -4
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/load.py +10 -10
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/parser.py +40 -2
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/paths.py +4 -4
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/suggest.py +6 -6
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/ui.py +7 -3
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/cli/write.py +1 -1
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/data.py +1 -1
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/enum.py +1 -1
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/error.py +1 -1
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/fileops.py +1 -1
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/inventory.py +2 -2
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/re.py +3 -8
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/schema.py +1 -1
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/version.py +2 -2
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/zlib.py +1 -2
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv.egg-info/SOURCES.txt +8 -11
- {sphobjinv-2.3.1.3 → sphobjinv-2.4/tests}/conftest.py +33 -30
- sphobjinv-2.4/tests/enum.py +39 -0
- sphobjinv-2.4/tests/fixtures_http.py +129 -0
- sphobjinv-2.4/tests/resource/objects_attrs.inv +0 -0
- sphobjinv-2.4/tests/resource/objects_attrs.json +1 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/resource/objects_attrs.txt +86 -35
- sphobjinv-2.4/tests/resource/objects_pdfminer.inv +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_api_fail.py +2 -3
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_api_good.py +31 -13
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_api_good_nonlocal.py +13 -6
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_cli.py +6 -9
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_cli_nonlocal.py +49 -32
- sphobjinv-2.4/tests/test_cli_textconv.py +160 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_fixture.py +2 -2
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_intersphinx.py +2 -3
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/test_valid_objects.py +2 -2
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tox.ini +46 -19
- sphobjinv-2.3.1.3/doc/source/_static/mouseover_example.png +0 -0
- sphobjinv-2.3.1.3/doc/source/_templates/footer.html +0 -21
- sphobjinv-2.3.1.3/doc/source/cli/implementation/convert.rst +0 -7
- sphobjinv-2.3.1.3/doc/source/cli/implementation/core.rst +0 -8
- sphobjinv-2.3.1.3/doc/source/cli/implementation/index.rst +0 -19
- sphobjinv-2.3.1.3/doc/source/cli/implementation/load.rst +0 -8
- sphobjinv-2.3.1.3/doc/source/cli/implementation/parser.rst +0 -8
- sphobjinv-2.3.1.3/doc/source/cli/implementation/paths.rst +0 -8
- sphobjinv-2.3.1.3/doc/source/cli/implementation/suggest.rst +0 -7
- sphobjinv-2.3.1.3/doc/source/cli/implementation/ui.rst +0 -8
- sphobjinv-2.3.1.3/doc/source/cli/implementation/write.rst +0 -8
- sphobjinv-2.3.1.3/doc/source/cli/index.rst +0 -62
- sphobjinv-2.3.1.3/tests/resource/objects_attrs.json +0 -1
- sphobjinv-2.3.1.3/tests/test_flake8_ext.py +0 -73
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/AUTHORS.md +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/Makefile +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/css/custom.css +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/extlink.svg +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/no-leven.csv +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/soi-logo.png +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/soi-logo_duo.png +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/soi-logo_duo_border.png +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/soi-logo_duo_border.xcf +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/suggest_timing.png +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/suggest_timing.xlsx +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/suggest_timing_commands.txt +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/_static/with-leven.csv +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/data.rst +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/enum.rst +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/error.rst +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/fileops.rst +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/inventory.rst +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/re.rst +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/schema.rst +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/api/zlib.rst +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/isphx/objpull.py +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/doc/source/levenshtein.rst +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/setup.cfg +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/_vendored/fuzzywuzzy/LICENSE.txt +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/_vendored/fuzzywuzzy/fuzz.py +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/_vendored/fuzzywuzzy/process.py +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/_vendored/fuzzywuzzy/tests.py +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/src/sphobjinv/_vendored/fuzzywuzzy/utils.py +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/__init__.py +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/resource/objects_attrs_17_2_0.inv +0 -0
- {sphobjinv-2.3.1.3 → sphobjinv-2.4}/tests/resource/objects_attrs_20_3_0.inv +0 -0
- /sphobjinv-2.3.1.3/tests/resource/objects_attrs.inv → /sphobjinv-2.4/tests/resource/objects_attrs_22_1.inv +0 -0
- {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](
|
|
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](
|
|
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
|
-
###
|
|
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.
|
|
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.
|
|
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.
|
|
144
|
-
through 3.
|
|
145
|
-
|
|
146
|
-
|
|
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
|
-
|
|
248
|
-
|
|
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.
|
|
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-
|
|
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
|
+
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
|
|
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.
|
|
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.
|
|
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.
|
|
97
|
-
|
|
98
|
-
220 objects in inventory.
|
|
94
|
+
Version: 2.4
|
|
99
95
|
|
|
100
|
-
|
|
96
|
+
151 objects in inventory.
|
|
101
97
|
|
|
102
|
-
|
|
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/
|
|
127
|
+
$ sphobjinv suggest https://numpy.org/doc/2.4/reference/index.html linspace -su
|
|
132
128
|
|
|
133
|
-
Attempting https://numpy.org/doc/
|
|
129
|
+
Attempting https://numpy.org/doc/2.4/reference/index.html ...
|
|
134
130
|
... no recognized inventory.
|
|
135
|
-
Attempting "https://numpy.org/doc/
|
|
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/
|
|
133
|
+
Attempting "https://numpy.org/doc/2.4/reference/objects.inv" ...
|
|
138
134
|
... HTTP error: 404 Not Found.
|
|
139
|
-
Attempting "https://numpy.org/doc/
|
|
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/
|
|
142
|
+
(https://numpy.org/doc/2.4/, None)
|
|
147
143
|
|
|
148
|
-
|
|
144
|
+
-----------------------------------------------------------------------------------------------------------
|
|
149
145
|
|
|
150
146
|
Project: NumPy
|
|
151
|
-
Version:
|
|
147
|
+
Version: 2.4
|
|
152
148
|
|
|
153
|
-
|
|
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.
|
|
197
|
+
<Inventory (fname_zlib): sphobjinv v2.4, 151 objects>
|
|
202
198
|
>>> inv.project
|
|
203
199
|
'sphobjinv'
|
|
204
200
|
>>> inv.version
|
|
205
|
-
'2.
|
|
201
|
+
'2.4'
|
|
206
202
|
>>> inv.objects[0]
|
|
207
|
-
DataObjStr(name='sphobjinv.
|
|
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
|
|
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]:
|
|
235
|
-
[soi docs inv export]:
|
|
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&
|
|
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.
|
|
250
|
-
[readthedocs link target]:
|
|
251
|
-
[workflow badge]: https://img.shields.io/github/actions/workflow/status/bskinn/sphobjinv/
|
|
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.
|
|
52
|
+
Version: 2.4
|
|
53
53
|
|
|
54
|
-
|
|
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/
|
|
85
|
+
$ sphobjinv suggest https://numpy.org/doc/2.4/reference/index.html linspace -su
|
|
88
86
|
|
|
89
|
-
Attempting https://numpy.org/doc/
|
|
87
|
+
Attempting https://numpy.org/doc/2.4/reference/index.html ...
|
|
90
88
|
... no recognized inventory.
|
|
91
|
-
Attempting "https://numpy.org/doc/
|
|
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/
|
|
91
|
+
Attempting "https://numpy.org/doc/2.4/reference/objects.inv" ...
|
|
94
92
|
... HTTP error: 404 Not Found.
|
|
95
|
-
Attempting "https://numpy.org/doc/
|
|
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/
|
|
100
|
+
(https://numpy.org/doc/2.4/, None)
|
|
103
101
|
|
|
104
|
-
|
|
102
|
+
-----------------------------------------------------------------------------------------------------------
|
|
105
103
|
|
|
106
104
|
Project: NumPy
|
|
107
|
-
Version:
|
|
105
|
+
Version: 2.4
|
|
108
106
|
|
|
109
|
-
|
|
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.
|
|
155
|
+
<Inventory (fname_zlib): sphobjinv v2.4, 151 objects>
|
|
158
156
|
>>> inv.project
|
|
159
157
|
'sphobjinv'
|
|
160
158
|
>>> inv.version
|
|
161
|
-
'2.
|
|
159
|
+
'2.4'
|
|
162
160
|
>>> inv.objects[0]
|
|
163
|
-
DataObjStr(name='sphobjinv.
|
|
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
|
|
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]:
|
|
191
|
-
[soi docs inv export]:
|
|
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&
|
|
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]:
|
|
207
|
-
[workflow badge]: https://img.shields.io/github/actions/workflow/status/bskinn/sphobjinv/
|
|
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
|
|
Binary file
|
|
@@ -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
|
+
|
|
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 %}
|