climate-dashboard 0.1.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.
- climate_dashboard-0.1.0/.github/workflows/ci.yml +48 -0
- climate_dashboard-0.1.0/.gitignore +22 -0
- climate_dashboard-0.1.0/.pre-commit-config.yaml +17 -0
- climate_dashboard-0.1.0/LICENSE +21 -0
- climate_dashboard-0.1.0/PKG-INFO +133 -0
- climate_dashboard-0.1.0/README.md +87 -0
- climate_dashboard-0.1.0/docs/cli.md +88 -0
- climate_dashboard-0.1.0/docs/index.md +37 -0
- climate_dashboard-0.1.0/docs/templates.md +111 -0
- climate_dashboard-0.1.0/mkdocs.yml +43 -0
- climate_dashboard-0.1.0/pyproject.toml +84 -0
- climate_dashboard-0.1.0/src/climate_dashboard/__init__.py +4 -0
- climate_dashboard-0.1.0/src/climate_dashboard/app.py +51 -0
- climate_dashboard-0.1.0/src/climate_dashboard/cli.py +42 -0
- climate_dashboard-0.1.0/src/climate_dashboard/core.py +31 -0
- climate_dashboard-0.1.0/src/climate_dashboard/entropy_table_bridge.py +33 -0
- climate_dashboard-0.1.0/tests/__init__.py +0 -0
- climate_dashboard-0.1.0/tests/test_cli.py +35 -0
- climate_dashboard-0.1.0/tests/test_core.py +45 -0
- climate_dashboard-0.1.0/uv.lock +2280 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, master]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
test:
|
|
10
|
+
name: Test (Python ${{ matrix.python-version }})
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
strategy:
|
|
13
|
+
fail-fast: false
|
|
14
|
+
matrix:
|
|
15
|
+
python-version: ["3.11", "3.12"]
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Install uv
|
|
21
|
+
uses: astral-sh/setup-uv@v5
|
|
22
|
+
with:
|
|
23
|
+
version: "latest"
|
|
24
|
+
|
|
25
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
26
|
+
run: uv python install ${{ matrix.python-version }}
|
|
27
|
+
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: uv sync --extra dev
|
|
30
|
+
|
|
31
|
+
- name: Lint (ruff)
|
|
32
|
+
run: uv run ruff check .
|
|
33
|
+
|
|
34
|
+
- name: Format check (ruff)
|
|
35
|
+
run: uv run ruff format --check .
|
|
36
|
+
|
|
37
|
+
- name: Run tests
|
|
38
|
+
run: uv run pytest
|
|
39
|
+
|
|
40
|
+
docs:
|
|
41
|
+
name: Build docs
|
|
42
|
+
runs-on: ubuntu-latest
|
|
43
|
+
steps:
|
|
44
|
+
- uses: actions/checkout@v4
|
|
45
|
+
- uses: astral-sh/setup-uv@v5
|
|
46
|
+
- run: uv python install 3.11
|
|
47
|
+
- run: uv sync --extra docs
|
|
48
|
+
- run: uv run mkdocs build --strict
|
|
@@ -0,0 +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
|
|
@@ -0,0 +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.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: climate-dashboard
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Interactive Climate Entropy Dashboard for the GenesisAeon stack – visualizes duality, modulation, UTAC thresholds, mandala resonance and sonification output.
|
|
5
|
+
Project-URL: Repository, https://github.com/GenesisAeon/climate-dashboard
|
|
6
|
+
Project-URL: Issues, https://github.com/GenesisAeon/climate-dashboard/issues
|
|
7
|
+
Author-email: GenesisAeon Team <team@genesisaeon.org>
|
|
8
|
+
License: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: climate,dashboard,entropy,genesisaeon,plotly,visualization
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Environment :: Web Environment
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Requires-Dist: dash>=2.17.0
|
|
21
|
+
Requires-Dist: numpy>=2.0.0
|
|
22
|
+
Requires-Dist: pandas>=2.2.0
|
|
23
|
+
Requires-Dist: plotly>=5.22.0
|
|
24
|
+
Requires-Dist: rich>=13.0.0
|
|
25
|
+
Requires-Dist: typer>=0.15.0
|
|
26
|
+
Provides-Extra: dev
|
|
27
|
+
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
|
|
28
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
29
|
+
Requires-Dist: ruff>=0.9; extra == 'dev'
|
|
30
|
+
Provides-Extra: docs
|
|
31
|
+
Requires-Dist: mkdocs-material>=9.6; extra == 'docs'
|
|
32
|
+
Requires-Dist: mkdocs>=1.6; extra == 'docs'
|
|
33
|
+
Requires-Dist: mkdocstrings[python]>=0.27; extra == 'docs'
|
|
34
|
+
Provides-Extra: stack
|
|
35
|
+
Requires-Dist: cosmic-moment>=0.1.0; extra == 'stack'
|
|
36
|
+
Requires-Dist: entropy-governance>=0.1.0; extra == 'stack'
|
|
37
|
+
Requires-Dist: entropy-table>=1.0.1; extra == 'stack'
|
|
38
|
+
Requires-Dist: fieldtheory>=0.1.0; extra == 'stack'
|
|
39
|
+
Requires-Dist: implosive-genesis>=0.4.0; extra == 'stack'
|
|
40
|
+
Requires-Dist: mandala-visualizer>=0.1.0; extra == 'stack'
|
|
41
|
+
Requires-Dist: medium-modulation>=0.1.0; extra == 'stack'
|
|
42
|
+
Requires-Dist: sigillin>=0.1.0; extra == 'stack'
|
|
43
|
+
Requires-Dist: sonification>=0.0.10; extra == 'stack'
|
|
44
|
+
Requires-Dist: utac-core>=0.1.0; extra == 'stack'
|
|
45
|
+
Description-Content-Type: text/markdown
|
|
46
|
+
|
|
47
|
+
# climate-dashboard
|
|
48
|
+
|
|
49
|
+
**Interactive Climate Entropy Dashboard** – visualizes the GenesisAeon stack in real-time: duality waves, UTAC thresholds, cosmic moments, mandala resonance and sonified output.
|
|
50
|
+
|
|
51
|
+
[](https://github.com/GenesisAeon/climate-dashboard/actions/workflows/ci.yml)
|
|
52
|
+
[](https://www.python.org)
|
|
53
|
+
[](LICENSE)
|
|
54
|
+
[](https://pypi.org/project/climate-dashboard/)
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Install
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pip install climate-dashboard
|
|
62
|
+
# or with full GenesisAeon stack bindings
|
|
63
|
+
pip install "climate-dashboard[stack]"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Usage
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Launch interactive Dash dashboard (default port 8050)
|
|
70
|
+
cdash run
|
|
71
|
+
|
|
72
|
+
# Custom port
|
|
73
|
+
cdash run --port 8080
|
|
74
|
+
|
|
75
|
+
# CLI summary of entropy data
|
|
76
|
+
cdash aggregate
|
|
77
|
+
|
|
78
|
+
# Custom time steps
|
|
79
|
+
cdash aggregate --steps 200
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## What you get
|
|
83
|
+
|
|
84
|
+
`cdash run` opens an interactive Plotly/Dash dashboard at `http://127.0.0.1:8050` displaying:
|
|
85
|
+
|
|
86
|
+
- **Duality wave** – entropy-governance placeholder (φ-modulated sine)
|
|
87
|
+
- **Modulated signal** – medium-modulation output (duality × 0.618)
|
|
88
|
+
- **UTAC threshold** – utac-core logarithmic boundary curve
|
|
89
|
+
|
|
90
|
+
## Project structure
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
climate-dashboard/
|
|
94
|
+
├── pyproject.toml
|
|
95
|
+
├── README.md
|
|
96
|
+
├── domains.yaml
|
|
97
|
+
├── src/
|
|
98
|
+
│ └── climate_dashboard/
|
|
99
|
+
│ ├── __init__.py
|
|
100
|
+
│ ├── core.py # Data aggregator
|
|
101
|
+
│ ├── app.py # Dash/Plotly web app
|
|
102
|
+
│ ├── cli.py # Typer CLI (cdash)
|
|
103
|
+
│ └── entropy_table_bridge.py # entropy-table integration
|
|
104
|
+
├── tests/
|
|
105
|
+
│ ├── test_core.py
|
|
106
|
+
│ └── test_cli.py
|
|
107
|
+
└── mkdocs.yml
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Stack integration
|
|
111
|
+
|
|
112
|
+
Install the optional `[stack]` extras to bind all GenesisAeon packages:
|
|
113
|
+
|
|
114
|
+
| Package | Role |
|
|
115
|
+
|---|---|
|
|
116
|
+
| `entropy-governance` | Duality wave source |
|
|
117
|
+
| `medium-modulation` | Signal modulation |
|
|
118
|
+
| `utac-core` | UTAC threshold curves |
|
|
119
|
+
| `mandala-visualizer` | Mandala resonance plots |
|
|
120
|
+
| `sonification` | Audio export layer |
|
|
121
|
+
| `entropy-table` | Domain metric registry |
|
|
122
|
+
| `cosmic-moment` | Cosmic event markers |
|
|
123
|
+
| `fieldtheory` | Unified field helpers |
|
|
124
|
+
| `sigillin` | Sigil generation |
|
|
125
|
+
| `implosive-genesis` | Genesis core events |
|
|
126
|
+
|
|
127
|
+
## DOI
|
|
128
|
+
|
|
129
|
+
DOI (after Zenodo release): 10.5281/zenodo.XXXXXXX
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
Built with [Dash](https://dash.plotly.com/) · [Plotly](https://plotly.com/python/) · [Typer](https://typer.tiangolo.com/) · [Rich](https://rich.readthedocs.io/)
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# climate-dashboard
|
|
2
|
+
|
|
3
|
+
**Interactive Climate Entropy Dashboard** – visualizes the GenesisAeon stack in real-time: duality waves, UTAC thresholds, cosmic moments, mandala resonance and sonified output.
|
|
4
|
+
|
|
5
|
+
[](https://github.com/GenesisAeon/climate-dashboard/actions/workflows/ci.yml)
|
|
6
|
+
[](https://www.python.org)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
[](https://pypi.org/project/climate-dashboard/)
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Install
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pip install climate-dashboard
|
|
16
|
+
# or with full GenesisAeon stack bindings
|
|
17
|
+
pip install "climate-dashboard[stack]"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Launch interactive Dash dashboard (default port 8050)
|
|
24
|
+
cdash run
|
|
25
|
+
|
|
26
|
+
# Custom port
|
|
27
|
+
cdash run --port 8080
|
|
28
|
+
|
|
29
|
+
# CLI summary of entropy data
|
|
30
|
+
cdash aggregate
|
|
31
|
+
|
|
32
|
+
# Custom time steps
|
|
33
|
+
cdash aggregate --steps 200
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## What you get
|
|
37
|
+
|
|
38
|
+
`cdash run` opens an interactive Plotly/Dash dashboard at `http://127.0.0.1:8050` displaying:
|
|
39
|
+
|
|
40
|
+
- **Duality wave** – entropy-governance placeholder (φ-modulated sine)
|
|
41
|
+
- **Modulated signal** – medium-modulation output (duality × 0.618)
|
|
42
|
+
- **UTAC threshold** – utac-core logarithmic boundary curve
|
|
43
|
+
|
|
44
|
+
## Project structure
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
climate-dashboard/
|
|
48
|
+
├── pyproject.toml
|
|
49
|
+
├── README.md
|
|
50
|
+
├── domains.yaml
|
|
51
|
+
├── src/
|
|
52
|
+
│ └── climate_dashboard/
|
|
53
|
+
│ ├── __init__.py
|
|
54
|
+
│ ├── core.py # Data aggregator
|
|
55
|
+
│ ├── app.py # Dash/Plotly web app
|
|
56
|
+
│ ├── cli.py # Typer CLI (cdash)
|
|
57
|
+
│ └── entropy_table_bridge.py # entropy-table integration
|
|
58
|
+
├── tests/
|
|
59
|
+
│ ├── test_core.py
|
|
60
|
+
│ └── test_cli.py
|
|
61
|
+
└── mkdocs.yml
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Stack integration
|
|
65
|
+
|
|
66
|
+
Install the optional `[stack]` extras to bind all GenesisAeon packages:
|
|
67
|
+
|
|
68
|
+
| Package | Role |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `entropy-governance` | Duality wave source |
|
|
71
|
+
| `medium-modulation` | Signal modulation |
|
|
72
|
+
| `utac-core` | UTAC threshold curves |
|
|
73
|
+
| `mandala-visualizer` | Mandala resonance plots |
|
|
74
|
+
| `sonification` | Audio export layer |
|
|
75
|
+
| `entropy-table` | Domain metric registry |
|
|
76
|
+
| `cosmic-moment` | Cosmic event markers |
|
|
77
|
+
| `fieldtheory` | Unified field helpers |
|
|
78
|
+
| `sigillin` | Sigil generation |
|
|
79
|
+
| `implosive-genesis` | Genesis core events |
|
|
80
|
+
|
|
81
|
+
## DOI
|
|
82
|
+
|
|
83
|
+
DOI (after Zenodo release): 10.5281/zenodo.XXXXXXX
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
Built with [Dash](https://dash.plotly.com/) · [Plotly](https://plotly.com/python/) · [Typer](https://typer.tiangolo.com/) · [Rich](https://rich.readthedocs.io/)
|
|
@@ -0,0 +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
|
+
```
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Diamond Setup
|
|
2
|
+
|
|
3
|
+
**Universal Python project scaffold** — generate professional, CI-ready project skeletons in seconds.
|
|
4
|
+
|
|
5
|
+
No cookiecutter, no Jinja2, no magic. Just a clean CLI, sensible templates, and a validator that keeps your projects healthy.
|
|
6
|
+
|
|
7
|
+
## Quickstart
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pip install diamond-setup
|
|
11
|
+
# or with uv:
|
|
12
|
+
uv tool install diamond-setup
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
diamond scaffold my-new-tool
|
|
17
|
+
cd my-new-tool && uv sync --dev && uv run pytest
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Why Diamond Setup?
|
|
21
|
+
|
|
22
|
+
| Feature | diamond-setup | cookiecutter | copier |
|
|
23
|
+
|---------|:---:|:---:|:---:|
|
|
24
|
+
| Zero config needed | ✅ | ❌ | ❌ |
|
|
25
|
+
| Built-in validator | ✅ | ❌ | ❌ |
|
|
26
|
+
| Pure Python templates | ✅ | ❌ | ❌ |
|
|
27
|
+
| `--dry-run` support | ✅ | ❌ | ✅ |
|
|
28
|
+
| Extensible presets | ✅ | ✅ | ✅ |
|
|
29
|
+
|
|
30
|
+
## Commands
|
|
31
|
+
|
|
32
|
+
| Command | Description |
|
|
33
|
+
|---------|-------------|
|
|
34
|
+
| `diamond scaffold <name>` | Create a new project |
|
|
35
|
+
| `diamond list-templates` | Show available templates |
|
|
36
|
+
| `diamond validate [path]` | Check a project's health |
|
|
37
|
+
| `diamond version` | Show version |
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# Templates
|
|
2
|
+
|
|
3
|
+
Diamond Setup ships two built-in templates. Adding your own is a single Python file.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## `minimal`
|
|
8
|
+
|
|
9
|
+
**The default.** A clean, modern Python project with everything you need and nothing you don't.
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
diamond scaffold my-lib
|
|
13
|
+
diamond scaffold my-lib --template minimal
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Files generated
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
my-lib/
|
|
20
|
+
├── src/
|
|
21
|
+
│ └── my_lib/
|
|
22
|
+
│ └── __init__.py
|
|
23
|
+
├── tests/
|
|
24
|
+
│ ├── __init__.py
|
|
25
|
+
│ └── test_main.py
|
|
26
|
+
├── .github/
|
|
27
|
+
│ └── workflows/
|
|
28
|
+
│ └── ci.yml
|
|
29
|
+
├── pyproject.toml
|
|
30
|
+
├── README.md
|
|
31
|
+
├── .gitignore
|
|
32
|
+
└── .pre-commit-config.yaml
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Variables
|
|
36
|
+
|
|
37
|
+
| Variable | Default | Description |
|
|
38
|
+
|----------|---------|-------------|
|
|
39
|
+
| `name` | *(required)* | Project name |
|
|
40
|
+
| `description` | `"A Python project"` | Short description |
|
|
41
|
+
| `author` | `"Your Name"` | Author name |
|
|
42
|
+
| `python_version` | `"3.11"` | Minimum Python version |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## `genesis`
|
|
47
|
+
|
|
48
|
+
A superset of `minimal` — adds a `domains.yaml` for domain/metric configuration and an `entropy-table` YAML bridge module.
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
diamond scaffold my-physics-tool --template genesis
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Extra files
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
my-physics-tool/
|
|
58
|
+
├── domains.yaml ← domain/metric configuration
|
|
59
|
+
├── config/
|
|
60
|
+
│ └── entropy.yaml ← entropy-table bridge config
|
|
61
|
+
└── src/
|
|
62
|
+
└── my_physics_tool/
|
|
63
|
+
├── __init__.py
|
|
64
|
+
└── bridge.py ← entropy-table export function
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Extra variables
|
|
68
|
+
|
|
69
|
+
| Variable | Default | Description |
|
|
70
|
+
|----------|---------|-------------|
|
|
71
|
+
| `metrics` | `"crep"` | Default metrics identifier |
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Adding a Custom Template
|
|
76
|
+
|
|
77
|
+
1. Create `src/diamond_setup/templates/my_template.py`:
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
TEMPLATE = {
|
|
81
|
+
"name": "my_template",
|
|
82
|
+
"description": "My custom template",
|
|
83
|
+
"variables": ["name", "description", "author", "python_version"],
|
|
84
|
+
"defaults": {
|
|
85
|
+
"description": "My project",
|
|
86
|
+
"author": "Your Name",
|
|
87
|
+
"python_version": "3.11",
|
|
88
|
+
},
|
|
89
|
+
"files": {
|
|
90
|
+
"README.md": "# ${name}\n\n${description}\n",
|
|
91
|
+
"pyproject.toml": "...",
|
|
92
|
+
# keys are relative paths, values are template strings
|
|
93
|
+
# use ${variable} for substitution
|
|
94
|
+
# use $$ for a literal dollar sign
|
|
95
|
+
},
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
2. Register it in `src/diamond_setup/templates/__init__.py`:
|
|
100
|
+
|
|
101
|
+
```python
|
|
102
|
+
from .my_template import TEMPLATE as MY_TEMPLATE
|
|
103
|
+
|
|
104
|
+
REGISTRY: dict[str, dict] = {
|
|
105
|
+
"minimal": MINIMAL_TEMPLATE,
|
|
106
|
+
"genesis": GENESIS_TEMPLATE,
|
|
107
|
+
"my_template": MY_TEMPLATE, # ← add this
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
That's it. `diamond list-templates` will immediately show it.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
site_name: Diamond Setup
|
|
2
|
+
site_description: Universal Python project scaffold — generate professional project skeletons in seconds
|
|
3
|
+
site_author: GenesisAeon
|
|
4
|
+
repo_url: https://github.com/GenesisAeon/diamond-setup
|
|
5
|
+
repo_name: GenesisAeon/diamond-setup
|
|
6
|
+
|
|
7
|
+
theme:
|
|
8
|
+
name: material
|
|
9
|
+
palette:
|
|
10
|
+
- media: "(prefers-color-scheme: light)"
|
|
11
|
+
scheme: default
|
|
12
|
+
primary: indigo
|
|
13
|
+
accent: indigo
|
|
14
|
+
toggle:
|
|
15
|
+
icon: material/brightness-7
|
|
16
|
+
name: Switch to dark mode
|
|
17
|
+
- media: "(prefers-color-scheme: dark)"
|
|
18
|
+
scheme: slate
|
|
19
|
+
primary: indigo
|
|
20
|
+
accent: indigo
|
|
21
|
+
toggle:
|
|
22
|
+
icon: material/brightness-4
|
|
23
|
+
name: Switch to light mode
|
|
24
|
+
features:
|
|
25
|
+
- navigation.tabs
|
|
26
|
+
- navigation.sections
|
|
27
|
+
- navigation.top
|
|
28
|
+
- content.code.annotate
|
|
29
|
+
- content.code.copy
|
|
30
|
+
- search.highlight
|
|
31
|
+
|
|
32
|
+
markdown_extensions:
|
|
33
|
+
- admonition
|
|
34
|
+
- pymdownx.highlight:
|
|
35
|
+
anchor_linenums: true
|
|
36
|
+
- pymdownx.superfences
|
|
37
|
+
- pymdownx.tabbed:
|
|
38
|
+
alternate_style: true
|
|
39
|
+
|
|
40
|
+
nav:
|
|
41
|
+
- Home: index.md
|
|
42
|
+
- CLI Reference: cli.md
|
|
43
|
+
- Templates: templates.md
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "climate-dashboard"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "Interactive Climate Entropy Dashboard for the GenesisAeon stack – visualizes duality, modulation, UTAC thresholds, mandala resonance and sonification output."
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.11"
|
|
7
|
+
license = { text = "MIT" }
|
|
8
|
+
authors = [{ name = "GenesisAeon Team", email = "team@genesisaeon.org" }]
|
|
9
|
+
keywords = ["climate", "entropy", "dashboard", "visualization", "plotly", "genesisaeon"]
|
|
10
|
+
classifiers = [
|
|
11
|
+
"Development Status :: 3 - Alpha",
|
|
12
|
+
"Environment :: Web Environment",
|
|
13
|
+
"Intended Audience :: Science/Research",
|
|
14
|
+
"License :: OSI Approved :: MIT License",
|
|
15
|
+
"Programming Language :: Python :: 3",
|
|
16
|
+
"Programming Language :: Python :: 3.11",
|
|
17
|
+
"Programming Language :: Python :: 3.12",
|
|
18
|
+
"Topic :: Scientific/Engineering :: Visualization",
|
|
19
|
+
]
|
|
20
|
+
dependencies = [
|
|
21
|
+
"dash>=2.17.0",
|
|
22
|
+
"plotly>=5.22.0",
|
|
23
|
+
"pandas>=2.2.0",
|
|
24
|
+
"numpy>=2.0.0",
|
|
25
|
+
"rich>=13.0.0",
|
|
26
|
+
"typer>=0.15.0",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
[project.optional-dependencies]
|
|
30
|
+
stack = [
|
|
31
|
+
"sonification>=0.0.10",
|
|
32
|
+
"mandala-visualizer>=0.1.0",
|
|
33
|
+
"utac-core>=0.1.0",
|
|
34
|
+
"sigillin>=0.1.0",
|
|
35
|
+
"fieldtheory>=0.1.0",
|
|
36
|
+
"cosmic-moment>=0.1.0",
|
|
37
|
+
"medium-modulation>=0.1.0",
|
|
38
|
+
"entropy-governance>=0.1.0",
|
|
39
|
+
"entropy-table>=1.0.1",
|
|
40
|
+
"implosive-genesis>=0.4.0",
|
|
41
|
+
]
|
|
42
|
+
dev = [
|
|
43
|
+
"pytest>=8.0",
|
|
44
|
+
"pytest-cov>=5.0",
|
|
45
|
+
"ruff>=0.9",
|
|
46
|
+
]
|
|
47
|
+
docs = [
|
|
48
|
+
"mkdocs>=1.6",
|
|
49
|
+
"mkdocstrings[python]>=0.27",
|
|
50
|
+
"mkdocs-material>=9.6",
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
[project.scripts]
|
|
54
|
+
cdash = "climate_dashboard.cli:app"
|
|
55
|
+
|
|
56
|
+
[project.urls]
|
|
57
|
+
Repository = "https://github.com/GenesisAeon/climate-dashboard"
|
|
58
|
+
Issues = "https://github.com/GenesisAeon/climate-dashboard/issues"
|
|
59
|
+
|
|
60
|
+
[build-system]
|
|
61
|
+
requires = ["hatchling"]
|
|
62
|
+
build-backend = "hatchling.build"
|
|
63
|
+
|
|
64
|
+
[tool.hatch.build.targets.wheel]
|
|
65
|
+
packages = ["src/climate_dashboard"]
|
|
66
|
+
|
|
67
|
+
[tool.ruff]
|
|
68
|
+
line-length = 88
|
|
69
|
+
target-version = "py311"
|
|
70
|
+
|
|
71
|
+
[tool.ruff.lint]
|
|
72
|
+
select = ["E", "F", "B", "I", "W", "UP", "C4", "SIM"]
|
|
73
|
+
ignore = ["B008"]
|
|
74
|
+
|
|
75
|
+
[tool.ruff.lint.per-file-ignores]
|
|
76
|
+
"tests/**" = ["S101"]
|
|
77
|
+
|
|
78
|
+
[tool.pytest.ini_options]
|
|
79
|
+
testpaths = ["tests"]
|
|
80
|
+
addopts = "--cov=climate_dashboard --cov-report=term-missing -v"
|
|
81
|
+
|
|
82
|
+
[tool.coverage.run]
|
|
83
|
+
source = ["src"]
|
|
84
|
+
omit = ["tests/*"]
|