nomad-material-processing 1.0.4__tar.gz → 1.0.6__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 (97) hide show
  1. nomad_material_processing-1.0.6/.github/workflows/mkdocs-deploy.yml +34 -0
  2. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/.github/workflows/python-test.yml +1 -1
  3. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/PKG-INFO +10 -4
  4. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/explanation/schemas.md +26 -14
  5. nomad_material_processing-1.0.6/docs/main.py +1 -0
  6. nomad_material_processing-1.0.6/docs/reference/schemas/combinatorial.md +1 -0
  7. nomad_material_processing-1.0.6/docs/reference/schemas/crystal_growth.md +1 -0
  8. nomad_material_processing-1.0.6/docs/reference/schemas/epitaxy.md +1 -0
  9. nomad_material_processing-1.0.6/docs/reference/schemas/general.md +1 -0
  10. nomad_material_processing-1.0.6/docs/reference/schemas/solution/general.md +1 -0
  11. nomad_material_processing-1.0.6/docs/reference/schemas/vapor_deposition/cvd/general.md +1 -0
  12. nomad_material_processing-1.0.6/docs/reference/schemas/vapor_deposition/cvd/movpe.md +1 -0
  13. nomad_material_processing-1.0.6/docs/reference/schemas/vapor_deposition/general.md +1 -0
  14. nomad_material_processing-1.0.6/docs/reference/schemas/vapor_deposition/pvd/general.md +1 -0
  15. nomad_material_processing-1.0.6/docs/reference/schemas/vapor_deposition/pvd/mbe.md +1 -0
  16. nomad_material_processing-1.0.6/docs/reference/schemas/vapor_deposition/pvd/pld.md +1 -0
  17. nomad_material_processing-1.0.6/docs/reference/schemas/vapor_deposition/pvd/sputtering.md +1 -0
  18. nomad_material_processing-1.0.6/docs/reference/schemas/vapor_deposition/pvd/thermal.md +1 -0
  19. nomad_material_processing-1.0.6/docs/reference/schemas.md +15 -0
  20. nomad_material_processing-1.0.6/docs/reference/solution.md +3 -0
  21. nomad_material_processing-1.0.6/docs/reference/vapor_depostion.md +3 -0
  22. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/mkdocs.yml +22 -1
  23. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/pyproject.toml +8 -2
  24. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/general.py +23 -15
  25. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/solution/general.py +62 -21
  26. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/vapor_deposition/cvd/general.py +7 -0
  27. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/vapor_deposition/general.py +25 -11
  28. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing.egg-info/PKG-INFO +10 -4
  29. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing.egg-info/SOURCES.txt +17 -0
  30. nomad_material_processing-1.0.6/src/nomad_material_processing.egg-info/requires.txt +12 -0
  31. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/solution/test_solution_schema.py +25 -0
  32. nomad_material_processing-1.0.4/.github/workflows/mkdocs-deploy.yml +0 -28
  33. nomad_material_processing-1.0.4/src/nomad_material_processing.egg-info/requires.txt +0 -6
  34. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/.github/workflows/python-publish.yml +0 -0
  35. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/.gitignore +0 -0
  36. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/.vscode/settings.json +0 -0
  37. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/CITATION.cff +0 -0
  38. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/LICENSE +0 -0
  39. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/README.md +0 -0
  40. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/assets/.gitignore +0 -0
  41. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/assets/favicon.png +0 -0
  42. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/assets/levelsschema.png +0 -0
  43. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/assets/nomad-logo.png +0 -0
  44. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/assets/nomad-plugin-logo.png +0 -0
  45. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/assets/use-built-in-schema-1.png +0 -0
  46. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/assets/use-built-in-schema-2.png +0 -0
  47. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/contact.md +0 -0
  48. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/explanation/data_model.md +0 -0
  49. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/explanation/levelsofschema.md +0 -0
  50. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/how_to/develop.md +0 -0
  51. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/how_to/install.md +0 -0
  52. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/how_to/use_this_plugin.md +0 -0
  53. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/how_to/use_this_plugin_old.md +0 -0
  54. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/index.md +0 -0
  55. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/reference/references.md +0 -0
  56. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/stylesheets/extra.css +0 -0
  57. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/theme/partials/header.html +0 -0
  58. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/docs/tutorial/tutorial.md +0 -0
  59. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/setup.cfg +0 -0
  60. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/setup.py +0 -0
  61. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/__init__.py +0 -0
  62. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/combinatorial.py +0 -0
  63. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/crystal_growth.py +0 -0
  64. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/epitaxy.py +0 -0
  65. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/solution/__init__.py +0 -0
  66. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/solution/utils.py +0 -0
  67. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/utils.py +0 -0
  68. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/vapor_deposition/__init__.py +0 -0
  69. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/vapor_deposition/cvd/__init__.py +0 -0
  70. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/vapor_deposition/cvd/movpe.py +0 -0
  71. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/vapor_deposition/pvd/__init__.py +0 -0
  72. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/vapor_deposition/pvd/general.py +0 -0
  73. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/vapor_deposition/pvd/mbe.py +0 -0
  74. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/vapor_deposition/pvd/pld.py +0 -0
  75. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/vapor_deposition/pvd/sputtering.py +0 -0
  76. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing/vapor_deposition/pvd/thermal.py +0 -0
  77. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing.egg-info/dependency_links.txt +0 -0
  78. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing.egg-info/entry_points.txt +0 -0
  79. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/src/nomad_material_processing.egg-info/top_level.txt +0 -0
  80. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/conftest.py +0 -0
  81. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_crystal_growth.archive.yaml +0 -0
  82. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_czochralski_process.archive.yaml +0 -0
  83. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_epitaxy.archive.yaml +0 -0
  84. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_metal_organic_vapor_phase_epitaxy.archive.yaml +0 -0
  85. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_molecular_beam_epitaxy.archive.yaml +0 -0
  86. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_physical_vapor_deposition.archive.yaml +0 -0
  87. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_pulsed_laser_deposition.archive.yaml +0 -0
  88. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_sample_deposition.archive.yaml +0 -0
  89. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_solution.archive.yaml +0 -0
  90. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_solution_component.archive.yaml +0 -0
  91. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_sputter_deposition.archive.yaml +0 -0
  92. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_substrate.archive.yaml +0 -0
  93. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_thermal_evaporation.archive.yaml +0 -0
  94. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_thin_film.archive.yaml +0 -0
  95. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_thin_film_stack.archive.yaml +0 -0
  96. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/data/test_vapor_phase_epitaxy.archive.yaml +0 -0
  97. {nomad_material_processing-1.0.4 → nomad_material_processing-1.0.6}/tests/test_schema.py +0 -0
