Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
ac33104
Bump to Ubuntu 24.04 for RTD builds
bskinn Mar 14, 2026
cb53f5c
Freshen links into Sphinx source
bskinn Mar 14, 2026
fd03764
Update numpy example in README
bskinn Mar 14, 2026
f188bcc
Freshen/update some docs bits
bskinn Mar 14, 2026
86ca321
Bump package to 2.4.dev0 and update README example
bskinn Mar 15, 2026
40109b0
Specify Python 3.13 for black, and blacken
bskinn Mar 15, 2026
2a0ebba
Bump minimum jsonschema to v3.1.1
bskinn Mar 15, 2026
ade2a20
Update sphinx and attrs invs
bskinn Mar 16, 2026
2014ccf
Update JSON and TXT attrs invs, too
bskinn Mar 16, 2026
77613b2
Update test checks to match new attrs inventory
bskinn Mar 16, 2026
7a76358
Update README doctest examples
bskinn Mar 16, 2026
573c255
Update Pepy badge link
bskinn Mar 16, 2026
1297e6c
Reset and refactor version override in setup.py
bskinn Mar 16, 2026
7ae75a1
Update copyright statements and year ranges
bskinn Mar 16, 2026
f9582a9
Modernize package license metadata
bskinn Mar 20, 2026
454328a
Substitute in 2.4 for ##VER## tags
bskinn Mar 20, 2026
cdf1ee4
Apply version and date to CHANGELOG
bskinn Mar 20, 2026
19bcd72
Update CONTRIBUTING.md
bskinn Mar 20, 2026
1f852e8
Bump release date
bskinn Mar 20, 2026
13376fc
Fix line length in parser.py
bskinn Mar 20, 2026
085356e
Update attrs versions in doctests
bskinn Mar 20, 2026
83acf02
Bump checkout/setup-python actions versions and de-persist creds
bskinn Mar 20, 2026
1207609
Pin actions to SHAs
bskinn Mar 22, 2026
432603e
Update actions to full SHA refs
bskinn Mar 22, 2026
a5db0c1
Update doctests to new attrs version
bskinn Mar 22, 2026
44ccac6
Update test-tests with new attrs content
bskinn Mar 22, 2026
2467703
Fix Sphinx inv objects check for multiple sphinx inventories
bskinn Mar 22, 2026
440c685
Refine sphinx inv filter
bskinn Mar 22, 2026
d2402af
Add missing newline in test_api_good.py
bskinn Mar 22, 2026
4bf131f
Remove flake8 extensions test
bskinn Mar 22, 2026
3c40df2
Add some pragma: no cover
bskinn Mar 22, 2026
b49356b
Don't cover setup.py
bskinn Mar 22, 2026
40ed2d7
Remove obsolete fixture for doc scratch
bskinn Mar 22, 2026
d3bcb83
Update CHANGELOG
bskinn Mar 22, 2026
ae31b9d
Add 'build' tox env
bskinn Mar 23, 2026
77ae00b
Remove superfluous packages from req'ts files
bskinn Mar 23, 2026
823f452
Add tests/resource/objects_pdfminer* to MANIFEST.in
bskinn Mar 23, 2026
c841682
Fix to correct reST italics in textconv.rst
bskinn Mar 23, 2026
d42583c
Update CHANGELOG & fix typo
bskinn Mar 23, 2026
f4a2a28
Bump v2.4 date in CHANGELOG
bskinn Mar 23, 2026
74337b1
Bump to next dev version
bskinn Mar 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ source =
omit =
# Don't worry about covering vendored libraries
src/sphobjinv/_vendored/*
# Not part of the test suite
setup.py

[report]
exclude_lines =
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/all_core_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,12 @@ jobs:

steps:
- name: Check out repo
uses: actions/checkout@v4
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v5
uses: actions/setup-python@28f2168f4d98ee0445e3c6321f6e6616c83dd5ec
with:
python-version: '3.13'
cache: 'pip'
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/ready_doctest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,12 @@ jobs:

steps:
- name: Check out repo
uses: actions/checkout@v4
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v5
uses: actions/setup-python@28f2168f4d98ee0445e3c6321f6e6616c83dd5ec
with:
python-version: '3.13'
cache: 'pip'
Expand Down
12 changes: 8 additions & 4 deletions .github/workflows/ready_linting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,12 @@ jobs:

steps:
- name: Check out repo
uses: actions/checkout@v4
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v5
uses: actions/setup-python@28f2168f4d98ee0445e3c6321f6e6616c83dd5ec
with:
python-version: '3.13'
cache: 'pip'
Expand All @@ -50,10 +52,12 @@ jobs:

steps:
- name: Check out repo
uses: actions/checkout@v4
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v5
uses: actions/setup-python@28f2168f4d98ee0445e3c6321f6e6616c83dd5ec
with:
python-version: '3.13'
cache: 'pip'
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/ready_test_matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,12 @@ jobs:

steps:
- name: Check out repo
uses: actions/checkout@v4
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v5
uses: actions/setup-python@28f2168f4d98ee0445e3c6321f6e6616c83dd5ec
with:
python-version: ${{ matrix.py }}
cache: 'pip'
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/ready_test_nonloc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,12 @@ jobs:

steps:
- name: Check out repo
uses: actions/checkout@v4
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v5
uses: actions/setup-python@28f2168f4d98ee0445e3c6321f6e6616c83dd5ec
with:
python-version: '3.13'
cache: 'pip'
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/release_check_sdist.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,12 @@ jobs:

steps:
- name: Check out repo
uses: actions/checkout@v4
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v5
uses: actions/setup-python@28f2168f4d98ee0445e3c6321f6e6616c83dd5ec
with:
python-version: '3.13'
cache: 'pip'
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/release_doc_warnings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,12 @@ jobs:

steps:
- name: Check out repo
uses: actions/checkout@v4
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v5
uses: actions/setup-python@28f2168f4d98ee0445e3c6321f6e6616c83dd5ec
with:
python-version: '3.13'
cache: 'pip'
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/release_enusre_no_ver_markers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ jobs:

steps:
- name: Check out repo
uses: actions/checkout@v6
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
persist-credentials: false

- name: Error if any markers found
run: |
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/release_flake8_noqa_nofail.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,12 @@ jobs:

steps:
- name: Check out repo
uses: actions/checkout@v4
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v5
uses: actions/setup-python@28f2168f4d98ee0445e3c6321f6e6616c83dd5ec
with:
python-version: '3.13'
cache: 'pip'
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/release_readme_doctest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,12 @@ jobs:

steps:
- name: Check out repo
uses: actions/checkout@v4
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v5
uses: actions/setup-python@28f2168f4d98ee0445e3c6321f6e6616c83dd5ec
with:
python-version: '3.13'
cache: 'pip'
Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/release_test_file_coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,12 @@ jobs:

steps:
- name: Check out repo
uses: actions/checkout@v4
uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98
with:
persist-credentials: false

- name: Install Python
uses: actions/setup-python@v5
uses: actions/setup-python@28f2168f4d98ee0445e3c6321f6e6616c83dd5ec
with:
python-version: '3.13'
cache: 'pip'
Expand All @@ -33,7 +35,7 @@ jobs:
requirements-flake8.txt

- name: Install CI requirements
run: pip install -r requirements-ci.txt -r requirements-flake8.txt
run: pip install -r requirements-ci.txt

- name: Build docs & ensure scratch
run: |
Expand All @@ -42,7 +44,7 @@ jobs:
mkdir scratch

- name: Run pytest covering entire project tree
run: pytest --cov=. --nonloc --flake8_ext
run: pytest --cov=. --nonloc

- name: Check 100% test code execution
run: coverage report --include="tests/*" --fail-under=100
2 changes: 1 addition & 1 deletion .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ version: 2

# Build and VM configuration
build:
os: 'ubuntu-22.04'
os: 'ubuntu-24.04'
tools:
python: '3.13'

Expand Down
34 changes: 33 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ and this project follows an extension of
fourth number represents an administrative maintenance release with no code
changes.

### *Unreleased*
### [2.4] - 2026-03-23

#### Added

Expand All @@ -21,6 +21,18 @@ changes.

#### Tests

* Remove flake8_ext test file and machinery ([#336]).
* pytest environment now can easily de-sync from the flake8 environment
since flake8 is running in tox now.
* It was really always over-cautious, too.

* Exclude `setup.py` from coverage ([#336]).
* Necessary due to a change in coverage.py behavior, maybe?
* Definitely is not expected to run during execution of the test suite.

* Remove unused `ensure_doc_scratch` fixture from `conftest.py` ([#336]).
* Obsolete now that the README shell examples aren't doctested.

* Add 3.13t and 3.14t to `tox` test matrix ([#333]).
* Also add report of the current GIL status to the `tox` env output.

Expand Down Expand Up @@ -55,6 +67,21 @@ changes.

#### Internal

* Convert `build` call into a `tox` env and remove `build` from
`requirements-dev.txt` ([#336]).

* Remove redundant packages from `requirements-dev.txt` and
`requirements-ci.txt` that are pulled in by the `-e .` line ([#336]).

* Add `tests/resource/objects_pdfminer*` to `MANIFEST.in`, to make that
inventory available to the docs build in the sdist unpack-and-test workflow
job ([#336]).
* Otherwise the docs job emits a warning. Not fatal, but better to have a
clean build.

* Pin Actions versions to SHAs and de-persist credentials ([#336]).
* Closes [#322].

* Add Actions workflow to error on a non-draft release branch if any `#VER#`
markers remain in docs source ([#331]).

Expand All @@ -81,6 +108,9 @@ changes.

#### Documentation

* Update Sphinx, attrs, Python, etc. content to freshen and to match the new
inventories in the test resources ([#336]).

* Dynamically retrieve the current values of `PrsConst.SUGGEST_CONFIRM_LENGTH`
and `PrsConst.DEF_THRESH` to define their replaces in `conf.py` ([#331]).

Expand Down Expand Up @@ -785,7 +815,9 @@ changes.
[#315]: https://github.com/bskinn/sphobjinv/pull/315
[#316]: https://github.com/bskinn/sphobjinv/pull/316
[#320]: https://github.com/bskinn/sphobjinv/pull/320
[#322]: https://github.com/bskinn/sphobjinv/issues/322
[#325]: https://github.com/bskinn/sphobjinv/pull/325
[#327]: https://github.com/bskinn/sphobjinv/pull/327
[#331]: https://github.com/bskinn/sphobjinv/pull/331
[#333]: https://github.com/bskinn/sphobjinv/pull/333
[#336]: https://github.com/bskinn/sphobjinv/pull/336
25 changes: 13 additions & 12 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,10 @@ flag:
$ pytest --nonloc
```

Most of these nonlocal tests now use an ephemeral local web server instead of
reaching out to the web, and so should run even without network access and
should just run faster in general.

When putting together a PR, at minimum, please add/augment the test suite as
necessary to maintain 100% test coverage. To the extent possible, please go
beyond this and add tests that check potential edge cases, bad/malformed/invalid
Expand All @@ -141,15 +145,15 @@ project, it is **not** set up to be an everyday test runner. Instead, its
purpose for testing is to execute an extensive matrix of test environments
checking for the compatibility of different Python and dependency versions. You
can run it if you want, but you'll need working versions of all of Python 3.10
through 3.14 installed and on `PATH` as `python3.10`, `python3.11`, etc. The
nonlocal test suite is run for each `tox` environment, so it's best to use at
most two parallel sub-processes to avoid oversaturating your network bandwidth;
e.g.:
through 3.14 installed and on `PATH` as `python3.10`, `python3.11`, etc., as
well as free-threaded versions for Python 3.13 onward as `python3.13t`, etc. The
test matrix can be accelerated by using `tox`'s parallel execution mode; e.g.:

```bash
$ tox -rp2
```


## Code Autoformatting

The project is set up with a `tox` environment to blacken the codebase; run with:
Expand Down Expand Up @@ -244,20 +248,17 @@ with `make linkcheck`.

## Continuous Integration

Both Github Actions and Azure Pipelines are set up for the project, and should
run on any forks of the repository.
Github Actions workflows are set up for the project, and should run on any forks
of the repository. Note that the CI runs differently on draft versus non-draft
PRs: on draft PRs, the only workflow that runs runs tests on Windows and Linux
with one Python version; whereas on non-draft PRs, a complete test matrix of
platforms and Python versions is run, as well as doctests and linting checks.

Github Actions runs the test suite on Linux for Python 3.10 through 3.14, as well
as the `flake8` lints and the Sphinx doctests. By default, the Github Actions
will run on all commits, but the workflows can be skipped per-commit by
including `[skip ci]` in the commit message.

The Azure Pipelines CI runs an extensive matrix of cross-platform and
cross-Python-version tests, as well as numerous other checks. Due to its length,
it is configured to run only on release branches and PRs to `main` or `stable`.
The Azure Pipelines workflows now [also obey `[skip ci]`
directives](https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/azure-repos-git?view=azure-devops&tabs=yaml#skipping-ci-for-individual-pushes).


## CHANGELOG

Expand Down
2 changes: 1 addition & 1 deletion LICENSE.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License (MIT)

Copyright (c) 2016-2025 Brian Skinn and community contributors
Copyright (c) 2016-2026 Brian Skinn and community contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
Expand Down
2 changes: 1 addition & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ include doc/make.bat doc/Makefile

graft tests
prune tests/resource
include tests/resource/objects_attrs* tests/resource/objects_sarge*
include tests/resource/objects_attrs* tests/resource/objects_sarge* tests/resource/objects_pdfminer*

global-exclude __pycache__/*
prune **/*.egg-info
Loading