edge-containers-cli 5.2.1__tar.gz → 5.3.0a3__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 (131) hide show
  1. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.copier-answers.yml +2 -2
  2. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.github/CONTRIBUTING.md +1 -1
  3. edge_containers_cli-5.3.0a3/.github/workflows/_docs.yml +55 -0
  4. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.github/workflows/ci.yml +7 -2
  5. edge_containers_cli-5.3.0a3/.github/workflows/periodic.yml +13 -0
  6. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/Dockerfile +3 -3
  7. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/PKG-INFO +12 -4
  8. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/README.md +10 -3
  9. edge_containers_cli-5.3.0a3/docs/_api.rst +16 -0
  10. edge_containers_cli-5.3.0a3/docs/_templates/custom-module-template.rst +37 -0
  11. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/docs/conf.py +25 -29
  12. edge_containers_cli-5.3.0a3/docs/explanations/decisions/0001-record-architecture-decisions.md +18 -0
  13. edge_containers_cli-5.3.0a3/docs/explanations/decisions/0002-switched-to-python-copier-template.md +28 -0
  14. edge_containers_cli-5.3.0a3/docs/explanations/decisions/COPYME +19 -0
  15. edge_containers_cli-5.3.0a3/docs/explanations/decisions.md +12 -0
  16. edge_containers_cli-5.3.0a3/docs/explanations.md +10 -0
  17. edge_containers_cli-5.3.0a3/docs/genindex.md +3 -0
  18. edge_containers_cli-5.3.0a3/docs/how-to/contribute.md +2 -0
  19. edge_containers_cli-5.3.0a3/docs/how-to/run-container.md +14 -0
  20. edge_containers_cli-5.3.0a3/docs/how-to.md +10 -0
  21. edge_containers_cli-5.3.0a3/docs/images/dls-logo.svg +11 -0
  22. edge_containers_cli-5.3.0a3/docs/index.md +56 -0
  23. edge_containers_cli-5.3.0a3/docs/reference/cli.md +258 -0
  24. edge_containers_cli-5.3.0a3/docs/reference/environment-variables.md +88 -0
  25. edge_containers_cli-5.3.0a3/docs/reference.md +13 -0
  26. edge_containers_cli-5.3.0a3/docs/tutorials/installation.md +42 -0
  27. edge_containers_cli-5.3.0a3/docs/tutorials.md +10 -0
  28. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/pyproject.toml +39 -2
  29. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/renovate.json +2 -1
  30. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/_version.py +3 -3
  31. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/cmds/argo_commands.py +138 -48
  32. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli.egg-info/PKG-INFO +12 -4
  33. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli.egg-info/SOURCES.txt +21 -22
  34. edge_containers_cli-5.3.0a3/src/edge_containers_cli.egg-info/scm_file_list.json +102 -0
  35. edge_containers_cli-5.3.0a3/src/edge_containers_cli.egg-info/scm_version.json +8 -0
  36. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/argocd.yaml +2 -0
  37. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/uv.lock +516 -6
  38. edge_containers_cli-5.2.1/docs/developer/explanations/decisions/0001-record-architecture-decisions.rst +0 -26
  39. edge_containers_cli-5.2.1/docs/developer/explanations/decisions/0002-switched-to-pip-skeleton.rst +0 -35
  40. edge_containers_cli-5.2.1/docs/developer/explanations/decisions.rst +0 -17
  41. edge_containers_cli-5.2.1/docs/developer/how-to/build-docs.rst +0 -38
  42. edge_containers_cli-5.2.1/docs/developer/how-to/contribute.rst +0 -1
  43. edge_containers_cli-5.2.1/docs/developer/how-to/lint.rst +0 -39
  44. edge_containers_cli-5.2.1/docs/developer/how-to/make-release.rst +0 -16
  45. edge_containers_cli-5.2.1/docs/developer/how-to/pin-requirements.rst +0 -74
  46. edge_containers_cli-5.2.1/docs/developer/how-to/run-tests.rst +0 -12
  47. edge_containers_cli-5.2.1/docs/developer/how-to/static-analysis.rst +0 -8
  48. edge_containers_cli-5.2.1/docs/developer/how-to/test-container.rst +0 -25
  49. edge_containers_cli-5.2.1/docs/developer/how-to/update-tools.rst +0 -16
  50. edge_containers_cli-5.2.1/docs/developer/index.rst +0 -64
  51. edge_containers_cli-5.2.1/docs/developer/reference/standards.rst +0 -63
  52. edge_containers_cli-5.2.1/docs/developer/tutorials/dev-install.rst +0 -68
  53. edge_containers_cli-5.2.1/docs/genindex.rst +0 -5
  54. edge_containers_cli-5.2.1/docs/images/dls-logo.svg +0 -11
  55. edge_containers_cli-5.2.1/docs/index.rst +0 -29
  56. edge_containers_cli-5.2.1/docs/user/explanations/docs-structure.rst +0 -18
  57. edge_containers_cli-5.2.1/docs/user/how-to/run-container.rst +0 -15
  58. edge_containers_cli-5.2.1/docs/user/index.rst +0 -57
  59. edge_containers_cli-5.2.1/docs/user/reference/api.rst +0 -14
  60. edge_containers_cli-5.2.1/docs/user/tutorials/installation.rst +0 -38
  61. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.devcontainer/devcontainer.json +0 -0
  62. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.dockerignore +0 -0
  63. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  64. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.github/ISSUE_TEMPLATE/issue.md +0 -0
  65. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
  66. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.github/pages/index.html +0 -0
  67. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.github/pages/make_switcher.py +0 -0
  68. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.github/workflows/_container.yml +0 -0
  69. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.github/workflows/_dist.yml +0 -0
  70. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.github/workflows/_pypi.yml +0 -0
  71. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.github/workflows/_release.yml +0 -0
  72. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.github/workflows/_test.yml +0 -0
  73. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.github/workflows/_tox.yml +0 -0
  74. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.gitignore +0 -0
  75. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.gitleaks.toml +0 -0
  76. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.pre-commit-config.yaml +0 -0
  77. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.python-version +0 -0
  78. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.vscode/extensions.json +0 -0
  79. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.vscode/launch.json +0 -0
  80. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.vscode/settings.json +0 -0
  81. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/.vscode/tasks.json +0 -0
  82. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/LICENSE +0 -0
  83. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/docs/images/dls-favicon.ico +0 -0
  84. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/docs/images/ec-logs.png +0 -0
  85. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/docs/images/ec-web.png +0 -0
  86. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/setup.cfg +0 -0
  87. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/__init__.py +0 -0
  88. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/__main__.py +0 -0
  89. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/autocomplete.py +0 -0
  90. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/backend.py +0 -0
  91. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/cli.py +0 -0
  92. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/cmds/__init__.py +0 -0
  93. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/cmds/commands.py +0 -0
  94. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/cmds/demo_commands.py +0 -0
  95. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/cmds/helm.py +0 -0
  96. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/cmds/k8s_commands.py +0 -0
  97. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/cmds/monitor.py +0 -0
  98. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/cmds/monitor.tcss +0 -0
  99. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/definitions.py +0 -0
  100. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/git.py +0 -0
  101. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/globals.py +0 -0
  102. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/logging.py +0 -0
  103. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/shell.py +0 -0
  104. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli/utils.py +0 -0
  105. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli.egg-info/dependency_links.txt +0 -0
  106. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli.egg-info/entry_points.txt +0 -0
  107. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli.egg-info/requires.txt +0 -0
  108. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/src/edge_containers_cli.egg-info/top_level.txt +0 -0
  109. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/__init__.py +0 -0
  110. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/conftest.py +0 -0
  111. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/bl01t-deployment/apps/values.yaml +0 -0
  112. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/bl01t-services/services/bl01t-ea-test-01/Chart.yaml +0 -0
  113. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/bl01t-services/services/bl01t-ea-test-01/config/ioc.db +0 -0
  114. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/bl01t-services/services/bl01t-ea-test-01/config/ioc.yaml +0 -0
  115. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/bl01t-services/services/bl01t-ea-test-01/templates/configmap.yaml +0 -0
  116. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/bl01t-services/services/bl01t-ea-test-01/values.yaml +0 -0
  117. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/bl01t-services/services/bl01t-ea-test-02/Chart.yaml +0 -0
  118. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/bl01t-services/services/bl01t-ea-test-02/values.yaml +0 -0
  119. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/bl01t-services/services/dls-aravis/Chart.yaml +0 -0
  120. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/bl01t-services/services/dls-aravis/config/ioc.yaml +0 -0
  121. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/bl01t-services/services/dls-aravis/templates/configmap.yaml +0 -0
  122. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/bl01t-services/services/dls-aravis/values.yaml +0 -0
  123. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/bl01t-services/services/values.yaml +0 -0
  124. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/cli.yaml +0 -0
  125. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/k8s.yaml +0 -0
  126. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/data/yaml.yaml +0 -0
  127. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/test_argocd.py +0 -0
  128. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/test_cli.py +0 -0
  129. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/test_demo.py +0 -0
  130. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/test_k8s.py +0 -0
  131. {edge_containers_cli-5.2.1 → edge_containers_cli-5.3.0a3}/tests/test_unit.py +0 -0
