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.
Files changed (149) hide show
  1. seedcase_flower-0.18.0/.copier-answers.yml +13 -0
  2. seedcase_flower-0.18.0/.cz.toml +6 -0
  3. seedcase_flower-0.18.0/.editorconfig +23 -0
  4. seedcase_flower-0.18.0/.github/CODEOWNERS +2 -0
  5. seedcase_flower-0.18.0/.github/dependabot.yml +17 -0
  6. seedcase_flower-0.18.0/.github/pull_request_template.md +11 -0
  7. seedcase_flower-0.18.0/.github/workflows/add-to-project.yml +27 -0
  8. seedcase_flower-0.18.0/.github/workflows/build-website.yml +15 -0
  9. seedcase_flower-0.18.0/.github/workflows/check-package.yml +19 -0
  10. seedcase_flower-0.18.0/.github/workflows/dependency-review.yml +17 -0
  11. seedcase_flower-0.18.0/.github/workflows/release-package.yml +61 -0
  12. seedcase_flower-0.18.0/.github/workflows/scorecards.yml +28 -0
  13. seedcase_flower-0.18.0/.gitignore +88 -0
  14. seedcase_flower-0.18.0/.pre-commit-config.yaml +37 -0
  15. seedcase_flower-0.18.0/.python-version +1 -0
  16. seedcase_flower-0.18.0/.rumdl.toml +30 -0
  17. seedcase_flower-0.18.0/.typos.toml +9 -0
  18. seedcase_flower-0.18.0/.vscode/extensions.json +23 -0
  19. seedcase_flower-0.18.0/.vscode/google-notypes.mustache +41 -0
  20. seedcase_flower-0.18.0/.vscode/json.code-snippets +66 -0
  21. seedcase_flower-0.18.0/.vscode/launch.json +16 -0
  22. seedcase_flower-0.18.0/.vscode/python.code-snippets +18 -0
  23. seedcase_flower-0.18.0/.vscode/settings.json +38 -0
  24. seedcase_flower-0.18.0/404.qmd +12 -0
  25. seedcase_flower-0.18.0/CHANGELOG.md +166 -0
  26. seedcase_flower-0.18.0/CITATION.cff +37 -0
  27. seedcase_flower-0.18.0/CODE_OF_CONDUCT.md +30 -0
  28. seedcase_flower-0.18.0/CONTRIBUTING.md +57 -0
  29. seedcase_flower-0.18.0/LICENSE.md +21 -0
  30. seedcase_flower-0.18.0/PKG-INFO +168 -0
  31. seedcase_flower-0.18.0/README.md +146 -0
  32. seedcase_flower-0.18.0/README.qmd +120 -0
  33. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_brand.yml +184 -0
  34. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extension.yml +56 -0
  35. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/_extension.yml +7 -0
  36. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/css/all.css +8030 -0
  37. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/css/all.min.css +9 -0
  38. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/css/latex-fontsize.css +30 -0
  39. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.ttf +0 -0
  40. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-brands-400.woff2 +0 -0
  41. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.ttf +0 -0
  42. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-regular-400.woff2 +0 -0
  43. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.ttf +0 -0
  44. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-solid-900.woff2 +0 -0
  45. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.ttf +0 -0
  46. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/assets/webfonts/fa-v4compatibility.woff2 +0 -0
  47. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/_extensions/quarto-ext/fontawesome/fontawesome.lua +84 -0
  48. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/glossary.json +18 -0
  49. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/images/404.svg +1 -0
  50. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/check-datapackage/font.svg +9 -0
  51. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/check-datapackage/icon.svg +4 -0
  52. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/check-datapackage/navbar.svg +11 -0
  53. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/docs/navbar-community.svg +18 -0
  54. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/docs/navbar-decisions.svg +17 -0
  55. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/docs/navbar-design.svg +14 -0
  56. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/docs/navbar-learn.svg +13 -0
  57. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/docs/navbar-team.svg +10 -0
  58. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/docs/software-products.svg +28 -0
  59. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/external/au.png +0 -0
  60. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/external/mjoelner.svg +10 -0
  61. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/external/nnf.png +0 -0
  62. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/external/rm.svg +25 -0
  63. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/external/sdca.png +0 -0
  64. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/flower/font.svg +4 -0
  65. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/flower/icon.svg +6 -0
  66. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/flower/navbar.svg +17 -0
  67. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/garden/font.svg +8 -0
  68. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/garden/icon.svg +12 -0
  69. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/garden/navbar.svg +20 -0
  70. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/propagate/font.svg +8 -0
  71. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/propagate/icon.svg +6 -0
  72. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/propagate/navbar.svg +21 -0
  73. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/seedcase/font.svg +4 -0
  74. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/seedcase/icon.png +0 -0
  75. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/seedcase/icon.svg +6 -0
  76. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/seedcase/navbar.svg +8 -0
  77. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/sprout/font.svg +4 -0
  78. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/sprout/icon.svg +6 -0
  79. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/logos/sprout/navbar.svg +17 -0
  80. seedcase_flower-0.18.0/_extensions/seedcase-project/seedcase-theme/vancouver.csl +351 -0
  81. seedcase_flower-0.18.0/_metadata.yml +9 -0
  82. seedcase_flower-0.18.0/_publish.yml +4 -0
  83. seedcase_flower-0.18.0/_quarto.yml +106 -0
  84. seedcase_flower-0.18.0/_renderer.py +88 -0
  85. seedcase_flower-0.18.0/_variables.yml +3 -0
  86. seedcase_flower-0.18.0/docs/LICENSE.md +369 -0
  87. seedcase_flower-0.18.0/docs/design/architecture.qmd +272 -0
  88. seedcase_flower-0.18.0/docs/design/example-output/images/example-quarto-resource-growth-records.png +0 -0
  89. seedcase_flower-0.18.0/docs/design/example-output/images/example-quarto-resource-listing.png +0 -0
  90. seedcase_flower-0.18.0/docs/design/example-output/images/example-quarto-resource-species-catalog.png +0 -0
  91. seedcase_flower-0.18.0/docs/design/example-output/images/example-quarto-resource-tables.png +0 -0
  92. seedcase_flower-0.18.0/docs/design/example-output/quarto-book.qmd +47 -0
  93. seedcase_flower-0.18.0/docs/design/example-output/quarto-resource/index.qmd +29 -0
  94. seedcase_flower-0.18.0/docs/design/example-output/quarto-resource/resources/growth_records.qmd +18 -0
  95. seedcase_flower-0.18.0/docs/design/example-output/quarto-resource/resources/species_catalog.qmd +15 -0
  96. seedcase_flower-0.18.0/docs/design/index.qmd +49 -0
  97. seedcase_flower-0.18.0/docs/design/interface/cli.qmd +261 -0
  98. seedcase_flower-0.18.0/docs/design/interface/config.qmd +314 -0
  99. seedcase_flower-0.18.0/docs/design/interface/index.qmd +16 -0
  100. seedcase_flower-0.18.0/docs/design/interface/inputs.qmd +15 -0
  101. seedcase_flower-0.18.0/docs/design/interface/outputs.qmd +225 -0
  102. seedcase_flower-0.18.0/docs/design/interface/python.qmd +130 -0
  103. seedcase_flower-0.18.0/docs/examples/index.qmd +15 -0
  104. seedcase_flower-0.18.0/docs/examples/quarto-one-page/index.qmd +78 -0
  105. seedcase_flower-0.18.0/docs/guide/cli.qmd +236 -0
  106. seedcase_flower-0.18.0/docs/guide/config.qmd +101 -0
  107. seedcase_flower-0.18.0/docs/guide/contribute-style.qmd +110 -0
  108. seedcase_flower-0.18.0/docs/guide/custom-styles.qmd +356 -0
  109. seedcase_flower-0.18.0/docs/guide/index.qmd +12 -0
  110. seedcase_flower-0.18.0/docs/guide/installation.qmd +78 -0
  111. seedcase_flower-0.18.0/docs/includes/_badges.qmd +15 -0
  112. seedcase_flower-0.18.0/docs/includes/_contributors.qmd +7 -0
  113. seedcase_flower-0.18.0/docs/includes/_design-status.qmd +17 -0
  114. seedcase_flower-0.18.0/docs/includes/datapackage.json +232 -0
  115. seedcase_flower-0.18.0/docs/includes/site-counter.html +1 -0
  116. seedcase_flower-0.18.0/docs/index.qmd +55 -0
  117. seedcase_flower-0.18.0/index.qmd +88 -0
  118. seedcase_flower-0.18.0/justfile +167 -0
  119. seedcase_flower-0.18.0/mypy.ini +9 -0
  120. seedcase_flower-0.18.0/pyproject.toml +67 -0
  121. seedcase_flower-0.18.0/pytest.ini +8 -0
  122. seedcase_flower-0.18.0/ruff.toml +28 -0
  123. seedcase_flower-0.18.0/src/seedcase_flower/__init__.py +19 -0
  124. seedcase_flower-0.18.0/src/seedcase_flower/build_sections.py +211 -0
  125. seedcase_flower-0.18.0/src/seedcase_flower/cli.py +144 -0
  126. seedcase_flower-0.18.0/src/seedcase_flower/config.py +52 -0
  127. seedcase_flower-0.18.0/src/seedcase_flower/errors.py +53 -0
  128. seedcase_flower-0.18.0/src/seedcase_flower/internals.py +57 -0
  129. seedcase_flower-0.18.0/src/seedcase_flower/parse_source.py +98 -0
  130. seedcase_flower-0.18.0/src/seedcase_flower/py.typed +0 -0
  131. seedcase_flower-0.18.0/src/seedcase_flower/read_properties.py +47 -0
  132. seedcase_flower-0.18.0/src/seedcase_flower/sections.py +282 -0
  133. seedcase_flower-0.18.0/src/seedcase_flower/styles/quarto_one_page/package.qmd.jinja +83 -0
  134. seedcase_flower-0.18.0/src/seedcase_flower/styles/quarto_one_page/sections.toml +7 -0
  135. seedcase_flower-0.18.0/src/seedcase_flower/styles.py +15 -0
  136. seedcase_flower-0.18.0/src/seedcase_flower/write_sections.py +34 -0
  137. seedcase_flower-0.18.0/tests/__init__.py +1 -0
  138. seedcase_flower-0.18.0/tests/conftest.py +47 -0
  139. seedcase_flower-0.18.0/tests/test_build_sections.py +382 -0
  140. seedcase_flower-0.18.0/tests/test_cli.py +359 -0
  141. seedcase_flower-0.18.0/tests/test_config.py +25 -0
  142. seedcase_flower-0.18.0/tests/test_parse_source.py +153 -0
  143. seedcase_flower-0.18.0/tests/test_read_properties.py +129 -0
  144. seedcase_flower-0.18.0/tests/test_section.py +153 -0
  145. seedcase_flower-0.18.0/tests/test_write_sections.py +46 -0
  146. seedcase_flower-0.18.0/tools/generate-help-strings.py +75 -0
  147. seedcase_flower-0.18.0/tools/get-contributors.sh +22 -0
  148. seedcase_flower-0.18.0/tools/vulture-allowlist.py +12 -0
  149. 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,6 @@
