rhiza 0.8.6__tar.gz → 0.8.7__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.
- rhiza-0.8.7/.github/Makefile.gh +34 -0
- rhiza-0.8.7/.github/agents/analyser.md +46 -0
- rhiza-0.8.7/.github/agents/summarise.md +19 -0
- rhiza-0.8.7/.github/copilot-instructions.md +48 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.github/workflows/rhiza_book.yml +1 -4
- {rhiza-0.8.6 → rhiza-0.8.7}/.github/workflows/rhiza_ci.yml +5 -13
- {rhiza-0.8.6 → rhiza-0.8.7}/.github/workflows/rhiza_deptry.yml +1 -1
- {rhiza-0.8.6 → rhiza-0.8.7}/.github/workflows/rhiza_marimo.yml +1 -1
- {rhiza-0.8.6 → rhiza-0.8.7}/.github/workflows/rhiza_pre-commit.yml +4 -2
- {rhiza-0.8.6 → rhiza-0.8.7}/.github/workflows/rhiza_release.yml +2 -2
- {rhiza-0.8.6 → rhiza-0.8.7}/.github/workflows/rhiza_validate.yml +1 -1
- {rhiza-0.8.6 → rhiza-0.8.7}/.gitignore +1 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.pre-commit-config.yaml +1 -1
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/.cfg.toml +6 -1
- rhiza-0.8.7/.rhiza/.env +14 -0
- rhiza-0.8.7/.rhiza/Makefile.rhiza +38 -0
- rhiza-0.8.7/.rhiza/agentic/Makefile.agentic +45 -0
- rhiza-0.8.7/.rhiza/customisations/Makefile.customisations +29 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/history +13 -5
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/requirements/tests.txt +5 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/template.yml +4 -1
- {rhiza-0.8.6 → rhiza-0.8.7}/Makefile +44 -77
- {rhiza-0.8.6 → rhiza-0.8.7}/PKG-INFO +1 -1
- {rhiza-0.8.6 → rhiza-0.8.7}/book/README.md +1 -1
- {rhiza-0.8.6 → rhiza-0.8.7}/pyproject.toml +1 -1
- {rhiza-0.8.6 → rhiza-0.8.7}/renovate.json +7 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/models.py +25 -2
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_commands/test_migrate.py +45 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_models.py +61 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/conftest.py +0 -2
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/test_git_repo_fixture.py +1 -2
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/test_makefile.py +97 -9
- rhiza-0.8.7/tests/test_rhiza/test_makefile_gh.py +116 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/test_notebooks.py +4 -4
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/test_readme.py +54 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/test_requirements_folder.py +0 -15
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/test_structure.py +0 -2
- {rhiza-0.8.6 → rhiza-0.8.7}/uv.lock +4 -4
- rhiza-0.8.6/.rhiza/scripts/bump.sh +0 -243
- rhiza-0.8.6/.rhiza/scripts/install-dev-deps.sh +0 -25
- rhiza-0.8.6/tests/test_rhiza/test_bump_script.py +0 -170
- {rhiza-0.8.6 → rhiza-0.8.7}/.editorconfig +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.github/ISSUE_TEMPLATE/assign_ui_implementation.md +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.github/workflows/rhiza_codeql.yml +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.github/workflows/rhiza_sync.yml +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.python-version +0 -0
- {rhiza-0.8.6/.rhiza/scripts/customisations → rhiza-0.8.7/.rhiza/customisations/scripts}/build-extras.sh +0 -0
- {rhiza-0.8.6/.rhiza/scripts/customisations → rhiza-0.8.7/.rhiza/customisations/scripts}/post-release.sh +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/docs/CONFIG.md +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/docs/TOKEN_SETUP.md +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/requirements/README.md +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/requirements/docs.txt +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/requirements/marimo.txt +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/requirements/tools.txt +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/scripts/book.sh +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/scripts/generate-coverage-badge.sh +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/scripts/marimushka.sh +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/scripts/release.sh +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/scripts/update-readme-help.sh +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza/utils/version_matrix.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/.rhiza.env +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/CLI.md +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/CODE_OF_CONDUCT.md +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/CONTRIBUTING.md +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/GETTING_STARTED.md +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/LICENSE +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/README.md +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/USAGE.md +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/book/Makefile.book +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/book/marimo/.gitkeep +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/book/marimo/README.md +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/book/marimo/rhiza.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/book/minibook-templates/custom.html.jinja2 +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/book/pdoc-templates/module.html.jinja2 +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/presentation/Makefile.presentation +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/presentation/README.md +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/pytest.ini +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/ruff.toml +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/__init__.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/__main__.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/_templates/basic/__init__.py.jinja2 +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/_templates/basic/main.py.jinja2 +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/_templates/basic/pyproject.toml.jinja2 +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/cli.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/commands/__init__.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/commands/init.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/commands/materialize.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/commands/migrate.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/commands/uninstall.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/commands/validate.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/commands/welcome.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/src/rhiza/subprocess_utils.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/Makefile.tests +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_cli_commands.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_commands/test_init.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_commands/test_materialize.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_commands/test_uninstall.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_commands/test_validate.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_package.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/README.md +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/benchmarks/.gitignore +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/benchmarks/README.md +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/benchmarks/analyze_benchmarks.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/test_coverage_badge.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/test_docstrings.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/test_marimushka_script.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/test_release_script.py +0 -0
- {rhiza-0.8.6 → rhiza-0.8.7}/tests/test_rhiza/test_updatereadme_script.py +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
## Makefile.gh - github repo maintenance and helpers
|
|
2
|
+
# This file is included by the main Makefile
|
|
3
|
+
|
|
4
|
+
# Declare phony targets
|
|
5
|
+
.PHONY: gh-install view-prs view-issues failed-workflows whoami print-logo
|
|
6
|
+
|
|
7
|
+
##@ GitHub Helpers
|
|
8
|
+
gh-install: ## check for gh cli existence and install extensions
|
|
9
|
+
@if ! command -v gh >/dev/null 2>&1; then \
|
|
10
|
+
printf "${YELLOW}[WARN] gh cli not found.${RESET}\n"; \
|
|
11
|
+
printf "${BLUE}[INFO] Please install it from: https://github.com/cli/cli?tab=readme-ov-file#installation${RESET}\n"; \
|
|
12
|
+
else \
|
|
13
|
+
printf "${GREEN}[INFO] gh cli is installed.${RESET}\n"; \
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
view-prs: gh-install ## list open pull requests
|
|
17
|
+
@printf "${BLUE}[INFO] Open Pull Requests:${RESET}\n"
|
|
18
|
+
@gh pr list --json number,title,author,headRefName,updatedAt --template \
|
|
19
|
+
'{{tablerow (printf "NUM" | color "bold") (printf "TITLE" | color "bold") (printf "AUTHOR" | color "bold") (printf "BRANCH" | color "bold") (printf "UPDATED" | color "bold")}}{{range .}}{{tablerow (printf "#%v" .number | color "green") .title (.author.login | color "cyan") (.headRefName | color "yellow") (timeago .updatedAt | color "white")}}{{end}}'
|
|
20
|
+
|
|
21
|
+
view-issues: gh-install ## list open issues
|
|
22
|
+
@printf "${BLUE}[INFO] Open Issues:${RESET}\n"
|
|
23
|
+
@gh issue list --json number,title,author,labels,updatedAt --template \
|
|
24
|
+
'{{tablerow (printf "NUM" | color "bold") (printf "TITLE" | color "bold") (printf "AUTHOR" | color "bold") (printf "LABELS" | color "bold") (printf "UPDATED" | color "bold")}}{{range .}}{{tablerow (printf "#%v" .number | color "green") .title (.author.login | color "cyan") (pluck "name" .labels | join ", " | color "yellow") (timeago .updatedAt | color "white")}}{{end}}'
|
|
25
|
+
|
|
26
|
+
failed-workflows: gh-install ## list recent failing workflow runs
|
|
27
|
+
@printf "${BLUE}[INFO] Recent Failing Workflow Runs:${RESET}\n"
|
|
28
|
+
@gh run list --limit 10 --status failure --json conclusion,name,headBranch,event,createdAt --template \
|
|
29
|
+
'{{tablerow (printf "STATUS" | color "bold") (printf "NAME" | color "bold") (printf "BRANCH" | color "bold") (printf "EVENT" | color "bold") (printf "TIME" | color "bold")}}{{range .}}{{tablerow (printf "%s" .conclusion | color "red") .name (.headBranch | color "cyan") (.event | color "yellow") (timeago .createdAt | color "white")}}{{end}}'
|
|
30
|
+
|
|
31
|
+
whoami: gh-install ## check github auth status
|
|
32
|
+
@printf "${BLUE}[INFO] GitHub Authentication Status:${RESET}\n"
|
|
33
|
+
@gh auth status --hostname github.com --json hosts --template \
|
|
34
|
+
'{{range $$host, $$accounts := .hosts}}{{range $$accounts}}{{if .active}} {{printf "✓" | color "green"}} Logged in to {{$$host}} account {{.login | color "bold"}} ({{.tokenSource}}){{"\n"}} Active account: {{printf "true" | color "green"}}{{"\n"}} Git operations protocol: {{.gitProtocol | color "yellow"}}{{"\n"}} Token scopes: {{.scopes | color "yellow"}}{{"\n"}}{{end}}{{end}}{{end}}'
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: analyser
|
|
3
|
+
description: Ongoing technical journal for repository analysis
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are a senior software architect performing a critical, journal-style review of this repository.
|
|
7
|
+
|
|
8
|
+
Your task:
|
|
9
|
+
- Analyze the repository as it exists at the time of execution.
|
|
10
|
+
- Identify concrete strengths, weaknesses, risks, and notable design decisions.
|
|
11
|
+
- Prefer specific file and module references over general statements.
|
|
12
|
+
- Be concise, factual, and critical. Avoid marketing language.
|
|
13
|
+
|
|
14
|
+
Journal mode:
|
|
15
|
+
- Treat this as an ongoing analysis.
|
|
16
|
+
- DO NOT rewrite or summarize existing content.
|
|
17
|
+
- APPEND a new dated entry to the end of the file.
|
|
18
|
+
- Each run should add new observations or refine previous ones if warranted.
|
|
19
|
+
|
|
20
|
+
Output:
|
|
21
|
+
- Write exclusively to `REPOSITORY_ANALYSIS.md`.
|
|
22
|
+
- Append a new section with the following structure:
|
|
23
|
+
|
|
24
|
+
## YYYY-MM-DD — Analysis Entry
|
|
25
|
+
|
|
26
|
+
### Summary
|
|
27
|
+
Short high-level assessment of the repository in its current state.
|
|
28
|
+
|
|
29
|
+
### Strengths
|
|
30
|
+
Bullet points with concrete evidence.
|
|
31
|
+
|
|
32
|
+
### Weaknesses
|
|
33
|
+
Bullet points with concrete evidence.
|
|
34
|
+
|
|
35
|
+
### Risks / Technical Debt
|
|
36
|
+
Items that could affect maintainability, correctness, or scalability.
|
|
37
|
+
|
|
38
|
+
### Score
|
|
39
|
+
Give an overall score between **1 and 10**, where:
|
|
40
|
+
- 9–10: exemplary, production-grade, well-maintained
|
|
41
|
+
- 7–8: solid, minor issues
|
|
42
|
+
- 5–6: mixed quality, notable concerns
|
|
43
|
+
- 3–4: fragile or poorly structured
|
|
44
|
+
- 1–2: critically deficient
|
|
45
|
+
|
|
46
|
+
Be honest. If information is missing or unclear, state that explicitly.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: summarise
|
|
3
|
+
description: Agent for summarizing changes since the last release/tag
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are a software development assistant tasked with summarizing repository changes since the most recent release or tag.
|
|
7
|
+
|
|
8
|
+
Your task:
|
|
9
|
+
- Identify the most recent git tag or release in the repository.
|
|
10
|
+
- Retrieve all commits made since that tag/release.
|
|
11
|
+
- Provide a concise summary of the changes, including key features, bug fixes, and any notable modifications.
|
|
12
|
+
- Focus on factual, technical details from the commit messages and changes.
|
|
13
|
+
|
|
14
|
+
Output:
|
|
15
|
+
- Display the summary directly in the terminal or output.
|
|
16
|
+
- Structure the summary with sections like: Recent Tag/Release, Commits Summary, Key Changes.
|
|
17
|
+
- Be concise and avoid unnecessary details.
|
|
18
|
+
|
|
19
|
+
Use the 'shell' tool to execute git commands as needed (e.g., git describe --tags, git log --oneline since the tag).
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Rhiza Copilot Instructions
|
|
2
|
+
|
|
3
|
+
You are working in a project that utilizes the `rhiza` framework. Rhiza is a collection of reusable
|
|
4
|
+
configuration templates and tooling designed to standardize and streamline modern Python development.
|
|
5
|
+
|
|
6
|
+
As a Rhiza-based project, this workspace adheres to specific conventions for structure, dependency management, and automation.
|
|
7
|
+
|
|
8
|
+
## Development Environment
|
|
9
|
+
|
|
10
|
+
The project uses `make` and `uv` for development tasks.
|
|
11
|
+
|
|
12
|
+
- **Install Dependencies**: `make install` (installs `uv`, creates `.venv`, installs dependencies)
|
|
13
|
+
- **Run Tests**: `make test` (runs `pytest` with coverage)
|
|
14
|
+
- **Format Code**: `make fmt` (runs `ruff format` and `ruff check --fix`)
|
|
15
|
+
- **Check Dependencies**: `make deptry` (runs `deptry` to check for missing/unused dependencies)
|
|
16
|
+
- **Marimo Notebooks**: `make marimo` (starts the Marimo server)
|
|
17
|
+
- **Build Documentation**: `make book` (builds the documentation book)
|
|
18
|
+
|
|
19
|
+
## Project Structure
|
|
20
|
+
|
|
21
|
+
- `src/`: Source code
|
|
22
|
+
- `tests/`: Tests (pytest)
|
|
23
|
+
- `assets/`: Static assets
|
|
24
|
+
- `book/`: Documentation source
|
|
25
|
+
- `docker/`: Docker configuration
|
|
26
|
+
- `presentation/`: Presentation slides
|
|
27
|
+
- `.rhiza/`: Rhiza-specific scripts and configurations
|
|
28
|
+
|
|
29
|
+
## Coding Standards
|
|
30
|
+
|
|
31
|
+
- **Style**: Follow PEP 8. Use `make fmt` to enforce style.
|
|
32
|
+
- **Testing**: Write tests in `tests/` using `pytest`. Ensure high coverage.
|
|
33
|
+
- **Documentation**: Document code using docstrings.
|
|
34
|
+
- **Dependencies**: Manage dependencies in `pyproject.toml`. Use `uv add` to add dependencies.
|
|
35
|
+
|
|
36
|
+
## Workflow
|
|
37
|
+
|
|
38
|
+
1. **Setup**: Run `make install` to set up the environment.
|
|
39
|
+
2. **Develop**: Write code in `src/` and tests in `tests/`.
|
|
40
|
+
3. **Test**: Run `make test` to verify changes.
|
|
41
|
+
4. **Format**: Run `make fmt` before committing.
|
|
42
|
+
5. **Verify**: Run `make deptry` to check dependencies.
|
|
43
|
+
|
|
44
|
+
## Key Files
|
|
45
|
+
|
|
46
|
+
- `Makefile`: Main entry point for tasks.
|
|
47
|
+
- `pyproject.toml`: Project configuration and dependencies.
|
|
48
|
+
- `.devcontainer/bootstrap.sh`: Bootstrap script for dev containers.
|
|
@@ -43,7 +43,7 @@ jobs:
|
|
|
43
43
|
- name: Install uv
|
|
44
44
|
uses: astral-sh/setup-uv@v7
|
|
45
45
|
with:
|
|
46
|
-
version: "0.9.
|
|
46
|
+
version: "0.9.24"
|
|
47
47
|
|
|
48
48
|
- name: "Sync the virtual environment for ${{ github.repository }}"
|
|
49
49
|
shell: bash
|
|
@@ -52,9 +52,6 @@ jobs:
|
|
|
52
52
|
# will just use .python-version?
|
|
53
53
|
uv sync --all-extras --all-groups --frozen
|
|
54
54
|
|
|
55
|
-
- name: Install dev dependencies
|
|
56
|
-
run: bash .rhiza/scripts/install-dev-deps.sh
|
|
57
|
-
|
|
58
55
|
- name: "Make the book"
|
|
59
56
|
run: |
|
|
60
57
|
make book
|
|
@@ -29,7 +29,7 @@ jobs:
|
|
|
29
29
|
- name: Install uv
|
|
30
30
|
uses: astral-sh/setup-uv@v7
|
|
31
31
|
with:
|
|
32
|
-
version: "0.9.
|
|
32
|
+
version: "0.9.24"
|
|
33
33
|
|
|
34
34
|
- id: versions
|
|
35
35
|
run: |
|
|
@@ -58,17 +58,9 @@ jobs:
|
|
|
58
58
|
- name: Install uv
|
|
59
59
|
uses: astral-sh/setup-uv@v7
|
|
60
60
|
with:
|
|
61
|
-
version: "0.9.
|
|
62
|
-
|
|
63
|
-
- name: "Sync the virtual environment for ${{ github.repository }}"
|
|
64
|
-
shell: bash
|
|
65
|
-
run: |
|
|
66
|
-
export UV_EXTRA_INDEX_URL="${{ secrets.uv-extra-index-url }}"
|
|
67
|
-
uv venv --python ${{ matrix.python-version }}
|
|
68
|
-
uv sync --all-extras --all-groups --frozen
|
|
69
|
-
|
|
70
|
-
- name: Install dev dependencies
|
|
71
|
-
run: bash .rhiza/scripts/install-dev-deps.sh
|
|
61
|
+
version: "0.9.24"
|
|
62
|
+
python-version: ${{ matrix.python-version }}
|
|
72
63
|
|
|
73
64
|
- name: Run tests
|
|
74
|
-
run:
|
|
65
|
+
run: |
|
|
66
|
+
make test
|
|
@@ -111,7 +111,7 @@ jobs:
|
|
|
111
111
|
- name: Install uv
|
|
112
112
|
uses: astral-sh/setup-uv@v7
|
|
113
113
|
with:
|
|
114
|
-
version: "0.9.
|
|
114
|
+
version: "0.9.24"
|
|
115
115
|
|
|
116
116
|
- name: "Sync the virtual environment for ${{ github.repository }}"
|
|
117
117
|
shell: bash
|
|
@@ -322,7 +322,7 @@ jobs:
|
|
|
322
322
|
- name: Install uv
|
|
323
323
|
uses: astral-sh/setup-uv@v7
|
|
324
324
|
with:
|
|
325
|
-
version: "0.9.
|
|
325
|
+
version: "0.9.24"
|
|
326
326
|
|
|
327
327
|
- name: "Sync the virtual environment for ${{ github.repository }}"
|
|
328
328
|
shell: bash
|
|
@@ -15,7 +15,7 @@ jobs:
|
|
|
15
15
|
# don't run this in rhiza itself. Rhiza has no template.yml file.
|
|
16
16
|
if: ${{ github.repository != 'jebel-quant/rhiza' }}
|
|
17
17
|
container:
|
|
18
|
-
image: ghcr.io/astral-sh/uv:0.9.
|
|
18
|
+
image: ghcr.io/astral-sh/uv:0.9.24-python3.12-trixie
|
|
19
19
|
|
|
20
20
|
steps:
|
|
21
21
|
- name: Checkout repository
|
|
@@ -11,7 +11,7 @@ sign_tags = false
|
|
|
11
11
|
tag_name = "v{new_version}"
|
|
12
12
|
tag_message = "Bump version: {current_version} → {new_version}"
|
|
13
13
|
allow_dirty = false
|
|
14
|
-
commit =
|
|
14
|
+
commit = true
|
|
15
15
|
message = "Chore: bump version {current_version} → {new_version}"
|
|
16
16
|
commit_args = ""
|
|
17
17
|
|
|
@@ -28,4 +28,9 @@ values = [
|
|
|
28
28
|
[[tool.bumpversion.files]]
|
|
29
29
|
filename = "pyproject.toml"
|
|
30
30
|
search = 'version = "{current_version}"'
|
|
31
|
+
replace = 'version = "{new_version}"'
|
|
32
|
+
|
|
33
|
+
[[tool.bumpversion.files]]
|
|
34
|
+
filename = "uv.lock"
|
|
35
|
+
search = 'version = "{current_version}"'
|
|
31
36
|
replace = 'version = "{new_version}"'
|
rhiza-0.8.7/.rhiza/.env
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
MARIMO_FOLDER=book/marimo
|
|
2
|
+
SOURCE_FOLDER=src
|
|
3
|
+
SCRIPTS_FOLDER=.rhiza/scripts
|
|
4
|
+
CUSTOM_SCRIPTS_FOLDER=.rhiza/customisations/scripts
|
|
5
|
+
|
|
6
|
+
# Book-specific variables
|
|
7
|
+
BOOK_TITLE=Project Documentation
|
|
8
|
+
BOOK_SUBTITLE=Generated by minibook
|
|
9
|
+
PDOC_TEMPLATE_DIR=book/pdoc-templates
|
|
10
|
+
BOOK_TEMPLATE=book/minibook-templates/custom.html.jinja2
|
|
11
|
+
DOCFORMAT=google
|
|
12
|
+
|
|
13
|
+
# Agentic-specific variables
|
|
14
|
+
DEFAULT_AI_MODEL=gpt-4.1
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
## Makefile.rhiza - rhiza actions
|
|
2
|
+
# This file is included by the main Makefile
|
|
3
|
+
|
|
4
|
+
# RHIZA_LOGO definition
|
|
5
|
+
define RHIZA_LOGO
|
|
6
|
+
____ _ _
|
|
7
|
+
| _ \| |__ (_)______ _
|
|
8
|
+
| |_) | '_ \| |_ / _\`|
|
|
9
|
+
| _ <| | | | |/ / (_| |
|
|
10
|
+
|_| \_\_| |_|_/___\__,_|
|
|
11
|
+
|
|
12
|
+
endef
|
|
13
|
+
export RHIZA_LOGO
|
|
14
|
+
|
|
15
|
+
# Declare phony targets
|
|
16
|
+
.PHONY: print-logo sync validate
|
|
17
|
+
|
|
18
|
+
##@ Rhiza Workflows
|
|
19
|
+
|
|
20
|
+
print-logo:
|
|
21
|
+
@printf "${BLUE}$$RHIZA_LOGO${RESET}\n"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
sync: ## sync with template repository as defined in .rhiza/template.yml
|
|
25
|
+
@if git remote get-url origin 2>/dev/null | grep -iqE 'jebel-quant/rhiza(\.git)?$$'; then \
|
|
26
|
+
printf "${BLUE}[INFO] Skipping sync in rhiza repository (no template.yml by design)${RESET}\n"; \
|
|
27
|
+
else \
|
|
28
|
+
$(MAKE) install-uv; \
|
|
29
|
+
${UVX_BIN} "rhiza>=0.7.1" materialize --force .; \
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
validate: ## validate project structure against template repository as defined in .rhiza/template.yml
|
|
33
|
+
@if git remote get-url origin 2>/dev/null | grep -iqE 'jebel-quant/rhiza(\.git)?$$'; then \
|
|
34
|
+
printf "${BLUE}[INFO] Skipping validate in rhiza repository (no template.yml by design)${RESET}\n"; \
|
|
35
|
+
else \
|
|
36
|
+
$(MAKE) install-uv; \
|
|
37
|
+
${UVX_BIN} "rhiza>=0.7.1" validate .; \
|
|
38
|
+
fi
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
## Makefile.customisations - User-defined scripts and overrides
|
|
2
|
+
# This file is included by the main Makefile
|
|
3
|
+
|
|
4
|
+
# Declare phony targets
|
|
5
|
+
.PHONY: install-copilot analyse-repo summarize-changes
|
|
6
|
+
|
|
7
|
+
COPILOT_BIN ?= $(shell command -v copilot 2>/dev/null || echo "$(INSTALL_DIR)/copilot")
|
|
8
|
+
##@ Agentic Workflows
|
|
9
|
+
|
|
10
|
+
copilot: install-copilot ## open interactive prompt for copilot
|
|
11
|
+
@"$(COPILOT_BIN)" --model "$(DEFAULT_AI_MODEL)"
|
|
12
|
+
|
|
13
|
+
analyse-repo: install-copilot ## run the analyser agent to update REPOSITORY_ANALYSIS.md
|
|
14
|
+
@"$(COPILOT_BIN)" --agent analyser \
|
|
15
|
+
--model "$(DEFAULT_AI_MODEL)" \
|
|
16
|
+
--prompt "Analyze the repository and update the journal." \
|
|
17
|
+
--allow-tool 'write' --deny-tool 'remove' \
|
|
18
|
+
--allow-all-paths
|
|
19
|
+
|
|
20
|
+
summarize-changes: install-copilot ## summarize changes since the most recent release/tag
|
|
21
|
+
@"$(COPILOT_BIN)" -p "Show me the commits since the last release/tag and summarize them" --allow-tool 'shell(git)' --model "$(DEFAULT_AI_MODEL)" --agent summarise
|
|
22
|
+
|
|
23
|
+
install-copilot: ## checks for copilot and prompts to install
|
|
24
|
+
@if command -v copilot >/dev/null 2>&1; then \
|
|
25
|
+
printf "${GREEN}[INFO] copilot already installed in PATH, skipping install.${RESET}\n"; \
|
|
26
|
+
elif [ -x "${INSTALL_DIR}/copilot" ]; then \
|
|
27
|
+
printf "${SUCCESS}[INFO] copilot already installed in ${INSTALL_DIR}, skipping install.${RESET}\n"; \
|
|
28
|
+
else \
|
|
29
|
+
printf "${YELLOW}[WARN] GitHub Copilot CLI not found in ${INSTALL_DIR}.${RESET}\n"; \
|
|
30
|
+
printf "${BLUE}Do you want to install GitHub Copilot CLI? [y/N] ${RESET}"; \
|
|
31
|
+
read -r response; \
|
|
32
|
+
if [ "$$response" = "y" ] || [ "$$response" = "Y" ]; then \
|
|
33
|
+
printf "${BLUE}[INFO] Installing GitHub Copilot CLI to ${INSTALL_DIR}...${RESET}\n"; \
|
|
34
|
+
mkdir -p "${INSTALL_DIR}"; \
|
|
35
|
+
if curl -fsSL https://gh.io/copilot-install | PREFIX="." bash; then \
|
|
36
|
+
printf "${GREEN}[INFO] GitHub Copilot CLI installed successfully.${RESET}\n"; \
|
|
37
|
+
else \
|
|
38
|
+
printf "${RED}[ERROR] Failed to install GitHub Copilot CLI.${RESET}\n"; \
|
|
39
|
+
exit 1; \
|
|
40
|
+
fi; \
|
|
41
|
+
else \
|
|
42
|
+
printf "${BLUE}[INFO] Skipping installation.${RESET}\n"; \
|
|
43
|
+
fi; \
|
|
44
|
+
fi
|
|
45
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
## Makefile.customisations - User-defined scripts and overrides
|
|
2
|
+
# This file is included by the main Makefile
|
|
3
|
+
|
|
4
|
+
# Declare phony targets
|
|
5
|
+
.PHONY: install-extras post-release
|
|
6
|
+
|
|
7
|
+
##@ Customisations
|
|
8
|
+
|
|
9
|
+
install-extras:: ## run custom build script (if exists)
|
|
10
|
+
@if [ -x "${CUSTOM_SCRIPTS_FOLDER}/build-extras.sh" ]; then \
|
|
11
|
+
printf "${BLUE}[INFO] Running custom build script from customisations folder...${RESET}\n"; \
|
|
12
|
+
"${CUSTOM_SCRIPTS_FOLDER}"/build-extras.sh; \
|
|
13
|
+
elif [ -f "${CUSTOM_SCRIPTS_FOLDER}/build-extras.sh" ]; then \
|
|
14
|
+
printf "${BLUE}[INFO] Running custom build script from customisations folder...${RESET}\n"; \
|
|
15
|
+
/bin/sh "${CUSTOM_SCRIPTS_FOLDER}/build-extras.sh"; \
|
|
16
|
+
else \
|
|
17
|
+
printf "${BLUE}[INFO] No custom build script in ${CUSTOM_SCRIPTS_FOLDER}, skipping...${RESET}\n"; \
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
post-release:: ## perform post-release tasks
|
|
21
|
+
@if [ -x "${CUSTOM_SCRIPTS_FOLDER}/post-release.sh" ]; then \
|
|
22
|
+
printf "${BLUE}[INFO] Running post-release script from customisations folder...${RESET}\n"; \
|
|
23
|
+
"${CUSTOM_SCRIPTS_FOLDER}"/post-release.sh; \
|
|
24
|
+
elif [ -f "${CUSTOM_SCRIPTS_FOLDER}/post-release.sh" ]; then \
|
|
25
|
+
printf "${BLUE}[INFO] Running post-release script from customisations folder...${RESET}\n"; \
|
|
26
|
+
/bin/sh "${CUSTOM_SCRIPTS_FOLDER}/post-release.sh"; \
|
|
27
|
+
else \
|
|
28
|
+
printf "${BLUE}[INFO] No post-release script in ${CUSTOM_SCRIPTS_FOLDER}, skipping...${RESET}\n"; \
|
|
29
|
+
fi
|
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
#
|
|
6
6
|
# Files under template control:
|
|
7
7
|
.editorconfig
|
|
8
|
+
.github/Makefile.gh
|
|
9
|
+
.github/agents/analyser.md
|
|
10
|
+
.github/agents/summarise.md
|
|
11
|
+
.github/copilot-instructions.md
|
|
8
12
|
.github/workflows/rhiza_book.yml
|
|
9
13
|
.github/workflows/rhiza_ci.yml
|
|
10
14
|
.github/workflows/rhiza_codeql.yml
|
|
@@ -16,6 +20,14 @@
|
|
|
16
20
|
.github/workflows/rhiza_validate.yml
|
|
17
21
|
.gitignore
|
|
18
22
|
.pre-commit-config.yaml
|
|
23
|
+
.python-version
|
|
24
|
+
.rhiza/.cfg.toml
|
|
25
|
+
.rhiza/.env
|
|
26
|
+
.rhiza/Makefile.rhiza
|
|
27
|
+
.rhiza/agentic/Makefile.agentic
|
|
28
|
+
.rhiza/customisations/Makefile.customisations
|
|
29
|
+
.rhiza/customisations/scripts/build-extras.sh
|
|
30
|
+
.rhiza/customisations/scripts/post-release.sh
|
|
19
31
|
.rhiza/docs/CONFIG.md
|
|
20
32
|
.rhiza/docs/TOKEN_SETUP.md
|
|
21
33
|
.rhiza/requirements/README.md
|
|
@@ -24,11 +36,7 @@
|
|
|
24
36
|
.rhiza/requirements/tests.txt
|
|
25
37
|
.rhiza/requirements/tools.txt
|
|
26
38
|
.rhiza/scripts/book.sh
|
|
27
|
-
.rhiza/scripts/bump.sh
|
|
28
|
-
.rhiza/scripts/customisations/build-extras.sh
|
|
29
|
-
.rhiza/scripts/customisations/post-release.sh
|
|
30
39
|
.rhiza/scripts/generate-coverage-badge.sh
|
|
31
|
-
.rhiza/scripts/install-dev-deps.sh
|
|
32
40
|
.rhiza/scripts/marimushka.sh
|
|
33
41
|
.rhiza/scripts/release.sh
|
|
34
42
|
.rhiza/scripts/update-readme-help.sh
|
|
@@ -53,11 +61,11 @@ tests/test_rhiza/benchmarks/.gitignore
|
|
|
53
61
|
tests/test_rhiza/benchmarks/README.md
|
|
54
62
|
tests/test_rhiza/benchmarks/analyze_benchmarks.py
|
|
55
63
|
tests/test_rhiza/conftest.py
|
|
56
|
-
tests/test_rhiza/test_bump_script.py
|
|
57
64
|
tests/test_rhiza/test_coverage_badge.py
|
|
58
65
|
tests/test_rhiza/test_docstrings.py
|
|
59
66
|
tests/test_rhiza/test_git_repo_fixture.py
|
|
60
67
|
tests/test_rhiza/test_makefile.py
|
|
68
|
+
tests/test_rhiza/test_makefile_gh.py
|
|
61
69
|
tests/test_rhiza/test_marimushka_script.py
|
|
62
70
|
tests/test_rhiza/test_notebooks.py
|
|
63
71
|
tests/test_rhiza/test_readme.py
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
template-repository: "jebel-quant/rhiza"
|
|
2
2
|
template-branch: "main"
|
|
3
3
|
include:
|
|
4
|
-
- .github
|
|
4
|
+
- .github
|
|
5
5
|
- .rhiza
|
|
6
6
|
- tests
|
|
7
7
|
- .editorconfig
|
|
@@ -15,6 +15,9 @@ include:
|
|
|
15
15
|
- presentation
|
|
16
16
|
- book
|
|
17
17
|
- renovate.json
|
|
18
|
+
- .python-version
|
|
18
19
|
exclude:
|
|
19
20
|
- .github/workflows/rhiza_docker.yml
|
|
20
21
|
- .github/workflows/rhiza_devcontainer.yml
|
|
22
|
+
- .github/ISSUE_TEMPLATE
|
|
23
|
+
- .github/dependabot.yml
|