@@ -1,5 +1,5 @@
1
1
  # Changes here will be overwritten by Copier
2
- _commit: 5.0.2
2
+ _commit: 5.2.0
3
3
  _src_path: gh:DiamondLightSource/python-copier-template
4
4
  author_email: giles.knap@gmail.com
5
5
  author_name: Giles Knap
@@ -7,7 +7,7 @@ description: CLI for deploying and managing epics containers IOCs and services
7
7
  distribution_name: edge-containers-cli
8
8
  docker: true
9
9
  docker_debug: false
10
- docs_type: README
10
+ docs_type: sphinx
11
11
  git_platform: github.com
12
12
  github_org: epics-containers
13
13
  package_name: edge_containers_cli
@@ -24,4 +24,4 @@ It is recommended that developers use a [vscode devcontainer](https://code.visua
24
24
 
25
25
  This project was created using the [Diamond Light Source Copier Template](https://github.com/DiamondLightSource/python-copier-template) for Python projects.
26
26
 
27
- For more information on common tasks like setting up a developer environment, running the tests, and setting a pre-commit hook, see the template's [How-to guides](https://diamondlightsource.github.io/python-copier-template/5.0.2/how-to.html).
27
+ For more information on common tasks like setting up a developer environment, running the tests, and setting a pre-commit hook, see the template's [How-to guides](https://diamondlightsource.github.io/python-copier-template/5.2.0/how-to.html).
@@ -0,0 +1,55 @@
1
+ on:
2
+ workflow_call:
3
+
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+
9
+ steps:
10
+ - name: Avoid git conflicts when tag and branch pushed at same time
11
+ if: github.ref_type == 'tag'
12
+ run: sleep 60
13
+
14
+ - name: Checkout
15
+ uses: actions/checkout@v5
16
+ with:
17
+ # Need this to get version number from last tag
18
+ fetch-depth: 0
19
+
20
+ - name: Install system packages
21
+ run: sudo apt-get install graphviz
22
+
23
+ - name: Install uv
24
+ uses: astral-sh/setup-uv@v7
25
+
26
+ - name: Build docs
27
+ run: uv run --locked tox -e docs
28
+
29
+ - name: Remove environment.pickle
30
+ run: rm build/html/.doctrees/environment.pickle
31
+
32
+ - name: Upload built docs artifact
33
+ uses: actions/upload-artifact@v4
34
+ with:
35
+ name: docs
36
+ path: build
37
+
38
+ - name: Sanitize ref name for docs version
39
+ run: echo "DOCS_VERSION=${GITHUB_REF_NAME//[^A-Za-z0-9._-]/_}" >> $GITHUB_ENV
40
+
41
+ - name: Move to versioned directory
42
+ run: mv build/html .github/pages/$DOCS_VERSION
43
+
44
+ - name: Write switcher.json
45
+ run: python .github/pages/make_switcher.py --add $DOCS_VERSION ${{ github.repository }} .github/pages/switcher.json
46
+
47
+ - name: Publish Docs to gh-pages
48
+ if: github.ref_type == 'tag' || github.ref_name == 'main'
49
+ # We pin to the SHA, not the tag, for security reasons.
50
+ # https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions
51
+ uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4.0.0
52
+ with:
53
+ github_token: ${{ secrets.GITHUB_TOKEN }}
54
+ publish_dir: .github/pages
55
+ keep_files: true
@@ -19,7 +19,7 @@ jobs:
19
19
  strategy:
20
20
  matrix:
21
21
  runs-on: ["ubuntu-latest"] # can add windows-latest, macos-latest
22
- python-version: ["3.11", "3.12", "3.13"]
22
+ python-version: ["3.11", "3.12", "3.13", "3.14"]
23
23
  fail-fast: false
24
24
  uses: ./.github/workflows/_test.yml
25
25
  with:
@@ -36,6 +36,11 @@ jobs:
36
36
  contents: read
37
37
  packages: write
38
38
 
39
+ docs:
40
+ uses: ./.github/workflows/_docs.yml
41
+ permissions:
42
+ contents: write
43
+
39
44
  dist:
40
45
  uses: ./.github/workflows/_dist.yml
41
46
 
@@ -47,7 +52,7 @@ jobs:
47
52
  id-token: write
48
53
 
49
54
  release:
50
- needs: [dist, test]
55
+ needs: [dist, test, docs]
51
56
  if: github.ref_type == 'tag'
52
57
  uses: ./.github/workflows/_release.yml
53
58
  permissions:
@@ -0,0 +1,13 @@
1
+ name: Periodic
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ schedule:
6
+ # Run weekly to check URL links still resolve
7
+ - cron: "0 8 * * WED"
8
+
9
+ jobs:
10
+ linkcheck:
11
+ uses: ./.github/workflows/_tox.yml
12
+ with:
13
+ tox: docs -- -b linkcheck
@@ -1,6 +1,6 @@
1
1
  # The devcontainer should use the developer target and run as root with podman
2
2
  # or docker with user namespaces.
3
- FROM ghcr.io/diamondlightsource/ubuntu-devcontainer:noble AS developer
3
+ FROM ghcr.io/diamondlightsource/ubuntu-devcontainer:resolute AS developer
4
4
 
5
5
  # Add any system dependencies for the developer/build environment here
6
6
  RUN apt-get update -y && apt-get install -y --no-install-recommends \
@@ -21,11 +21,11 @@ ENV UV_PYTHON_INSTALL_DIR=/python
21
21
 
22
22
  # Sync the project without its dev dependencies
23
23
  RUN --mount=type=cache,target=/root/.cache/uv \
24
- uv sync --locked --no-editable --no-dev
24
+ uv sync --locked --no-editable --no-dev --managed-python
25
25
 
26
26
 
27
27
  # The runtime stage copies the built venv into a runtime container
28
- FROM ubuntu:noble AS runtime
28
+ FROM ubuntu:resolute AS runtime
29
29
 
30
30
  # Add apt-get system dependecies for runtime here if needed
31
31
  # RUN apt-get update -y && apt-get install -y --no-install-recommends \
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: edge-containers-cli
3
- Version: 5.2.1
3
+ Version: 5.3.0a3
4
4
  Summary: CLI for deploying and managing epics containers IOCs and services
5
5
  Author-email: Giles Knap <giles.knap@gmail.com>
6
6
  License: Apache License
@@ -211,6 +211,7 @@ Classifier: License :: OSI Approved :: Apache Software License
211
211
  Classifier: Programming Language :: Python :: 3.11
212
212
  Classifier: Programming Language :: Python :: 3.12
213
213
  Classifier: Programming Language :: Python :: 3.13
214
+ Classifier: Programming Language :: Python :: 3.14
214
215
  Requires-Python: >=3.11
215
216
  Description-Content-Type: text/markdown
216
217
  License-File: LICENSE
@@ -242,9 +243,12 @@ For detailed documentation on the framework that this supports see:
242
243
  https://epics-containers.github.io/
243
244
 
244
245
 
245
- Source | <https://github.com/epics-containers/edge-containers-cli>
246
+ What | Where
246
247
  :---: | :---:
248
+ Source | <https://github.com/epics-containers/edge-containers-cli>
247
249
  PyPI | `pip install edge-containers-cli`
250
+ Docker | `docker run ghcr.io/epics-containers/edge-containers-cli:latest`
251
+ Documentation | <https://epics-containers.github.io/edge-containers-cli>
248
252
  Releases | <https://github.com/epics-containers/edge-containers-cli/releases>
249
253
 
250
254
 
@@ -265,8 +269,12 @@ To demo the TUI as a web application:
265
269
 
266
270
  Dashboard:
267
271
 
268
- ![screenshot](docs/images/ec-web.png)
272
+ ![screenshot](https://raw.githubusercontent.com/epics-containers/edge-containers-cli/main/docs/images/ec-web.png)
269
273
 
270
274
  IOC logs:
271
275
 
272
- ![screenshot](docs/images/ec-logs.png)
276
+ ![screenshot](https://raw.githubusercontent.com/epics-containers/edge-containers-cli/main/docs/images/ec-logs.png)
277
+
278
+ <!-- README only content. Anything below this line won't be included in index.md -->
279
+
280
+ See https://epics-containers.github.io/edge-containers-cli for more detailed documentation.
@@ -16,9 +16,12 @@ For detailed documentation on the framework that this supports see:
16
16
  https://epics-containers.github.io/
17
17
 
18
18
 
19
- Source | <https://github.com/epics-containers/edge-containers-cli>
19
+ What | Where
20
20
  :---: | :---:
21
+ Source | <https://github.com/epics-containers/edge-containers-cli>
21
22
  PyPI | `pip install edge-containers-cli`
23
+ Docker | `docker run ghcr.io/epics-containers/edge-containers-cli:latest`
24
+ Documentation | <https://epics-containers.github.io/edge-containers-cli>
22
25
  Releases | <https://github.com/epics-containers/edge-containers-cli/releases>
23
26
 
24
27
 
@@ -39,8 +42,12 @@ To demo the TUI as a web application:
39
42
 
40
43
  Dashboard:
41
44
 
42
- ![screenshot](docs/images/ec-web.png)
45
+ ![screenshot](https://raw.githubusercontent.com/epics-containers/edge-containers-cli/main/docs/images/ec-web.png)
43
46
 
44
47
  IOC logs:
45
48
 
46
- ![screenshot](docs/images/ec-logs.png)
49
+ ![screenshot](https://raw.githubusercontent.com/epics-containers/edge-containers-cli/main/docs/images/ec-logs.png)
50
+
51
+ <!-- README only content. Anything below this line won't be included in index.md -->
52
+
53
+ See https://epics-containers.github.io/edge-containers-cli for more detailed documentation.
@@ -0,0 +1,16 @@
1
+ :orphan:
2
+
3
+ ..
4
+ This page is not included in the TOC tree, but must exist so that the
5
+ autosummary pages are generated for edge_containers_cli and all its
6
+ subpackages
7
+
8
+ API
9
+ ===
10
+
11
+ .. autosummary::
12
+ :toctree: _api
13
+ :template: custom-module-template.rst
14
+ :recursive:
15
+
16
+ edge_containers_cli
@@ -0,0 +1,37 @@
1
+ {{ ('``' + fullname + '``') | underline }}
2
+
3
+ {%- set filtered_members = [] %}
4
+ {%- for item in members %}
5
+ {%- if item in functions + classes + exceptions + attributes %}
6
+ {% set _ = filtered_members.append(item) %}
7
+ {%- endif %}
8
+ {%- endfor %}
9
+
10
+ .. automodule:: {{ fullname }}
11
+ :members:
12
+
13
+ {% block modules %}
14
+ {% if modules %}
15
+ .. rubric:: Submodules
16
+
17
+ .. autosummary::
18
+ :toctree:
19
+ :template: custom-module-template.rst
20
+ :recursive:
21
+ {% for item in modules %}
22
+ {{ item }}
23
+ {%- endfor %}
24
+ {% endif %}
25
+ {% endblock %}
26
+
27
+ {% block members %}
28
+ {% if filtered_members %}
29
+ .. rubric:: Members
30
+
31
+ .. autosummary::
32
+ :nosignatures:
33
+ {% for item in filtered_members %}
34
+ {{ item }}
35
+ {%- endfor %}
36
+ {% endif %}
37
+ {% endblock %}
@@ -1,8 +1,9 @@
1
- # Configuration file for the Sphinx documentation builder.
2
- #
3
- # This file only contains a selection of the most common options. For a full
4
- # list see the documentation:
5
- # https://www.sphinx-doc.org/en/master/usage/configuration.html
1
+ """Configuration file for the Sphinx documentation builder.
2
+
3
+ This file only contains a selection of the most common options. For a full
4
+ list see the documentation:
5
+ https://www.sphinx-doc.org/en/master/usage/configuration.html
6
+ """
6
7
 
7
8
  import sys
8
9
  from pathlib import Path
@@ -32,6 +33,8 @@ else:
32
33
  extensions = [
33
34
  # Use this for generating API docs
34
35
  "sphinx.ext.autodoc",
36
+ # and making summary tables at the top of API docs
37
+ "sphinx.ext.autosummary",
35
38
  # This can parse google style docstrings
36
39
  "sphinx.ext.napoleon",
37
40
  # For linking to external sphinx documentation
@@ -44,8 +47,13 @@ extensions = [
44
47
  "sphinx_copybutton",
45
48
  # For the card element
46
49
  "sphinx_design",
50
+ # So we can write markdown files
51
+ "myst_parser",
47
52
  ]
48
53
 
54
+ # So we can use the ::: syntax
55
+ myst_enable_extensions = ["colon_fence"]
56
+
49
57
  # If true, Sphinx will warn about all references where the target cannot
50
58
  # be found.
51
59
  nitpicky = True
@@ -75,6 +83,12 @@ autodoc_member_order = "bysource"
75
83
  # Don't inherit docstrings from baseclasses
76
84
  autodoc_inherit_docstrings = False
77
85
 
86
+ # Document only what is in __all__
87
+ autosummary_ignore_module_all = False
88
+
89
+ # Add any paths that contain templates here, relative to this directory.
90
+ templates_path = ["_templates"]
91
+
78
92
  # Output graphviz directive produced images in a scalable format
79
93
  graphviz_output_format = "svg"
80
94
 
@@ -82,9 +96,6 @@ graphviz_output_format = "svg"
82
96
  # role, that is, for text marked up `like this`
83
97
  default_role = "any"
84
98
 
85
- # The suffix of source filenames.
86
- source_suffix = ".rst"
87
-
88
99
  # The master toctree document.
89
100
  master_doc = "index"
90
101
 
@@ -103,15 +114,6 @@ intersphinx_mapping = {"python": ("https://docs.python.org/3/", None)}
103
114
  # A dictionary of graphviz graph attributes for inheritance diagrams.
104
115
  inheritance_graph_attrs = {"rankdir": "TB"}
105
116
 
106
- # Common links that should be available on every page
107
- rst_epilog = """
108
- .. _Diamond Light Source: http://www.diamond.ac.uk
109
- .. _black: https://github.com/psf/black
110
- .. _ruff: https://beta.ruff.rs/docs/
111
- .. _mypy: http://mypy-lang.org/
112
- .. _pre-commit: https://pre-commit.com/
113
- """
114
-
115
117
  # Ignore localhost links for periodic check that links in docs are valid
116
118
  linkcheck_ignore = [r"http://localhost:\d+/"]
117
119
 
@@ -126,7 +128,7 @@ copybutton_prompt_is_regexp = True
126
128
  # a list of builtin themes.
127
129
  #
128
130
  html_theme = "pydata_sphinx_theme"
129
- github_repo = project
131
+ github_repo = "edge-containers-cli"
130
132
  github_user = "epics-containers"
131
133
  switcher_json = f"https://{github_user}.github.io/{github_repo}/switcher.json"
132
134
  switcher_exists = requests.get(switcher_json).ok
@@ -142,10 +144,10 @@ if not switcher_exists:
142
144
  # Theme options for pydata_sphinx_theme
143
145
  # We don't check switcher because there are 3 possible states for a repo:
144
146
  # 1. New project, docs are not published so there is no switcher
145
- # 2. Existing project with latest skeleton, switcher exists and works
146
- # 3. Existing project with old skeleton that makes broken switcher,
147
+ # 2. Existing project with latest copier template, switcher exists and works
148
+ # 3. Existing project with old copier template that makes broken switcher,
147
149
  # switcher exists but is broken
148
- # Point 3 makes checking switcher difficult, because the updated skeleton
150
+ # Point 3 makes checking switcher difficult, because the updated copier template
149
151
  # will fix the switcher at the end of the docs workflow, but never gets a chance
150
152
  # to complete as the docs build warns and fails.
151
153
  html_theme_options = {
@@ -167,19 +169,13 @@ html_theme_options = {
167
169
  },
168
170
  "check_switcher": False,
169
171
  "navbar_end": ["theme-switcher", "icon-links", "version-switcher"],
170
- "external_links": [
171
- {
172
- "name": "Release Notes",
173
- "url": f"https://github.com/{github_user}/{github_repo}/releases",
174
- }
175
- ],
176
172
  "navigation_with_keys": False,
177
173
  }
178
174
 
179
175
  # A dictionary of values to pass into the template engine’s context for all pages
180
176
  html_context = {
181
177
  "github_user": github_user,
182
- "github_repo": project,
178
+ "github_repo": github_repo,
183
179
  "github_version": version,
184
180
  "doc_path": "docs",
185
181
  }
@@ -192,4 +188,4 @@ html_show_copyright = False
192
188
 
193
189
  # Logo
194
190
  html_logo = "images/dls-logo.svg"
195
- html_favicon = "images/dls-favicon.ico"
191
+ html_favicon = html_logo
@@ -0,0 +1,18 @@
1
+ # 1. Record architecture decisions
2
+
3
+ ## Status
4
+
5
+ Accepted
6
+
7
+ ## Context
8
+
9
+ We need to record the architectural decisions made on this project.
10
+
11
+ ## Decision
12
+
13
+ We will use Architecture Decision Records, as [described by Michael Nygard](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions).
14
+
15
+ ## Consequences
16
+
17
+ See Michael Nygard's article, linked above. To create new ADRs we will copy and
18
+ paste from existing ones.
@@ -0,0 +1,28 @@
1
+ # 2. Adopt python-copier-template for project structure
2
+
3
+ ## Status
4
+
5
+ Accepted
6
+
7
+ ## Context
8
+
9
+ We should use the following [python-copier-template](https://github.com/DiamondLightSource/python-copier-template).
10
+ The template will ensure consistency in developer
11
+ environments and package management.
12
+
13
+ ## Decision
14
+
15
+ We have switched to using the template.
16
+
17
+ ## Consequences
18
+
19
+ This module will use a fixed set of tools as developed in `python-copier-template`
20
+ and can pull from this template to update the packaging to the latest techniques.
21
+
22
+ As such, the developer environment may have changed, the following could be
23
+ different:
24
+
25
+ - linting
26
+ - formatting
27
+ - pip venv setup
28
+ - CI/CD
@@ -0,0 +1,19 @@
1
+ # 3. Short descriptive title
2
+
3
+ Date: Today's date
4
+
5
+ ## Status
6
+
7
+ Accepted
8
+
9
+ ## Context
10
+
11
+ Background to allow us to make the decision, to show how we arrived at our conclusions.
12
+
13
+ ## Decision
14
+
15
+ What decision we made.
16
+
17
+ ## Consequences
18
+
19
+ What we will do as a result of this decision.
@@ -0,0 +1,12 @@
1
+ # Architectural Decision Records
2
+
3
+ Architectural decisions are made throughout a project's lifetime. As a way of keeping track of these decisions, we record these decisions in Architecture Decision Records (ADRs) listed below.
4
+
5
+ ```{toctree}
6
+ :glob: true
7
+ :maxdepth: 1
8
+
9
+ decisions/*
10
+ ```
11
+
12
+ For more information on ADRs see this [blog by Michael Nygard](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions).
@@ -0,0 +1,10 @@
1
+ # Explanations
2
+
3
+ Explanations of how it works and why it works that way.
4
+
5
+ ```{toctree}
6
+ :maxdepth: 1
7
+ :glob:
8
+
9
+ explanations/*
10
+ ```
@@ -0,0 +1,3 @@
1
+ # Index
2
+
3
+ <!-- Placeholder that sphinx will replace with a generated index -->
@@ -0,0 +1,2 @@
1
+ ```{include} ../../.github/CONTRIBUTING.md
2
+ ```
@@ -0,0 +1,14 @@
1
+ # Run in a container
2
+
3
+ Pre-built containers with edge-containers-cli and its dependencies already
4
+ installed are available on [Github Container Registry](https://ghcr.io/epics-containers/edge-containers-cli).
5
+
6
+ ## Starting the container
7
+
8
+ To pull the container from github container registry and run:
9
+
10
+ ```
11
+ $ docker run ghcr.io/epics-containers/edge-containers-cli:latest --version
12
+ ```
13
+
14
+ To get a released version, use a numbered release instead of `latest`.
@@ -0,0 +1,10 @@
1
+ # How-to Guides
2
+
3
+ Practical step-by-step guides for the more experienced user.
4
+
5
+ ```{toctree}
6
+ :maxdepth: 1
7
+ :glob:
8
+
9
+ how-to/*
10
+ ```
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="120" height="120" version="1.1" xmlns="http://www.w3.org/2000/svg">
3
+ <g transform="matrix(.37271 0 0 .37271 -3.343e-7 .0014878)" stroke-width="2.6831">
4
+ <path d="m0 160.98c0-88.908 72.073-160.98 160.98-160.98 88.911 0 160.99 72.073 160.99 160.98 0 88.907-72.075 160.98-160.99 160.98-88.908 0-160.98-72.073-160.98-160.98" fill="#fff"/>
5
+ <path d="m222.71 254.64c-8.56 1.2229-11.317 7.8871-6.1307 14.802l23.701 31.598c23.669-13.431 43.611-32.657 57.855-55.791l-75.425 9.3905" fill="#facf07"/>
6
+ <path d="m99.553 220.97c8.5615-1.2224 11.319-7.8813 6.1319-14.797l-61.997-82.665c-5.1911-6.916-3.7729-8.3307 3.1437-3.144l82.652 61.988c6.9161 5.192 13.575 2.4293 14.797-6.1267l14.613-150.7c1.2187-8.5613 3.2227-8.5613 4.4467 0l14.612 150.72c1.224 8.5573 7.8827 11.315 14.799 6.128l82.684-62.011c6.916-5.1867 8.3293-3.772 3.1427 3.144l-62.001 82.669c-5.1867 6.9161-2.4293 13.575 6.132 14.799l83.085 10.343c10.348-21.254 16.16-45.119 16.16-70.35 0-88.897-72.069-160.97-160.97-160.97-88.902 0-160.97 72.069-160.97 160.97 0 25.244 5.8208 49.123 16.173 70.381l83.369-10.38" fill="#facf07"/>
7
+ <path d="m144.28 299.39c-1.2227-8.5563-7.8813-11.314-14.798-6.1307l-24.743 18.561c13.459 5.0198 27.784 8.2651 42.676 9.5104l-3.136-21.941" fill="#facf07"/>
8
+ <path d="m177.95 299.37-3.1347 21.941c14.869-1.2682 29.163-4.5323 42.604-9.5682l-24.667-18.504c-6.9213-5.188-13.58-2.4255-14.803 6.1308" fill="#facf07"/>
9
+ <path d="m99.553 254.65-75.744-9.4307c14.288 23.215 34.315 42.503 58.086 55.946l23.79-31.718c5.1875-6.9145 2.4296-13.573-6.1319-14.797" fill="#facf07"/>
10
+ </g>
11
+ </svg>
@@ -0,0 +1,56 @@
1
+ ---
2
+ html_theme.sidebar_secondary.remove: true
3
+ ---
4
+
5
+ ```{include} ../README.md
6
+ :end-before: <!-- README only content
7
+ ```
8
+
9
+
10
+ How the documentation is structured
11
+ -----------------------------------
12
+
13
+ Documentation is split into [four categories](https://diataxis.fr), also accessible from links in the top bar.
14
+
15
+ <!-- https://sphinx-design.readthedocs.io/en/latest/grids.html -->
16
+
17
+ ::::{grid} 2
18
+ :gutter: 4
19
+
20
+ :::{grid-item-card} {material-regular}`directions_walk;2em`
21
+ ```{toctree}
22
+ :maxdepth: 2
23
+ tutorials
24
+ ```
25
+ +++
26
+ Tutorials for installation and typical usage. New users start here.
27
+ :::
28
+
29
+ :::{grid-item-card} {material-regular}`directions;2em`
30
+ ```{toctree}
31
+ :maxdepth: 2
32
+ how-to
33
+ ```
34
+ +++
35
+ Practical step-by-step guides for the more experienced user.
36
+ :::
37
+
38
+ :::{grid-item-card} {material-regular}`info;2em`
39
+ ```{toctree}
40
+ :maxdepth: 2
41
+ explanations
42
+ ```
43
+ +++
44
+ Explanations of how it works and why it works that way.
45
+ :::
46
+
47
+ :::{grid-item-card} {material-regular}`menu_book;2em`
48
+ ```{toctree}
49
+ :maxdepth: 2
50
+ reference
51
+ ```
52
+ +++
53
+ Technical reference material including APIs and release notes.
54
+ :::
55
+
56
+ ::::