Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
25 changes: 14 additions & 11 deletions .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,6 @@ jobs:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13", "3.14", "3.15"]
# 3.15 is pre-release until 2026-10-01 (#259): surface breakage
# without blocking the branch; flip to blocking when it goes final.
continue-on-error: ${{ matrix.python-version == '3.15' }}
env:
# Without this, uv sync honors .python-version (3.11) over the
# matrix interpreter and every job silently tests 3.11.
Expand All @@ -45,7 +42,6 @@ jobs:
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
Expand Down Expand Up @@ -84,18 +80,25 @@ jobs:
# without it).
ja-extra:
runs-on: ubuntu-latest
# 3.14, not the matrix's newest: namedivider-python pulls lightgbm,
# which pulls scipy/numpy, and those have no 3.15 wheels yet (the
# sdist build fails). 3.15 is pre-release and this matrix is ahead
# of the ecosystem; revisit when it goes final.
# The floor and the newest Python whose wheels the lock pins: uv.lock
# splits numpy and scipy at 3.12, so the floor is the only row that
# installs the older branch. namedivider-python's compiled
# dependencies (numpy, scipy, pandas, regex; lightgbm is py3-none)
# had no cp315 wheels at the versions uv.lock pinned before #259,
# and numpy's and scipy's sdist builds fail, so moving the top row to
# a new Python can need a lock bump first.
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.15"]
env:
UV_PYTHON: "3.14"
UV_PYTHON: ${{ matrix.python-version }}
steps:
- uses: actions/checkout@v7
- name: Set up Python 3.14
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v7
with:
python-version: "3.14"
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ You can also pass a name string to see how it will be parsed:
]>
Initials: H. R.

CI runs tests against Python 3.10–3.14 via GitHub Actions on every push and pull request.
CI runs tests against every supported Python version (see the matrix in `.github/workflows/python-package.yml`) via GitHub Actions on every push and pull request.

Writing Tests
----------------
Expand Down
2 changes: 2 additions & 0 deletions docs/release_log.rst
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ Release Log

**Additions**

- **Add Python 3.15 support.** Python 3.15 is now tested as a regular CI target and listed in the package classifiers. (closes #259)

- **Add Lexicon.conjunctions_ambiguous, the one-letter connectives that read as initials.** A subset of ``conjunctions`` holding ``e`` and ``i`` by default; it is the knob for the change above rather than a switch. Portuguese data, where ``e`` links surnames the way ``y`` does in Spanish, takes it out: ``Lexicon.default().remove(conjunctions_ambiguous={"e"})`` restores the joining reading. Dutch data, where a bare single letter is an initial and never a connective, adds the other one: ``Lexicon.default().add(conjunctions_ambiguous={"y"})``. A v1 ``Constants`` has no manager of its own for it -- deleting the word from ``conjunctions`` is what turns the marking off, the same rule the glued-honorific tails follow. See ``docs/customize.rst`` (#383, #479)

- **Add AmbiguityKind.CONJUNCTION_OR_INITIAL, reported when a one-letter connective in a name written wholly in one case is read as an initial:** ``parse("jose e maria santos").ambiguities`` and ``parse("JOSE E MARIA SANTOS").ambiguities`` both name it, and ``detail`` names the letter. That is the call the behavior change above had to make. A letter outside the marked set reports nothing, its reading not being in doubt, so ``JUAN GARCIA Y LOPEZ`` is silent; so is every mixed-case name, where the writing decided it. See the ``P3`` entry of ``docs/design/decisions.md`` (#383, #479)
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Development Status :: 5 - Production/Stable",
"Natural Language :: English",
"Topic :: Software Development :: Libraries :: Python Modules",
Expand Down
Loading
Loading