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.
@@ -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,10 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.py[cod]
4
+ .pytest_cache/
5
+ .ruff_cache/
6
+ dist/
7
+ *.egg-info/
8
+ .env
9
+ .env.*
10
+ smoke-env/
@@ -0,0 +1 @@
1
+ {".":"0.0.1"}
@@ -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&amp;logo=python&amp;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&amp;logo=python&amp;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&amp;logo=python&amp;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**
@@ -0,0 +1,8 @@
1
+ # Ageha
2
+
3
+ | Asset | Use |
4
+ | :--- | :--- |
5
+ | ageha-mark.svg | Light backgrounds |
6
+ | ageha-mark-light.svg | Dark backgrounds |
7
+
8
+ README headers select the theme variant automatically.