ageha 0.0.1__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.
- ageha-0.0.1/.github/workflows/ci.yml +70 -0
- ageha-0.0.1/.github/workflows/preview.yml +41 -0
- ageha-0.0.1/.github/workflows/release.yml +85 -0
- ageha-0.0.1/.gitignore +10 -0
- ageha-0.0.1/.release-please-manifest.json +1 -0
- ageha-0.0.1/CHANGELOG.md +15 -0
- ageha-0.0.1/LICENSE +21 -0
- ageha-0.0.1/PKG-INFO +76 -0
- ageha-0.0.1/README.md +60 -0
- ageha-0.0.1/README.zh-CN.md +60 -0
- ageha-0.0.1/assets/brand/README.md +8 -0
- ageha-0.0.1/assets/brand/ageha-mark-light.svg +579 -0
- ageha-0.0.1/assets/brand/ageha-mark.svg +579 -0
- ageha-0.0.1/docs/publishing.md +56 -0
- ageha-0.0.1/pyproject.toml +37 -0
- ageha-0.0.1/release-please-config.json +15 -0
- ageha-0.0.1/scripts/set_version.py +14 -0
- ageha-0.0.1/scripts/verify_registry.py +54 -0
- ageha-0.0.1/src/ageha/__init__.py +10 -0
- ageha-0.0.1/src/ageha/py.typed +0 -0
- ageha-0.0.1/tests/test_package.py +17 -0
- ageha-0.0.1/tests/test_version_script.py +31 -0
- ageha-0.0.1/uv.lock +711 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches: [main]
|
|
5
|
+
pull_request:
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
workflow_call:
|
|
8
|
+
inputs:
|
|
9
|
+
ref:
|
|
10
|
+
type: string
|
|
11
|
+
default: ""
|
|
12
|
+
version:
|
|
13
|
+
type: string
|
|
14
|
+
default: ""
|
|
15
|
+
artifact-name:
|
|
16
|
+
type: string
|
|
17
|
+
default: dist
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
jobs:
|
|
21
|
+
check:
|
|
22
|
+
name: Python ${{ matrix.python }} / ${{ matrix.os }}
|
|
23
|
+
strategy:
|
|
24
|
+
fail-fast: false
|
|
25
|
+
matrix:
|
|
26
|
+
include:
|
|
27
|
+
- {os: ubuntu-latest, python: "3.11"}
|
|
28
|
+
- {os: ubuntu-latest, python: "3.13"}
|
|
29
|
+
- {os: ubuntu-latest, python: "3.14"}
|
|
30
|
+
- {os: windows-latest, python: "3.13"}
|
|
31
|
+
runs-on: ${{ matrix.os }}
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v7.0.1
|
|
34
|
+
with:
|
|
35
|
+
ref: ${{ inputs.ref || github.sha }}
|
|
36
|
+
persist-credentials: false
|
|
37
|
+
- uses: astral-sh/setup-uv@v10.3.3
|
|
38
|
+
with:
|
|
39
|
+
enable-cache: true
|
|
40
|
+
python-version: ${{ matrix.python }}
|
|
41
|
+
- run: uv sync --locked
|
|
42
|
+
- name: Set preview package version
|
|
43
|
+
if: inputs.version != ''
|
|
44
|
+
env:
|
|
45
|
+
PACKAGE_VERSION: ${{ inputs.version }}
|
|
46
|
+
shell: bash
|
|
47
|
+
run: |
|
|
48
|
+
uv run --no-sync python scripts/set_version.py "$PACKAGE_VERSION"
|
|
49
|
+
uv pip install --no-deps -e .
|
|
50
|
+
- run: uv run --no-sync ruff check src tests scripts
|
|
51
|
+
- run: uv run --no-sync pytest -q
|
|
52
|
+
- run: uv build --no-sources
|
|
53
|
+
- run: uv run --no-sync twine check dist/*
|
|
54
|
+
- name: Install wheel in an isolated environment
|
|
55
|
+
shell: bash
|
|
56
|
+
run: |
|
|
57
|
+
uv venv smoke-env
|
|
58
|
+
if [ "$RUNNER_OS" = Windows ]; then
|
|
59
|
+
PYTHON=smoke-env/Scripts/python.exe
|
|
60
|
+
else
|
|
61
|
+
PYTHON=smoke-env/bin/python
|
|
62
|
+
fi
|
|
63
|
+
uv pip install --python "$PYTHON" --no-deps dist/*.whl
|
|
64
|
+
"$PYTHON" -I -c "import ageha; from importlib.metadata import version; assert ageha.__version__ == version('ageha'); assert ageha.greet('Lev Wu') == 'Hello, Lev Wu!'; print(version('ageha')); print(ageha.greet('Lev Wu'))"
|
|
65
|
+
- uses: actions/upload-artifact@v7.0.2
|
|
66
|
+
if: matrix.os == 'ubuntu-latest' && matrix.python == '3.13'
|
|
67
|
+
with:
|
|
68
|
+
name: ${{ inputs.artifact-name || 'dist' }}
|
|
69
|
+
path: dist/*
|
|
70
|
+
if-no-files-found: error
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: Preview Release
|
|
2
|
+
on:
|
|
3
|
+
workflow_dispatch:
|
|
4
|
+
permissions:
|
|
5
|
+
contents: read
|
|
6
|
+
concurrency:
|
|
7
|
+
group: preview-release
|
|
8
|
+
cancel-in-progress: false
|
|
9
|
+
jobs:
|
|
10
|
+
build:
|
|
11
|
+
uses: ./.github/workflows/ci.yml
|
|
12
|
+
with:
|
|
13
|
+
version: ${{ format('0.1.0.dev{0}{1}', github.run_id, github.run_attempt) }}
|
|
14
|
+
artifact-name: preview-dist
|
|
15
|
+
publish:
|
|
16
|
+
needs: build
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
environment: preview
|
|
19
|
+
permissions:
|
|
20
|
+
id-token: write
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/download-artifact@v8.0.2
|
|
23
|
+
with:
|
|
24
|
+
name: preview-dist
|
|
25
|
+
path: dist
|
|
26
|
+
- uses: pypa/gh-action-pypi-publish@v1.14.3
|
|
27
|
+
with:
|
|
28
|
+
repository-url: https://test.pypi.org/legacy/
|
|
29
|
+
verify:
|
|
30
|
+
needs: publish
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v7.0.1
|
|
34
|
+
with:
|
|
35
|
+
persist-credentials: false
|
|
36
|
+
- uses: astral-sh/setup-uv@v10.3.3
|
|
37
|
+
- uses: actions/download-artifact@v8.0.2
|
|
38
|
+
with:
|
|
39
|
+
name: preview-dist
|
|
40
|
+
path: dist
|
|
41
|
+
- run: python scripts/verify_registry.py testpypi dist
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches: [main]
|
|
5
|
+
workflow_dispatch:
|
|
6
|
+
permissions:
|
|
7
|
+
contents: read
|
|
8
|
+
concurrency:
|
|
9
|
+
group: release
|
|
10
|
+
cancel-in-progress: false
|
|
11
|
+
jobs:
|
|
12
|
+
quality:
|
|
13
|
+
uses: ./.github/workflows/ci.yml
|
|
14
|
+
release:
|
|
15
|
+
needs: quality
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
permissions:
|
|
18
|
+
contents: write
|
|
19
|
+
issues: write
|
|
20
|
+
pull-requests: write
|
|
21
|
+
outputs:
|
|
22
|
+
created: ${{ steps.release.outputs.release_created }}
|
|
23
|
+
sha: ${{ steps.release.outputs.sha }}
|
|
24
|
+
pr: ${{ steps.release.outputs.pr }}
|
|
25
|
+
prs-created: ${{ steps.release.outputs.prs_created }}
|
|
26
|
+
steps:
|
|
27
|
+
- uses: googleapis/release-please-action@v5.0.0
|
|
28
|
+
id: release
|
|
29
|
+
- uses: actions/checkout@v7.0.1
|
|
30
|
+
if: steps.release.outputs.prs_created == 'true'
|
|
31
|
+
with:
|
|
32
|
+
ref: ${{ fromJSON(steps.release.outputs.pr).headBranchName }}
|
|
33
|
+
- uses: astral-sh/setup-uv@v10.3.3
|
|
34
|
+
if: steps.release.outputs.prs_created == 'true'
|
|
35
|
+
- name: Refresh version metadata in lockfile
|
|
36
|
+
if: steps.release.outputs.prs_created == 'true'
|
|
37
|
+
run: |
|
|
38
|
+
uv lock
|
|
39
|
+
git config user.name "github-actions[bot]"
|
|
40
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
41
|
+
git add uv.lock
|
|
42
|
+
if ! git diff --cached --quiet; then
|
|
43
|
+
git commit -m "chore: sync release lockfile"
|
|
44
|
+
git push
|
|
45
|
+
fi
|
|
46
|
+
release-pr-quality:
|
|
47
|
+
if: needs.release.outputs.prs-created == 'true'
|
|
48
|
+
needs: release
|
|
49
|
+
uses: ./.github/workflows/ci.yml
|
|
50
|
+
with:
|
|
51
|
+
ref: ${{ fromJSON(needs.release.outputs.pr).headBranchName }}
|
|
52
|
+
artifact-name: release-pr-dist
|
|
53
|
+
release-build:
|
|
54
|
+
if: needs.release.outputs.created == 'true'
|
|
55
|
+
needs: release
|
|
56
|
+
uses: ./.github/workflows/ci.yml
|
|
57
|
+
with:
|
|
58
|
+
ref: ${{ needs.release.outputs.sha }}
|
|
59
|
+
artifact-name: release-dist
|
|
60
|
+
publish:
|
|
61
|
+
if: needs.release.outputs.created == 'true' && vars.PYPI_ENABLED == 'true'
|
|
62
|
+
needs: [release, release-build]
|
|
63
|
+
runs-on: ubuntu-latest
|
|
64
|
+
environment: pypi
|
|
65
|
+
permissions:
|
|
66
|
+
id-token: write
|
|
67
|
+
steps:
|
|
68
|
+
- uses: actions/download-artifact@v8.0.2
|
|
69
|
+
with:
|
|
70
|
+
name: release-dist
|
|
71
|
+
path: dist
|
|
72
|
+
- uses: pypa/gh-action-pypi-publish@v1.14.3
|
|
73
|
+
verify:
|
|
74
|
+
needs: publish
|
|
75
|
+
runs-on: ubuntu-latest
|
|
76
|
+
steps:
|
|
77
|
+
- uses: actions/checkout@v7.0.1
|
|
78
|
+
with:
|
|
79
|
+
persist-credentials: false
|
|
80
|
+
- uses: astral-sh/setup-uv@v10.3.3
|
|
81
|
+
- uses: actions/download-artifact@v8.0.2
|
|
82
|
+
with:
|
|
83
|
+
name: release-dist
|
|
84
|
+
path: dist
|
|
85
|
+
- run: python scripts/verify_registry.py pypi dist
|
ageha-0.0.1/.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{".":"0.0.1"}
|
ageha-0.0.1/CHANGELOG.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.0.1 (2026-11-13)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add greeting utility for the initial release ([0573fda](https://github.com/IceyWu/ageha-python/commit/0573fda2a587c9c467508df38c5a70bf592b530e))
|
|
9
|
+
* bootstrap Ageha Python packaging and CI releases ([4ad4d6b](https://github.com/IceyWu/ageha-python/commit/4ad4d6b8a85985cea21b991850086df2364a044b))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Documentation
|
|
13
|
+
|
|
14
|
+
* normalize README formatting ([3f89672](https://github.com/IceyWu/ageha-python/commit/3f896729fd093787caebb869ca73422298a4e646))
|
|
15
|
+
* refine Ageha toolkit branding and bilingual readmes ([4413c41](https://github.com/IceyWu/ageha-python/commit/4413c41d09b3aaf5f2a607bf45df8dbaac0e3651))
|
ageha-0.0.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Lev Wu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
ageha-0.0.1/PKG-INFO
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: ageha
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: A Python toolkit.
|
|
5
|
+
Project-URL: Homepage, https://github.com/IceyWu/ageha-python
|
|
6
|
+
Project-URL: Repository, https://github.com/IceyWu/ageha-python
|
|
7
|
+
Project-URL: Issues, https://github.com/IceyWu/ageha-python/issues
|
|
8
|
+
Author: Lev Wu
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
13
|
+
Classifier: Typing :: Typed
|
|
14
|
+
Requires-Python: >=3.11
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
|
|
17
|
+
<div align="center">
|
|
18
|
+
<picture>
|
|
19
|
+
<source media="(prefers-color-scheme: dark)" srcset="assets/brand/ageha-mark-light.svg">
|
|
20
|
+
<source media="(prefers-color-scheme: light)" srcset="assets/brand/ageha-mark.svg">
|
|
21
|
+
<img src="assets/brand/ageha-mark.svg" alt="Ageha butterfly mark" width="128" height="128">
|
|
22
|
+
</picture>
|
|
23
|
+
<h1>Ageha</h1>
|
|
24
|
+
<p><strong>A Python toolkit.</strong></p>
|
|
25
|
+
<p>Created and maintained by Lev Wu.</p>
|
|
26
|
+
<p><a href="#development">Development</a> · <a href="#documentation">Documentation</a></p>
|
|
27
|
+
<p><a href="README.md">English</a> · <a href="README.zh-CN.md">简体中文</a></p>
|
|
28
|
+
<p>
|
|
29
|
+
<a href="https://github.com/IceyWu/ageha-python/actions/workflows/ci.yml"><img src="https://github.com/IceyWu/ageha-python/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI"></a>
|
|
30
|
+
<a href="https://github.com/IceyWu/ageha-python/actions/workflows/preview.yml"><img src="https://github.com/IceyWu/ageha-python/actions/workflows/preview.yml/badge.svg?branch=main" alt="Preview Release"></a>
|
|
31
|
+
<img src="https://img.shields.io/badge/Python-3.11%2B-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python 3.11+">
|
|
32
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-555555?style=flat-square" alt="MIT license"></a>
|
|
33
|
+
</p>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
Ageha is a Python toolkit by **Lev Wu**, currently under development.
|
|
39
|
+
|
|
40
|
+
## Installation
|
|
41
|
+
|
|
42
|
+
~~~bash
|
|
43
|
+
pip install ageha
|
|
44
|
+
~~~
|
|
45
|
+
|
|
46
|
+
~~~python
|
|
47
|
+
from ageha import greet
|
|
48
|
+
|
|
49
|
+
print(greet("Lev Wu")) # Hello, Lev Wu!
|
|
50
|
+
~~~
|
|
51
|
+
|
|
52
|
+
## Development
|
|
53
|
+
|
|
54
|
+
Requires **Python 3.11+** and [uv](https://docs.astral.sh/uv/).
|
|
55
|
+
|
|
56
|
+
~~~bash
|
|
57
|
+
git clone https://github.com/IceyWu/ageha-python.git
|
|
58
|
+
cd ageha-python
|
|
59
|
+
uv sync --locked
|
|
60
|
+
~~~
|
|
61
|
+
|
|
62
|
+
~~~bash
|
|
63
|
+
uv run ruff check src tests scripts
|
|
64
|
+
uv run pytest -q
|
|
65
|
+
uv build
|
|
66
|
+
~~~
|
|
67
|
+
|
|
68
|
+
## Documentation
|
|
69
|
+
|
|
70
|
+
- [Release guide](docs/publishing.md)
|
|
71
|
+
- [Releases](https://github.com/IceyWu/ageha-python/releases)
|
|
72
|
+
- [Issues](https://github.com/IceyWu/ageha-python/issues)
|
|
73
|
+
|
|
74
|
+
## License
|
|
75
|
+
|
|
76
|
+
[MIT](LICENSE) · **Lev Wu**
|
ageha-0.0.1/README.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="assets/brand/ageha-mark-light.svg">
|
|
4
|
+
<source media="(prefers-color-scheme: light)" srcset="assets/brand/ageha-mark.svg">
|
|
5
|
+
<img src="assets/brand/ageha-mark.svg" alt="Ageha butterfly mark" width="128" height="128">
|
|
6
|
+
</picture>
|
|
7
|
+
<h1>Ageha</h1>
|
|
8
|
+
<p><strong>A Python toolkit.</strong></p>
|
|
9
|
+
<p>Created and maintained by Lev Wu.</p>
|
|
10
|
+
<p><a href="#development">Development</a> · <a href="#documentation">Documentation</a></p>
|
|
11
|
+
<p><a href="README.md">English</a> · <a href="README.zh-CN.md">简体中文</a></p>
|
|
12
|
+
<p>
|
|
13
|
+
<a href="https://github.com/IceyWu/ageha-python/actions/workflows/ci.yml"><img src="https://github.com/IceyWu/ageha-python/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI"></a>
|
|
14
|
+
<a href="https://github.com/IceyWu/ageha-python/actions/workflows/preview.yml"><img src="https://github.com/IceyWu/ageha-python/actions/workflows/preview.yml/badge.svg?branch=main" alt="Preview Release"></a>
|
|
15
|
+
<img src="https://img.shields.io/badge/Python-3.11%2B-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python 3.11+">
|
|
16
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-555555?style=flat-square" alt="MIT license"></a>
|
|
17
|
+
</p>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
Ageha is a Python toolkit by **Lev Wu**, currently under development.
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
~~~bash
|
|
27
|
+
pip install ageha
|
|
28
|
+
~~~
|
|
29
|
+
|
|
30
|
+
~~~python
|
|
31
|
+
from ageha import greet
|
|
32
|
+
|
|
33
|
+
print(greet("Lev Wu")) # Hello, Lev Wu!
|
|
34
|
+
~~~
|
|
35
|
+
|
|
36
|
+
## Development
|
|
37
|
+
|
|
38
|
+
Requires **Python 3.11+** and [uv](https://docs.astral.sh/uv/).
|
|
39
|
+
|
|
40
|
+
~~~bash
|
|
41
|
+
git clone https://github.com/IceyWu/ageha-python.git
|
|
42
|
+
cd ageha-python
|
|
43
|
+
uv sync --locked
|
|
44
|
+
~~~
|
|
45
|
+
|
|
46
|
+
~~~bash
|
|
47
|
+
uv run ruff check src tests scripts
|
|
48
|
+
uv run pytest -q
|
|
49
|
+
uv build
|
|
50
|
+
~~~
|
|
51
|
+
|
|
52
|
+
## Documentation
|
|
53
|
+
|
|
54
|
+
- [Release guide](docs/publishing.md)
|
|
55
|
+
- [Releases](https://github.com/IceyWu/ageha-python/releases)
|
|
56
|
+
- [Issues](https://github.com/IceyWu/ageha-python/issues)
|
|
57
|
+
|
|
58
|
+
## License
|
|
59
|
+
|
|
60
|
+
[MIT](LICENSE) · **Lev Wu**
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="assets/brand/ageha-mark-light.svg">
|
|
4
|
+
<source media="(prefers-color-scheme: light)" srcset="assets/brand/ageha-mark.svg">
|
|
5
|
+
<img src="assets/brand/ageha-mark.svg" alt="Ageha butterfly mark" width="128" height="128">
|
|
6
|
+
</picture>
|
|
7
|
+
<h1>Ageha</h1>
|
|
8
|
+
<p><strong>一个 Python 工具包。</strong></p>
|
|
9
|
+
<p>Lev Wu 创建并维护。</p>
|
|
10
|
+
<p><a href="#项目介绍">项目介绍</a> · <a href="#本地开发">本地开发</a> · <a href="#开发方向">开发方向</a> · <a href="#项目文档">项目文档</a></p>
|
|
11
|
+
<p><a href="README.md">English</a> · <a href="README.zh-CN.md">简体中文</a></p>
|
|
12
|
+
<p>
|
|
13
|
+
<a href="https://github.com/IceyWu/ageha-python/actions/workflows/ci.yml"><img src="https://github.com/IceyWu/ageha-python/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI"></a>
|
|
14
|
+
<a href="https://github.com/IceyWu/ageha-python/actions/workflows/preview.yml"><img src="https://github.com/IceyWu/ageha-python/actions/workflows/preview.yml/badge.svg?branch=main" alt="Preview Release"></a>
|
|
15
|
+
<img src="https://img.shields.io/badge/Python-3.11%2B-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python 3.11+">
|
|
16
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-555555?style=flat-square" alt="MIT license"></a>
|
|
17
|
+
</p>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
Ageha 是 **Lev Wu** 维护的 Python 工具包,目前正在开发中。
|
|
23
|
+
|
|
24
|
+
## 安装使用
|
|
25
|
+
|
|
26
|
+
~~~bash
|
|
27
|
+
pip install ageha
|
|
28
|
+
~~~
|
|
29
|
+
|
|
30
|
+
~~~python
|
|
31
|
+
from ageha import greet
|
|
32
|
+
|
|
33
|
+
print(greet("Lev Wu")) # Hello, Lev Wu!
|
|
34
|
+
~~~
|
|
35
|
+
|
|
36
|
+
## 本地开发
|
|
37
|
+
|
|
38
|
+
需要 **Python 3.11+** 和 [uv](https://docs.astral.sh/uv/)。
|
|
39
|
+
|
|
40
|
+
~~~bash
|
|
41
|
+
git clone https://github.com/IceyWu/ageha-python.git
|
|
42
|
+
cd ageha-python
|
|
43
|
+
uv sync --locked
|
|
44
|
+
~~~
|
|
45
|
+
|
|
46
|
+
~~~bash
|
|
47
|
+
uv run ruff check src tests scripts
|
|
48
|
+
uv run pytest -q
|
|
49
|
+
uv build
|
|
50
|
+
~~~
|
|
51
|
+
|
|
52
|
+
## 项目文档
|
|
53
|
+
|
|
54
|
+
- [发布指南](docs/publishing.md)
|
|
55
|
+
- [版本记录](https://github.com/IceyWu/ageha-python/releases)
|
|
56
|
+
- [问题反馈](https://github.com/IceyWu/ageha-python/issues)
|
|
57
|
+
|
|
58
|
+
## 许可证
|
|
59
|
+
|
|
60
|
+
[MIT](LICENSE) · **Lev Wu**
|