medium-modulation 0.1.0__tar.gz → 0.3.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.
- medium_modulation-0.3.1/.gitattributes +2 -0
- medium_modulation-0.3.1/.github/workflows/ci.yml +63 -0
- medium_modulation-0.3.1/.github/workflows/release.yml +79 -0
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/.gitignore +22 -22
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/.pre-commit-config.yaml +17 -17
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/LICENSE +21 -21
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/PKG-INFO +2 -2
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/README.md +72 -72
- medium_modulation-0.3.1/README_QUICKSTART.md +52 -0
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/docs/cli.md +88 -88
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/docs/index.md +37 -37
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/docs/templates.md +111 -111
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/domains.yaml +5 -5
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/mkdocs.yml +43 -43
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/pyproject.toml +55 -54
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/src/medium_modulation/__init__.py +7 -7
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/src/medium_modulation/cli.py +80 -80
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/src/medium_modulation/core.py +75 -75
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/src/medium_modulation/entropy_table_bridge.py +42 -42
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/tests/test_bridge.py +68 -68
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/tests/test_cli.py +70 -70
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/tests/test_core.py +99 -99
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/uv.lock +1713 -1713
- medium_modulation-0.1.0/.github/workflows/ci.yml +0 -48
- {medium_modulation-0.1.0 → medium_modulation-0.3.1}/tests/__init__.py +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main", "master", "claude/**"]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: ["main", "master"]
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
lint:
|
|
15
|
+
name: Lint (ruff + mypy)
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
- uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.11"
|
|
22
|
+
- name: Install dev dependencies
|
|
23
|
+
run: pip install -e ".[dev]"
|
|
24
|
+
- name: Run ruff
|
|
25
|
+
run: ruff check src tests
|
|
26
|
+
- name: Run mypy
|
|
27
|
+
run: mypy src
|
|
28
|
+
|
|
29
|
+
test:
|
|
30
|
+
name: Tests (Python ${{ matrix.python-version }})
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
strategy:
|
|
33
|
+
fail-fast: false
|
|
34
|
+
matrix:
|
|
35
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
36
|
+
steps:
|
|
37
|
+
- uses: actions/checkout@v4
|
|
38
|
+
- uses: actions/setup-python@v5
|
|
39
|
+
with:
|
|
40
|
+
python-version: ${{ matrix.python-version }}
|
|
41
|
+
- name: Install dependencies
|
|
42
|
+
run: pip install -e ".[dev]"
|
|
43
|
+
- name: Run pytest with coverage
|
|
44
|
+
run: pytest --cov=src --cov-report=xml
|
|
45
|
+
- name: Upload coverage
|
|
46
|
+
if: matrix.python-version == '3.11'
|
|
47
|
+
uses: codecov/codecov-action@v4
|
|
48
|
+
with:
|
|
49
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
50
|
+
files: coverage.xml
|
|
51
|
+
|
|
52
|
+
docs:
|
|
53
|
+
name: Docs (mkdocs --strict)
|
|
54
|
+
runs-on: ubuntu-latest
|
|
55
|
+
steps:
|
|
56
|
+
- uses: actions/checkout@v4
|
|
57
|
+
- uses: actions/setup-python@v5
|
|
58
|
+
with:
|
|
59
|
+
python-version: "3.11"
|
|
60
|
+
- name: Install dev dependencies
|
|
61
|
+
run: pip install -e ".[dev]"
|
|
62
|
+
- name: Build docs
|
|
63
|
+
run: mkdocs build --strict
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*.*.*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
id-token: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
name: Build distribution
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
with:
|
|
19
|
+
fetch-depth: 0
|
|
20
|
+
- uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: "3.11"
|
|
23
|
+
- name: Install build tools
|
|
24
|
+
run: pip install build
|
|
25
|
+
- name: Build wheel and sdist
|
|
26
|
+
run: python -m build
|
|
27
|
+
- name: Upload artifacts
|
|
28
|
+
uses: actions/upload-artifact@v4
|
|
29
|
+
with:
|
|
30
|
+
name: dist
|
|
31
|
+
path: dist/
|
|
32
|
+
|
|
33
|
+
publish-pypi:
|
|
34
|
+
name: Publish to PyPI
|
|
35
|
+
needs: build
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
environment:
|
|
38
|
+
name: pypi
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/download-artifact@v4
|
|
41
|
+
with:
|
|
42
|
+
name: dist
|
|
43
|
+
path: dist/
|
|
44
|
+
- name: Publish to PyPI
|
|
45
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
46
|
+
|
|
47
|
+
github-release:
|
|
48
|
+
name: Create GitHub Release
|
|
49
|
+
needs: publish-pypi
|
|
50
|
+
runs-on: ubuntu-latest
|
|
51
|
+
steps:
|
|
52
|
+
- uses: actions/checkout@v4
|
|
53
|
+
- uses: actions/download-artifact@v4
|
|
54
|
+
with:
|
|
55
|
+
name: dist
|
|
56
|
+
path: dist/
|
|
57
|
+
- name: Create GitHub Release
|
|
58
|
+
uses: softprops/action-gh-release@v2
|
|
59
|
+
with:
|
|
60
|
+
files: dist/*
|
|
61
|
+
generate_release_notes: true
|
|
62
|
+
draft: false
|
|
63
|
+
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
|
|
64
|
+
|
|
65
|
+
publish-zenodo:
|
|
66
|
+
name: Publish to Zenodo
|
|
67
|
+
needs: github-release
|
|
68
|
+
runs-on: ubuntu-latest
|
|
69
|
+
steps:
|
|
70
|
+
- uses: actions/checkout@v4
|
|
71
|
+
- name: Upload to Zenodo
|
|
72
|
+
run: |
|
|
73
|
+
echo "Zenodo upload triggered for tag ${{ github.ref_name }}"
|
|
74
|
+
echo "Configure ZENODO_TOKEN secret and zenodraft/action for automatic upload."
|
|
75
|
+
# Replace with actual zenodo-upload action when token is configured:
|
|
76
|
+
# uses: zenodraft/action@main
|
|
77
|
+
# with:
|
|
78
|
+
# concept-doi: 10.5281/zenodo.XXXXXXXX # <- enter your concept DOI
|
|
79
|
+
# token: ${{ secrets.ZENODO_TOKEN }}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
# Python
|
|
2
|
-
__pycache__/
|
|
3
|
-
*.py[cod]
|
|
4
|
-
*.egg-info/
|
|
5
|
-
.eggs/
|
|
6
|
-
dist/
|
|
7
|
-
build/
|
|
8
|
-
.venv/
|
|
9
|
-
.uv/
|
|
10
|
-
|
|
11
|
-
# Testing
|
|
12
|
-
.coverage
|
|
13
|
-
htmlcov/
|
|
14
|
-
.pytest_cache/
|
|
15
|
-
|
|
16
|
-
# Docs
|
|
17
|
-
site/
|
|
18
|
-
|
|
19
|
-
# Editors
|
|
20
|
-
.vscode/
|
|
21
|
-
.idea/
|
|
22
|
-
*.swp
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
.eggs/
|
|
6
|
+
dist/
|
|
7
|
+
build/
|
|
8
|
+
.venv/
|
|
9
|
+
.uv/
|
|
10
|
+
|
|
11
|
+
# Testing
|
|
12
|
+
.coverage
|
|
13
|
+
htmlcov/
|
|
14
|
+
.pytest_cache/
|
|
15
|
+
|
|
16
|
+
# Docs
|
|
17
|
+
site/
|
|
18
|
+
|
|
19
|
+
# Editors
|
|
20
|
+
.vscode/
|
|
21
|
+
.idea/
|
|
22
|
+
*.swp
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
repos:
|
|
2
|
-
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
3
|
-
rev: v0.6.0
|
|
4
|
-
hooks:
|
|
5
|
-
- id: ruff
|
|
6
|
-
args: [--fix]
|
|
7
|
-
- id: ruff-format
|
|
8
|
-
|
|
9
|
-
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
10
|
-
rev: v4.6.0
|
|
11
|
-
hooks:
|
|
12
|
-
- id: trailing-whitespace
|
|
13
|
-
- id: end-of-file-fixer
|
|
14
|
-
- id: check-yaml
|
|
15
|
-
- id: check-toml
|
|
16
|
-
- id: check-merge-conflict
|
|
17
|
-
- id: debug-statements
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
3
|
+
rev: v0.6.0
|
|
4
|
+
hooks:
|
|
5
|
+
- id: ruff
|
|
6
|
+
args: [--fix]
|
|
7
|
+
- id: ruff-format
|
|
8
|
+
|
|
9
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
10
|
+
rev: v4.6.0
|
|
11
|
+
hooks:
|
|
12
|
+
- id: trailing-whitespace
|
|
13
|
+
- id: end-of-file-fixer
|
|
14
|
+
- id: check-yaml
|
|
15
|
+
- id: check-toml
|
|
16
|
+
- id: check-merge-conflict
|
|
17
|
+
- id: debug-statements
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 JohannRömer
|
|
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.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 JohannRömer
|
|
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.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: medium-modulation
|
|
3
|
-
Version: 0.1
|
|
4
|
-
Summary: Resonant medium between S
|
|
3
|
+
Version: 0.3.1
|
|
4
|
+
Summary: Resonant medium between SâˆA and SâˆV – fractal modulation operators, resonance spectra and tunable interference for controlled information propagation.
|
|
5
5
|
Project-URL: Repository, https://github.com/GenesisAeon/medium-modulation
|
|
6
6
|
Project-URL: Issues, https://github.com/GenesisAeon/medium-modulation/issues
|
|
7
7
|
Author-email: GenesisAeon Team <team@genesisaeon.org>
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
# medium-modulation
|
|
2
|
-
|
|
3
|
-
**The resonant medium between action and expanse.**
|
|
4
|
-
|
|
5
|
-
[](https://github.com/GenesisAeon/medium-modulation/actions/workflows/ci.yml)
|
|
6
|
-
[](https://www.python.org)
|
|
7
|
-
[](LICENSE)
|
|
8
|
-
|
|
9
|
-
medium-modulation serves as the dynamic coupling layer that modulates the fundamental duality of the GenesisAeon framework: action-governed entropy production (S ∝ A) versus volume-governed informational expansion (S ∝ V).
|
|
10
|
-
|
|
11
|
-
Through fractal modulation operators, resonance spectra, and tunable interference fields, it turns raw tension into coherent emergence.
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Install
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
pip install medium-modulation
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Usage
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
mm modulate --depth 0.7 --freq 2.3
|
|
25
|
-
mm spectrum
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## API
|
|
29
|
-
|
|
30
|
-
```python
|
|
31
|
-
from medium_modulation.core import modulated_entropy, resonance_spectrum, coupling_factor
|
|
32
|
-
import numpy as np
|
|
33
|
-
|
|
34
|
-
# Fractal medium modulation
|
|
35
|
-
S_mod = modulated_entropy(S_A=1.0, S_V=1.618, depth=0.5, freq=1.0, t=0.0)
|
|
36
|
-
|
|
37
|
-
# Resonance spectrum over frequency range
|
|
38
|
-
freqs = np.linspace(0.1, 10, 50)
|
|
39
|
-
spec = resonance_spectrum(freqs, depth=0.5)
|
|
40
|
-
|
|
41
|
-
# Dynamic coupling strength
|
|
42
|
-
kappa = coupling_factor(A=1.0, V=1.618, modulation_depth=0.5)
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Architecture
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
medium-modulation/
|
|
49
|
-
├── src/medium_modulation/
|
|
50
|
-
│ ├── core.py # Modulation operator + fractal coupling
|
|
51
|
-
│ ├── cli.py # CLI mm
|
|
52
|
-
│ └── entropy_table_bridge.py # entropy-table integration
|
|
53
|
-
├── tests/
|
|
54
|
-
│ ├── test_core.py
|
|
55
|
-
│ └── test_cli.py
|
|
56
|
-
└── domains.yaml # Domain configuration
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Integrations
|
|
60
|
-
|
|
61
|
-
| Package | Role |
|
|
62
|
-
|---------|------|
|
|
63
|
-
| `entropy-governance` | Duality factor α·S_A + (1-α)·S_V |
|
|
64
|
-
| `entropy-table` | Domain relation registry |
|
|
65
|
-
| `implosive-genesis` | Fractal emergence substrate |
|
|
66
|
-
|
|
67
|
-
**DOI** (after Zenodo release): 10.5281/zenodo.XXXXXXX
|
|
68
|
-
**PyPI**: https://pypi.org/project/medium-modulation/
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
Built with [SymPy](https://www.sympy.org/) · [NumPy](https://numpy.org/) · [Typer](https://typer.tiangolo.com/) · [Rich](https://rich.readthedocs.io/)
|
|
1
|
+
# medium-modulation
|
|
2
|
+
|
|
3
|
+
**The resonant medium between action and expanse.**
|
|
4
|
+
|
|
5
|
+
[](https://github.com/GenesisAeon/medium-modulation/actions/workflows/ci.yml)
|
|
6
|
+
[](https://www.python.org)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
|
|
9
|
+
medium-modulation serves as the dynamic coupling layer that modulates the fundamental duality of the GenesisAeon framework: action-governed entropy production (S ∝ A) versus volume-governed informational expansion (S ∝ V).
|
|
10
|
+
|
|
11
|
+
Through fractal modulation operators, resonance spectra, and tunable interference fields, it turns raw tension into coherent emergence.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Install
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pip install medium-modulation
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
mm modulate --depth 0.7 --freq 2.3
|
|
25
|
+
mm spectrum
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## API
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
from medium_modulation.core import modulated_entropy, resonance_spectrum, coupling_factor
|
|
32
|
+
import numpy as np
|
|
33
|
+
|
|
34
|
+
# Fractal medium modulation
|
|
35
|
+
S_mod = modulated_entropy(S_A=1.0, S_V=1.618, depth=0.5, freq=1.0, t=0.0)
|
|
36
|
+
|
|
37
|
+
# Resonance spectrum over frequency range
|
|
38
|
+
freqs = np.linspace(0.1, 10, 50)
|
|
39
|
+
spec = resonance_spectrum(freqs, depth=0.5)
|
|
40
|
+
|
|
41
|
+
# Dynamic coupling strength
|
|
42
|
+
kappa = coupling_factor(A=1.0, V=1.618, modulation_depth=0.5)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Architecture
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
medium-modulation/
|
|
49
|
+
├── src/medium_modulation/
|
|
50
|
+
│ ├── core.py # Modulation operator + fractal coupling
|
|
51
|
+
│ ├── cli.py # CLI mm
|
|
52
|
+
│ └── entropy_table_bridge.py # entropy-table integration
|
|
53
|
+
├── tests/
|
|
54
|
+
│ ├── test_core.py
|
|
55
|
+
│ └── test_cli.py
|
|
56
|
+
└── domains.yaml # Domain configuration
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Integrations
|
|
60
|
+
|
|
61
|
+
| Package | Role |
|
|
62
|
+
|---------|------|
|
|
63
|
+
| `entropy-governance` | Duality factor α·S_A + (1-α)·S_V |
|
|
64
|
+
| `entropy-table` | Domain relation registry |
|
|
65
|
+
| `implosive-genesis` | Fractal emergence substrate |
|
|
66
|
+
|
|
67
|
+
**DOI** (after Zenodo release): 10.5281/zenodo.XXXXXXX
|
|
68
|
+
**PyPI**: https://pypi.org/project/medium-modulation/
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
Built with [SymPy](https://www.sympy.org/) · [NumPy](https://numpy.org/) · [Typer](https://typer.tiangolo.com/) · [Rich](https://rich.readthedocs.io/)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Quick Start
|
|
2
|
+
|
|
3
|
+
## Installation
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
pip install <package-name>
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Development Setup
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
git clone https://github.com/GenesisAeon/<repo-name>.git
|
|
13
|
+
cd <repo-name>
|
|
14
|
+
pip install -e ".[dev]"
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Running Tests
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pytest --cov=src
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Linting
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
ruff check src tests
|
|
27
|
+
mypy src
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Building Docs
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
mkdocs serve
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Release
|
|
37
|
+
|
|
38
|
+
Tag a commit to trigger the automated release workflow:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
git tag v0.1.0
|
|
42
|
+
git push origin v0.1.0
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The release workflow will:
|
|
46
|
+
1. Build the wheel + sdist
|
|
47
|
+
2. Publish to PyPI via Trusted Publishing (no token needed)
|
|
48
|
+
3. Create a GitHub Release with auto-generated notes
|
|
49
|
+
4. Trigger Zenodo archival (configure `ZENODO_TOKEN` secret)
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
*Propagated from [diamond-setup](https://github.com/GenesisAeon/diamond-setup) v0.3.0.*
|
|
@@ -1,88 +1,88 @@
|
|
|
1
|
-
# CLI Reference
|
|
2
|
-
|
|
3
|
-
## `diamond scaffold`
|
|
4
|
-
|
|
5
|
-
Create a new project from a template.
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
Usage: diamond scaffold [OPTIONS] PROJECT_NAME
|
|
9
|
-
|
|
10
|
-
Arguments:
|
|
11
|
-
PROJECT_NAME Name of the new project (kebab-case recommended)
|
|
12
|
-
|
|
13
|
-
Options:
|
|
14
|
-
-t, --template TEXT Template to use [default: minimal]
|
|
15
|
-
-o, --output-dir PATH Parent directory for the new project
|
|
16
|
-
--author TEXT Author name
|
|
17
|
-
--description TEXT Short project description
|
|
18
|
-
--python-version TEXT Minimum Python version (e.g. 3.11)
|
|
19
|
-
--dry-run Preview files without writing them
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
**Examples**
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
# Minimal project in the current directory
|
|
26
|
-
diamond scaffold my-lib
|
|
27
|
-
|
|
28
|
-
# Genesis preset with custom author
|
|
29
|
-
diamond scaffold my-physics-tool --template genesis --author "Ada Lovelace"
|
|
30
|
-
|
|
31
|
-
# Preview what would be created
|
|
32
|
-
diamond scaffold my-lib --dry-run
|
|
33
|
-
|
|
34
|
-
# Output to a specific directory
|
|
35
|
-
diamond scaffold my-lib --output-dir ~/projects
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## `diamond list-templates`
|
|
41
|
-
|
|
42
|
-
List all available templates with their descriptions.
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
diamond list-templates
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## `diamond validate`
|
|
51
|
-
|
|
52
|
-
Validate a project directory against diamond-setup best practices.
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
Usage: diamond validate [PATH]
|
|
56
|
-
|
|
57
|
-
Arguments:
|
|
58
|
-
PATH Project directory to validate [default: current directory]
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Checks performed:
|
|
62
|
-
|
|
63
|
-
| Check | Level |
|
|
64
|
-
|-------|-------|
|
|
65
|
-
| `pyproject.toml` present | **Error** |
|
|
66
|
-
| `src/` layout present | Warning |
|
|
67
|
-
| `tests/` directory present | Warning |
|
|
68
|
-
| `.github/workflows/` present | Warning |
|
|
69
|
-
| `README.md` present | Warning |
|
|
70
|
-
| `.gitignore` present | Warning |
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
# Validate the current directory
|
|
74
|
-
diamond validate
|
|
75
|
-
|
|
76
|
-
# Validate a specific project
|
|
77
|
-
diamond validate path/to/my-project
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## `diamond version`
|
|
83
|
-
|
|
84
|
-
Print the installed version.
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
diamond version
|
|
88
|
-
```
|
|
1
|
+
# CLI Reference
|
|
2
|
+
|
|
3
|
+
## `diamond scaffold`
|
|
4
|
+
|
|
5
|
+
Create a new project from a template.
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Usage: diamond scaffold [OPTIONS] PROJECT_NAME
|
|
9
|
+
|
|
10
|
+
Arguments:
|
|
11
|
+
PROJECT_NAME Name of the new project (kebab-case recommended)
|
|
12
|
+
|
|
13
|
+
Options:
|
|
14
|
+
-t, --template TEXT Template to use [default: minimal]
|
|
15
|
+
-o, --output-dir PATH Parent directory for the new project
|
|
16
|
+
--author TEXT Author name
|
|
17
|
+
--description TEXT Short project description
|
|
18
|
+
--python-version TEXT Minimum Python version (e.g. 3.11)
|
|
19
|
+
--dry-run Preview files without writing them
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Examples**
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Minimal project in the current directory
|
|
26
|
+
diamond scaffold my-lib
|
|
27
|
+
|
|
28
|
+
# Genesis preset with custom author
|
|
29
|
+
diamond scaffold my-physics-tool --template genesis --author "Ada Lovelace"
|
|
30
|
+
|
|
31
|
+
# Preview what would be created
|
|
32
|
+
diamond scaffold my-lib --dry-run
|
|
33
|
+
|
|
34
|
+
# Output to a specific directory
|
|
35
|
+
diamond scaffold my-lib --output-dir ~/projects
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## `diamond list-templates`
|
|
41
|
+
|
|
42
|
+
List all available templates with their descriptions.
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
diamond list-templates
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## `diamond validate`
|
|
51
|
+
|
|
52
|
+
Validate a project directory against diamond-setup best practices.
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Usage: diamond validate [PATH]
|
|
56
|
+
|
|
57
|
+
Arguments:
|
|
58
|
+
PATH Project directory to validate [default: current directory]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Checks performed:
|
|
62
|
+
|
|
63
|
+
| Check | Level |
|
|
64
|
+
|-------|-------|
|
|
65
|
+
| `pyproject.toml` present | **Error** |
|
|
66
|
+
| `src/` layout present | Warning |
|
|
67
|
+
| `tests/` directory present | Warning |
|
|
68
|
+
| `.github/workflows/` present | Warning |
|
|
69
|
+
| `README.md` present | Warning |
|
|
70
|
+
| `.gitignore` present | Warning |
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Validate the current directory
|
|
74
|
+
diamond validate
|
|
75
|
+
|
|
76
|
+
# Validate a specific project
|
|
77
|
+
diamond validate path/to/my-project
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## `diamond version`
|
|
83
|
+
|
|
84
|
+
Print the installed version.
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
diamond version
|
|
88
|
+
```
|