To install the unreleased unihan-db version, see developmental releases.
pip:
$ pip install --user --upgrade --pre unihan-dbpipx:
$ pipx install --suffix=@next 'unihan-db' --pip-args '\--pre' --include-deps --force
// Provides the unihan-etl CLI from the dependency set.uv:
$ uv add unihan-db --prerelease allowuvx:
$ uvx --from 'unihan-db' --prerelease allow python -c "import unihan_db.bootstrap as bootstrap; print(bootstrap.TABLE_NAME)"Notes on the upcoming release will go here.
- Visual improvements to API docs from gp-sphinx-based Sphinx packages (#362)
- Bump gp-sphinx docs stack to v0.0.1a8 (#363)
- Bump unihan-etl v0.39.1 -> v0.41.0 (#358)
- Use string form for
polymorphic_onin mapper args to fix 4 ruffA003(builtin-attribute-shadowing) lint violations (#357)
- Bump unihan-etl v0.38.0 -> v0.39.1 (#354)
- Migrate to PyPI Trusted Publisher (#352)
- Migrate from
Makefiletojustfilefor running development tasks - Update documentation to reference
justcommands
- Migrate docs deployment to AWS OIDC authentication and AWS CLI
-
Bump minimum unihan-etl v0.37.0 -> v0.38.0
-
Drop support for Python 3.9; the new minimum is Python 3.10 (#351).
See also:
- Add Python 3.14 to test matrix (#350)
- Add
from __future__ import annotationsto defer annotation resolution and reduce unnecessary runtime computations during type checking. - Enable Ruff checks for PEP-compliant annotations:
For more details on PEP 563, see: https://peps.python.org/pep-0563/
Maintenance only, no bug fixes, or new features
-
Drop Python 3.8 (#347)
The minimum version of Python in this and future releases is Python 3.9.
Python 3.8 reached end-of-life status on October 7th, 2024 (see PEP 569).
-
unihan-etl 0.37.0 minimum (#347)
Python 3.9 minimum version.
-
Aggressive automated lint fixes via
ruff(#347)via ruff v0.8.4, all automated lint fixes, including unsafe and previews were applied for Python 3.9:
ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; ruff format .
Maintenance only, no bug fixes, or new features
uv is the new package and project manager for the project, replacing Poetry.
Build system moved from poetry to hatchling.
Updates for UNIHAN Revision 37:
- Bump unihan-etl 0.34.0 -> 0.35.0
kRSUnicode: Support for double and triple apostrophes for simplified radicals.
- Automatically linkify links that were previously only text.
- Bump unihan-etl 0.27.0 -> 0.34.0
- 15.1.0: kHKSCS, kIRGDaiKanwaZiten, kKPS0, kKPS1, kKSC0, kKSC1, kRSKangXi
- 13.0.0: kRSJapanese, kRSKanWa, kRSKorean
- 12.0.0: kDefaultSortKey (private property)
-
Project and package management: poetry to uv (#344)
uv is the new package and project manager for the project, replacing Poetry.
-
Aggressive automated lint fixes via
ruff(#333)via ruff v0.3.4, all automated lint fixes, including unsafe and previews were applied:
ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; ruff format .
Branches were treated with:
git rebase \ --strategy-option=theirs \ --exec 'poetry run ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; poetry run ruff format .; git add src tests; git commit --amend --no-edit' \ origin/master -
ruff 0.2.2 -> 0.3.0 (#332)
Related formattings. Update CI to use
ruff check .instead ofruff ..See also: https://github.com/astral-sh/ruff/blob/v0.3.0/CHANGELOG.md
-
Strengthen linting (#331)
-
Add flake8-commas (COM)
-
Add flake8-builtins (A)
-
Add flake8-errmsg (EM)
-
-
SQLAlchemy: Fix
add_to_dict()event mapper bug (#325)This allows
Unhnrows to userow.as_dict()once more. -
Importer bug fixes (#327):
kXHC1983,kHanyuPinyin,kHanyuPinlu,kCCCII -
Bump unihan-etl 0.30.0post0 -> 0.30.1
Fix
kRSUnicodedouble apostrophes.
-
unihan-etl: 0.29.0 -> 0.30.0post0
Documentation updates
- Move CodeQL from advanced configuration file to GitHub's default
- ci: Add pydocstyle rule to ruff (#322)
- Add docstrings to functions, methods, classes, and packages (#322)
- Split API docs into multiple pages (#328)
-
Test
examples/(#324)These are high-level integrative tests of the same example code the project uses in documentation.
This brings code coverage from 69.77 to 93.92%.
A note on test times
-
CI (GitHub Actions) can take 5-6 minutes per test
This may change in future cases when UNIHAN is cached.
-
Initial (cold) py.tests on local environments won't be cached and will take similar times. Subsequent tests can be <0.6 seconds.
-
-
Move pytest configuration to
pyproject.toml(#318) -
unihan-etl: 0.28.0 -> 0.29.0
-
Add Python 3.12 to trove classifiers
-
Packaging (poetry): Fix development dependencies
Per Poetry's docs on managing dependencies and
poetry check, we had it wrong: Instead of using extras, we should create these:[tool.poetry.group.group-name.dependencies] dev-dependency = "1.0.0"
Which we now do.
-
ruff: Remove ERA /
eradicatepluginThis rule had too many false positives to trust. Other ruff rules have been beneficial.
-
Poetry: 1.6.1 -> 1.7.0
See also: https://github.com/python-poetry/poetry/blob/1.7.0/CHANGELOG.md
-
Move formatting from
blacktoruff format(#321)This retains the same formatting style of
blackwhile eliminating a dev dependency by using our existing rust-basedrufflinter. -
CI: Update action packages to fix warnings
- dorny/paths-filter: 2.7.0 -> 2.11.1
-
unihan-etl:
-
0.26.0 -> 0.27.0 (#317)
Fixes for pytest plugin data locations.
-
0.25.0 -> 0.26.0
pytest plugin with cached UNIHAN data.
-
-
ruff: Code quality fixes (#316)
Maintenance only, no bug fixes, or new features
-
ruff: Improve code quality stringency (#315)
-
unihan-etl: 0.24.0 -> 0.25.0
Improve code quality via
ruffrules strictness
Maintenance only, no bug fixes, or new features
-
unihan-etl:
-
0.23.1 -> 0.24.0 (#314)
Subdependency updated for zhon: 1.1.5 -> 2.0.0 (#289, fixes #282)
Fixes pytest warning related to regular expressions.
-
0.22.1 -> 0.23.0 (#314):
Package introduces configurable application directories (for test purposes)
-
0.21.1 -> 0.22.1 (#348):
{obj}
dataclasses.dataclass-based configuration -
0.19.2 -> 0.20.0
Drops python 3.7, normalizes
typingimports
-
-
SQLAlchemy: Upgraded to v2 (#311)
Downstream packages will require SQLAlchemy v2 at a minimum.
Benefits in include: Built-in types for mypy, being able to use SQLAlchemy core API against ORM entities.
See also: What's new in SQLAlchemy 2.0, Migrating to SQLAlchemy 2.0
-
Python 3.7 Dropped
Python 3.7 support has been dropped (#309)
Its end-of-life is June 27th, 2023 and Python 3.8 will add support for
typing.TypedDictandtyping.Protocolout of the box without needingtyping_extensions.
-
Improved typings
Move to strict mypy typings (#311)
This will make future refactoring simplifications easier and maintain code quality in the long term, in addition to more intelligent completions.
Maintenance only, no bug fixes or features
- Final Python 3.7 release
-
Move formatting, import sorting, and linting to ruff.
This rust-based checker has dramatically improved performance. Linting and formatting can be done almost instantly.
This change replaces isort, flake8 and flake8 plugins.
-
poetry: 1.4.0 -> 1.5.0
See also: https://github.com/python-poetry/poetry/releases/tag/1.5.0
-
Bump unihan-etl from 0.18.1 -> 0.18.2
Typing update for
merge_dict
- Update unihan-etl to v0.18.1+ (Add missing PyYAML dependency)
-
CI speedups (#305)
- Split out release to separate job so the PyPI Upload docker image isn't pulled on normal runs
- Clean up CodeQL
-
Poetry: Update 1.1.x to 1.2.x
- mypy: Unignore unihan-etl package (which is now typed)
Maintenance only release, no fixes or features
- Add flake8-bugbear (#300)
- Add flake8-comprehensions (#301)
- Render changelog in
linkify_issues(#303) - Fix Table of contents rendering with sphinx autodoc with
sphinx_toctree_autodoc_fix(#303) - Test doctests in our docs via
pytest_doctest_docutils(built ondoctest_docutils) (#303)
-
Update unihan-etl 0.16.0 -> 0.17.2:
- unihan-etl 0.16.0 adds
--no-cache/cacheas an option - unihan-etl 0.17.0 adds type annotations (
mypy --strict) - unihan-etl 0.17.1 fixes bugs from 0.17.0's annotations
- unihan-etl 0.17.2 docs / changelog issue linking update
- unihan-etl 0.16.0 adds
-
Bump in unison with other cihai projects deprecating compat modules, via #299.
Python 2.x was already dropped in 0.2.0 (2021-06-15). There was no compat module in this project, and it only only removed a duplicate function (
merge_dict()) and imported the one fromunihan_etl.- Bump unihan-etl to 0.15.0+ (to avoid any chance of using compat imports from it in the future)
- Drop python 3.6 (#292)
- Add python 3.10 (#292)
Infrastructure updates for static type checking and doctest examples.
-
Update poetry to 1.1
- CI: Use poetry 1.1.7 and
install-poetry.pyinstaller (#274, #292) - Relock poetry.lock at 1.1 (w/ 1.1.7's fix)
- CI: Use poetry 1.1.7 and
-
Tests:
tmpdir->tmp_path -
Run pyupgrade @ python 3.7
-
Initial doctests support added, via #297
-
Initial mypy validation, via #297
-
CI (tests, docs): Improve caching of python dependencies via
action/setup-python's v3/4's new poetry caching, via #297 -
CI (docs): Skip if no
PUBLISHcondition triggered, via #297
- Move to
furotheme
- #269: Convert to markdown
- Update
blackto 21.6b0 - Update trove classifiers to 3.9
- #267 Drop python 2.7, 3.5. Remove unused
__future__and modesets.
- Major overhaul of docs (self-host + add icons and metadata) #262
- Move from travis to github actions #262
- Move build / publish of packaging to poetry #263
- Add README docs on publishing versions, linting, and development
- Move from Pipfile to Poetry (#261)
- Speed up importing initial data
- Support for more fields
- Support for appdirs (XDG directory specification)
- Zero-config sqlite default
- Bump unihan-etl to 0.9.5
- Add
project_urlsto setup.py - Use
collectionsimport that's compatible with python 2 and 3 - Loosen version constraints
This had no pypi release
- Initial commit