1
+ [tool.commitizen]
2
+ bump_message = "build(version): :bookmark: update version from $current_version to $new_version"
3
+ update_changelog_on_bump = true
4
+ version_provider = "uv"
5
+ # Don't regenerate the changelog on every update
6
+ changelog_incremental = true
@@ -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,2 @@
1
+ # All members on Developers team get added to review PRs
2
+ * @seedcase-project/developers
@@ -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,11 @@
1
+ # Description
2
+
3
+ EXPLANATION
4
+
5
+ Closes #
6
+
7
+ Needs a quick/thorough review.
8
+
9
+ ## Checklist
10
+
11
+ - [ ] Ran `just run-all`
@@ -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,9 @@
1
+ [files]
2
+ extend-exclude = [
3
+ "*.json",
4
+ "*.css",
5
+ ".quarto/*",
6
+ "_site/*",
7
+ "_extensions/*",
8
+ ".coverage-report/*"
9
+ ]
@@ -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,18 @@
1
+ {
2
+ "Insert a Python test": {
3
+ "prefix": "test-gwt",
4
+ "body": [
5
+ "def test_$1():",
6
+ " # Given",
7
+ " $2",
8
+ " ",
9
+ " # When",
10
+ " $3",
11
+ " ",
12
+ " # Then",
13
+ " $4",
14
+ "",
15
+ ],
16
+ "description": "Create Given-When-Then test"
17
+ }
18
+ }
@@ -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
+ ![](/_extensions/seedcase-project/seedcase-theme/images/404.svg){fig-alt="An
10
+ illustration of the number 404 surrounded by trees and mountains"}
11
+
12
+ ## Illustration by [Storyset](https://storyset.com/online) {.appendix}