ansys-saf-cli 4.1.dev0__py3-none-any.whl

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 (143) hide show
  1. ansys/saf/cli/__init__.py +15 -0
  2. ansys/saf/cli/_cli/__init__.py +15 -0
  3. ansys/saf/cli/_cli/main.py +816 -0
  4. ansys/saf/cli/_cli/py.typed +0 -0
  5. ansys/saf/cli/_config/__init__.py +15 -0
  6. ansys/saf/cli/_config/const.py +45 -0
  7. ansys/saf/cli/_config/py.typed +0 -0
  8. ansys/saf/cli/_database/__init__.py +15 -0
  9. ansys/saf/cli/_database/manager.py +94 -0
  10. ansys/saf/cli/_database/models.py +53 -0
  11. ansys/saf/cli/_database/py.typed +0 -0
  12. ansys/saf/cli/_solutions/__init__.py +15 -0
  13. ansys/saf/cli/_solutions/add_step.py +256 -0
  14. ansys/saf/cli/_solutions/dependencies.py +162 -0
  15. ansys/saf/cli/_solutions/environment.py +1145 -0
  16. ansys/saf/cli/_solutions/plugins.py +254 -0
  17. ansys/saf/cli/_solutions/py.typed +0 -0
  18. ansys/saf/cli/_solutions/scaffolding.py +73 -0
  19. ansys/saf/cli/_solutions/templates/__init__.py +15 -0
  20. ansys/saf/cli/_solutions/templates/py.typed +0 -0
  21. ansys/saf/cli/_solutions/templates/solution/cookiecutter.json +18 -0
  22. ansys/saf/cli/_solutions/templates/solution/hooks/post_gen_project.py +54 -0
  23. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/.codespell.ignore +2 -0
  24. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/.devcontainer/devcontainer.json +26 -0
  25. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/.env +5 -0
  26. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/.flake8 +8 -0
  27. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/.github/labeler.yml +9 -0
  28. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/.github/labels.yml +27 -0
  29. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/.github/workflows/build-release.yml +175 -0
  30. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/.github/workflows/label.yml +89 -0
  31. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/.gitignore +137 -0
  32. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/.pre-commit-config.yaml +48 -0
  33. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/.release-please-manifest.json +3 -0
  34. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/.reuse/templates/copyright.jinja2 +1 -0
  35. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/.vscode/extensions.json +8 -0
  36. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/.vscode/launch.json +28 -0
  37. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/AUTHORS +12 -0
  38. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/CHANGELOG.md +1 -0
  39. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/CODEOWNERS +3 -0
  40. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/CODE_OF_CONDUCT.md +65 -0
  41. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/CONTRIBUTING.md +2 -0
  42. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/CONTRIBUTORS.md +9 -0
  43. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/LICENSE.rst +41 -0
  44. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/README.md +69 -0
  45. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/deployments/Dockerfile +43 -0
  46. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/deployments/README.md +13 -0
  47. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/deployments/distributed-deployment-template/.env +27 -0
  48. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/deployments/distributed-deployment-template/compose.yaml +132 -0
  49. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/deployments/standalone/.env +20 -0
  50. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/deployments/standalone/compose.yaml +118 -0
  51. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/deployments/standalone-with-hps/.env +28 -0
  52. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/deployments/standalone-with-hps/compose.yaml +146 -0
  53. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/deployments/standalone-with-minerva/.env +25 -0
  54. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/deployments/standalone-with-minerva/compose.yaml +122 -0
  55. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/.vale.ini +28 -0
  56. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/Makefile +30 -0
  57. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/changelog.d/changelog_template.jinja +17 -0
  58. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/make.bat +46 -0
  59. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/source/_static/css/custom.css +8 -0
  60. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/source/_static/images/repository-banner.png +0 -0
  61. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/source/_templates/README.md +1 -0
  62. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/source/changelog.rst +12 -0
  63. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/source/conf.py +253 -0
  64. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/source/examples.rst +8 -0
  65. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/source/getting_started/desktop_installation.rst +165 -0
  66. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/source/getting_started/docker_installation.rst +68 -0
  67. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/source/index.rst +51 -0
  68. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/source/user_guide/index.rst +6 -0
  69. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/styles/config/vocabularies/ANSYS/accept.txt +5 -0
  70. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/doc/styles/config/vocabularies/ANSYS/reject.txt +0 -0
  71. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/examples/README.md +1 -0
  72. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/lock_files/dash/poetry.lock +7621 -0
  73. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/lock_files/no_ui/poetry.lock +7173 -0
  74. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/minerva/cli/README.md +3 -0
  75. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/minerva/oauth/App_Data/Certificates/README.md +3 -0
  76. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/minerva/oauth/oauth.config +9 -0
  77. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/pyproject.toml +192 -0
  78. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/release-please-config.json +9 -0
  79. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/sonar-project.properties +12 -0
  80. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/__init__.py +3 -0
  81. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/main.py +19 -0
  82. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/portal_assets/application.svg +36 -0
  83. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/portal_assets/description.json +3 -0
  84. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/portal_assets/project.svg +1 -0
  85. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/solution/definition.py +24 -0
  86. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/solution/first_step.py +34 -0
  87. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/solution/method_assets/README.md +1 -0
  88. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/solution/scripts/README.md +1 -0
  89. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/solution/scripts/assets/README.md +1 -0
  90. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/solution/second_step.py +12 -0
  91. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/app.py +30 -0
  92. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/css/all.css +9 -0
  93. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/css/bootstrap.min.css +6 -0
  94. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/css/style.css +47 -0
  95. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/dark/carbon--ibm-engineering-workflow-mgmt.svg +1 -0
  96. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/dark/carbon--return.svg +1 -0
  97. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/dark/game-icons--crossed-air-flows.svg +1 -0
  98. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/dark/material-symbols--home.svg +1 -0
  99. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/dark/radix-icons--moon.svg +1 -0
  100. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/dark/radix-icons--sun.svg +1 -0
  101. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/dark/streamline--startup-solid.svg +1 -0
  102. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/dark/teenyicons--doc-solid.svg +1 -0
  103. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/light/carbon--ibm-engineering-workflow-mgmt.svg +1 -0
  104. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/light/carbon--return.svg +1 -0
  105. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/light/game-icons--crossed-air-flows.svg +1 -0
  106. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/light/material-symbols--home.svg +1 -0
  107. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/light/radix-icons--moon.svg +1 -0
  108. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/light/radix-icons--sun.svg +1 -0
  109. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/light/streamline--startup-solid.svg +1 -0
  110. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/icons/light/teenyicons--doc-solid.svg +1 -0
  111. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/images/README.md +1 -0
  112. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/images/workflow-placeholder.png +0 -0
  113. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/installer/README.md +5 -0
  114. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/logos/dark/placeholder_logo.png +0 -0
  115. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/logos/light/placeholder_logo.png +0 -0
  116. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/orchestrator/README.md +3 -0
  117. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/pywebview/README.md +3 -0
  118. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/assets/scripts/README.md +1 -0
  119. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/components/README.md +1 -0
  120. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/pages/about_page.py +71 -0
  121. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/pages/first_page.py +147 -0
  122. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/pages/page.py +367 -0
  123. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/src/{{ cookiecutter.__solution_namespace_path }}/{{cookiecutter.__solution_module_name}}/ui/pages/second_page.py +32 -0
  124. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/tests/common_test_files/README.md +1 -0
  125. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/tests/conftest.py +37 -0
  126. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/tests/unit/test_solution_api.py +42 -0
  127. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/tests/unit/test_solution_ui.py +30 -0
  128. ansys/saf/cli/_solutions/templates/solution/{{cookiecutter.__solution_name}}/tox.ini +56 -0
  129. ansys/saf/cli/_utilities/__init__.py +15 -0
  130. ansys/saf/cli/_utilities/archiver.py +67 -0
  131. ansys/saf/cli/_utilities/backup.py +181 -0
  132. ansys/saf/cli/_utilities/conversion.py +64 -0
  133. ansys/saf/cli/_utilities/platform.py +26 -0
  134. ansys/saf/cli/_utilities/py.typed +0 -0
  135. ansys/saf/cli/_utilities/solution_modules.py +173 -0
  136. ansys/saf/cli/integrations/solutions_manager.py +64 -0
  137. ansys/saf/cli/py.typed +0 -0
  138. ansys_saf_cli-4.1.dev0.dist-info/METADATA +201 -0
  139. ansys_saf_cli-4.1.dev0.dist-info/RECORD +143 -0
  140. ansys_saf_cli-4.1.dev0.dist-info/WHEEL +4 -0
  141. ansys_saf_cli-4.1.dev0.dist-info/entry_points.txt +3 -0
  142. ansys_saf_cli-4.1.dev0.dist-info/licenses/AUTHORS +12 -0
  143. ansys_saf_cli-4.1.dev0.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,122 @@
