cihai-cli 0.31.0__tar.gz → 0.32.0__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.
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/.github/workflows/docs.yml +28 -12
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/.github/workflows/tests.yml +9 -7
- cihai_cli-0.32.0/.python-version +1 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/.tmuxp.yaml +3 -3
- cihai_cli-0.32.0/.tool-versions +3 -0
- cihai_cli-0.32.0/AGENTS.md +174 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/CHANGES +54 -2
- cihai_cli-0.32.0/CLAUDE.md +1 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/PKG-INFO +2 -2
- cihai_cli-0.32.0/docs/_ext/__init__.py +3 -0
- cihai_cli-0.32.0/docs/_ext/argparse_exemplar.py +1278 -0
- cihai_cli-0.32.0/docs/_ext/argparse_lexer.py +429 -0
- cihai_cli-0.32.0/docs/_ext/argparse_roles.py +370 -0
- cihai_cli-0.32.0/docs/_ext/cli_usage_lexer.py +115 -0
- cihai_cli-0.32.0/docs/_ext/conftest.py +15 -0
- cihai_cli-0.32.0/docs/_ext/sphinx_argparse_neo/__init__.py +101 -0
- cihai_cli-0.32.0/docs/_ext/sphinx_argparse_neo/compat.py +271 -0
- cihai_cli-0.32.0/docs/_ext/sphinx_argparse_neo/directive.py +241 -0
- cihai_cli-0.32.0/docs/_ext/sphinx_argparse_neo/nodes.py +564 -0
- cihai_cli-0.32.0/docs/_ext/sphinx_argparse_neo/parser.py +627 -0
- cihai_cli-0.32.0/docs/_ext/sphinx_argparse_neo/renderer.py +521 -0
- cihai_cli-0.32.0/docs/_ext/sphinx_argparse_neo/utils.py +42 -0
- cihai_cli-0.32.0/docs/_static/css/argparse-highlight.css +274 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/_templates/sidebar/projects.html +1 -1
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/conf.py +2 -2
- cihai_cli-0.32.0/docs/justfile +210 -0
- cihai_cli-0.32.0/justfile +143 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/pyproject.toml +23 -11
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/src/cihai_cli/__about__.py +1 -1
- cihai_cli-0.32.0/src/cihai_cli/_colors.py +110 -0
- cihai_cli-0.32.0/src/cihai_cli/_formatter.py +206 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/src/cihai_cli/cli.py +114 -6
- cihai_cli-0.32.0/src/cihai_cli/py.typed +0 -0
- cihai_cli-0.32.0/tests/docs/__init__.py +3 -0
- cihai_cli-0.32.0/tests/docs/_ext/__init__.py +3 -0
- cihai_cli-0.32.0/tests/docs/_ext/conftest.py +11 -0
- cihai_cli-0.32.0/tests/docs/_ext/sphinx_argparse_neo/__init__.py +3 -0
- cihai_cli-0.32.0/tests/docs/_ext/sphinx_argparse_neo/conftest.py +237 -0
- cihai_cli-0.32.0/tests/docs/_ext/sphinx_argparse_neo/test_compat.py +330 -0
- cihai_cli-0.32.0/tests/docs/_ext/sphinx_argparse_neo/test_nodes.py +259 -0
- cihai_cli-0.32.0/tests/docs/_ext/sphinx_argparse_neo/test_parser.py +524 -0
- cihai_cli-0.32.0/tests/docs/_ext/sphinx_argparse_neo/test_renderer.py +498 -0
- cihai_cli-0.32.0/tests/docs/_ext/sphinx_argparse_neo/test_utils.py +72 -0
- cihai_cli-0.32.0/tests/docs/_ext/test_argparse_exemplar.py +1020 -0
- cihai_cli-0.32.0/tests/docs/_ext/test_argparse_lexer.py +798 -0
- cihai_cli-0.32.0/tests/docs/_ext/test_argparse_roles.py +442 -0
- cihai_cli-0.32.0/tests/docs/_ext/test_cli_usage_lexer.py +358 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/tests/test_cli.py +39 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/uv.lock +602 -445
- cihai_cli-0.31.0/.python-version +0 -1
- cihai_cli-0.31.0/.tool-versions +0 -2
- cihai_cli-0.31.0/Makefile +0 -64
- cihai_cli-0.31.0/docs/Makefile +0 -189
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/.codecov.yml +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/.cursor/rules/avoid-debug-loops.mdc +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/.cursor/rules/dev-loop.mdc +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/.cursor/rules/git-commits.mdc +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/.cursor/rules/notes-llms-txt.mdc +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/.github/dependabot.yml +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/.gitignore +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/.prettierrc +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/.vim/coc-settings.json +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/.windsurfrules +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/LICENSE +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/MANIFEST.in +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/MIGRATION +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/README.md +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/_static/css/custom.css +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/_static/favicon.ico +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/_static/img/cihai.svg +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/_static/img/icons/icon-128x128.png +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/_static/img/icons/icon-144x144.png +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/_static/img/icons/icon-152x152.png +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/_static/img/icons/icon-192x192.png +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/_static/img/icons/icon-384x384.png +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/_static/img/icons/icon-512x512-centered.png +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/_static/img/icons/icon-512x512.png +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/_static/img/icons/icon-72x72.png +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/_static/img/icons/icon-96x96.png +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/_templates/layout.html +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/api.md +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/cli/completion.md +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/cli/index.md +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/cli/info.md +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/cli/reverse.md +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/history.md +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/index.md +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/manifest.json +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/migration.md +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/quickstart.md +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/docs/redirects.txt +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/src/cihai_cli/__init__.py +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/tests/__init__.py +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/tests/conftest.py +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/tests/fixtures/Unihan_DictionaryIndices.txt +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/tests/fixtures/Unihan_DictionaryLikeData.txt +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/tests/fixtures/Unihan_IRGSources.txt +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/tests/fixtures/Unihan_NumericValues.txt +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/tests/fixtures/Unihan_OtherMappings.txt +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/tests/fixtures/Unihan_RadicalStrokeCounts.txt +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/tests/fixtures/Unihan_Readings.txt +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/tests/fixtures/Unihan_Variants.txt +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/tests/fixtures/test_config.yml +0 -0
- {cihai_cli-0.31.0 → cihai_cli-0.32.0}/tox.ini +0 -0
|
@@ -5,14 +5,19 @@ on:
|
|
|
5
5
|
branches:
|
|
6
6
|
- master
|
|
7
7
|
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
id-token: write
|
|
11
|
+
|
|
8
12
|
jobs:
|
|
9
13
|
build:
|
|
10
14
|
runs-on: ubuntu-latest
|
|
15
|
+
environment: docs
|
|
11
16
|
strategy:
|
|
12
17
|
matrix:
|
|
13
18
|
python-version: ['3.14']
|
|
14
19
|
steps:
|
|
15
|
-
- uses: actions/checkout@
|
|
20
|
+
- uses: actions/checkout@v6
|
|
16
21
|
|
|
17
22
|
- name: Filter changed file paths to outputs
|
|
18
23
|
uses: dorny/paths-filter@v3.0.2
|
|
@@ -35,7 +40,7 @@ jobs:
|
|
|
35
40
|
run: echo "PUBLISH=$(echo true)" >> $GITHUB_ENV
|
|
36
41
|
|
|
37
42
|
- name: Install uv
|
|
38
|
-
uses: astral-sh/setup-uv@
|
|
43
|
+
uses: astral-sh/setup-uv@v7
|
|
39
44
|
with:
|
|
40
45
|
enable-cache: true
|
|
41
46
|
|
|
@@ -45,6 +50,9 @@ jobs:
|
|
|
45
50
|
- name: Install dependencies
|
|
46
51
|
run: uv sync --all-extras --dev
|
|
47
52
|
|
|
53
|
+
- name: Install just
|
|
54
|
+
uses: extractions/setup-just@v3
|
|
55
|
+
|
|
48
56
|
- name: Print python versions
|
|
49
57
|
if: env.PUBLISH == 'true'
|
|
50
58
|
run: |
|
|
@@ -54,19 +62,27 @@ jobs:
|
|
|
54
62
|
- name: Build documentation
|
|
55
63
|
if: env.PUBLISH == 'true'
|
|
56
64
|
run: |
|
|
57
|
-
|
|
65
|
+
cd docs && just html
|
|
58
66
|
|
|
59
|
-
- name:
|
|
67
|
+
- name: Configure AWS Credentials
|
|
60
68
|
if: env.PUBLISH == 'true'
|
|
61
|
-
uses:
|
|
69
|
+
uses: aws-actions/configure-aws-credentials@v5
|
|
62
70
|
with:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
role-to-assume: ${{ secrets.CIHAI_CLI_DOCS_ROLE_ARN }}
|
|
72
|
+
aws-region: us-east-1
|
|
73
|
+
|
|
74
|
+
- name: Push documentation to S3
|
|
75
|
+
if: env.PUBLISH == 'true'
|
|
76
|
+
run: |
|
|
77
|
+
aws s3 sync docs/_build/html "s3://${{ secrets.CIHAI_CLI_DOCS_BUCKET }}" \
|
|
78
|
+
--delete --follow-symlinks
|
|
79
|
+
|
|
80
|
+
- name: Invalidate CloudFront
|
|
81
|
+
if: env.PUBLISH == 'true'
|
|
82
|
+
run: |
|
|
83
|
+
aws cloudfront create-invalidation \
|
|
84
|
+
--distribution-id "${{ secrets.CIHAI_CLI_DOCS_DISTRIBUTION }}" \
|
|
85
|
+
--paths "/index.html" "/objects.inv" "/searchindex.js"
|
|
70
86
|
|
|
71
87
|
- name: Purge cache on Cloudflare
|
|
72
88
|
if: env.PUBLISH == 'true'
|
|
@@ -11,10 +11,10 @@ jobs:
|
|
|
11
11
|
matrix:
|
|
12
12
|
python-version: ['3.14']
|
|
13
13
|
steps:
|
|
14
|
-
- uses: actions/checkout@
|
|
14
|
+
- uses: actions/checkout@v6
|
|
15
15
|
|
|
16
16
|
- name: Install uv
|
|
17
|
-
uses: astral-sh/setup-uv@
|
|
17
|
+
uses: astral-sh/setup-uv@v7
|
|
18
18
|
with:
|
|
19
19
|
enable-cache: true
|
|
20
20
|
|
|
@@ -49,16 +49,19 @@ jobs:
|
|
|
49
49
|
runs-on: ubuntu-latest
|
|
50
50
|
needs: build
|
|
51
51
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
|
|
52
|
+
permissions:
|
|
53
|
+
id-token: write
|
|
54
|
+
attestations: write
|
|
52
55
|
|
|
53
56
|
strategy:
|
|
54
57
|
matrix:
|
|
55
58
|
python-version: ['3.14']
|
|
56
59
|
|
|
57
60
|
steps:
|
|
58
|
-
- uses: actions/checkout@
|
|
61
|
+
- uses: actions/checkout@v6
|
|
59
62
|
|
|
60
63
|
- name: Install uv
|
|
61
|
-
uses: astral-sh/setup-uv@
|
|
64
|
+
uses: astral-sh/setup-uv@v7
|
|
62
65
|
with:
|
|
63
66
|
enable-cache: true
|
|
64
67
|
|
|
@@ -74,6 +77,5 @@ jobs:
|
|
|
74
77
|
- name: Publish package
|
|
75
78
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
76
79
|
with:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
skip_existing: true
|
|
80
|
+
attestations: true
|
|
81
|
+
skip-existing: true
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.14
|
|
@@ -9,8 +9,8 @@ windows:
|
|
|
9
9
|
panes:
|
|
10
10
|
- focus: true
|
|
11
11
|
- pane
|
|
12
|
-
-
|
|
13
|
-
-
|
|
12
|
+
- just watch-mypy
|
|
13
|
+
- just start
|
|
14
14
|
- window_name: docs
|
|
15
15
|
layout: main-horizontal
|
|
16
16
|
options:
|
|
@@ -20,4 +20,4 @@ windows:
|
|
|
20
20
|
- focus: true
|
|
21
21
|
- pane
|
|
22
22
|
- pane
|
|
23
|
-
-
|
|
23
|
+
- just start
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
Guidance for AI agents (Cursor, Claude Code, Copilot, etc.) working in this repository.
|
|
4
|
+
|
|
5
|
+
## CRITICAL REQUIREMENTS
|
|
6
|
+
|
|
7
|
+
### Test Success
|
|
8
|
+
- ALL tests must pass (unit, doctest, lint, type checks) before declaring work complete.
|
|
9
|
+
- Do not describe code as "working" if any test fails.
|
|
10
|
+
- Fix regressions rather than disabling or skipping tests unless explicitly approved.
|
|
11
|
+
|
|
12
|
+
## Project Overview
|
|
13
|
+
|
|
14
|
+
gp-libs is the shared tooling stack used across the git-pull ecosystem. This repository, `cihai-cli`, is a command-line interface built on top of the `cihai` library to explore the Unihan (CJK) character database. Key abilities:
|
|
15
|
+
- Lookup CJK characters with `cihai info <char>` and YAML-formatted output.
|
|
16
|
+
- Reverse search definitions with `cihai reverse <term>`.
|
|
17
|
+
- Bootstraps and queries the Unihan dataset via `cihai` / `unihan-etl`.
|
|
18
|
+
- Provides a small, typed argparse-based CLI (`src/cihai_cli/cli.py`) exposed as the `cihai` entry point.
|
|
19
|
+
|
|
20
|
+
## Development Environment
|
|
21
|
+
|
|
22
|
+
This project uses:
|
|
23
|
+
- Python 3.10+
|
|
24
|
+
- [uv](https://github.com/astral-sh/uv) for dependency and task execution
|
|
25
|
+
- [ruff](https://github.com/astral-sh/ruff) for linting/formatting
|
|
26
|
+
- [mypy](https://github.com/python/mypy) with strict settings
|
|
27
|
+
- [pytest](https://docs.pytest.org/) (+ doctests) for testing
|
|
28
|
+
- [gp-libs](https://github.com/gp-libs/gp-libs) for shared docs/testing helpers
|
|
29
|
+
- Sphinx (Furo) for documentation
|
|
30
|
+
|
|
31
|
+
## Common Commands
|
|
32
|
+
|
|
33
|
+
### Setup
|
|
34
|
+
```bash
|
|
35
|
+
# Install dependencies (editable)
|
|
36
|
+
uv pip install --editable .
|
|
37
|
+
uv pip sync
|
|
38
|
+
|
|
39
|
+
# Install with dev extras
|
|
40
|
+
uv pip install --editable . -G dev
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Tests
|
|
44
|
+
```bash
|
|
45
|
+
just test # or: uv run pytest
|
|
46
|
+
uv run pytest tests/test_cli.py # single file
|
|
47
|
+
uv run pytest tests/test_cli.py::test_info_command # single test
|
|
48
|
+
|
|
49
|
+
just start # run tests then watch with pytest-watcher
|
|
50
|
+
uv run ptw . # standalone watcher (doctests enabled by default)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Linting & Types
|
|
54
|
+
```bash
|
|
55
|
+
just ruff # uv run ruff check .
|
|
56
|
+
just ruff-format # uv run ruff format .
|
|
57
|
+
uv run ruff check . --fix --show-fixes
|
|
58
|
+
|
|
59
|
+
just mypy # strict type checking
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Documentation
|
|
63
|
+
```bash
|
|
64
|
+
just build-docs # build Sphinx HTML in docs/_build
|
|
65
|
+
just start-docs # autobuild + livereload
|
|
66
|
+
just design-docs # update CSS/JS assets
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Workflow (recommended)
|
|
70
|
+
1) `uv run ruff format .`
|
|
71
|
+
2) `uv run pytest`
|
|
72
|
+
3) `uv run ruff check . --fix --show-fixes`
|
|
73
|
+
4) `uv run mypy`
|
|
74
|
+
5) `uv run pytest` (verify clean)
|
|
75
|
+
|
|
76
|
+
## Code Architecture (quick map)
|
|
77
|
+
- `src/cihai_cli/cli.py`: argparse entrypoint, implements `info` and `reverse` commands, logging setup.
|
|
78
|
+
- `src/cihai_cli/__about__.py`: package metadata (`__version__`).
|
|
79
|
+
- Tests: `tests/` (unit) plus doctests in `src/` and `docs/`.
|
|
80
|
+
- Docs: `docs/` Sphinx project (Furo theme).
|
|
81
|
+
|
|
82
|
+
## Testing Strategy
|
|
83
|
+
- Pytest with doctests enabled (`addopts` in `pyproject.toml`).
|
|
84
|
+
- Prefer real `cihai` / `unihan_etl` integration over heavy mocking; reuse fixtures where present.
|
|
85
|
+
- Watch mode: `uv run ptw .` (used in `just start`).
|
|
86
|
+
- Coverage via `pytest-cov`; configuration in `pyproject.toml`.
|
|
87
|
+
- Prefer fixtures over mocks (`server`, `session`, etc. when available); use `tmp_path` over `tempfile`, `monkeypatch` over `unittest.mock`.
|
|
88
|
+
|
|
89
|
+
## Coding Standards
|
|
90
|
+
- `from __future__ import annotations` required; enforced by ruff.
|
|
91
|
+
- Namespace imports for stdlib/typing (`import typing as t`); third-party packages may use `from X import Y`.
|
|
92
|
+
- Docstrings follow NumPy style (see `tool.ruff.lint.pydocstyle`).
|
|
93
|
+
- Python target version: 3.10 (`tool.ruff.target-version`).
|
|
94
|
+
- Keep CLI output human-friendly YAML; avoid breaking existing flags/args.
|
|
95
|
+
- Doctests: keep concise, narrative Examples blocks; move complex flows to `tests/examples/`.
|
|
96
|
+
|
|
97
|
+
## Documentation Standards
|
|
98
|
+
|
|
99
|
+
### Code Blocks in Documentation
|
|
100
|
+
|
|
101
|
+
When writing documentation (README, CHANGES, docs/), follow these rules for code blocks:
|
|
102
|
+
|
|
103
|
+
**One command per code block.** This makes commands individually copyable.
|
|
104
|
+
|
|
105
|
+
**Put explanations outside the code block**, not as comments inside.
|
|
106
|
+
|
|
107
|
+
Good:
|
|
108
|
+
|
|
109
|
+
Run the tests:
|
|
110
|
+
|
|
111
|
+
```console
|
|
112
|
+
$ uv run pytest
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Run with coverage:
|
|
116
|
+
|
|
117
|
+
```console
|
|
118
|
+
$ uv run pytest --cov
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Bad:
|
|
122
|
+
|
|
123
|
+
```console
|
|
124
|
+
# Run the tests
|
|
125
|
+
$ uv run pytest
|
|
126
|
+
|
|
127
|
+
# Run with coverage
|
|
128
|
+
$ uv run pytest --cov
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Debugging Tips
|
|
132
|
+
- Lean on `pytest -k <pattern> -vv` for focused failures.
|
|
133
|
+
- For CLI behavior, run `uv run cihai info 好` or `uv run cihai reverse library`.
|
|
134
|
+
- If Unihan DB is missing, CLI bootstraps automatically; avoid altering that flow unless required.
|
|
135
|
+
- Stuck in loops? Pause, minimize to a minimal repro, document exact errors, and restate the hypothesis before another attempt.
|
|
136
|
+
|
|
137
|
+
## Git Commit Standards
|
|
138
|
+
|
|
139
|
+
Commit subjects: `Component/File(commit-type[scope]): Concise description`
|
|
140
|
+
|
|
141
|
+
Body template:
|
|
142
|
+
```
|
|
143
|
+
why: Reason or impact.
|
|
144
|
+
what:
|
|
145
|
+
- Key technical changes
|
|
146
|
+
- Single topic only
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Guidelines:
|
|
150
|
+
- Subject ≤50 chars; body lines ≤72 chars; imperative mood.
|
|
151
|
+
- One topic per commit; separate subject and body with a blank line.
|
|
152
|
+
- Mark breaking changes with `BREAKING:` and include related issue refs when relevant.
|
|
153
|
+
|
|
154
|
+
Common commit types:
|
|
155
|
+
- **feat**: New features or enhancements
|
|
156
|
+
- **fix**: Bug fixes
|
|
157
|
+
- **refactor**: Code restructuring without functional change
|
|
158
|
+
- **docs**: Documentation updates
|
|
159
|
+
- **chore**: Maintenance (dependencies, tooling, config)
|
|
160
|
+
- **test**: Test-related updates
|
|
161
|
+
- **style**: Code style and formatting
|
|
162
|
+
- **py(deps)**: Dependencies
|
|
163
|
+
- **py(deps[dev])**: Dev dependencies
|
|
164
|
+
- **ai(rules[LLM type])**: AI rule updates (e.g., `ai(rules[AGENTS])`)
|
|
165
|
+
|
|
166
|
+
## Notes & Docs Authoring
|
|
167
|
+
- For `notes/**/*.md`, keep content concise and well-structured (headings, bullets, code fences).
|
|
168
|
+
- Use clear link text `[Title](mdc:URL)` and avoid redundancy; follow llms.txt style when possible.
|
|
169
|
+
|
|
170
|
+
## References
|
|
171
|
+
- Project docs: https://cihai-cli.git-pull.com
|
|
172
|
+
- Library docs: https://cihai.git-pull.com
|
|
173
|
+
- Unihan dataset: https://www.unicode.org/charts/unihan.html
|
|
174
|
+
- Shared tooling: https://github.com/gp-libs/gp-libs
|
|
@@ -28,11 +28,63 @@ $ uv add cihai-cli --prerelease allow
|
|
|
28
28
|
$ uvx --from 'cihai-cli' --prerelease allow cihai
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
## cihai-cli 0.
|
|
31
|
+
## cihai-cli 0.33.x (unreleased)
|
|
32
32
|
|
|
33
33
|
<!-- Maintainers, insert changes / features for the next release here -->
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
_Add your latest changes from PRs here_
|
|
36
|
+
|
|
37
|
+
## cihai-cli 0.32.0 (2026-01-24)
|
|
38
|
+
|
|
39
|
+
### What's new
|
|
40
|
+
|
|
41
|
+
#### Colored CLI help output (#337)
|
|
42
|
+
|
|
43
|
+
- Add syntax highlighting for CLI help examples
|
|
44
|
+
- New `_colors.py` module with ANSI color support respecting `NO_COLOR`/`FORCE_COLOR`
|
|
45
|
+
- New `_formatter.py` with custom argparse HelpFormatter for colored examples
|
|
46
|
+
|
|
47
|
+
#### Replace sphinx-argparse with sphinx_argparse_neo (#337)
|
|
48
|
+
|
|
49
|
+
- Port `sphinx_argparse_neo` extension from vcspull, replacing external `sphinx-argparse` dependency
|
|
50
|
+
- Add custom Pygments lexers for argparse and CLI usage syntax highlighting:
|
|
51
|
+
- `argparse_lexer.py` - Lexer for argparse help text
|
|
52
|
+
- `cli_usage_lexer.py` - Lexer for CLI usage patterns
|
|
53
|
+
- Add `argparse_exemplar.py` extension for transforming argparse epilog examples into documentation
|
|
54
|
+
- Add `argparse_roles.py` for custom Sphinx roles (`:opt:`, `:arg:`, `:prog:`)
|
|
55
|
+
- Add CSS styling for syntax-highlighted argparse output
|
|
56
|
+
- Add comprehensive test suite for all Sphinx extensions
|
|
57
|
+
|
|
58
|
+
#### Dev dependencies
|
|
59
|
+
|
|
60
|
+
- Add `types-docutils` and `types-Pygments` for type checking Sphinx extensions (#337)
|
|
61
|
+
|
|
62
|
+
### Packaging
|
|
63
|
+
|
|
64
|
+
- Add `py.typed` marker for [PEP 561] type checking support (#337)
|
|
65
|
+
|
|
66
|
+
[PEP 561]: https://peps.python.org/pep-0561/
|
|
67
|
+
|
|
68
|
+
## cihai-cli 0.31.1 (2026-01-24)
|
|
69
|
+
|
|
70
|
+
### Breaking changes
|
|
71
|
+
|
|
72
|
+
- Bump cihai 0.36.0 -> 0.36.1 (#338)
|
|
73
|
+
|
|
74
|
+
### CI
|
|
75
|
+
|
|
76
|
+
- Migrate to PyPI Trusted Publisher (#332)
|
|
77
|
+
|
|
78
|
+
### Development
|
|
79
|
+
|
|
80
|
+
#### Makefile -> Justfile (#333)
|
|
81
|
+
|
|
82
|
+
- Migrate from `Makefile` to `justfile` for running development tasks
|
|
83
|
+
- Update documentation to reference `just` commands
|
|
84
|
+
|
|
85
|
+
### Documentation
|
|
86
|
+
|
|
87
|
+
- Migrate docs deployment to AWS OIDC authentication and AWS CLI
|
|
36
88
|
|
|
37
89
|
## cihai-cli 0.31.0 (2025-11-01)
|
|
38
90
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AGENTS.md
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cihai-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.32.0
|
|
4
4
|
Summary: Command line frontend for the cihai CJK language library
|
|
5
5
|
Project-URL: Bug Tracker, https://github.com/cihai/cihai-cli/issues
|
|
6
6
|
Project-URL: Documentation, https://cihai-cli.git-pull.com
|
|
@@ -28,7 +28,7 @@ Classifier: Topic :: Software Development :: Localization
|
|
|
28
28
|
Classifier: Topic :: System :: Shells
|
|
29
29
|
Classifier: Topic :: Utilities
|
|
30
30
|
Requires-Python: <4.0,>=3.10
|
|
31
|
-
Requires-Dist: cihai~=0.36.
|
|
31
|
+
Requires-Dist: cihai~=0.36.1
|
|
32
32
|
Requires-Dist: pyyaml
|
|
33
33
|
Description-Content-Type: text/markdown
|
|
34
34
|
|