@@ -0,0 +1,34 @@
1
+ name: Deploy MkDocs Site
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main # Triggers deployment on push to the main branch
7
+
8
+ env:
9
+ REGISTRY: ghcr.io
10
+ UV_VERSION: 0.6
11
+ PYTHON_VERSION: 3.12
12
+ UV_SYSTEM_PYTHON: true
13
+
14
+ jobs:
15
+ deploy:
16
+ runs-on: ubuntu-latest
17
+
18
+ steps:
19
+ - name: Checkout Repository
20
+ uses: actions/checkout@v4
21
+
22
+ - name: Install uv
23
+ uses: astral-sh/setup-uv@v5
24
+ with:
25
+ version: ${{ env.UV_VERSION }}
26
+
27
+ - name: Set up Python
28
+ uses: actions/setup-python@v5
29
+ with:
30
+ python-version: ${{ env.PYTHON_VERSION }}
31
+
32
+ - name: Build and Deploy
33
+ run: |
34
+ uv run --extra dev mkdocs gh-deploy --force --remote-branch gh-pages
@@ -21,7 +21,7 @@ jobs:
21
21
  strategy:
22
22
  fail-fast: false
23
23
  matrix:
24
- python_version: ["3.9", "3.10", "3.11"]
24
+ python_version: ["3.10", "3.11", "3.12"]
25
25
  steps:
26
26
  - uses: actions/checkout@v4
27
27
  - name: Set up Python ${{matrix.python_version}}
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: nomad-material-processing
3
- Version: 1.0.4
3
+ Version: 1.0.6
4
4
  Summary: A plugin for NOMAD containing base sections for material processing.
5
5
  Author: Andrea Albino, Sebastian Brückner, Michael Götte, Ahmed Ilyas, Sarthak Kapoor, José A. Márquez, Hampus Näsström, Markus Scheidgen
6
6
  Author-email: fairmat@physik.hu-berlin.de
@@ -212,18 +212,24 @@ Project-URL: Bug Tracker, https://github.com/FAIRmat-NFDI/nomad-material-process
212
212
  Classifier: Intended Audience :: Developers
213
213
  Classifier: Operating System :: OS Independent
214
214
  Classifier: Programming Language :: Python
215
- Classifier: Programming Language :: Python :: 3.9
216
215
  Classifier: Programming Language :: Python :: 3.10
217
216
  Classifier: Programming Language :: Python :: 3.11
218
217
  Classifier: Programming Language :: Python :: 3.12
219
218
  Classifier: License :: OSI Approved :: Apache Software License
220
219
  Description-Content-Type: text/markdown
221
220
  License-File: LICENSE
222
- Requires-Dist: nomad-lab>=1.3.6
221
+ Requires-Dist: nomad-lab>=1.3.14
223
222
  Provides-Extra: dev
224
223
  Requires-Dist: pytest; extra == "dev"
225
224
  Requires-Dist: ruff; extra == "dev"
226
225
  Requires-Dist: structlog; extra == "dev"
226
+ Requires-Dist: nomad-docs>=0.1.3; extra == "dev"
227
+ Requires-Dist: mkdocs; extra == "dev"
228
+ Requires-Dist: mkdocs-material>=9.0; extra == "dev"
229
+ Requires-Dist: pymdown-extensions; extra == "dev"
230
+ Requires-Dist: mkdocs-click; extra == "dev"
231
+ Requires-Dist: mkdocs-macros-plugin>=1.0; extra == "dev"
232
+ Dynamic: license-file
227
233
 