1
+ name: {{ cookiecutter.__docker_name }}
2
+
3
+ networks:
4
+ {{ cookiecutter.__docker_name }}-internal:
5
+ internal: true
6
+ {{ cookiecutter.__docker_name }}-external:
7
+ driver: bridge
8
+
9
+ services:
10
+ {{ cookiecutter.__docker_name }}-postgresql:
11
+ image: postgres:16.0
12
+ networks:
13
+ - {{ cookiecutter.__docker_name }}-internal
14
+ environment:
15
+ - POSTGRES_USER=glow
16
+ - POSTGRES_PASSWORD=glow
17
+ healthcheck:
18
+ test: [ "CMD", "pg_isready", "-U", "glow" ]
19
+ interval: 5s
20
+ retries: 20
21
+ volumes:
22
+ - {{ cookiecutter.__docker_name }}-database:/var/lib/postgresql/data
23
+
24
+ {{ cookiecutter.__docker_name }}-api:
25
+ image: {{ cookiecutter.__docker_name }}-api
26
+ build:
27
+ context: ../../
28
+ dockerfile: deployments/Dockerfile
29
+ target: solution_api
30
+ depends_on:
31
+ {{ cookiecutter.__docker_name }}-postgresql:
32
+ condition: service_healthy
33
+ networks:
34
+ - {{ cookiecutter.__docker_name }}-external
35
+ - {{ cookiecutter.__docker_name }}-internal
36
+ env_file:
37
+ - .env
38
+ init: true # to ensure reaping of killed child processes left by long-running transactions
39
+ environment:
40
+ - GLOW_API_HOST=0.0.0.0
41
+ - GLOW_API_PORT=50000
42
+ - GLOW_DATABASE_TYPE=postgresql
43
+ - GLOW_DATABASE_LOCATION=postgresql://glow:glow@{{ cookiecutter.__docker_name }}-postgresql:5432
44
+ - GLOW_PROJECT_FILES_DIRECTORY=/projects
45
+ - GLOW_METHOD_EXECUTION_DIRECTORY=/transactions
46
+ - GLOW_EXTERNAL_API_URL=http://127.0.0.1:${GLOW_API_CONTAINER_PORT}
47
+ - OTEL_EXPORTER_OTLP_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT}
48
+ - GLOW_DATA_REPOSITORY_TYPE=Minerva
49
+ - ANS_MINERVA_CLI=/usr/local/share/minerva/cli/AnsysMinerva_CLI
50
+ ports:
51
+ - ${GLOW_API_CONTAINER_PORT}:50000
52
+ healthcheck:
53
+ test: [ "CMD", "curl", "-f", "http://localhost:50000/health" ]
54
+ interval: 5s
55
+ retries: 20
56
+ volumes:
57
+ - ${GLOW_PROJECTS_DIR_SOLUTION}:/projects
58
+ - ${GLOW_TRANSACTIONS_DIR_SOLUTION}:/transactions
59
+ develop:
60
+ watch:
61
+ - action: sync+restart
62
+ path: /src/{{ cookiecutter.__solution_namespace_path }}/{{ cookiecutter.__solution_module_name }}/solution
63
+ target: /app/src/{{ cookiecutter.__solution_namespace_path }}/{{ cookiecutter.__solution_module_name }}/solution
64
+
65
+ {% if cookiecutter.__ui_framework != "none" %}
66
+
67
+ {{ cookiecutter.__docker_name }}-ui:
68
+ image: {{ cookiecutter.__docker_name }}-ui
69
+ build:
70
+ context: ../../
71
+ dockerfile: deployments/Dockerfile
72
+ target: solution_ui
73
+ depends_on:
74
+ {{ cookiecutter.__docker_name }}-api:
75
+ condition: service_healthy
76
+ networks:
77
+ - {{ cookiecutter.__docker_name }}-external
78
+ env_file:
79
+ - .env
80
+ environment:
81
+ - GLOW_DEPLOYMENT=DockerCompose
82
+ - GLOW_UI_HOST=0.0.0.0
83
+ - GLOW_UI_PORT=50001
84
+ - GLOW_API_URL=http://{{ cookiecutter.__docker_name }}-api:50000
85
+ - GLOW_UI_PROJECT_FILES_DIRECTORY=/projects
86
+ - GLOW_WS_EVENTS_ADDR=127.0.0.1:${GLOW_API_CONTAINER_PORT}
87
+ - GLOW_EXTERNAL_API_URL=http://127.0.0.1:${GLOW_API_CONTAINER_PORT}
88
+ - GLOW_DATA_REPOSITORY_TYPE=Minerva
89
+ - ANS_MINERVA_CLI=/usr/local/share/minerva/cli/AnsysMinerva_CLI
90
+ ports:
91
+ - ${GLOW_UI_CONTAINER_PORT}:50001
92
+ healthcheck:
93
+ test: [ "CMD", "curl", "-f", "http://localhost:50001/health" ]
94
+ interval: 5s
95
+ retries: 20
96
+ volumes:
97
+ - ${GLOW_PROJECTS_DIR_SOLUTION}:/projects
98
+ develop:
99
+ watch:
100
+ - action: sync+restart
101
+ path: /src/{{ cookiecutter.__solution_namespace_path }}/{{ cookiecutter.__solution_module_name }}/ui
102
+ target: /app/src/{{ cookiecutter.__solution_namespace_path }}/{{ cookiecutter.__solution_module_name }}/ui
103
+
104
+ {% endif %}
105
+
106
+ otel-dashboard:
107
+ image: mcr.microsoft.com/dotnet/aspire-dashboard:9.1.0
108
+ ports:
109
+ - 18888:18888 # UI
110
+ - 18889:18889 # OTLP gRPC
111
+ - 18890:18890 # OTLP HTTP
112
+ environment:
113
+ - DASHBOARD__OTLP__AUTHMODE=ApiKey
114
+ # !!! Important !!! For production, replace the following env var with secure values
115
+ # as described here: https://aspire.dev/dashboard/security-considerations/
116
+ - DASHBOARD__FRONTEND__AUTHMODE=Unsecured
117
+ - DASHBOARD__OTLP__PRIMARYAPIKEY=YOU_MUST_GENERATE_A_RANDOM_STRING_AND_REPLACE_THIS
118
+ networks:
119
+ - {{ cookiecutter.__docker_name }}-external
120
+
121
+ volumes:
122
+ {{ cookiecutter.__docker_name }}-database:
@@ -0,0 +1,28 @@
1
+ # Core settings
2
+ # =============
3
+
4
+ # Location of our `styles`
5
+ StylesPath = "styles"
6
+
7
+ # The options are `suggestion`, `warning`, or `error` (defaults to “warning”).
8
+ MinAlertLevel = error
9
+
10
+ # By default, `code` and `tt` are ignored.
11
+ IgnoredScopes = code, tt
12
+
13
+ # By default, `script`, `style`, `pre`, and `figure` are ignored.
14
+ SkippedScopes = script, style, pre, figure
15
+
16
+ # WordTemplate specifies what Vale will consider to be an individual word.
17
+ WordTemplate = \b(?:%s)\b
18
+
19
+ # List of Packages to be used for our guidelines
20
+ Packages = Google
21
+
22
+ # Define the Ansys vocabulary
23
+ Vocab = ANSYS
24
+
25
+ # Apply styles to documentation files
26
+ [*.{md,rst}]
27
+ BasedOnStyles = Vale, Google
28
+ Vale.Terms = NO
@@ -0,0 +1,30 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line.
5
+ SPHINXOPTS = -j auto -W --color --keep-going
6
+ SPHINXBUILD = sphinx-build
7
+ SOURCEDIR = source
8
+ BUILDDIR = _build
9
+
10
+ # Put it first so that "make" without argument is like "make help".
11
+ help:
12
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
13
+
14
+ .PHONY: help Makefile
15
+
16
+ # Catch-all target: route all unknown targets to Sphinx using the new
17
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
18
+ %: Makefile
19
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
20
+
21
+
22
+ # Customized clean due to examples gallery
23
+ clean:
24
+ rm -rf $(BUILDDIR)/*
25
+ rm -rf $(SOURCEDIR)/examples
26
+ find . -type d -name "_autosummary" -exec rm -rf {} +
27
+
28
+ # Customized pdf for svg format images
29
+ pdf:
30
+ @echo "PDF generation is not implemented"
@@ -0,0 +1,17 @@
1
+ {{ '{% if sections[""] %}' }}
2
+ {{ '{% for category, val in definitions.items() if category in sections[""] %}' }}
3
+
4
+ {{ "{{ definitions[category]['name'] }}" }}
5
+ {{ "{% set underline = '^' * definitions[category]['name']|length %}" }}
6
+ {{ '{{ underline }}' }}
7
+
8
+ {{ '{% for text, values in sections[""][category].items() %}' }}
9
+ - {{ '{{ text }}' }} {{ "{{ values|join(', ') }}" }}
10
+ {{ '{% endfor %}' }}
11
+
12
+ {{ '{% endfor %}' }}
13
+ {{ '{% else %}' }}
14
+ No significant changes.
15
+
16
+
17
+ {{ '{% endif %}' }}
@@ -0,0 +1,46 @@
1
+ @ECHO OFF
2
+
3
+ pushd %~dp0
4
+
5
+ REM Command file for Sphinx documentation
6
+
7
+ if "%SPHINXBUILD%" == "" (
8
+ set SPHINXBUILD=sphinx-build
9
+ )
10
+ set SOURCEDIR=source
11
+ set BUILDDIR=_build
12
+
13
+ if "%1" == "" goto help
14
+ if "%1" == "clean" goto clean
15
+ if "%1" == "pdf" goto pdf
16
+
17
+ %SPHINXBUILD% >NUL 2>NUL
18
+ if errorlevel 9009 (
19
+ echo.
20
+ echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
21
+ echo.installed, then set the SPHINXBUILD environment variable to point
22
+ echo.to the full path of the 'sphinx-build' executable. Alternatively you
23
+ echo.may add the Sphinx directory to PATH.
24
+ echo.
25
+ echo.If you don't have Sphinx installed, grab it from
26
+ echo.http://sphinx-doc.org/
27
+ exit /b 1
28
+ )
29
+
30
+ %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
31
+ goto end
32
+
33
+ :pdf
34
+ echo PDF generation is not implemented yet.
35
+ goto end
36
+
37
+ :clean
38
+ rmdir /s /q %BUILDDIR% > /NUL 2>&1
39
+ for /d /r %SOURCEDIR% %%d in (_autosummary) do @if exist "%%d" rmdir /s /q "%%d"
40
+ goto end
41
+
42
+ :help
43
+ %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
44
+
45
+ :end
46
+ popd
@@ -0,0 +1,8 @@
1
+ /*©2025, ANSYS Inc. Unauthorized use, distribution or duplication is prohibited.*/
2
+ body {
3
+ text-align: justify;
4
+ }
5
+
6
+ h1, h2, h3, h4, h5, h6, pre, code {
7
+ text-align: left; /* Keep headings and code blocks left-aligned */
8
+ }
@@ -0,0 +1 @@
1
+ ## Contains templates for the documentation build
@@ -0,0 +1,12 @@
1
+ .. _ref_release_notes:
2
+
3
+ Release notes
4
+ #############
5
+
6
+ This document contains the release notes for the project.
7
+
8
+ .. vale off
9
+
10
+ .. towncrier release notes start
11
+
12
+ .. vale on
@@ -0,0 +1,253 @@
1
+ # Copyright (C) 2023 - 2026 ANSYS, Inc. and/or its affiliates.
2
+
3
+ """Sphinx documentation configuration file."""
4
+
5
+
6
+ from datetime import datetime
7
+ import os
8
+ from pathlib import Path
9
+
10
+ from ansys_sphinx_theme import ansys_favicon, get_version_match
11
+ from sphinx.builders.latex import LaTeXBuilder
12
+ import toml
13
+
14
+ BRANCH = "main"
15
+ ORGANIZATION_NAME = "ansys"
16
+ DOC_PATH = "doc/source"
17
+
18
+ # ---------- // Project Information // --------------------------------------------------------------------------------
19
+
20
+ LaTeXBuilder.supported_image_types = ["image/png", "image/pdf", "image/svg+xml"]
21
+ configuration_file = Path(__file__).parent.parent.parent.absolute() / "pyproject.toml"
22
+ if configuration_file.exists():
23
+ configuration = toml.load(configuration_file)
24
+ else:
25
+ raise FileNotFoundError("No configuration file at project's root.")
26
+
27
+ project_name = project = configuration.get("tool", {}).get("poetry", {}).get("name", None)
28
+ package_version = configuration.get("tool", {}).get("poetry", {}).get("version", None)
29
+ cname = os.getenv("DOCUMENTATION_CNAME")
30
+ repository_name = os.getenv("REPOSITORY_NAME")
31
+
32
+ copyright = f"(c) {datetime.now().year} ANSYS, Inc. All rights reserved"
33
+ author = "ANSYS Inc."
34
+ switcher_version = get_version_match(package_version)
35
+
36
+
37
+ # ---------- // General configuration // ------------------------------------------------------------------------------
38
+
39
+ extensions = [
40
+ "sphinx.ext.autodoc",
41
+ "sphinx.ext.autosummary",
42
+ "numpydoc",
43
+ "sphinx.ext.intersphinx",
44
+ "sphinx_copybutton",
45
+ "sphinx_code_tabs",
46
+ "sphinx.ext.todo",
47
+ "sphinxcontrib.autodoc_pydantic",
48
+ "sphinx_design",
49
+ ]
50
+
51
+ # Intersphinx mapping
52
+ intersphinx_mapping = {
53
+ "python": ("https://docs.python.org/dev", None),
54
+ }
55
+
56
+ # pydantic configuration
57
+ autodoc_pydantic_model_show_json = False
58
+ autodoc_pydantic_model_show_config = False
59
+ autodoc_pydantic_settings_show_json = False
60
+ autodoc_pydantic_model_show_validator_members = False
61
+ autodoc_pydantic_model_show_validator_summary = False
62
+
63
+ suppress_warnings = ["label.*"]
64
+
65
+ # numpydoc configuration
66
+ numpydoc_use_plots = True
67
+ numpydoc_show_class_members = False
68
+ numpydoc_xref_param_type = True
69
+ numpydoc_validate = True
70
+ numpydoc_validation_checks = {
71
+ "GL06", # Found unknown section
72
+ "GL07", # Sections are in the wrong order.
73
+ "GL08", # The object does not have a docstring
74
+ "GL09", # Deprecation warning should precede extended summary
75
+ "GL10", # reST directives {directives} must be followed by two colons
76
+ "SS01", # No summary found
77
+ "SS02", # Summary does not start with a capital letter
78
+ # "SS03", # Summary does not end with a period
79
+ "SS04", # Summary contains heading whitespaces
80
+ # "SS05", # Summary must start with infinitive verb, not third person
81
+ "RT02", # The first line of the Returns section should contain only the
82
+ # type, unless multiple values are being returned"
83
+ }
84
+
85
+ # Favicon
86
+ html_favicon = ansys_favicon
87
+
88
+ # notfound.extension
89
+ notfound_template = "404.rst"
90
+ notfound_urls_prefix = "/../"
91
+
92
+ # static path
93
+ html_static_path = ["_static"]
94
+
95
+ html_css_files = ["css/custom.css"]
96
+
97
+ # Add any paths that contain templates here, relative to this directory.
98
+ templates_path = ["_templates"]
99
+
100
+ # The suffix(es) of source filenames.
101
+ source_suffix = ".rst"
102
+
103
+ # The master toctree document.
104
+ master_doc = "index"
105
+
106
+ # The language for content autogenerated by Sphinx. Refer to documentation
107
+ # for a list of supported languages.
108
+ #
109
+ # This is also used if you do content translation via gettext catalogs.
110
+ # Usually you set "language" from the command line for these cases.
111
+ language = "en"
112
+
113
+ # List of patterns, relative to source directory, that match files and
114
+ # directories to ignore when looking for source files.
115
+ # This pattern also affects html_static_path and html_extra_path.
116
+ exclude_patterns = [
117
+ "_build",
118
+ "Thumbs.db",
119
+ ".DS_Store",
120
+ "links.rst",
121
+ "substitutions.rst",
122
+ ]
123
+
124
+ # If true, `todo` and `todoList` produce output, else they produce nothing.
125
+ todo_include_todos = False
126
+
127
+ autodoc_mock_imports = ["ansys.platform", "opentelemetry"]
128
+ numfig = True
129
+ numfig_secnum_depth = 1
130
+ numfig_format = {
131
+ "figure": "Figure %s ",
132
+ "table": "Table %s ",
133
+ "code-block": "Code sample %s ",
134
+ }
135
+
136
+ # ---------- // Copy button customization // --------------------------------------------------------------------------
137
+
138
+ # exclude traditional Python prompts from the copied code
139
+ copybutton_prompt_text = r">>> ?|\.\.\. "
140
+ copybutton_prompt_is_regexp = True
141
+
142
+
143
+ # ---------- // Sphinx Gallery Options // -----------------------------------------------------------------------------
144
+
145
+
146
+ # ---------- // Options for HTML output // ----------------------------------------------------------------------------
147
+
148
+ html_short_title = html_title = "Ansys Solutions A"
149
+ html_theme = "ansys_sphinx_theme"
150
+ html_theme_options = {
151
+ "logo": "ansys",
152
+ "show_prev_next": False,
153
+ "show_breadcrumbs": True,
154
+ "collapse_navigation": True,
155
+ "use_edit_page_button": False,
156
+ "additional_breadcrumbs": [
157
+ ("Ansys", "https://github.com/ansys"),
158
+ ],
159
+ "check_switcher": False,
160
+ }
161
+
162
+ rst_epilog = f"""
163
+ .. |version| replace:: v{package_version}
164
+ """
165
+
166
+ if cname and switcher_version:
167
+ html_theme_options["switcher"] = (
168
+ {
169
+ "json_url": f"https://{cname}/versions.json",
170
+ "version_match": switcher_version,
171
+ },
172
+ )
173
+
174
+ if str(os.getenv("DISABLE_GITHUB_URL_LINK")).lower() != "true" and repository_name:
175
+ html_theme_options["github_url"] = f"https://github.com/{repository_name}"
176
+
177
+ html_context = {
178
+ "display_github": False, # Integrate GitHub
179
+ "github_user": ORGANIZATION_NAME,
180
+ "github_repo": repository_name,
181
+ "github_version": BRANCH,
182
+ "doc_path": DOC_PATH,
183
+ "default_mode": "dark",
184
+ }
185
+ html_show_sourcelink = False
186
+ html_compact_lists = False
187
+
188
+
189
+ # ---------- // Options for HTMLHelp output // ------------------------------------------------------------------------
190
+
191
+ # Output file base name for HTML help builder.
192
+ htmlhelp_basename = "ansys-solutions-a-documentation"
193
+
194
+
195
+ # ---------- // Options for LaTeX output // ---------------------------------------------------------------------------
196
+
197
+ latex_elements = {}
198
+
199
+ # Grouping the document tree into LaTeX files. List of tuples
200
+ # (source start file, target name, title,
201
+ # author, documentclass [howto, manual, or own class]).
202
+ latex_documents = [
203
+ (
204
+ master_doc,
205
+ f"Ansys-Solutions-a-Documentation-{package_version}.tex",
206
+ "Ansys Solutions A Documentation",
207
+ author,
208
+ "manual",
209
+ ),
210
+ ]
211
+
212
+
213
+ # ---------- // [Options for manual page output // --------------------------------------------------------------------
214
+
215
+ # One entry per manual page. List of tuples
216
+ # (source start file, name, description, authors, manual section).
217
+ man_pages = [
218
+ (
219
+ master_doc,
220
+ "Ansys Solutions A",
221
+ "Ansys Solutions A Documentation",
222
+ [author],
223
+ 1,
224
+ )
225
+ ]
226
+
227
+
228
+ # ---------- // Options for Texinfo output // -------------------------------------------------------------------------
229
+
230
+ # Grouping the document tree into Texinfo files. List of tuples
231
+ # (source start file, target name, title, author,
232
+ # dir menu entry, description, category)
233
+ texinfo_documents = [
234
+ (
235
+ master_doc,
236
+ "Ansys Solutions A",
237
+ "Ansys Solutions A Documentation",
238
+ author,
239
+ "Ansys Solutions A",
240
+ "Engineering Software",
241
+ ),
242
+ ]
243
+
244
+ # Keep these while the repository is private
245
+ linkcheck_ignore = [
246
+ "/*",
247
+ "https://pypi.org/project/ansys-solutions-a",
248
+ ]
249
+
250
+ # If we are on a release, we have to ignore the "release" URLs, since it is not
251
+ # available until the release is published.
252
+ if switcher_version != "dev":
253
+ linkcheck_ignore.append(f"https://github.com/ansys/ansys.solutions.a/releases/tag/v{package_version}")
@@ -0,0 +1,8 @@
1
+ .. _examples:
2
+
3
+ Examples
4
+ ########
5
+
6
+ These examples demonstrate the behavior and usage of the solution.
7
+
8
+ .. Provide links to the files in doc/source/examples below: