diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..caed59f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,27 @@ +--- +name: Bug report +about: For general problems with the documentation +title: '' +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the issue is. + +**To Reproduce** +Steps to reproduce the issue: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..ff13d70 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: General information + url: https://www.modelblocks.org/ + about: Please reach out through our website for general questions. diff --git a/.github/ISSUE_TEMPLATE/guideline-suggestion.md b/.github/ISSUE_TEMPLATE/guideline-suggestion.md new file mode 100644 index 0000000..ed73e79 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/guideline-suggestion.md @@ -0,0 +1,20 @@ +--- +name: Guideline suggestion +about: Suggest an idea to make modelblocks better! +title: '' +labels: enhancement +assignees: '' + +--- + +**Is this suggestion related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/pr-ci.yml b/.github/workflows/pr-ci.yml new file mode 100644 index 0000000..2219403 --- /dev/null +++ b/.github/workflows/pr-ci.yml @@ -0,0 +1,19 @@ +name: CI + +on: + pull_request: + branches: [ main ] + +jobs: + build: + name: Build + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + steps: + - uses: actions/checkout@v4 + - name: setup-pixi + uses: prefix-dev/setup-pixi@v0.9.4 + - name: Run tests + run: pixi run test diff --git a/.gitignore b/.gitignore index d9c825d..8889432 100644 --- a/.gitignore +++ b/.gitignore @@ -14,7 +14,6 @@ build/ dist/ wheels/ *.egg-info -src/clio_tools/_version.py # Virtual environments .venv diff --git a/CITATION.cff b/CITATION.cff index af4eee7..4c54fa2 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -3,7 +3,7 @@ # https://citation-file-format.github.io/ cff-version: 1.2.0 message: Please cite this project using the metadata from this file. -title: "modelblocks - Re-usable building blocks for energy system models" +title: "modelblocks - Reusable building blocks for energy system models" repository: https://github.com/modelblocks-org/docs license: Apache 2.0 version: 0.0.1 diff --git a/README.md b/README.md index e842d2c..6cbe901 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,23 @@ -# A framework for modular and easy to understand energy modelling tools +# Modelblocks documentation -`clio` aims to be a collection modularisation guidelines and tools that help energy modellers produce high-quality research that is repeatable, understanable and easy to use. +`modelblocks` aims to be a collection modular tools and modularisation guidelines that help energy modellers produce high-quality research that is repeatable, understanable, and easy to use. -Please read all about it in our [documentation](https://clio.readthedocs.io/en/stable/)! +Please read all about it in our [documentation](https://modelblocks.readthedocs.io/en/stable/)! -## `clio` development +## `modelblocks` documentation development -Install [`pixi`](https://pixi.sh/latest/) and run: +We rely on [`pixi`](https://pixi.sh/latest/) for development and maintenance. +To install, simply run the following: ```bash -git clone git@github.com:calliope-project/clio.git -cd clio -pixi install --all # Installs both default and developer dependencies +git clone git@github.com:modelblocks-org/docs.git +cd docs +pixi install --all ``` + +## Helper commands + +- `pixi run build-docs`: build a local version of the documentation +- `pixi run serve-docs`: render the documentation on your browser +- `pixi run style`: run CI linting, refractoring and spellchecking +- `pixi run test`: quick local test of the documentation diff --git a/docs/Background/our_framework.md b/docs/Background/our_framework.md index ed8e531..ed19e42 100644 --- a/docs/Background/our_framework.md +++ b/docs/Background/our_framework.md @@ -42,29 +42,31 @@ These are topic-specific data-generating [`snakemake`](https://snakemake.github. Below is an example of how a data module can be accessed by another workflow. ```python - # Include local module configuration. - configfile: "config/modules/foobar.yaml" + # Load the module configuration + with open(workflow.source_path("config/geoboundaries.yaml"), "r") as file: + config_geoboundaries = yaml.safe_load(file.read()) - module foobar: + module geoboundaries: # Request a specific module version. snakefile: github( - "calliope-project/foobar", + "modelblocks-org/module_geo_boundaries", path="workflow/Snakefile", - tag="v1.0.0" + tag="v0.1.9" ) - # Module configuration has its own key to ensure isolation. - config: config["foobar"] - # A prefix is added to isolate module input/output files. - prefix: "results/module_foobar" + # Specify the module configuration. + config: config_geoboundaries + # Pathvars let you tune input/output file location. + pathvars: + shapes="results/module_geoboundaries/shapes.parquet" # Rewrite rule names to avoid naming conflicts - use rule * from foobar as module_foobar_* + use rule * from geoboundaries as module_geoboundaries_* ``` ??? note "Template" - All data modules should follow [our standardised template](https://github.com/calliope-project/data-module-template). + All data modules should follow [our standardised template](https://github.com/modelblocks-org/data-module-template). This template provides a baseline for developers to ensure the following. - Version-specific access via version tags. @@ -81,9 +83,9 @@ These are study-specific workflows that combine the outputs of all other types o Since they tend to be study-specific, they will rarely (if ever) be accessed by other tools or components. It is perfectly possible to ensure that a model builder can be accessed modularly, but this is not required. -## The `clio_tools` integration utilities +## The `clio_tools` integration utility -To save time and enable component developers to check against the latest `clio` standards, we provide the `clio_tools` library. +To save time and enable component developers to check against the latest `modelblocks` standards, we provide the `clio_tools` library. This is a set of useful utility functions, geared towards ensuring smooth interfacing. -For more information, check [`clio_tools`](https://github.com/modelblocks-org/clio-tools) +For more information, check [`clio_tools`](https://github.com/modelblocks-org/clio-tools). diff --git a/docs/Developer_guidelines/getting_started.md b/docs/Developer_guidelines/getting_started.md index fc6b241..6de7b61 100644 --- a/docs/Developer_guidelines/getting_started.md +++ b/docs/Developer_guidelines/getting_started.md @@ -13,10 +13,10 @@ If you don't, we recommend following `mamba`'s [installation advice](https://git mamba install -c conda-forge copier ``` -2. Call the `copier` template of the type of component you wish to make. Currently, we only support [data modules](https://github.com/calliope-project/data-module-template). +2. Call the `copier` template of the type of component you wish to make. Currently, we only support [data modules](https://github.com/modelblocks-org/data-module-template). ```shell - copier copy 'https://github.com/calliope-project/data-module-template' + copier copy 'https://github.com/modelblocks-org/data-module-template' ``` 3. You'll be prompted with some questions. After answering them, `copier` will auto-generate the module for you. diff --git a/docs/Developer_guidelines/requirements.md b/docs/Developer_guidelines/requirements.md index 5eac661..65564a0 100644 --- a/docs/Developer_guidelines/requirements.md +++ b/docs/Developer_guidelines/requirements.md @@ -4,7 +4,7 @@ We enforce the following requirements in all projects. -1. **Open-source code**: projects must use either MIT or Apache 2.0, which are both [OSI approved](https://opensource.org/licenses) open-source licenses, and they must be openly available in platforms such as GitHub. +1. **Open-source code**: projects must use either Apache 2.0 or MIT open-source licenses, which are [OSI approved](https://opensource.org/licenses), and they must be openly available in platforms such as GitHub. 2. **Open data**: data produced by projects (dataset tools and data modules in particular) should use a [CC-BY-4.0 license](https://creativecommons.org/licenses/by/4.0/) whenever possible. 3. **Versioning**: projects must be version controlled with official releases, which can be used to specify the version of the project used in a study and/or dataset, and an accompanying CHANGELOG. Project developers are free to choose their preferred approach (e.g., [SemVer](https://semver.org/) or [CalVer](https://calver.org/)). 4. **Testing**: projects must employ some type of testing to ensure quality and long-term stability. The approach will vary depending on the type of project: @@ -46,7 +46,7 @@ The following is a list of general advice on how to format files to help tools i ???+ example "Example of a tidy table" - | year | country_id | shape_id | demand | + | year | country_id | shape_id | demand_mwh | |---------------|------------------|------------------|--------------| | 2020 | ITA | North | 4500 | | 2020 | ITA | East | 4800 | @@ -68,20 +68,13 @@ The following is a list of general advice on how to format files to help tools i "shape_id": "no_unit", "demand": "mwh" } - dataframe.attrs["source"] = "github.com/calliope-project/clio" + dataframe.attrs["source"] = "github.com/modelblocks-org/docs" dataframe.attrs["license"] = "CC-BY-4.0" dataframe.to_parquet('my_data.parquet') ``` 3. **Raster data**: we prefer to use GeoTIFF (.tiff) files. 4. **Polygon data**: we prefer [GeoParquet](https://geoparquet.org/) (.parquet) files. - - ??? example "Example shapefiles in our standard format" - - You can find some simple examples of our standard data format in the `clio/resources/shapes` folder. - - --8<-- "resources/shapes/README.md:docs" - 5. **Gridded data**: we prefer to use [netCDF](https://www.unidata.ucar.edu/software/netcdf/) (.nc) files. ## Metadata conventions @@ -95,7 +88,7 @@ The following is a list of general advice on how to format files to help tools i ???+ example "Example of tabular subnational data" - | country_id | shape_id | shape_spec | demand | + | country_id | shape_id | shape_spec | demand_mwh | |------------------|------------------|------------------|--------------| | DEU | DE13 | NUTS2024 | 4500 | | DEU | DE14 | NUTS2024 | 4800 | diff --git a/docs/Developer_guidelines/templates.md b/docs/Developer_guidelines/templates.md index 9fa7ac4..c7be271 100644 --- a/docs/Developer_guidelines/templates.md +++ b/docs/Developer_guidelines/templates.md @@ -24,7 +24,7 @@ This would quickly become confusing without some level of standardisation, so ou - Automatically generated documentation in a standard format, providing a familiar structure across all data modules. - Automatic checks for template updates, aiding module developers in keeping up with the latest standard. -URL: +URL: ## Model builder template diff --git a/docs/Modules/modules.md b/docs/Modules/modules.md index e1e8c09..7d11212 100644 --- a/docs/Modules/modules.md +++ b/docs/Modules/modules.md @@ -6,12 +6,12 @@ Currently, the following data modules are available. The modules are currently in active development. A more detailed documentation showing the capability of each module will be coming soon. -- [module_area_potentials](https://github.com/calliope-project/module_area_potentials) -- [module_demand_electricity](https://github.com/calliope-project/module_demand_electricity) -- [module_electricity_grid](https://github.com/calliope-project/module_electricity_grid) -- [module_geoboundaries](https://github.com/calliope-project/module_geo_boundaries) -- [module_hydropower](https://github.com/calliope-project/module_hydropower) -- [module_powerplants](https://github.com/calliope-project/module_powerplants) -- [module_pv_wind](https://github.com/calliope-project/module_pv_wind) +- [module_area_potentials](https://github.com/modelblocks-org/module_area_potentials) +- [module_demand_electricity](https://github.com/modelblocks-org/module_demand_electricity) +- [module_electricity_grid](https://github.com/modelblocks-org/module_electricity_grid) +- [module_geoboundaries](https://github.com/modelblocks-org/module_geo_boundaries) +- [module_hydropower](https://github.com/modelblocks-org/module_hydropower) +- [module_powerplants](https://github.com/modelblocks-org/module_powerplants) +- [module_pv_wind](https://github.com/modelblocks-org/module_pv_wind) If you think that an important topic is not covered by the modules above, feel free to develop your own module! Please read the [developer guidelines](../Developer_guidelines/getting_started.md) to learn how to get started. Our templates and recommended good practices are ready to help you, so your module will work smoothly from the start. diff --git a/docs/index.md b/docs/index.md index 6a07768..4766520 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,11 +1,11 @@ # Home -Welcome to [`clio`](https://github.com/calliope-project/clio)! +Welcome to the [`modelblocks`](https://www.modelblocks.org/) documentation! Our main purpose is enabling energy researchers and institutions to share, reuse and improve the data workflows used to construct Energy System Models in a decentralised way. We aim to do this by providing an expanding collection of high-quality modular workflows used for peer-reviewed research, inspired by `snakemake`'s [workflow catalog](https://snakemake.github.io/snakemake-workflow-catalog/). -In essence, we wish to turn very complex models that are hard to maintain and reuse into a range of digestible, well supported tools that get better and better over time! +We wish to turn very complex models that are hard to maintain and reuse into a range of digestible, well supported tools that get better and better over time! ![modules](./images/modular.png) diff --git a/mkdocs.yaml b/mkdocs.yaml index 1717ddc..72341d7 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -2,7 +2,7 @@ site_name: modelblocks site_url: https://modelblocks.readthedocs.io/ -repo_name: clio +repo_name: docs repo_url: https://github.com/modelblocks-org/docs/ edit_uri: edit/main/docs/ theme: @@ -22,24 +22,24 @@ theme: toggle: icon: material/brightness-auto name: Switch to light mode - primary: red - accent: pink + primary: teal + accent: blue grey # Palette toggle for light mode - media: "(prefers-color-scheme: light)" scheme: default toggle: icon: material/weather-sunny name: Switch to dark mode - primary: red - accent: pink + primary: teal + accent: blue grey # Palette toggle for dark mode - media: "(prefers-color-scheme: dark)" scheme: slate toggle: icon: material/weather-night name: Switch to system preference - primary: red - accent: pink + primary: teal + accent: blue grey markdown_extensions: - admonition - pymdownx.tasklist: diff --git a/pixi.lock b/pixi.lock index e6a0807..d58870f 100644 --- a/pixi.lock +++ b/pixi.lock @@ -20,6 +20,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/editorconfig-0.17.1-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ghp-import-2.1.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda @@ -32,6 +33,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsbeautifier-1.15.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda @@ -63,9 +65,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/paginate-0.5.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.21.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_101_cp314.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda @@ -78,6 +82,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda @@ -99,6 +104,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/editorconfig-0.17.1-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ghp-import-2.1.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda @@ -111,6 +117,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsbeautifier-1.15.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.2-h55c6f16_0.conda @@ -138,9 +145,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/paginate-0.5.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.21.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.3-h4c637c5_101_cp314.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda @@ -153,6 +162,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda @@ -174,6 +184,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/editorconfig-0.17.1-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ghp-import-2.1.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda @@ -185,6 +196,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsbeautifier-1.15.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.5-hac47afa_0.conda @@ -210,9 +222,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/paginate-0.5.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.21.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.14.3-h4b44e0e_101_cp314.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda @@ -224,6 +238,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h6ed50ae_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda @@ -439,6 +454,15 @@ packages: license: BSD-2-Clause AND PSF-2.0 size: 23884 timestamp: 1752059551405 +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda + sha256: ee6cf346d017d954255bbcbdb424cddea4d14e4ed7e9813e429db1d795d01144 + md5: 8e662bd460bda79b1ea39194e3c4c9ab + depends: + - python >=3.10 + - typing_extensions >=4.6.0 + license: MIT and PSF-2.0 + size: 21333 + timestamp: 1763918099466 - conda: https://conda.anaconda.org/conda-forge/noarch/ghp-import-2.1.0-pyhd8ed1ab_2.conda sha256: 40fdf5a9d5cc7a3503cd0c33e1b90b1e6eab251aaaa74e6b965417d089809a15 md5: 93f742fe078a7b34c29a182958d4d765 @@ -571,6 +595,15 @@ packages: license_family: APACHE size: 34387 timestamp: 1773931568510 +- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda + sha256: e1a9e3b1c8fe62dc3932a616c284b5d8cbe3124bbfbedcf4ce5c828cb166ee19 + md5: 9614359868482abba1bd15ce465e3c42 + depends: + - python >=3.10 + license: MIT + license_family: MIT + size: 13387 + timestamp: 1760831448842 - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda sha256: fc9ca7348a4f25fed2079f2153ecdcf5f9cf2a0bc36c4172420ca09e1849df7b md5: 04558c96691bed63104678757beb4f8d @@ -1144,6 +1177,16 @@ packages: license_family: MIT size: 25646 timestamp: 1773199142345 +- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda + sha256: e14aafa63efa0528ca99ba568eaf506eb55a0371d12e6250aaaa61718d2eb62e + md5: d7585b6550ad04c8c5e21097ada2888e + depends: + - python >=3.9 + - python + license: MIT + license_family: MIT + size: 25877 + timestamp: 1764896838868 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda sha256: cf70b2f5ad9ae472b71235e5c8a736c9316df3705746de419b59d442e8348e86 md5: 16c18772b340887160c79a6acc022db0 @@ -1184,6 +1227,25 @@ packages: license_family: BSD size: 21085 timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda + sha256: 9e749fb465a8bedf0184d8b8996992a38de351f7c64e967031944978de03a520 + md5: 2b694bad8a50dc2f712f5368de866480 + depends: + - pygments >=2.7.2 + - python >=3.10 + - iniconfig >=1.0.1 + - packaging >=22 + - pluggy >=1.5,<2 + - tomli >=1 + - colorama >=0.4 + - exceptiongroup >=1 + - python + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + size: 299581 + timestamp: 1765062031645 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_101_cp314.conda build_number: 101 sha256: cb0628c5f1732f889f53a877484da98f5a0e0f47326622671396fb4f2b0cd6bd @@ -1438,6 +1500,16 @@ packages: license_family: BSD size: 3526350 timestamp: 1769460339384 +- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda + sha256: 91cafdb64268e43e0e10d30bd1bef5af392e69f00edd34dfaf909f69ab2da6bd + md5: b5325cf06a000c5b14970462ff5e4d58 + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + size: 21561 + timestamp: 1774492402955 - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c md5: edd329d7d3a4ab45dcf905899a7a6115 diff --git a/pixi.toml b/pixi.toml index 2c39e80..1b4605f 100644 --- a/pixi.toml +++ b/pixi.toml @@ -16,4 +16,5 @@ mkdocs-material = ">=9.7.6" mkdocs-git-committers-plugin-2 = ">=2.5.0" mkdocstrings = ">=1.0.3" mkdocs-mermaid2-plugin = ">=1.2.3" -mkdocstrings-python = ">=2.0.2,<3" +mkdocstrings-python = ">=2.0.2" +pytest = ">=9.0.2" diff --git a/tests/data_module_test/docs_test.py b/tests/data_module_test/docs_test.py index 282a49f..4ea0a84 100644 --- a/tests/data_module_test/docs_test.py +++ b/tests/data_module_test/docs_test.py @@ -2,8 +2,9 @@ import subprocess + def test_mkdocs_builds(tmp_path, pytestconfig): - """Run a basic check on the """ + """Run a basic check on the""" project_root = pytestconfig.rootpath result = subprocess.run(