228
234
  ![](https://github.com/FAIRmat-NFDI/nomad-material-processing/actions/workflows/publish.yml/badge.svg)
229
235
  ![](https://img.shields.io/pypi/pyversions/nomad-material-processing)
@@ -123,21 +123,21 @@ The `nomad_material_processing.vapor_deposition.pvd.mbe` module uses the thermal
123
123
  source and also adds a plasma source.
124
124
 
125
125
 
126
- ### nomad_material_processing.solution.general
126
+ ### Solutions
127
127
 
128
- The main entry sections in this module are
128
+ `nomad_material_processing.solution.general` provides
129
129
  [`Solution`](#nomad_material_processing.solution.general.Solution) and
130
- [`SolutionPreparation`](#nomad_material_processing.solution.general.SolutionPreparation) which can
131
- be used to create NOMAD
130
+ [`SolutionPreparation`](#nomad_material_processing.solution.general.SolutionPreparation)
131
+ entry sections which can be used to create NOMAD
132
132
  [entries](https://nomad-lab.eu/prod/v1/docs/reference/glossary.html#entry).
133
- There's a long list of other auxiliary sections supporting these entry section which
133
+ It also contains other auxiliary sections supporting these entry section which
134
134
  can be accessed in the
135
135
  [metainfo browser](https://nomad-lab.eu/prod/v1/oasis/gui/analyze/metainfo/nomad_material_processing)
136
136
  by searching for: `"nomad_material_processing.solution.general"`
137
137
 
138
- #### `nomad_material_processing.solution.general.Solution`
138
+ #### Solution
139
139
 
140
- Describes liquid solutions by extending the
140
+ `nomad_material_processing.solution.general.Solution` describes liquid solutions by extending the
141
141
  [`CompositeSystem`](https://nomad-lab.eu/prod/v1/docs/howto/customization/base_sections.html#system) with quantities: _pH_, _mass_,
142
142
  _calculated_volume_, _measured_volume_, _density_, and sub-sections:
143
143
  _solvents_, _solutes_, and _solution_storage_.
@@ -172,14 +172,24 @@ _calculated_volume_ of the solution. The component can either nest a
172
172
  sub-section describing its composition, or can be another `Solution` entry connected
173
173
  via reference.
174
174
  These options are are handled by
175
- `SolutionComponent` and `SolutionComponentReference` sections respectively. Let's take a closer look at each of them.
175
+ `SolutionComponent` and `SolutionComponentReference` sections respectively.
176
176
 
177
- `SolutionComponent` extends `PureSubstanceComponent` with quantities:
178
- _component_role_, _mass_, _volume_, _density_, and sub-section: _molar_concentration_.
177
+ Let's take a closer look at each of them.
178
+
179
+ __`SolutionComponent`__ extends `PureSubstanceComponent` with quantities:
180
+ _component_role_, _mass_, _volume_, _density_, _amount_of_substance_ (in moles),
181
+ and sub-section: _molar_concentration_.
179
182
  The _pure_substance_ sub-section inherited from `PureSubstanceComponent` specifies the
180
- chemical compound. This information along with the mass of the component and
183
+ chemical compound. This information along with the amount of the component and
181
184
  total volume of the solution is used to automatically determine the molar concentration of
182
185
  the component, populating the corresponding sub-section.
186
+
187
+ If not provided, _amount_of_substance_ can be determined from _mass_ and
188
+ _pure_substance.molecular_mass_.
189
+ On other hand, if _amount_of_substance_ is available, but _mass_ is missing, it can be
190
+ determined using _amount_of_substance_ and _pure_substance.molecular_mass_.
191
+ _mass_ can also be determined if _volume_ and _density_ are available.
192
+
183
193
  Based on the _component_role_, the components are copied over to either
184
194
  `Solution.solvents` or `Solution.solutes`.
185
195
 
@@ -189,10 +199,11 @@ class SolutionComponent(PureSubstanceComponent):
189
199
  mass: float
190
200
  volume: float
191
201
  density: float
202
+ amount_of_substance: float
192
203
  molar_concentration: MolarConcentration
193
204
  ```
194
205
 
195
- `SolutionComponentReference` makes a reference to another `Solution` entry and specifies
206
+ __`SolutionComponentReference`__ makes a reference to another `Solution` entry and specifies
196
207
  the amount used. Based on this, _solutes_ and _solvents_ of the referenced solution are
197
208
  copied over to the first solution. Their mass and volume are adjusted based on the
198
209
  amount of the referenced solution used.
@@ -212,9 +223,10 @@ combined into one.
212
223
  The _solution_storage_ uses `SolutionStorage` section to describe storage conditions
213
224
  , i.e., temperature and atmosphere, along with preparation and expiry dates.
214
225
 
215
- #### `nomad_material_processing.solution.general.SolutionPreparation`
226
+ #### SolutionPreparation
216
227
 
217
- Describes the steps of solution preparation by extending
228
+ `nomad_material_processing.solution.general.SolutionPreparation`
229
+ describes the steps of solution preparation by extending
218
230
  [`Process`](https://nomad-lab.eu/prod/v1/docs/howto/customization/base_sections.html#process).
219
231
  Based on the steps added, it also creates a `Solution` entry and references it under the
220
232
  _solution_ sub-section.
@@ -0,0 +1 @@
1
+ from nomad_docs import define_env # noqa: F401
@@ -0,0 +1 @@
1
+ {{ metainfo_package('nomad_material_processing.combinatorial') }}
@@ -0,0 +1 @@
1
+ {{ metainfo_package('nomad_material_processing.crystal_growth') }}
@@ -0,0 +1 @@
1
+ {{ metainfo_package('nomad_material_processing.epitaxy') }}
@@ -0,0 +1 @@
1
+ {{ metainfo_package('nomad_material_processing.general') }}
@@ -0,0 +1 @@
1
+ {{ metainfo_package('nomad_material_processing.solution.general') }}
@@ -0,0 +1 @@
1
+ {{ metainfo_package('nomad_material_processing.vapor_deposition.cvd.general') }}
@@ -0,0 +1 @@
1
+ {{ metainfo_package('nomad_material_processing.vapor_deposition.cvd.movpe') }}
@@ -0,0 +1 @@
1
+ {{ metainfo_package('nomad_material_processing.vapor_deposition.general') }}
@@ -0,0 +1 @@
1
+ {{ metainfo_package('nomad_material_processing.vapor_deposition.pvd.general') }}
@@ -0,0 +1 @@
1
+ {{ metainfo_package('nomad_material_processing.vapor_deposition.pvd.mbe') }}
@@ -0,0 +1 @@
1
+ {{ metainfo_package('nomad_material_processing.vapor_deposition.pvd.pld') }}
@@ -0,0 +1 @@
1
+ {{ metainfo_package('nomad_material_processing.vapor_deposition.pvd.sputtering') }}
@@ -0,0 +1 @@
1
+ {{ metainfo_package('nomad_material_processing.vapor_deposition.pvd.thermal') }}
@@ -0,0 +1,15 @@
1
+ ## General
2
+
3
+ {{ metainfo_package('nomad_material_processing.general') }}
4
+
5
+ ## Crystal growth
6
+
7
+ {{ metainfo_package('nomad_material_processing.crystal_growth') }}
8
+
9
+ ## Epitaxy
10
+
11
+ {{ metainfo_package('nomad_material_processing.epitaxy') }}
12
+
13
+ ## Combinatorial
14
+
15
+ {{ metainfo_package('nomad_material_processing.combinatorial') }}
@@ -0,0 +1,3 @@
1
+ ## General
2
+
3
+ {{ metainfo_package('nomad_material_processing.solution.general') }}
@@ -0,0 +1,3 @@
1
+ ## General
2
+
3
+ {{ metainfo_package('nomad_material_processing.vapor_deposition.general') }}
@@ -14,11 +14,32 @@ nav:
14
14
  - Install this Plugin: how_to/install.md
15
15
  - Use this Plugin: how_to/use_this_plugin.md
16
16
  - Contribute to this Plugin: how_to/develop.md
17
- - References: reference/references.md
17
+ - Reference:
18
+ - Glossary: reference/references.md
19
+ - Schemas:
20
+ - reference/schemas/general.md
21
+ - reference/schemas/combinatorial.md
22
+ - reference/schemas/epitaxy.md
23
+ - reference/schemas/crystal_growth.md
24
+ - Solution:
25
+ - reference/schemas/solution/general.md
26
+ - Vapor Deposition:
27
+ - reference/schemas/vapor_deposition/general.md
28
+ - CVD:
29
+ - reference/schemas/vapor_deposition/cvd/general.md
30
+ - reference/schemas/vapor_deposition/cvd/movpe.md
31
+ - PVD:
32
+ - reference/schemas/vapor_deposition/pvd/general.md
33
+ - reference/schemas/vapor_deposition/pvd/sputtering.md
34
+ - reference/schemas/vapor_deposition/pvd/thermal.md
35
+ - reference/schemas/vapor_deposition/pvd/pld.md
36
+ - reference/schemas/vapor_deposition/pvd/mbe.md
18
37
  - Tutorials: tutorial/tutorial.md
19
38
  - Contact: contact.md
20
39
  plugins:
21
40
  - search
41
+ - macros:
42
+ module_name: docs/main
22
43
  theme:
23
44
  name: material
24
45
  palette:
@@ -10,7 +10,6 @@ classifiers = [
10
10
  "Intended Audience :: Developers",
11
11
  "Operating System :: OS Independent",
12
12
  "Programming Language :: Python",
13
- "Programming Language :: Python :: 3.9",
14
13
  "Programming Language :: Python :: 3.10",
15
14
  "Programming Language :: Python :: 3.11",
16
15
  "Programming Language :: Python :: 3.12",
@@ -36,7 +35,7 @@ maintainers = [
36
35
  ]
37
36
  license = { file = "LICENSE" }
38
37
  dependencies = [
39
- "nomad-lab>=1.3.6",
38
+ "nomad-lab >= 1.3.14",
40
39
  ]
41
40
 
42
41
  [project.urls]
@@ -52,6 +51,12 @@ dev = [
52
51
  "pytest",
53
52
  "ruff",
54
53
  "structlog",
54
+ "nomad-docs>=0.1.3",
55
+ "mkdocs",
56
+ "mkdocs-material>=9.0",
57
+ "pymdown-extensions",
58
+ "mkdocs-click",
59
+ "mkdocs-macros-plugin>=1.0",
55
60
  ]
56
61
 
57
62
  [tool.ruff]
@@ -101,6 +106,7 @@ select = [
101
106
 
102
107
  ignore = [
103
108
  "F403", # 'from module import *' used; unable to detect undefined names
109
+ "PLC0415", # `import` should be at the top-level of a file
104
110
  ]
105
111
 
106
112
  fixable = ["ALL"]
@@ -1,13 +1,5 @@
1
1
  from typing import TYPE_CHECKING
2
2
 
3
- if TYPE_CHECKING:
4
- from nomad.datamodel.datamodel import (
5
- EntryArchive,
6
- )
7
- from structlog.stdlib import (
8
- BoundLogger,
9
- )
10
-
11
3
  import numpy as np
12
4
  from nomad.config import config
13
5
  from nomad.datamodel.data import ArchiveSection, EntryData
@@ -38,6 +30,15 @@ from nomad.metainfo import (
38
30
  SubSection,
39
31
  )
40
32
 
33
+ if TYPE_CHECKING:
34
+ from nomad.datamodel.datamodel import (
35
+ EntryArchive,
36
+ )
37
+ from structlog.stdlib import (
38
+ BoundLogger,
39
+ )
40
+
41
+
41
42
  m_package = SchemaPackage(
42
43
  aliases=[
43
44
  'nomad_material_processing',
@@ -757,6 +758,7 @@ class ElectronicProperties(ArchiveSection):
757
758
  'P-type',
758
759
  'N-type',
759
760
  'Semi-insulating',
761
+ 'Insulating',
760
762
  ),
761
763
  description="""The type of semiconductor, N-type being electrons
762
764
  the majority carriers and P-type being holes the majority carriers.""",
@@ -967,14 +969,20 @@ class ThinFilmStack(CompositeSystem):
967
969
  logger (BoundLogger): A structlog logger.
968
970
  """
969
971
  self.components = []
972
+ if self.substrate and self.substrate.reference:
973
+ self.components.append(
974
+ SystemComponent(
975
+ name=self.substrate.name, system=self.substrate.reference
976
+ )
977
+ )
970
978
  if self.layers:
971
- self.components = [
972
- SystemComponent(system=layer.reference)
973
- for layer in self.layers
974
- if layer.reference
975
- ]
976
- if self.substrate.reference:
977
- self.components.append(SystemComponent(system=self.substrate.reference))
979
+ self.components.extend(
980
+ [
981
+ SystemComponent(name=layer.name, system=layer.reference)
982
+ for layer in self.layers
983
+ if layer.reference
984
+ ]
985
+ )
978
986
  super().normalize(archive, logger)
979
987
 
980
988
 
@@ -1,8 +1,9 @@
1
- from typing import TYPE_CHECKING, Union
1
+ from typing import TYPE_CHECKING
2
2
 
3
3
  from nomad.datamodel.data import (
4
4
  ArchiveSection,
5
5
  EntryData,
6
+ EntryDataCategory,
6
7
  )
7
8
  from nomad.datamodel.metainfo.annotations import (
8
9
  ELNAnnotation,
@@ -21,6 +22,7 @@ from nomad.datamodel.metainfo.basesections import (
21
22
  SystemComponent,
22
23
  )
23
24
  from nomad.metainfo import (
25
+ Category,
24
26
  Datetime,
25
27
  MEnum,
26
28
  Quantity,
@@ -52,6 +54,17 @@ configuration = config.get_plugin_entry_point(
52
54
  )
53
55
 
54
56
 
57
+ class SolutionCategory(EntryDataCategory):
58
+ """
59
+ Category for entry schemas related to solutions.
60
+ """
61
+
62
+ m_def = Category(
63
+ label='Solutions',
64
+ categories=[EntryDataCategory],
65
+ )
66
+
67
+
55
68
  class MolarConcentration(ArchiveSection):
56
69
  """
57
70
  The molar concentration of a component in a solution.
@@ -62,10 +75,9 @@ class MolarConcentration(ArchiveSection):
62
75
  )
63
76
  calculated_concentration = Quantity(
64
77
  type=float,
65
- description=(
66
- 'The expected concentration calculated from the component moles and '
67
- 'total volume.'
68
- ),
78
+ description="""
79
+ The expected concentration calculated from the component moles and total volume.
80
+ """,
69
81
  a_eln=ELNAnnotation(
70
82
  defaultDisplayUnit='mol / liter',
71
83
  ),
@@ -73,10 +85,9 @@ class MolarConcentration(ArchiveSection):
73
85
  )
74
86
  measured_concentration = Quantity(
75
87
  type=float,
76
- description=(
77
- """The concentration observed or measured
78
- with some characterization technique."""
79
- ),
88
+ description="""
89
+ The concentration observed or measured with some characterization technique.
90
+ """,
80
91
  a_eln=ELNAnnotation(
81
92
  component='NumberEditQuantity',
82
93
  defaultDisplayUnit='mol / liter',
@@ -157,7 +168,6 @@ class SolutionComponent(PureSubstanceComponent, BaseSolutionComponent):
157
168
  Section for a component added to the solution.
158
169
  """
159
170
 
160
- # TODO get the density of the component automatically if not provided
161
171
  m_def = Section(
162
172
  description='A component added to the solution.',
163
173
  a_eln=ELNAnnotation(
@@ -198,7 +208,11 @@ class SolutionComponent(PureSubstanceComponent, BaseSolutionComponent):
198
208
  )
199
209
  mass = Quantity(
200
210
  type=float,
201
- description='The mass of the component without the container.',
211
+ description="""
212
+ The mass of the component without the container. Can be calculated automatically
213
+ if `volume` and `density` are available or if `amount_of_substance`
214
+ and `pure_substance.molecular_mass` are available.
215
+ """,
202
216
  a_eln=ELNAnnotation(
203
217
  component='NumberEditQuantity',
204
218
  defaultDisplayUnit='gram',
@@ -206,20 +220,34 @@ class SolutionComponent(PureSubstanceComponent, BaseSolutionComponent):
206
220
  ),
207
221
  unit='kilogram',
208
222
  )
223
+ amount_of_substance = Quantity(
224
+ link='https://doi.org/10.1351/goldbook.A00297',
225
+ type=float,
226
+ description="""
227
+ The number of elementary entities of the given substance. Can be calculated
228
+ automatically if `mass` and `pure_substance.molecular_mass` are available.
229
+ """,
230
+ a_eln=ELNAnnotation(
231
+ component='NumberEditQuantity',
232
+ defaultDisplayUnit='mole',
233
+ minValue=0,
234
+ ),
235
+ unit='mole',
236
+ )
209
237
  density = Quantity(
210
238
  type=float,
211
239
  description='The density of the liquid component.',
212
240
  a_eln=ELNAnnotation(
213
241
  component='NumberEditQuantity',
214
- defaultDisplayUnit='gram / liter',
242
+ defaultDisplayUnit='gram / milliliter',
215
243
  minValue=0,
216
244
  ),
217
- unit='kilogram / liter',
245
+ unit='gram / milliliter',
218
246
  )
219
247
  molar_concentration = SubSection(section_def=MolarConcentration)
220
248
  pure_substance = SubSection(section_def=PubChemPureSubstanceSection)
221
249
 
222
- def _calculate_moles(self, logger: 'BoundLogger' = None) -> Union[Quantity, None]:
250
+ def _calculate_moles(self, logger: 'BoundLogger' = None) -> Quantity | None:
223
251
  """
224
252
  A private method to calculate the moles of a component in the solution.
225
253
 
@@ -254,8 +282,8 @@ class SolutionComponent(PureSubstanceComponent, BaseSolutionComponent):
254
282
  self, volume: Quantity, logger: 'BoundLogger' = None
255
283
  ) -> None:
256
284
  """
257
- Calculate the molar concentration of the component
258
- in a given volume of solution.
285
+ Calculate the molar concentration of the component in a given volume of
286
+ solution.
259
287
 
260
288
  Args:
261
289
  volume (Quantity): The volume of the solution.
@@ -270,9 +298,10 @@ class SolutionComponent(PureSubstanceComponent, BaseSolutionComponent):
270
298
  return
271
299
  if not self.molar_concentration:
272
300
  self.molar_concentration = MolarConcentration()
273
- moles = self._calculate_moles(logger)
274
- if moles:
275
- self.molar_concentration.calculated_concentration = moles / volume
301
+ if self.amount_of_substance:
302
+ self.molar_concentration.calculated_concentration = (
303
+ self.amount_of_substance / volume
304
+ )
276
305
 
277
306
  def normalize(self, archive: 'EntryArchive', logger: 'BoundLogger') -> None:
278
307
  """
@@ -288,6 +317,12 @@ class SolutionComponent(PureSubstanceComponent, BaseSolutionComponent):
288
317
  self.pure_substance.normalize(archive, logger)
289
318
  if self.volume and self.density:
290
319
  self.mass = self.volume * self.density
320
+ if self.mass and self.pure_substance and not self.amount_of_substance:
321
+ self.amount_of_substance = self._calculate_moles(logger)
322
+ if self.amount_of_substance and self.pure_substance and not self.mass:
323
+ self.mass = self.amount_of_substance * (
324
+ self.pure_substance.molecular_mass * ureg.N_A
325
+ )
291
326
  super().normalize(archive, logger)
292
327
 
293
328
 
@@ -298,6 +333,7 @@ class Solution(CompositeSystem, EntryData):
298
333
 
299
334
  # TODO make the solvents, solutes, and elemental_composition subsection noneditable.
300
335
  m_def = Section(
336
+ categories=[SolutionCategory],
301
337
  description='A homogeneous liquid mixture composed of two or more substances.',
302
338
  a_eln=ELNAnnotation(
303
339
  properties=SectionProperties(
@@ -334,7 +370,7 @@ class Solution(CompositeSystem, EntryData):
334
370
  a_eln=ELNAnnotation(
335
371
  defaultDisplayUnit='gram / milliliter',
336
372
  ),
337
- unit='kilogram / liter',
373
+ unit='gram / milliliter',
338
374
  )
339
375
  mass = Quantity(
340
376
  description='The mass of the solution.',
@@ -412,7 +448,7 @@ class Solution(CompositeSystem, EntryData):
412
448
  continue
413
449
  comparison_key = component.pure_substance.pub_chem_cid
414
450
  if comparison_key in combined_components:
415
- for prop in ['mass', 'volume']:
451
+ for prop in ['mass', 'volume', 'amount_of_substance']:
416
452
  val1 = getattr(combined_components[comparison_key], prop, None)
417
453
  val2 = getattr(component, prop, None)
418
454
  if val1 and val2:
@@ -503,6 +539,8 @@ class Solution(CompositeSystem, EntryData):
503
539
  self.solvents[-1].volume *= scaler
504
540
  if self.solvents[-1].mass:
505
541
  self.solvents[-1].mass *= scaler
542
+ if self.solvents[-1].amount_of_substance:
543
+ self.solvents[-1].amount_of_substance *= scaler
506
544
  if component.system.solutes:
507
545
  for solute in component.system.solutes:
508
546
  self.solutes.append(solute.m_copy(deep=True))
@@ -510,6 +548,8 @@ class Solution(CompositeSystem, EntryData):
510
548
  self.solutes[-1].volume *= scaler
511
549
  if self.solutes[-1].mass:
512
550
  self.solutes[-1].mass *= scaler
551
+ if self.solutes[-1].amount_of_substance:
552
+ self.solutes[-1].amount_of_substance *= scaler
513
553
 
514
554
  self.solvents = self.combine_components(self.solvents, logger)
515
555
  self.solutes = self.combine_components(self.solutes, logger)
@@ -827,6 +867,7 @@ class SolutionPreparation(Process, EntryData):
827
867
 
828
868
  # TODO populate the instruments section based on the steps.methodology.instrument
829
869
  m_def = Section(
870
+ categories=[SolutionCategory],
830
871
  description='Section for describing steps of solution preparation.',
831
872
  a_eln=ELNAnnotation(
832
873
  properties=SectionProperties(
@@ -437,6 +437,13 @@ class FlashSource(CVDSource):
437
437
  Example: A heater, a filament, a laser, a bubbler, etc.
438
438
  """,
439
439
  )
440
+ peristaltic_pump_flux = SubSection(
441
+ section_def=VolumetricFlowRate,
442
+ description="""
443
+ The flux of the peristaltic pump
444
+ feeding into the flash evaporator.
445
+ """,
446
+ )
440
447
 
441
448
 
442
449
  class MistSource(CVDSource):
@@ -31,6 +31,7 @@ from nomad.datamodel.metainfo.basesections import (
31
31
  Component,
32
32
  CompositeSystemReference,
33
33
  Entity,
34
+ EntityReference,
34
35
  PubChemPureSubstanceSection,
35
36
  PureSubstanceSection,
36
37
  )
@@ -118,6 +119,21 @@ class InsertReduction(Entity):
118
119
  )
119
120
 
120
121
 
122
+ class InsertReductionReference(EntityReference):
123
+ """
124
+ A section used for referencing a FilledSubstrateHolderPDI.
125
+ """
126
+
127
+ reference = Quantity(
128
+ type=InsertReduction,
129
+ description='Optional description of insert if used.',
130
+ a_eln=ELNAnnotation(
131
+ component='ReferenceEditQuantity',
132
+ label='Insert Reduction Reference',
133
+ ),
134
+ )
135
+
136
+
121
137
  class SubstrateHolderPosition(ArchiveSection):
122
138
  """
123
139
  One casing position of the substrate holder.
@@ -159,14 +175,6 @@ class SubstrateHolderPosition(ArchiveSection):
159
175
  slot_geometry = SubSection(
160
176
  section_def=Geometry,
161
177
  )
162
- insert_reduction = Quantity(
163
- type=InsertReduction,
164
- description='Optional description of insert if used.',
165
- a_eln=ELNAnnotation(
166
- component='ReferenceEditQuantity',
167
- label='ThinFilmStackMbe Reference',
168
- ),
169
- )
170
178
 
171
179
 
172
180
  class SubstrateHolder(Entity):
@@ -189,10 +197,10 @@ class SubstrateHolder(Entity):
189
197
  The lab ID of the substrate holder.
190
198
  """,
191
199
  a_eln=ELNAnnotation(
192
- component=ELNComponentEnum.StringEditQuantity,
200
+ component=ELNComponentEnum.StringEditQuantity, label='holder_id'
193
201
  ),
194
202
  )
195
- material = SubSection(section_def=PubChemPureSubstanceSection, repeats=True)
203
+ holder_material = SubSection(section_def=PubChemPureSubstanceSection, repeats=True)
196
204
  thickness = Quantity(
197
205
  type=float,
198
206
  unit='meter',
@@ -243,6 +251,12 @@ class FilledSubstrateHolderPosition(SubstrateHolderPosition):
243
251
  One casing position of the filled substrate holder.
244
252
  """
245
253
 
254
+ insert_reduction = SubSection(
255
+ section_def=InsertReductionReference,
256
+ description="""
257
+ The Insert reduction placed in this position.
258
+ """,
259
+ )
246
260
  substrate = SubSection(
247
261
  section_def=CompositeSystemReference,
248
262
  description="""
@@ -261,7 +275,7 @@ class FilledSubstrateHolder(SubstrateHolder):
261
275
  description='A reference to an empty substrate holder.',
262
276
  a_eln=ELNAnnotation(
263
277
  component='ReferenceEditQuantity',
264
- label='ThinFilmStackMbe Reference',
278
+ label='Empty Substrate Holder Reference',
265
279
  ),
266
280
  )
267
281
  positions = SubSection(
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: nomad-material-processing
3
- Version: 1.0.4
3
+ Version: 1.0.6
4
4
  Summary: A plugin for NOMAD containing base sections for material processing.
5
5
  Author: Andrea Albino, Sebastian Brückner, Michael Götte, Ahmed Ilyas, Sarthak Kapoor, José A. Márquez, Hampus Näsström, Markus Scheidgen
6
6
  Author-email: fairmat@physik.hu-berlin.de
@@ -212,18 +212,24 @@ Project-URL: Bug Tracker, https://github.com/FAIRmat-NFDI/nomad-material-process
212
212
  Classifier: Intended Audience :: Developers
213
213
  Classifier: Operating System :: OS Independent
214
214
  Classifier: Programming Language :: Python
215
- Classifier: Programming Language :: Python :: 3.9
216
215
  Classifier: Programming Language :: Python :: 3.10
217
216
  Classifier: Programming Language :: Python :: 3.11
218
217
  Classifier: Programming Language :: Python :: 3.12
219
218
  Classifier: License :: OSI Approved :: Apache Software License
220
219
  Description-Content-Type: text/markdown
221
220
  License-File: LICENSE
222
- Requires-Dist: nomad-lab>=1.3.6
221
+ Requires-Dist: nomad-lab>=1.3.14
223
222
  Provides-Extra: dev
224
223
  Requires-Dist: pytest; extra == "dev"
225
224
  Requires-Dist: ruff; extra == "dev"
226
225
  Requires-Dist: structlog; extra == "dev"
226
+ Requires-Dist: nomad-docs>=0.1.3; extra == "dev"
227
+ Requires-Dist: mkdocs; extra == "dev"
228
+ Requires-Dist: mkdocs-material>=9.0; extra == "dev"
229
+ Requires-Dist: pymdown-extensions; extra == "dev"
230
+ Requires-Dist: mkdocs-click; extra == "dev"
231
+ Requires-Dist: mkdocs-macros-plugin>=1.0; extra == "dev"
232
+ Dynamic: license-file
227
233
 
228
234
  ![](https://github.com/FAIRmat-NFDI/nomad-material-processing/actions/workflows/publish.yml/badge.svg)
229
235
  ![](https://img.shields.io/pypi/pyversions/nomad-material-processing)
@@ -11,6 +11,7 @@ setup.py
11
11
  .vscode/settings.json
12
12
  docs/contact.md
13
13
  docs/index.md
14
+ docs/main.py
14
15
  docs/assets/.gitignore
15
16
  docs/assets/favicon.png
16
17
  docs/assets/levelsschema.png
@@ -26,6 +27,22 @@ docs/how_to/install.md
26
27
  docs/how_to/use_this_plugin.md
27
28
  docs/how_to/use_this_plugin_old.md
28
29
  docs/reference/references.md
30
+ docs/reference/schemas.md
31
+ docs/reference/solution.md
32
+ docs/reference/vapor_depostion.md
33
+ docs/reference/schemas/combinatorial.md
34
+ docs/reference/schemas/crystal_growth.md
35
+ docs/reference/schemas/epitaxy.md
36
+ docs/reference/schemas/general.md
37
+ docs/reference/schemas/solution/general.md
38
+ docs/reference/schemas/vapor_deposition/general.md
39
+ docs/reference/schemas/vapor_deposition/cvd/general.md
40
+ docs/reference/schemas/vapor_deposition/cvd/movpe.md
41
+ docs/reference/schemas/vapor_deposition/pvd/general.md
42
+ docs/reference/schemas/vapor_deposition/pvd/mbe.md
43
+ docs/reference/schemas/vapor_deposition/pvd/pld.md
44
+ docs/reference/schemas/vapor_deposition/pvd/sputtering.md
45
+ docs/reference/schemas/vapor_deposition/pvd/thermal.md
29
46
  docs/stylesheets/extra.css
30
47
  docs/theme/partials/header.html
31
48
  docs/tutorial/tutorial.md
@@ -0,0 +1,12 @@
1
+ nomad-lab>=1.3.14
2
+
3
+ [dev]
4
+ pytest
5
+ ruff
6
+ structlog
7
+ nomad-docs>=0.1.3
8
+ mkdocs
9
+ mkdocs-material>=9.0
10
+ pymdown-extensions
11
+ mkdocs-click
12
+ mkdocs-macros-plugin>=1.0
@@ -58,12 +58,16 @@ def test_solution():
58
58
  starter_water_concentration = starter_solution_archive.data.solvents[
59
59
  0
60
60
  ].molar_concentration.calculated_concentration
61
+ starter_water_amount = starter_solution_archive.data.solvents[0].amount_of_substance
61
62
  starter_salt_concentration = starter_solution_archive.data.solutes[
62
63
  0
63
64
  ].molar_concentration.calculated_concentration
64
65
  starter_salt_mass = starter_solution_archive.data.solutes[0].mass
65
66
 
66
67
  assert pytest.approx(starter_water_concentration, 1e-3) == 55.523 * ureg('mol/l')
68
+ assert pytest.approx(starter_water_amount, 1e-3) == 0.5 * ureg('l') * 55.523 * ureg(
69
+ 'mol/l'
70
+ )
67
71
  assert pytest.approx(starter_salt_concentration, 1e-3) == 0.345 * ureg('mol/l')
68
72
  assert pytest.approx(starter_salt_mass, 1e-3) == 0.01 * ureg('kg')
69
73
 
@@ -90,6 +94,13 @@ def test_solution():
90
94
  )
91
95
  == starter_water_concentration
92
96
  )
97
+ assert (
98
+ pytest.approx(
99
+ main_solution_archive.data.solvents[0].amount_of_substance,
100
+ 1e-3,
101
+ )
102
+ == starter_water_amount / 5
103
+ )
93
104
  assert (
94
105
  pytest.approx(
95
106
  main_solution_archive.data.solutes[
@@ -129,6 +140,13 @@ def test_solution():
129
140
  )
130
141
  == starter_water_concentration
131
142
  )
143
+ assert (
144
+ pytest.approx(
145
+ main_solution_archive.data.solvents[0].amount_of_substance,
146
+ 1e-3,
147
+ )
148
+ == (starter_water_amount / 5) * 2
149
+ )
132
150
  assert (
133
151
  pytest.approx(
134
152
  main_solution_archive.data.solutes[
@@ -154,6 +172,13 @@ def test_solution():
154
172
  )
155
173
  == starter_water_concentration
156
174
  )
175
+ assert (
176
+ pytest.approx(
177
+ starter_solution_archive.data.solvents[0].amount_of_substance,
178
+ 1e-3,
179
+ )
180
+ == starter_water_amount
181
+ )
157
182
  assert (
158
183
  pytest.approx(
159
184
  starter_solution_archive.data.solutes[
@@ -1,28 +0,0 @@
1
- name: Deploy MkDocs Site
2
-
3
- on:
4
- push:
5
- branches:
6
- - main # Triggers deployment on push to the main branch
7
-
8
- jobs:
9
- deploy:
10
- runs-on: ubuntu-latest
11
-
12
- steps:
13
- - name: Checkout Repository
14
- uses: actions/checkout@v4
15
-
16
- - name: Set up Python
17
- uses: actions/setup-python@v4
18
- with:
19
- python-version: '3.x'
20
-
21
- - name: Install Dependencies
22
- run: |
23
- python -m pip install --upgrade pip
24
- pip install mkdocs mkdocs-material==8.1.1 pymdown-extensions mkdocs-click
25
-
26
- - name: Build and Deploy
27
- run: |
28
- mkdocs gh-deploy --force --remote-branch gh-pages
@@ -1,6 +0,0 @@
1
- nomad-lab>=1.3.6
2
-
3
- [dev]
4
- pytest
5
- ruff
6
- structlog