seedcase-flower 0.18.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.
- seedcase_flower-0.18.0/.copier-answers.yml +13 -0
- seedcase_flower-0.18.0/.cz.toml +6 -0
- seedcase_flower-0.18.0/.editorconfig +23 -0
- seedcase_flower-0.18.0/.github/CODEOWNERS +2 -0
- seedcase_flower-0.18.0/.github/dependabot.yml +17 -0
- seedcase_flower-0.18.0/.github/pull_request_template.md +11 -0
- seedcase_flower-0.18.0/.github/workflows/add-to-project.yml +27 -0
- seedcase_flower-0.18.0/.github/workflows/build-website.yml +15 -0
- seedcase_flower-0.18.0/.github/workflows/check-package.yml +19 -0
- seedcase_flower-0.18.0/.github/workflows/dependency-review.yml +17 -0
- seedcase_flower-0.18.0/.github/workflows/release-package.yml +61 -0
- seedcase_flower-0.18.0/.github/workflows/scorecards.yml +28 -0
- seedcase_flower-0.18.0/.gitignore +88 -0
- seedcase_flower-0.18.0/.pre-commit-config.yaml +37 -0
- seedcase_flower-0.18.0/.python-version +1 -0
- seedcase_flower-0.18.0/.rumdl.toml +30 -0
- seedcase_flower-0.18.0/.typos.toml +9 -0
- seedcase_flower-0.18.0/.vscode/extensions.json +23 -0
- seedcase_flower-0.18.0/.vscode/google-notypes.mustache +41 -0
- seedcase_flower-0.18.0/.vscode/json.code-snippets +66 -0
- seedcase_flower-0.18.0/.vscode/launch.json +16 -0
- seedcase_flower-0.18.0/.vscode/python.code-snippets +18 -0
- seedcase_flower-0.18.0/.vscode/settings.json +38 -0
- seedcase_flower-0.18.0/404.qmd +12 -0
- seedcase_flower-0.18.0/CHANGELOG.md +166 -0
- seedcase_flower-0.18.0/CITATION.cff +37 -0
- seedcase_flower-0.18.0/CODE_OF_CONDUCT.md +30 -0
- seedcase_flower-0.18.0/CONTRIBUTING.md +57 -0
- seedcase_flower-0.18.0/LICENSE.md +21 -0
- seedcase_flower-0.18.0/PKG-INFO +168 -0
- seedcase_flower-0.18.0/README.md +146 -0
- seedcase_flower-0.18.0/README.qmd +120 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_brand.yml +184 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extension.yml +56 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/_extension.yml +7 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/css/all.css +8030 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/css/all.min.css +9 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/css/latex-fontsize.css +30 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.ttf +0 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.woff2 +0 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.ttf +0 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.woff2 +0 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.ttf +0 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.woff2 +0 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.ttf +0 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.woff2 +0 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/fontawesome.lua +84 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/glossary.json +18 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/images/404.svg +1 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/check-datapackage/font.svg +9 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/check-datapackage/icon.svg +4 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/check-datapackage/navbar.svg +11 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/docs/navbar-community.svg +18 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/docs/navbar-decisions.svg +17 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/docs/navbar-design.svg +14 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/docs/navbar-learn.svg +13 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/docs/navbar-team.svg +10 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/docs/software-products.svg +28 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/external/au.png +0 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/external/mjoelner.svg +10 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/external/nnf.png +0 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/external/rm.svg +25 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/external/sdca.png +0 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/flower/font.svg +4 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/flower/icon.svg +6 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/flower/navbar.svg +17 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/garden/font.svg +8 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/garden/icon.svg +12 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/garden/navbar.svg +20 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/propagate/font.svg +8 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/propagate/icon.svg +6 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/propagate/navbar.svg +21 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/seedcase/font.svg +4 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/seedcase/icon.png +0 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/seedcase/icon.svg +6 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/seedcase/navbar.svg +8 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/sprout/font.svg +4 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/sprout/icon.svg +6 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/sprout/navbar.svg +17 -0
- seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/vancouver.csl +351 -0
- seedcase_flower-0.18.0/_metadata.yml +9 -0
- seedcase_flower-0.18.0/_publish.yml +4 -0
- seedcase_flower-0.18.0/_quarto.yml +106 -0
- seedcase_flower-0.18.0/_renderer.py +88 -0
- seedcase_flower-0.18.0/_variables.yml +3 -0
- seedcase_flower-0.18.0/docs/LICENSE.md +369 -0
- seedcase_flower-0.18.0/docs/design/architecture.qmd +272 -0
- seedcase_flower-0.18.0/docs/design/example-output/images/example-quarto-resource-growth-records.png +0 -0
- seedcase_flower-0.18.0/docs/design/example-output/images/example-quarto-resource-listing.png +0 -0
- seedcase_flower-0.18.0/docs/design/example-output/images/example-quarto-resource-species-catalog.png +0 -0
- seedcase_flower-0.18.0/docs/design/example-output/images/example-quarto-resource-tables.png +0 -0
- seedcase_flower-0.18.0/docs/design/example-output/quarto-book.qmd +47 -0
- seedcase_flower-0.18.0/docs/design/example-output/quarto-resource/index.qmd +29 -0
- seedcase_flower-0.18.0/docs/design/example-output/quarto-resource/resources/growth_records.qmd +18 -0
- seedcase_flower-0.18.0/docs/design/example-output/quarto-resource/resources/species_catalog.qmd +15 -0
- seedcase_flower-0.18.0/docs/design/index.qmd +49 -0
- seedcase_flower-0.18.0/docs/design/interface/cli.qmd +261 -0
- seedcase_flower-0.18.0/docs/design/interface/config.qmd +314 -0
- seedcase_flower-0.18.0/docs/design/interface/index.qmd +16 -0
- seedcase_flower-0.18.0/docs/design/interface/inputs.qmd +15 -0
- seedcase_flower-0.18.0/docs/design/interface/outputs.qmd +225 -0
- seedcase_flower-0.18.0/docs/design/interface/python.qmd +130 -0
- seedcase_flower-0.18.0/docs/examples/index.qmd +15 -0
- seedcase_flower-0.18.0/docs/examples/quarto-one-page/index.qmd +78 -0
- seedcase_flower-0.18.0/docs/guide/cli.qmd +236 -0
- seedcase_flower-0.18.0/docs/guide/config.qmd +101 -0
- seedcase_flower-0.18.0/docs/guide/contribute-style.qmd +110 -0
- seedcase_flower-0.18.0/docs/guide/custom-styles.qmd +356 -0
- seedcase_flower-0.18.0/docs/guide/index.qmd +12 -0
- seedcase_flower-0.18.0/docs/guide/installation.qmd +78 -0
- seedcase_flower-0.18.0/docs/includes/_badges.qmd +15 -0
- seedcase_flower-0.18.0/docs/includes/_contributors.qmd +7 -0
- seedcase_flower-0.18.0/docs/includes/_design-status.qmd +17 -0
- seedcase_flower-0.18.0/docs/includes/datapackage.json +232 -0
- seedcase_flower-0.18.0/docs/includes/site-counter.html +1 -0
- seedcase_flower-0.18.0/docs/index.qmd +55 -0
- seedcase_flower-0.18.0/index.qmd +88 -0
- seedcase_flower-0.18.0/justfile +167 -0
- seedcase_flower-0.18.0/mypy.ini +9 -0
- seedcase_flower-0.18.0/pyproject.toml +67 -0
- seedcase_flower-0.18.0/pytest.ini +8 -0
- seedcase_flower-0.18.0/ruff.toml +28 -0
- seedcase_flower-0.18.0/src/seedcase_flower/__init__.py +19 -0
- seedcase_flower-0.18.0/src/seedcase_flower/build_sections.py +211 -0
- seedcase_flower-0.18.0/src/seedcase_flower/cli.py +144 -0
- seedcase_flower-0.18.0/src/seedcase_flower/config.py +52 -0
- seedcase_flower-0.18.0/src/seedcase_flower/errors.py +53 -0
- seedcase_flower-0.18.0/src/seedcase_flower/internals.py +57 -0
- seedcase_flower-0.18.0/src/seedcase_flower/parse_source.py +98 -0
- seedcase_flower-0.18.0/src/seedcase_flower/py.typed +0 -0
- seedcase_flower-0.18.0/src/seedcase_flower/read_properties.py +47 -0
- seedcase_flower-0.18.0/src/seedcase_flower/sections.py +282 -0
- seedcase_flower-0.18.0/src/seedcase_flower/styles/quarto_one_page/package.qmd.jinja +83 -0
- seedcase_flower-0.18.0/src/seedcase_flower/styles/quarto_one_page/sections.toml +7 -0
- seedcase_flower-0.18.0/src/seedcase_flower/styles.py +15 -0
- seedcase_flower-0.18.0/src/seedcase_flower/write_sections.py +34 -0
- seedcase_flower-0.18.0/tests/__init__.py +1 -0
- seedcase_flower-0.18.0/tests/conftest.py +47 -0
- seedcase_flower-0.18.0/tests/test_build_sections.py +382 -0
- seedcase_flower-0.18.0/tests/test_cli.py +359 -0
- seedcase_flower-0.18.0/tests/test_config.py +25 -0
- seedcase_flower-0.18.0/tests/test_parse_source.py +153 -0
- seedcase_flower-0.18.0/tests/test_read_properties.py +129 -0
- seedcase_flower-0.18.0/tests/test_section.py +153 -0
- seedcase_flower-0.18.0/tests/test_write_sections.py +46 -0
- seedcase_flower-0.18.0/tools/generate-help-strings.py +75 -0
- seedcase_flower-0.18.0/tools/get-contributors.sh +22 -0
- seedcase_flower-0.18.0/tools/vulture-allowlist.py +12 -0
- seedcase_flower-0.18.0/uv.lock +2737 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Changes here will be overwritten by Copier; NEVER EDIT MANUALLY
|
|
2
|
+
_commit: 0.21.0
|
|
3
|
+
_src_path: gh:seedcase-project/template-python-package
|
|
4
|
+
author_email: lwjohnst@gmail.com
|
|
5
|
+
author_family_name: Johnston
|
|
6
|
+
author_given_name: Luke
|
|
7
|
+
copyright_year: '2025'
|
|
8
|
+
github_board_number: '18'
|
|
9
|
+
github_repo: seedcase-flower
|
|
10
|
+
github_user: seedcase-project
|
|
11
|
+
hosting_provider: netlify
|
|
12
|
+
is_seedcase_project: true
|
|
13
|
+
review_team: '@seedcase-project/developers'
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# EditorConfig settings. Some editors will read these automatically;
|
|
2
|
+
# for those that don't, see here: https://editorconfig.org/
|
|
3
|
+
|
|
4
|
+
root = true
|
|
5
|
+
|
|
6
|
+
[*]
|
|
7
|
+
charset = utf-8
|
|
8
|
+
indent_style = space
|
|
9
|
+
indent_size = 2
|
|
10
|
+
end_of_line = lf
|
|
11
|
+
insert_final_newline = true
|
|
12
|
+
trim_trailing_whitespace = true
|
|
13
|
+
max_line_length = 88
|
|
14
|
+
|
|
15
|
+
# Have a bit shorter line length for text docs
|
|
16
|
+
[*.{txt,md,qmd}]
|
|
17
|
+
max_line_length = 72
|
|
18
|
+
indent_size = 4
|
|
19
|
+
|
|
20
|
+
# Python always uses 4 spaces for tabs
|
|
21
|
+
[*.py]
|
|
22
|
+
indent_style = space
|
|
23
|
+
indent_size = 4
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: github-actions
|
|
4
|
+
directory: /
|
|
5
|
+
schedule:
|
|
6
|
+
interval: monthly
|
|
7
|
+
commit-message:
|
|
8
|
+
prefix: ci
|
|
9
|
+
include: scope
|
|
10
|
+
|
|
11
|
+
- package-ecosystem: uv
|
|
12
|
+
directory: /
|
|
13
|
+
schedule:
|
|
14
|
+
interval: monthly
|
|
15
|
+
commit-message:
|
|
16
|
+
prefix: build
|
|
17
|
+
include: scope
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name: Add to project board
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issues:
|
|
5
|
+
types:
|
|
6
|
+
- opened
|
|
7
|
+
- reopened
|
|
8
|
+
- transferred
|
|
9
|
+
pull_request:
|
|
10
|
+
types:
|
|
11
|
+
- reopened
|
|
12
|
+
- opened
|
|
13
|
+
|
|
14
|
+
# Limit token permissions for security
|
|
15
|
+
permissions: read-all
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
add-to-project:
|
|
19
|
+
uses: seedcase-project/.github/.github/workflows/reusable-add-to-project.yml@main
|
|
20
|
+
permissions:
|
|
21
|
+
pull-requests: write
|
|
22
|
+
with:
|
|
23
|
+
board-number: 18
|
|
24
|
+
app-id: ${{ vars.ADD_TO_BOARD_APP_ID }}
|
|
25
|
+
secrets:
|
|
26
|
+
add-to-board-token: ${{ secrets.ADD_TO_BOARD }}
|
|
27
|
+
gh-token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: Build website
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
# Limit token permissions for security
|
|
9
|
+
permissions: read-all
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build-website:
|
|
13
|
+
uses: seedcase-project/.github/.github/workflows/reusable-build-docs-with-python.yml@main
|
|
14
|
+
secrets:
|
|
15
|
+
netlify-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
name: Check package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
push:
|
|
8
|
+
branches:
|
|
9
|
+
- main
|
|
10
|
+
|
|
11
|
+
# Limit token permissions for security
|
|
12
|
+
permissions: read-all
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
build:
|
|
16
|
+
uses: seedcase-project/.github/.github/workflows/reusable-check-python.yml@main
|
|
17
|
+
# Permissions needed for pushing to the coverage branch.
|
|
18
|
+
permissions:
|
|
19
|
+
contents: write
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Dependency Review Action
|
|
2
|
+
#
|
|
3
|
+
# This Action will scan dependency manifest files that change as part of a Pull Request,
|
|
4
|
+
# surfacing known-vulnerable versions of the packages declared or updated in the PR.
|
|
5
|
+
# Once installed, if the workflow run is marked as required,
|
|
6
|
+
# PRs introducing known-vulnerable packages will be blocked from merging.
|
|
7
|
+
#
|
|
8
|
+
# Source repository: https://github.com/actions/dependency-review-action
|
|
9
|
+
name: "Security: Dependency Review"
|
|
10
|
+
on: pull_request
|
|
11
|
+
|
|
12
|
+
# Limit token permissions for security
|
|
13
|
+
permissions: read-all
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
dependency-review:
|
|
17
|
+
uses: seedcase-project/.github/.github/workflows/reusable-dependency-review.yml@main
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
name: Release package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
# Limit token permissions for security
|
|
9
|
+
permissions: read-all
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
release:
|
|
13
|
+
# This job outputs env variables `previous_version` and `current_version`.
|
|
14
|
+
# Only give permissions for this job.
|
|
15
|
+
permissions:
|
|
16
|
+
contents: write
|
|
17
|
+
uses: seedcase-project/.github/.github/workflows/reusable-release-project.yml@main
|
|
18
|
+
with:
|
|
19
|
+
app-id: ${{ vars.UPDATE_VERSION_APP_ID }}
|
|
20
|
+
secrets:
|
|
21
|
+
update-version-gh-token: ${{ secrets.UPDATE_VERSION_TOKEN }}
|
|
22
|
+
|
|
23
|
+
pypi-publish:
|
|
24
|
+
name: Publish to PyPI
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
# Only give permissions for this job.
|
|
27
|
+
permissions:
|
|
28
|
+
# IMPORTANT: mandatory for trusted publishing.
|
|
29
|
+
id-token: write
|
|
30
|
+
environment:
|
|
31
|
+
name: pypi
|
|
32
|
+
needs:
|
|
33
|
+
- release
|
|
34
|
+
if: ${{ needs.release.outputs.previous_version != needs.release.outputs.current_version }}
|
|
35
|
+
steps:
|
|
36
|
+
- name: Harden the runner (Audit all outbound calls)
|
|
37
|
+
uses: step-security/harden-runner@a90bcbc6539c36a85cdfeb73f7e2f433735f215b # v2.15.0
|
|
38
|
+
with:
|
|
39
|
+
egress-policy: audit
|
|
40
|
+
|
|
41
|
+
- name: Checkout
|
|
42
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
43
|
+
with:
|
|
44
|
+
# Need to explicitly get the current version, otherwise it defaults to current commit
|
|
45
|
+
# (which is not the same as the release/version commit).
|
|
46
|
+
ref: ${{ needs.release.outputs.current_version }}
|
|
47
|
+
|
|
48
|
+
# This workflow and the publish workflows are based on:
|
|
49
|
+
# - https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/
|
|
50
|
+
# - https://www.andrlik.org/dispatches/til-use-uv-for-build-and-publish-github-actions/
|
|
51
|
+
# - https://github.com/astral-sh/trusted-publishing-examples
|
|
52
|
+
- name: Set up uv
|
|
53
|
+
uses: astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098 # v7.3.1
|
|
54
|
+
|
|
55
|
+
- name: Build distributions
|
|
56
|
+
# Builds dists from source and stores them in the dist/ directory.
|
|
57
|
+
run: uv build
|
|
58
|
+
|
|
59
|
+
- name: Publish 📦 to PyPI
|
|
60
|
+
# Only publish if the option is explicitly set in the calling workflow.
|
|
61
|
+
run: uv publish --trusted-publishing always
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub. They are provided
|
|
2
|
+
# by a third-party and are governed by separate terms of service, privacy
|
|
3
|
+
# policy, and support documentation.
|
|
4
|
+
name: "Security: Scorecard"
|
|
5
|
+
on:
|
|
6
|
+
# For Branch-Protection check. Only the default branch is supported. See
|
|
7
|
+
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
|
|
8
|
+
branch_protection_rule:
|
|
9
|
+
# To guarantee Maintained check is occasionally updated. See
|
|
10
|
+
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
|
|
11
|
+
schedule:
|
|
12
|
+
- cron: '20 7 * * 2'
|
|
13
|
+
push:
|
|
14
|
+
branches:
|
|
15
|
+
- main
|
|
16
|
+
|
|
17
|
+
# Declare default permissions as read only.
|
|
18
|
+
permissions: read-all
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
analysis:
|
|
22
|
+
name: Analysis
|
|
23
|
+
uses: seedcase-project/.github/.github/workflows/reusable-scorecards.yml@main
|
|
24
|
+
permissions:
|
|
25
|
+
# Needed to upload the results to code-scanning dashboard.
|
|
26
|
+
security-events: write
|
|
27
|
+
# Needed to publish results and get a badge (see publish_results below).
|
|
28
|
+
id-token: write
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Development files and folders
|
|
2
|
+
_ignore
|
|
3
|
+
_temp
|
|
4
|
+
bin/
|
|
5
|
+
dev/
|
|
6
|
+
|
|
7
|
+
# Temporary files
|
|
8
|
+
*.tmp
|
|
9
|
+
|
|
10
|
+
# Any IDE specific folders
|
|
11
|
+
.idea
|
|
12
|
+
|
|
13
|
+
# Any .env files
|
|
14
|
+
.env
|
|
15
|
+
.env.*
|
|
16
|
+
**/.env.*
|
|
17
|
+
.env
|
|
18
|
+
.venv
|
|
19
|
+
env/
|
|
20
|
+
venv/
|
|
21
|
+
ENV/
|
|
22
|
+
env.bak/
|
|
23
|
+
venv.bak/
|
|
24
|
+
|
|
25
|
+
# Python specific content
|
|
26
|
+
venv
|
|
27
|
+
__pycache__/
|
|
28
|
+
*.py[cod]
|
|
29
|
+
|
|
30
|
+
# Python packaging and distribution
|
|
31
|
+
.Python
|
|
32
|
+
build/
|
|
33
|
+
develop-eggs/
|
|
34
|
+
dist/
|
|
35
|
+
downloads/
|
|
36
|
+
eggs/
|
|
37
|
+
.eggs/
|
|
38
|
+
lib/
|
|
39
|
+
lib64/
|
|
40
|
+
parts/
|
|
41
|
+
sdist/
|
|
42
|
+
var/
|
|
43
|
+
wheels/
|
|
44
|
+
share/python-wheels/
|
|
45
|
+
*.egg-info/
|
|
46
|
+
.installed.cfg
|
|
47
|
+
*.egg
|
|
48
|
+
MANIFEST
|
|
49
|
+
|
|
50
|
+
# Python testing and code coverage
|
|
51
|
+
htmlcov/
|
|
52
|
+
.tox/
|
|
53
|
+
.nox/
|
|
54
|
+
.coverage
|
|
55
|
+
.coverage.*
|
|
56
|
+
coverage.*
|
|
57
|
+
.cache
|
|
58
|
+
nosetests.xml
|
|
59
|
+
*.cover
|
|
60
|
+
*.py,cover
|
|
61
|
+
.hypothesis/
|
|
62
|
+
.pytest_cache/
|
|
63
|
+
cover/
|
|
64
|
+
|
|
65
|
+
# MacOS
|
|
66
|
+
.DS_Store
|
|
67
|
+
|
|
68
|
+
# Quarto
|
|
69
|
+
/.quarto/
|
|
70
|
+
docs/.quarto/
|
|
71
|
+
*.ipynb
|
|
72
|
+
*.quarto_ipynb
|
|
73
|
+
**/*.quarto_ipynb
|
|
74
|
+
*.storage
|
|
75
|
+
|
|
76
|
+
# Quartodoc
|
|
77
|
+
/docs/reference/
|
|
78
|
+
objects.json
|
|
79
|
+
|
|
80
|
+
# Website generation
|
|
81
|
+
_site
|
|
82
|
+
_book
|
|
83
|
+
public
|
|
84
|
+
site
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
# Misc files
|
|
88
|
+
*.log
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# See https://pre-commit.com for more information
|
|
2
|
+
# See https://pre-commit.com/hooks.html for more hooks
|
|
3
|
+
ci:
|
|
4
|
+
autofix_commit_msg: "chore(pre-commit): :pencil2: automatic fixes"
|
|
5
|
+
autoupdate_commit_msg: "ci(pre-commit): :construction_worker: update pre-commit CI version"
|
|
6
|
+
|
|
7
|
+
repos:
|
|
8
|
+
- repo: https://github.com/gitleaks/gitleaks
|
|
9
|
+
rev: v8.30.0
|
|
10
|
+
hooks:
|
|
11
|
+
- id: gitleaks
|
|
12
|
+
|
|
13
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
14
|
+
rev: v6.0.0
|
|
15
|
+
hooks:
|
|
16
|
+
- id: trailing-whitespace
|
|
17
|
+
- id: end-of-file-fixer
|
|
18
|
+
- id: check-merge-conflict
|
|
19
|
+
args: [--assume-in-merge]
|
|
20
|
+
|
|
21
|
+
- repo: https://github.com/commitizen-tools/commitizen
|
|
22
|
+
rev: v4.13.9
|
|
23
|
+
hooks:
|
|
24
|
+
- id: commitizen
|
|
25
|
+
|
|
26
|
+
# Use the mirror since the main `typos` repo has tags for different
|
|
27
|
+
# sub-packages, which confuses pre-commit when it tries to find the latest
|
|
28
|
+
# version
|
|
29
|
+
- repo: https://github.com/adhtruong/mirrors-typos
|
|
30
|
+
rev: v1.44.0
|
|
31
|
+
hooks:
|
|
32
|
+
- id: typos
|
|
33
|
+
|
|
34
|
+
- repo: https://github.com/rvben/rumdl-pre-commit
|
|
35
|
+
rev: v0.1.58
|
|
36
|
+
hooks:
|
|
37
|
+
- id: rumdl-fmt # Auto-format
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
[global]
|
|
2
|
+
# 72 to match what we have currently been using
|
|
3
|
+
line_length = 72
|
|
4
|
+
flavor = "quarto"
|
|
5
|
+
exclude = [
|
|
6
|
+
# Common directories to exclude
|
|
7
|
+
".github",
|
|
8
|
+
# This is auto-generated from the qmd version
|
|
9
|
+
"**/README.md",
|
|
10
|
+
# This has it's own structure
|
|
11
|
+
"**/LICENSE.md",
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
# List style: `-`
|
|
15
|
+
[MD004]
|
|
16
|
+
style = "dash"
|
|
17
|
+
|
|
18
|
+
# Wrap list items
|
|
19
|
+
[MD032]
|
|
20
|
+
allow-lazy-continuation = false
|
|
21
|
+
|
|
22
|
+
# Reflow text
|
|
23
|
+
[MD013]
|
|
24
|
+
reflow = true
|
|
25
|
+
reflow-mode = "normalize"
|
|
26
|
+
|
|
27
|
+
# Fix tables and their separator row
|
|
28
|
+
[MD060]
|
|
29
|
+
enabled = true
|
|
30
|
+
style = "aligned-no-space"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"recommendations": [
|
|
3
|
+
"eamodio.gitlens",
|
|
4
|
+
"github.vscode-github-actions",
|
|
5
|
+
"redhat.vscode-yaml",
|
|
6
|
+
"donjayamanne.githistory",
|
|
7
|
+
"felipecaputo.git-project-manager",
|
|
8
|
+
"GitHub.vscode-pull-request-github",
|
|
9
|
+
"ms-python.python",
|
|
10
|
+
"ms-python.vscode-pylance",
|
|
11
|
+
"matangover.mypy",
|
|
12
|
+
"njpwerner.autodocstring",
|
|
13
|
+
"quarto.quarto",
|
|
14
|
+
"ms-toolsai.jupyter",
|
|
15
|
+
"vivaxy.vscode-conventional-commits",
|
|
16
|
+
"charliermarsh.ruff",
|
|
17
|
+
"pshaddel.conventional-branch",
|
|
18
|
+
"tekumara.typos-vscode",
|
|
19
|
+
"EditorConfig.EditorConfig",
|
|
20
|
+
"rvben.rumdl"
|
|
21
|
+
],
|
|
22
|
+
"unwantedRecommendations": []
|
|
23
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{{! Copied from https://github.com/NilsJPWerner/autoDocstring/blob/master/src/docstring/templates/google-notypes.mustache with some edits }}
|
|
2
|
+
{{! Google Docstring Template without Types for Args, Returns or Yields }}
|
|
3
|
+
{{summaryPlaceholder}}.
|
|
4
|
+
|
|
5
|
+
{{extendedSummaryPlaceholder}}
|
|
6
|
+
{{#parametersExist}}
|
|
7
|
+
|
|
8
|
+
Args:
|
|
9
|
+
{{#args}}
|
|
10
|
+
{{var}}: {{descriptionPlaceholder}}.
|
|
11
|
+
{{/args}}
|
|
12
|
+
{{#kwargs}}
|
|
13
|
+
{{var}}: {{descriptionPlaceholder}}. Defaults to {{&default}}.
|
|
14
|
+
{{/kwargs}}
|
|
15
|
+
{{/parametersExist}}
|
|
16
|
+
{{#returnsExist}}
|
|
17
|
+
|
|
18
|
+
Returns:
|
|
19
|
+
{{#returns}}
|
|
20
|
+
{{descriptionPlaceholder}}.
|
|
21
|
+
{{/returns}}
|
|
22
|
+
{{/returnsExist}}
|
|
23
|
+
{{#exceptionsExist}}
|
|
24
|
+
|
|
25
|
+
Raises:
|
|
26
|
+
{{#exceptions}}
|
|
27
|
+
{{type}}: {{descriptionPlaceholder}}.
|
|
28
|
+
{{/exceptions}}
|
|
29
|
+
{{/exceptionsExist}}
|
|
30
|
+
{{#yieldsExist}}
|
|
31
|
+
|
|
32
|
+
Yields:
|
|
33
|
+
{{#yields}}
|
|
34
|
+
{{descriptionPlaceholder}}.
|
|
35
|
+
{{/yields}}
|
|
36
|
+
{{/yieldsExist}}
|
|
37
|
+
|
|
38
|
+
Examples:
|
|
39
|
+
```{python}
|
|
40
|
+
{{descriptionPlaceholder}}
|
|
41
|
+
```
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Insert TODO formatting": {
|
|
3
|
+
"scope": "quarto,markdown",
|
|
4
|
+
"prefix": "TODO",
|
|
5
|
+
"body": [
|
|
6
|
+
"<!-- TODO: ${0:Write text here} -->"
|
|
7
|
+
],
|
|
8
|
+
"description": "Insert TODO formatting"
|
|
9
|
+
},
|
|
10
|
+
"Insert bash formatted text": {
|
|
11
|
+
"scope": "quarto,markdown",
|
|
12
|
+
"prefix": "bash",
|
|
13
|
+
"body": [
|
|
14
|
+
"``` bash",
|
|
15
|
+
"${0:Write text here}",
|
|
16
|
+
"```"
|
|
17
|
+
],
|
|
18
|
+
"description": "Insert bash formatted text"
|
|
19
|
+
},
|
|
20
|
+
"Insert a hidden comment section": {
|
|
21
|
+
"scope": "quarto,markdown",
|
|
22
|
+
"prefix": "hidden",
|
|
23
|
+
"body": [
|
|
24
|
+
"::: content-hidden",
|
|
25
|
+
"${0:Write comments here}",
|
|
26
|
+
":::"
|
|
27
|
+
],
|
|
28
|
+
"description": "Insert a hidden content section"
|
|
29
|
+
},
|
|
30
|
+
"Insert a 2 col table": {
|
|
31
|
+
"scope": "quarto,markdown",
|
|
32
|
+
"prefix": "tbl2",
|
|
33
|
+
"body": [
|
|
34
|
+
"|${1:title} |${0:title} |",
|
|
35
|
+
"| --- | --- |",
|
|
36
|
+
"| | |"
|
|
37
|
+
],
|
|
38
|
+
"description": "Insert a 2 col table"
|
|
39
|
+
},
|
|
40
|
+
"Insert a 3 col table": {
|
|
41
|
+
"scope": "quarto,markdown",
|
|
42
|
+
"prefix": "tbl3",
|
|
43
|
+
"body": [
|
|
44
|
+
"|${1:title} |${2:title} |${0:title} |",
|
|
45
|
+
"| --- | --- | --- |",
|
|
46
|
+
"| | | |"
|
|
47
|
+
],
|
|
48
|
+
"description": "Insert a 3 col table"
|
|
49
|
+
},
|
|
50
|
+
"Insert paneltab": {
|
|
51
|
+
"scope": "quarto,markdown",
|
|
52
|
+
"prefix": "paneltab",
|
|
53
|
+
"body": [
|
|
54
|
+
"::: panel-tabset",
|
|
55
|
+
"### ${0:Header}",
|
|
56
|
+
"",
|
|
57
|
+
"${1:Text body}",
|
|
58
|
+
"",
|
|
59
|
+
"### ${2:Header}",
|
|
60
|
+
"",
|
|
61
|
+
"${3:Text body}",
|
|
62
|
+
":::"
|
|
63
|
+
],
|
|
64
|
+
"description": "Insert paneltab (including two tabs here). If you want additional tabs, just include more headers."
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.2.0",
|
|
3
|
+
"configurations": [
|
|
4
|
+
{
|
|
5
|
+
"name": "test-debugger",
|
|
6
|
+
"type": "debugpy",
|
|
7
|
+
"request": "launch",
|
|
8
|
+
"program": "${file}",
|
|
9
|
+
"purpose": [
|
|
10
|
+
"debug-test"
|
|
11
|
+
],
|
|
12
|
+
"console": "integratedTerminal",
|
|
13
|
+
"justMyCode": false
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"files.autoSave": "onFocusChange",
|
|
3
|
+
"editor.wordWrap": "off",
|
|
4
|
+
"editor.formatOnSave": true,
|
|
5
|
+
"editor.codeActionsOnSave": {
|
|
6
|
+
"source.organizeImports": "always"
|
|
7
|
+
},
|
|
8
|
+
"git.autofetch": false,
|
|
9
|
+
"autoDocstring.customTemplatePath": ".vscode/google-notypes.mustache",
|
|
10
|
+
"editor.tabCompletion": "on",
|
|
11
|
+
"editor.snippetSuggestions": "inline",
|
|
12
|
+
"conventional-branch.type": [
|
|
13
|
+
"build",
|
|
14
|
+
"ci",
|
|
15
|
+
"docs",
|
|
16
|
+
"feat",
|
|
17
|
+
"fix",
|
|
18
|
+
"refactor",
|
|
19
|
+
"style",
|
|
20
|
+
"test",
|
|
21
|
+
"chore",
|
|
22
|
+
"perf",
|
|
23
|
+
"revert"
|
|
24
|
+
],
|
|
25
|
+
"conventional-branch.format": "{Type}/{Branch}",
|
|
26
|
+
"[quarto][qmd]": {
|
|
27
|
+
"editor.formatOnSave": false
|
|
28
|
+
},
|
|
29
|
+
"[python]": {
|
|
30
|
+
"editor.defaultFormatter": "charliermarsh.ruff"
|
|
31
|
+
},
|
|
32
|
+
"python.defaultInterpreterPath": "${workspaceFolder}/.venv",
|
|
33
|
+
"python.languageServer": "Pylance",
|
|
34
|
+
"files.insertFinalNewline": true,
|
|
35
|
+
"python.testing.pytestEnabled": true,
|
|
36
|
+
"python.testing.pytestPath": "${workspaceFolder}/.venv/bin/pytest",
|
|
37
|
+
"mypy.runUsingActiveInterpreter": true,
|
|
38
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "You've entered the garden of missing pages"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Let's get you back to greener grounds.
|
|
6
|
+
|
|
7
|
+
👉 Go to [homepage](/index.qmd).
|
|
8
|
+
|
|
9
|
+
{fig-alt="An
|
|
10
|
+
illustration of the number 404 surrounded by trees and mountains"}
|
|
11
|
+
|
|
12
|
+
## Illustration by [Storyset](https://storyset.com/online) {.appendix}
|