# Changelog

You can test the unpublished version of cihai-cli before its released, see
[developmental releases](https://cihai-cli.git-pull.com/quickstart.html#developmental-releases).

[pip](https://pip.pypa.io/en/stable/):

```console
$ pip install --user --upgrade --pre cihai-cli
```

[pipx](https://pypa.github.io/pipx/docs/):

```console
$ pipx install --suffix=@next 'cihai-cli' --pip-args '\--pre' --force
// Usage: cihai@next info 好
```

[uv](https://docs.astral.sh/uv/getting-started/features/#python-versions):

```console
$ uv add cihai-cli --prerelease allow
```

[uvx](https://docs.astral.sh/uv/guides/tools/):

```console
$ uvx --from 'cihai-cli' --prerelease allow cihai
```

## cihai-cli 0.32.x (unreleased)

<!-- Maintainers, insert changes / features for the next release here -->

_Add your latest changes from PRs here_

## cihai-cli 0.31.1 (2026-01-24)

### Breaking changes

- Bump cihai 0.36.0 -> 0.36.1 (#338)

### CI

- Migrate to PyPI Trusted Publisher (#332)

### Development

#### Makefile -> Justfile (#333)

- Migrate from `Makefile` to `justfile` for running development tasks
- Update documentation to reference `just` commands

### Documentation

- Migrate docs deployment to AWS OIDC authentication and AWS CLI

## cihai-cli 0.31.0 (2025-11-01)

### Breaking changes

- Bump cihai 0.35.0 -> 0.36.0
- Drop support for Python 3.9; the new minimum is Python 3.10 (#330).

  See also:
  - [Python 3.9 EOL timeline](https://devguide.python.org/versions/#:~:text=Release%20manager-,3.9,-PEP%20596)
  - [PEP 596](https://peps.python.org/pep-0596/)

### Development

- Add Python 3.14 to test matrix (#329)

#### chore: Implement PEP 563 deferred annotation resolution (#324)

- Add `from __future__ import annotations` to defer annotation resolution and reduce unnecessary runtime computations during type checking.
- Enable Ruff checks for PEP-compliant annotations:
  - [non-pep585-annotation (UP006)](https://docs.astral.sh/ruff/rules/non-pep585-annotation/)
  - [non-pep604-annotation (UP007)](https://docs.astral.sh/ruff/rules/non-pep604-annotation/)

For more details on PEP 563, see: https://peps.python.org/pep-0563/

## cihai-cli 0.30.0 (2024-12-21)

_Maintenance only, no bug fixes, or new features_

### Breaking changes

- Drop Python 3.8 (#323)

  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).

- cihai: Bump minimum version to 0.35.0 (#323)

  Requires Python 3.9.

  Updates unihan-etl to 0.37.0, which also requires Python 3.9.

### Development

- Aggressive automated lint fixes via `ruff` (#323)

  via ruff v0.8.4, all automated lint fixes, including unsafe and previews were applied for Python 3.9:

  ```sh
  ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; ruff format .
  ```

## cihai-cli 0.29.0 (2024-11-26)

_Maintenance only, no bug fixes, or new features_

#### Project and package management: poetry to uv (#321)

[uv] is the new package and project manager for the project, replacing Poetry.

[uv]: https://github.com/astral-sh/uv

#### Build system: poetry to hatchling (#321)

[Build system] moved from [poetry] to [hatchling].

[Build system]: https://packaging.python.org/en/latest/tutorials/packaging-projects/#choosing-a-build-backend
[poetry]: https://github.com/python-poetry/poetry
[hatchling]: https://hatch.pypa.io/latest/

### Development

- Code quality: Use f-strings in more places (#312)

  via [ruff 0.4.2](https://github.com/astral-sh/ruff/blob/v0.4.2/CHANGELOG.md).

## cihai-cli 0.28.0 (2024-04-06)

_Maintenance only, no bug fixes, or new features_

### Documentation

- Automatically linkify links that were previously only text.

### Development

- cihai: 0.32.0 -> 0.33.0

  Ruff linting for cihai package.

## cihai-cli 0.27.0 (2024-04-01)

_Maintenance only, no bug fixes, or new features_

### Development

- cihai: 0.31.0 -> 0.32.0

  - unihan-etl: 0.31.0 -> 0.34.0

- Aggressive automated lint fixes via `ruff` (#310)

  via ruff v0.3.4, all automated lint fixes, including unsafe and previews were applied:

  ```sh
  ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; ruff format .
  ```

  Branches were treated with:

  ```sh
  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
  ```

- poetry: 1.7.1 -> 1.8.2

  See also: https://github.com/python-poetry/poetry/blob/1.8.2/CHANGELOG.md

- ruff 0.2.2 -> 0.3.0 (#309)

  Related formattings. Update CI to use `ruff check .` instead of `ruff .`.

  See also: https://github.com/astral-sh/ruff/blob/v0.3.0/CHANGELOG.md

## cihai-cli 0.26.0 (2024-02-09)

### What's new

- cihai: 0.30.0 -> 0.31.0 (#308):

  Bump UNIHAN compatibility from 11.0.0 to [15.1.0](https://www.unicode.org/reports/tr38/tr38-35.html#History) (released 2023-09-01, revision 35).

  - unihan-etl: 0.29.0 -> 0.33.1

    - 0.30.1 -> 0.33: UNIHAN compatibility bumped to 15.1.0.
    - 0.29.0 -> 0.30.1: Fix `kRSUnicode` double apostrophes.

### Development

- Strengthen linting (#307)

  - Add flake8-commas (COM)

    - https://docs.astral.sh/ruff/rules/#flake8-commas-com
    - https://pypi.org/project/flake8-commas/

  - Add flake8-builtins (A)

    - https://docs.astral.sh/ruff/rules/#flake8-builtins-a
    - https://pypi.org/project/flake8-builtins/

  - Add flake8-errmsg (EM)

    - https://docs.astral.sh/ruff/rules/#flake8-errmsg-em
    - https://pypi.org/project/flake8-errmsg/

## cihai-cli 0.25.0 (2023-12-09)

_Maintenance only, no bug fixes, or new features_

### Development

- cihai: 0.29.0 -> 0.30.0

  - pydocstyle docstrings
  - Bug fixes for unused character utility functions

### CI

- Move CodeQL from advanced configuration file to GitHub's default
- ci: Add pydocstyle rule to ruff (#304)

### Documentation

- Add docstrings to functions, methods, classes, and packages (#304)

## cihai-cli 0.24.0 (2023-11-19)

_Maintenance only, no bug fixes, or new features_

### Packaging

- Move pytest configuration to `pyproject.toml` (#301)
- 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:

  ```toml
  [tool.poetry.group.group-name.dependencies]
  dev-dependency = "1.0.0"
  ```

  Which we now do.

  [Poetry's docs on managing dependencies]: https://python-poetry.org/docs/master/managing-dependencies/

### Development

- unihan-etl: 0.28.0 -> 0.29.0 (maintenance release)
- ruff: Remove ERA / `eradicate` plugin

  This 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 `black` to [`ruff format`] (#302)

  This retains the same formatting style of `black` while eliminating a
  dev dependency by using our existing rust-based `ruff` linter.

  [`ruff format`]: https://docs.astral.sh/ruff/formatter/

- CI: Update action packages to fix warnings

  - [dorny/paths-filter]: 2.7.0 -> 2.11.1

  [dorny/paths-filter]: https://github.com/dorny/paths-filter

## cihai-cli 0.23.0 (2023-07-22)

_Maintenance only, no bug fixes, or new features_

### Development

- cihai: 0.27.0 -> 0.28.0

  Update pytest plugin

## cihai-cli 0.22.0 (2023-07-18)

_Maintenance only, no bug fixes, or new features_

### Development

- cihai: 0.26.0 -> 0.27.0 (#300)

  Includes unihan-etl 0.25.2 -> 0.27.0 pytest fixes

## cihai-cli 0.21.2 (2023-07-18)

_Maintenance only, no bug fixes, or new features_

### Development

- Ruff: Code quality fixes (#299)

## cihai-cli 0.21.1 (2023-07-02)

### Bug Fixes

- Fix `cihai info` and `cihai reverse` (#297, #298)

## cihai-cli 0.21.0 (2023-07-01)

_Maintenance only, no bug fixes, or new features_

### Development

- ruff: Increase code quality strictness, implement code improvements (#295)
- cihai: 0.25.0 -> 0.26.0 (linting updates through stricter ruff settings)

  unihan-etl: 0.24.0 -> 0.25.0 (linting improvements in the same way)

## cihai-cli 0.20.0 (2023-06-25)

_Maintenance only, no bug fixes, or new features_

### Development

- cihai: 0.23.0 -> 0.25.0 (#298)

  - Subdependency unihan-etl: 0.23.1 -> 0.24.0

    - Subdependency updated for zhon: 1.1.5 -> 2.0.0

      [zhon 2.0's Release notes](https://github.com/tsroten/zhon/blob/v2.0.0/CHANGES.rst#v200-2023-06-24)

      Fixes pytest warning related to regular expressions.

## cihai-cli 0.19.0 (2023-06-24)

_Maintenance only, no bug fixes, or new features_

### Development

- cihai: 0.21.0 to 0.22.1

  Sub-dependency unihan-etl to 0.21.1 -> 0.22.2, which has
  {obj}`dataclasses.dataclass`-based configuration.

## cihai-cli 0.18.0 (2023-06-19)

### Development

- cihai: Bumps to 0.22.1

  Reliance on {mod}`pathlib`-based file paths, typings.

## cihai-cli 0.17.0 (2023-06-04)

_Maintenance only, no bug fixes, or new features_

### Breaking changes

- **Python 3.7 Dropped**

  Python 3.7 support has been dropped (#290)

  Its end-of-life is June 27th, 2023 and Python 3.8 will add support for
  `typing.TypedDict` and `typing.Protocol` out of the box without needing
  `typing_extensions`.

### Internal improvements

- Typings: Add `--strict` mypy compliance (#277)
- Move from pytest's `tmp_dir` (`py.path.local`) to `tmp_path` (`pathlib.Path`),
  #292
- Remove unnecessary use of `typing_extension`'s `TypedDict` (#292)

  Note: `typing_extension`'s `TypedDict` is still
  used for `NotRequired` `TypedDict`s until the minimum python version supports
  them ([3.11](https://www.python.org/downloads/release/python-3110/) via [PEP-655](https://peps.python.org/pep-0655/))

- cihai:

  - Update 0.19.0 -> 0.20.0: Add mypy strict typings
  - Update 0.20.0 -> 0.21.0: SQLAlchemy 2.0 (#292)

## cihai-cli 0.16.0 (2023-05-29)

_Maintenance only, no bug fixes, or new features_

### Breaking changes

0.16.0 will be the final Python 3.7 release.

### Internal improvements

- 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

- Update cihai 0.18.3 -> 0.19.0 and unihan-etl 0.18.2 -> 0.19.1

  Moved to linting ruff (no changes to the production package itself)

[ruff]: https://ruff.rs

## cihai-cli 0.15.2 (2022-10-02)

_Maintenance only, no bug fixes or new features_

### Development

- Update cihai 0.18.1 -> 0.18.3

  - Sub-dependency updated: unihan-etl 0.18.1 -> 0.18.2

    Typing update for `merge_dict`

### Documentation

- Add migrations page
- Add back page on completions

## cihai-cli 0.15.1 (2022-10-02)

### Bug fix

- CLI: Fix help text descriptions

## cihai-cli 0.15.0 (2022-10-02)

### Internal

- Move from click to {mod}`argparse` (#286)

### Packaging

- Drop click dependency (#286)

## cihai-cli 0.14.0 (2022-10-01)

### Packages

- Update to cihai v0.18.1+ (kaptan dependency removed)

## cihai-cli 0.13.1 (2022-10-01)

### Infrastructure

- CI speedups (#285)

  - Split out release to separate job so the PyPI Upload docker image isn't pulled on normal runs
  - Clean up CodeQL

- Poetry: Bump 1.1.x to 1.2.x

  - Fix click constraint for poetry 1.2 (was missing a comma)

## cihai-cli 0.13.0 (2022-09-11)

**This is a maintenance only release, no bugfixes or features.**

### Development

- Move to `src/` layout (#284)
- Add [flake8-bugbear](https://github.com/PyCQA/flake8-bugbear) (#281)
- Add [flake8-comprehensions](https://github.com/adamchainz/flake8-comprehensions) (#282)

### Documentation

- Render changelog in [`linkify_issues`] (~~#280~~, #283)
- Fix Table of contents rendering with sphinx autodoc with [`sphinx_toctree_autodoc_fix`] (#283)
- Test doctests in our docs via [`pytest_doctest_docutils`] (built on [`doctest_docutils`]) (#283)

[`linkify_issues`]: https://gp-libs.git-pull.com/linkify_issues/
[`sphinx_toctree_autodoc_fix`]: https://gp-libs.git-pull.com/sphinx_toctree_autodoc_fix/
[`pytest_doctest_docutils`]: https://gp-libs.git-pull.com/doctest/pytest.html
[`doctest_docutils`]: https://gp-libs.git-pull.com/doctest

## cihai-cli 0.12.0 (2022-08-21)

### Internal

- cihai v0.16.0 (with strict typings from unihan-etl v0.17.x)

## cihai-cli 0.11.0 (2022-08-20)

### Breaking changes

The CLI version of `cihai` installed through `cihai-cli` again

Before (cihai 0.9 to 0.14, cihai-cli 0.5 to 0.10):

```console
$ pip install cihai[cli]
```

After (cihai 0.15+, cihai-cli 0.11+):

```console
$ pip install cihai-cli
```

Modern uv-based workflows can either add the CLI to a project:

```console
$ uv add cihai-cli
```

Install it as a user-wide tool:

```console
$ uv tool install cihai-cli
```

Or run it on-demand:

```console
$ uvx --from cihai-cli cihai --version
```

This made deploying cihai + cihai-cli and pinning packages extremely laborious.

We can reinvestigate this model in the future.

via: [cihai#326](https://github.com/cihai/cihai/pull/326), **[cihai-cli#279](https://github.com/cihai/cihai-cli/pull/279)**

## cihai-cli 0.10.x (2022-08-20)

### Breaking changes

- Python 2 compatibility module and imports removed. Python 2.x was officially
  dropped in 0.7.0 (2021-06-15) via #278

## cihai-cli 0.9.0 (2022-08-16)

### Compatibility

- Remove python 3.6 support (#269)
- Add python 3.10 support (#269)

### Development

Infrastructure updates for static type checking and doctest examples.

- Update poetry to 1.1
  - CI: Use poetry 1.1.12 and `install-poetry.py` installer (#255 + #269)
  - Relock poetry.lock at 1.1 (w/ 1.1.7's fix)
- pyupgrade to python 3.7

- Initial [doctests] support added, via #276

  [doctests]: https://docs.python.org/3/library/doctest.html

- Initial [mypy] validation, via #276

  [mypy]: https://github.com/python/mypy

- CI (tests, docs): Improve caching of python dependencies via
  `action/setup-python`'s v3/4's new poetry caching, via #276

- CI (docs): Skip if no `PUBLISH` condition triggered, via #276

### Tests

- Refactor `tmpdir` -> `tmp_path`

### Documentation

- Use `furo` theme

## cihai-cli 0.8.1 (2021-06-16)

- Update cihai to 0.12

## cihai-cli 0.8.0 (2021-06-16)

- #252: Convert to markdown

## cihai-cli 0.7.2 (2021-06-15)

- Set cihai to 0.11.1+ to fix sqlalchemy issue

## cihai-cli 0.7.1 (2021-06-15)

- Fix README in packaging

## cihai-cli 0.7.0 (2021-06-15)

- Update `black` to 21.6b0
- Update trove classifiers to 3.9
- #251 Drop python 2.7 and 3.5. Remove deprecated `__future__` and modesets

## cihai-cli 0.6.0 (2020-08-09)

- #249 Move packaging / publishing to poetry
- #248 Self host docs
- #248 Add metadata / icons / etc. for doc site
- #248 Move travis -> github actions
- #248 Overhaul Makefiles

## cihai-cli 0.5.1 (2020-07-03)

- #247 - Move from Pipfile to Poetry
- Fixed bug in Python 2.x when showing help / "cihai"

## cihai-cli 0.5.0 (2019-08-18)

- Add `project_urls` to setup.py
- Installation is now done via `pip --user install cihai[cli]`
- README Fixed to use plain reStructuredText
- Miscellaneous package updates for pytest, other support packages
- Loosening of version requirements

## cihai-cli 0.5.0a (2018-09-08)

- #91 `-V` / `-version` now shows the cihai backend version.

## cihai-cli 0.4.1 (2018-07-21)

- Update Sphinx 1.7.5. to 1.7.6
- Update cihai 0.8.0 to 0.8.1

  This should fix dependency issues with kaptan / pyyaml

## cihai-cli 0.4.0 (2018-06-24)

- Add vietnamese phonetic to default output in `info` command
- Switch tmuxp config to use pipenv
- Add configuration / make tests for isort, flake8
- Add _Pipfile_
- Add `make sync_pipfile` task to sync _requirements/_.txt* files with *Pipfile\*
- Base package updates

  - cihai 0.7.4 to 0.8.0

- Developer package updates (linting / docs / testing)

  New:

  - sphinx-click 1.2.0
  - sphinxcontrib-napoleon 0.6.1

  Updated:

  - isort 4.2.5 to 4.3.4
  - flake8 3.3.0 to 3.5.0
  - vulture 0.14 to 0.27
  - sphinx 1.5.6 to 1.7.5
  - alagitpull 0.0.4 to 0.0.21
  - releases 1.3.1 to 1.6.0
  - pytest 3.0.7 to 3.6.2

- Move documentation over to numpy-style
- Update LICENSE New BSD to MIT
- All future commits and contributions are licensed to the _cihai software foundation_. This
  includes commits by Tony Narlock (creator).

## cihai-cli 0.3.2 (2017-05-26)

- Bump cihai version to 0.7.4

## cihai-cli 0.3.1 (2017-05-20)

- Bump cihai version to 0.7.2

## cihai-cli 0.3.0 (2017-05-20)

- Output human-friendly fields only by default
- Use `-a` or `--all` to show all fields
- Rename `lookup` command to `reverse`
- Remove newlines, use click.echo for printing to CLI
- Fix unicode issues on 2.7 in tests and cli

## cihai-cli 0.2.1 (2017-05-20)

- CLI variable tweaks
- Fix package dependency

## cihai-cli 0.2.0 (2017-05-20)

- Initial project

<!---
vim: set filetype=markdown:
-->
