Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
89c0389
return original workflow ID in all responses
Lance-Drane Dec 4, 2025
c69a230
Merge pull request #14 from INTERSECT-DIAL/acl_return-workflow-id
ashriva16 Dec 4, 2025
01c3f22
modification in service to handle batch data
ashriva16 Dec 5, 2025
6ed985e
Merge remote-tracking branch 'origin/acl' into acl_batch-workflow_ids
Lance-Drane Dec 5, 2025
53f9f3e
have batch data return workflow id as well
Lance-Drane Dec 5, 2025
4e2890f
Merge pull request #15 from INTERSECT-DIAL/acl_batch-workflow_ids
Lance-Drane Dec 5, 2025
b4e89d5
fix a few of the dial service functions
Lance-Drane Dec 5, 2025
ea3e2ab
don't require data in initialize_workflow
Lance-Drane Dec 6, 2025
10f3a65
adding default dim_x variables
ashriva16 Dec 6, 2025
501995a
fix: issues
ashriva16 Dec 8, 2025
c314274
Merge pull request #19 from INTERSECT-DIAL/main
Lance-Drane Jan 29, 2026
45fce2c
Enable workflow for changes in charts directory
Lance-Drane Jan 29, 2026
cd9c589
Merge pull request #22 from INTERSECT-DIAL/main
Lance-Drane Feb 3, 2026
8bcb750
Merge pull request #23 from INTERSECT-DIAL/main
Lance-Drane Feb 3, 2026
55a8c11
add new dependency to pyproject.toml
konstpieper Feb 24, 2026
484bbaf
Merge remote-tracking branch 'origin/develop' into acl
Lance-Drane Mar 5, 2026
b904b34
making sinuoidal work
Mar 30, 2026
172802a
adding ras support to dial
Mar 30, 2026
f271fd3
Small fixes to RAS client output
konstpieper Mar 31, 2026
a50c968
fixes to the backend
konstpieper Mar 31, 2026
c48f6bc
remove .vscode
konstpieper Mar 31, 2026
f61b8f9
rename RAS to SABLE and use new repository
konstpieper Apr 1, 2026
0ebb5af
swap from PDM to UV
Lance-Drane Apr 2, 2026
a6fd76b
Merge branch 'infra-rehaul' into initial_benchmarking
Lance-Drane Apr 6, 2026
bda1b3c
fix scripts
Lance-Drane Apr 6, 2026
2d64008
add initial rosenbrock functions
Lance-Drane Apr 6, 2026
68e2f9c
add multiprocessing to rosenbrock report generator, add strain mappin…
Lance-Drane Apr 6, 2026
fd6e4a4
add Konstantin's hyperparameter suggestions to Rosenbrock, add multip…
Lance-Drane Apr 6, 2026
6d6a4df
add initial strainmap benchmark
konstpieper Apr 6, 2026
b0a4859
Merge branch 'initial_benchmarking' of code.ornl.gov:intersect/dialed…
konstpieper Apr 6, 2026
d0e02fd
normalize sklearn defaults to saner values
Lance-Drane Apr 6, 2026
7a9a6d2
fix uncertainty acquisition function
konstpieper Apr 6, 2026
e276244
finish initial strainmap benchmark
konstpieper Apr 6, 2026
e319812
Merge remote-tracking branch 'origin/initial_benchmarking' into initi…
konstpieper Apr 6, 2026
f1fe11e
tune the Rosenbrock benchmark, make more challenging
konstpieper Apr 6, 2026
da47db6
Merge branch 'sable' into initial_benchmarking_sable
konstpieper Apr 7, 2026
a2b5a64
add sable backend to strain_mapping benchmark
konstpieper Apr 7, 2026
60d3909
force length_scale_bounds to be fixed in benchmark
Lance-Drane Apr 7, 2026
c79f852
Merge remote-tracking branch 'gitlab-2/initial_benchmarking_sable' in…
Lance-Drane Apr 7, 2026
8b18cfb
fix hatch build with uv sync
Lance-Drane Apr 7, 2026
b7fbe3c
move matplotlib to development dependencies group
Lance-Drane Apr 7, 2026
8d8cfc5
update INTERSECT-SDK to 0.9.0, give better traceback logs to clients
Lance-Drane Apr 20, 2026
78f90b3
pin intersect_sdk version to non-breaking range
Lance-Drane Apr 20, 2026
20d57e5
fix typings for intersect-sdk 0.9 client scripts
Lance-Drane Apr 20, 2026
8a4e38b
service start script: set up logger before importing DIAL
Lance-Drane Apr 20, 2026
1acde0f
Merge remote-tracking branch 'origin/main' into develop
Lance-Drane Apr 21, 2026
864a91a
Merge pull request #25 from INTERSECT-DIAL/acl
Lance-Drane May 4, 2026
806db0e
add best history graph to rosenbrock benchmarks
Lance-Drane May 8, 2026
5d46730
Merge remote-tracking branch 'origin/develop' into initial_benchmarking
Lance-Drane May 8, 2026
44a93e0
fix Docker build
Lance-Drane May 8, 2026
9c49be6
temporarily allow tests to fail
Lance-Drane May 8, 2026
ab2d3cb
run ruff format/check
Lance-Drane May 8, 2026
3396b26
fix Docker build
Lance-Drane May 8, 2026
3def13c
fix Docker build
Lance-Drane May 8, 2026
aae189b
add python 3.14 to tests, fix docker test job
Lance-Drane May 8, 2026
cfe9199
Merge pull request #29 from INTERSECT-DIAL/initial_benchmarking
Lance-Drane May 11, 2026
af849d5
better validation of inputs
konstpieper May 12, 2026
f620bfd
draft: allow for multidimensional output.
konstpieper May 13, 2026
0225425
add todo
konstpieper May 13, 2026
db6f1ed
more validation
konstpieper May 13, 2026
3507246
update README.md
Lance-Drane May 14, 2026
df30767
fix CI
Lance-Drane May 14, 2026
48befa3
fix docker instructions in README
Lance-Drane May 14, 2026
a57f125
add initial documentation website
Lance-Drane May 15, 2026
afa1d63
don't lock the numpy version ourselves
Lance-Drane May 15, 2026
a845af9
Merge remote-tracking branch 'origin/develop' into sable
konstpieper May 21, 2026
96a7dc2
release helm chart 0.1.1
Lance-Drane May 22, 2026
3cfb735
Merge remote-tracking branch 'origin/main' into develop
Lance-Drane May 26, 2026
cb7c59f
backward compatible extensions to dial_dataclass
konstpieper May 27, 2026
bbc61c3
Merge remote-tracking branch 'origin/main' into sable
konstpieper May 27, 2026
ef866f0
fix dial_dataclass validation of bounds
konstpieper May 27, 2026
ce69754
start fixing unit tests
konstpieper May 27, 2026
aa9f5a9
quick fixes to test_internals to make them pass
konstpieper May 28, 2026
d1021dd
fix the strainmap benchmark
konstpieper May 28, 2026
f47edf4
update uv.lock
konstpieper May 28, 2026
32873a4
Merge pull request #35 from INTERSECT-DIAL/fix_unit_tests
Lance-Drane May 28, 2026
41cfa5d
Merge branch 'develop' into sable
konstpieper May 28, 2026
e16672c
bump DIAL to 0.1.2, fix chart default
Lance-Drane May 28, 2026
5d5c68e
add note about pre-commit in README
Lance-Drane May 28, 2026
1ecd74f
add placeholder logo for DIAL website for readthedocs build
Lance-Drane May 28, 2026
78c7678
add autogenerated files to gitignore
konstpieper May 29, 2026
bf1d6e8
formatting changes from ruff
konstpieper May 29, 2026
2a042d7
extract y and yerr from dataset_y unsing statistics_y
konstpieper May 29, 2026
b514dac
remove leftover method Y_stddev
konstpieper May 29, 2026
9ae0173
migrate sable_backend and client to the new (y,yerr) logic
konstpieper May 29, 2026
e5273d2
added discrete random next point
vreshniak Jun 5, 2026
7ca920d
Merge pull request #38 from INTERSECT-DIAL/randomdiscrete
Lance-Drane Jun 5, 2026
a211a13
bump dial to v0.1.3
Lance-Drane Jun 5, 2026
7982197
sklearn: fix error with combination of discrete_measurement_grid and …
Lance-Drane Jun 5, 2026
dd20fda
fix dependabot uv.lock deps
Lance-Drane Jun 5, 2026
23430a7
add more discrete measurement tests, fix small problem with random di…
Lance-Drane Jun 5, 2026
fbbcbd7
bump DIAL to 0.1.4 and add Viktor to authors
Lance-Drane Jun 6, 2026
e64a8af
hotfix 0.1.5 release - add created_at and last_modified fields to wor…
Lance-Drane Jun 6, 2026
2374b9a
#40 - add more return values to INTERSECT get_surrogate_values API
Lance-Drane Jun 7, 2026
bb153de
temporarily publish expanded-output docker container
Lance-Drane Jun 7, 2026
c66d0f2
fix links in documentation website
Lance-Drane Jun 7, 2026
5fa5041
reorganize docs
Lance-Drane Jun 7, 2026
072dab5
add grid strategy
vreshniak Jun 7, 2026
8bfdcec
renamed grid to hypercube strategy
vreshniak Jun 7, 2026
21de31b
fix for data.discrete_measurements = false
vreshniak Jun 7, 2026
55cf6ef
more progress on documentation
Lance-Drane Jun 7, 2026
4be4421
change default hypercube discrete_measurement_size to [4], add tests
Lance-Drane Jun 7, 2026
c775f26
Merge pull request #43 from INTERSECT-DIAL/randomdiscrete
Lance-Drane Jun 7, 2026
d0c11c0
return current size of workflow dataset_x with all responses
Lance-Drane Jun 7, 2026
e81cd03
get_surrogate_values : return mean of transformed standard deviations
Lance-Drane Jun 7, 2026
c678d3d
allow specifying point_index for hypercube in get_next_point
Lance-Drane Jun 8, 2026
41f4e04
return workflow_id in get_Workflow_data response
Lance-Drane Jun 8, 2026
233081b
Merge remote-tracking branch 'origin/develop' into sable
konstpieper Jun 8, 2026
7aa9e75
add dataset_x_size to dataset_x
Lance-Drane Jun 8, 2026
952061b
make sk_learn backend respect output_statistics
konstpieper Jun 8, 2026
8b21e7f
fixes for clients
konstpieper Jun 8, 2026
4a7724a
re-enable extra_args length_per_dimension
konstpieper Jun 8, 2026
f9961e3
do not rely on type comparision, but use name instead
konstpieper Jun 15, 2026
169fe86
updates to sinosidal_growth test
konstpieper Jun 15, 2026
2d8af2a
get_surrogate_values: get average from numpy data
Lance-Drane Jun 17, 2026
82b0f46
Merge pull request #42 from INTERSECT-DIAL/expanded-output
Lance-Drane Jun 18, 2026
0b7c782
bump DIAL to v0.1.6
Lance-Drane Jun 18, 2026
af837d5
add readthedocs link to pypi description
Lance-Drane Jun 18, 2026
ecb5099
remove temporary branch from CI
Lance-Drane Jun 18, 2026
0c0be40
Merge remote-tracking branch 'origin/develop' into sable
Lance-Drane Jun 23, 2026
5f3f0dd
fix Distribution pydantic typing
Lance-Drane Jun 23, 2026
4d01020
remove transformed_stddevs and use the regular stddevs
konstpieper Jun 24, 2026
5563019
fix and document all currently supported strategies
konstpieper Jun 24, 2026
e0653f9
fix unit test for fixed EI criterion
konstpieper Jun 25, 2026
d36c765
update clients to test more settings
konstpieper Jun 25, 2026
99e4e71
make DialInput repeated arguments from DialWorkflow optional
konstpieper Jun 25, 2026
5aeb4e7
Merge pull request #36
konstpieper Jun 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
!tests/**/*
!pyproject.toml
!pdm.lock
!uv.lock
!README.md
!docker-entrypoint.sh
__pycache__
Expand Down
53 changes: 26 additions & 27 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,56 +20,54 @@ jobs:
name: Ruff linting, formating, MyPy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup PDM
uses: pdm-project/setup-pdm@v4
- uses: actions/checkout@v6
- name: Setup UV
uses: astral-sh/setup-uv@v7
with:
python-version: "3.10"
cache: true
python-version: "3.12"
- name: Install dependencies
run: |
pdm venv create --with-pip --force $PYTHON
pdm sync --dev -G:all
# TODO add mypy check here
- run: |
pdm run ruff format --check
pdm run ruff check
uv sync --locked --all-extras --all-groups
- name: Run linters and type checks
run: |
uv run ruff format --check
uv run ruff check

test-all:
name: Unit tests on various OSes and Python versions
strategy:
matrix:
python-version:
- python-version: "3.10"
continue-on-error: false
continue-on-error: true
- python-version: "3.11"
continue-on-error: false
continue-on-error: true
- python-version: "3.12"
continue-on-error: false
continue-on-error: true
# TODO - fix issue with Jaxlib not installing
- python-version: "3.13"
continue-on-error: true
- python-version: "3.14"
continue-on-error: true
os:
- os: macos-latest
continue-on-error: false
continue-on-error: true
- os: windows-latest
continue-on-error: false
continue-on-error: true
- os: ubuntu-latest
continue-on-error: false
continue-on-error: true
runs-on: ${{ matrix.os.os }}
steps:
- uses: actions/checkout@v4
- name: Setup PDM
uses: pdm-project/setup-pdm@v4
- uses: actions/checkout@v6
- name: Setup UV
uses: astral-sh/setup-uv@v7
with:
python-version: ${{ matrix.python-version.python-version }}
cache: true
python-version: "3.12"
- name: Install dependencies
run: |
pdm venv create --with-pip --force $PYTHON
pdm sync --dev -G:all
uv sync --locked --all-extras --all-groups
continue-on-error: ${{ matrix.os.continue-on-error || matrix.python-version.continue-on-error }}
- run: pdm run test-all
- run: pytest tests/ --cov=src/ --cov-report=html:reports/htmlcov/ --cov-report=xml:reports/coverage_report.xml --junitxml=reports/junit.xml
continue-on-error: ${{ matrix.os.continue-on-error || matrix.python-version.continue-on-error }}

docker-test:
Expand All @@ -78,9 +76,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Build Docker image
run: docker build -t dial:test --target test .
run: docker build -t dial:test --target builder --build-arg UV_NO_DEV=0 .
- name: Run tests in container
run: docker run --rm dial:test pytest tests/
run: docker run --rm -v $PWD/tests:/app/tests/ dial:test uv run pytest tests/
continue-on-error: true

continuous-deployment:
name: Update deployments automatically
Expand Down
19 changes: 10 additions & 9 deletions .github/workflows/docker-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
- develop
- main
tags:
- 'v*.*.*'
- "v*.*.*"
workflow_dispatch:

permissions:
Expand All @@ -20,16 +20,19 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
- name: Log into registry ghcr.io
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Set up QEMU
uses: docker/setup-qemu-action@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
Expand All @@ -47,11 +50,9 @@ jobs:
uses: docker/build-push-action@v5
with:
context: .
build-args: |
PRODUCTION=1
push: true
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
target: runtime
11 changes: 10 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
### application-specific ###
# ignore generated plots by default
*.png
# but don't ignore any PNG files used on the documentation website
!/docs/**/*.png

# ignore all configuration files except for our default one
*.json
Expand All @@ -12,6 +14,8 @@

# testing reports
reports/
# any generated custom HTML files
*.html

### Python ###
# Byte-compiled / optimized / DLL files
Expand Down Expand Up @@ -101,7 +105,7 @@ ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
.python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
Expand Down Expand Up @@ -206,3 +210,8 @@ pyrightconfig.json
.ionide

# End of https://www.toptal.com/developers/gitignore/api/python,visualstudiocode

.venv*
Taskfile.yml
.DS_Store
*~
10 changes: 4 additions & 6 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,11 @@ repos:
- id: ruff
args: [ --fix ]
- id: ruff-format
- repo: https://github.com/pdm-project/pdm
rev: 2.17.2
- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.10.6
hooks:
- id: pdm-export
args: ['--without-hashes']
- id: pdm-lock-check
- id: pdm-sync
- id: uv-lock
#- id: uv-export
# TODO - enable mypy
#- repo: local
#hooks:
Expand Down
23 changes: 23 additions & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Read the Docs configuration file for Sphinx projects
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

version: 2

build:
os: ubuntu-lts-latest
tools:
python: "latest"

sphinx:
configuration: docs/conf.py
# Fail on all warnings to avoid broken references
fail_on_warning: true

formats: all

python:
install:
- method: pip
path: .
extra_requirements:
- docs
73 changes: 40 additions & 33 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,44 +1,51 @@
ARG REPO=
# common environment variables
FROM ${REPO}python:3.12-slim AS environment

# set to non-empty string to skip dev dependencies
ARG PRODUCTION=
ENV PDM_VERSION=2.21.0 \
PDM_HOME=/usr/local \
PDM_CHECK_UPDATE=false \
PIP_NO_CACHE_DIR=off \
PIP_DISABLE_PIP_VERSION_CHECK=on \
PRODUCTION=${PRODUCTION:-}

# intermediate PDM build stage
FROM environment AS builder
# see https://docs.astral.sh/uv/guides/integration/docker/#optimizations and https://www.joshkasuboski.com/posts/distroless-python-uv/

FROM --platform=$BUILDPLATFORM ghcr.io/astral-sh/uv:debian-slim AS builder

ARG PYTHON_VERSION=3.12
# set to "0" to include dev dependencies, "1" to exclude them (default: "1")
ARG UV_NO_DEV="1"

ENV UV_COMPILE_BYTECODE=1
ENV UV_LINK_MODE=copy
ENV UV_PYTHON_INSTALL_DIR=/python
ENV UV_PYTHON_PREFERENCE=only-managed
ENV UV_NO_DEV=${UV_NO_DEV}

# TODO - remove git once we install Sable from PyPI
RUN apt update -y
RUN apt install -y --no-install-recommends \
git \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*

RUN uv python install ${PYTHON_VERSION}

WORKDIR /app
RUN apt update \
&& apt-get install --no-install-recommends -y \
curl \
make \
&& rm -rf /var/lib/apt/lists/* \
&& curl -sSL https://raw.githubusercontent.com/pdm-project/pdm/main/install-pdm.py | python -

# add minimal files needed for package install
COPY pyproject.toml README.md pdm.lock ./

# Install (required) dependencies
RUN --mount=type=cache,target=/root/.cache/uv \
--mount=type=bind,source=uv.lock,target=uv.lock \
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
uv sync --locked --no-install-project --no-editable

# Sync the project
COPY src src
RUN if [ -n "${PRODUCTION}" ]; then pdm sync --no-editable --prod; else pdm sync --no-editable --dev; fi
RUN --mount=type=cache,target=/root/.cache/uv \
--mount=type=bind,source=uv.lock,target=uv.lock \
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
--mount=type=bind,source=README.md,target=README.md \
uv sync --locked --no-editable

# main execution environment
FROM environment AS runtime
FROM --platform=$BUILDPLATFORM gcr.io/distroless/cc:nonroot AS runner

COPY --from=builder --chown=app:app /python /python

WORKDIR /app
COPY --from=builder --chown=app:app /app/.venv /app/.venv
COPY --chown=app:app scripts scripts

COPY --from=builder /app/.venv /app/.venv
COPY scripts scripts
ENV PATH="/app/.venv/bin:$PATH"

# override CMD at container runtime if you want to execute the client, make sure that "client" group is present
CMD ["python", "scripts/launch_service.py"]

# add additional files for testing
FROM runtime AS test
COPY tests tests
34 changes: 24 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,16 @@ Alternatively, both intersect-sdk and Dial may be installed with the following:

## Installing (developers)

Install PDM ([link](https://pdm-project.org/en/latest/#installation)) and then run:
Install UV ([link](https://docs.astral.sh/uv/getting-started/installation/)) and then run:

`pdm install`
```
uv sync --all-groups --all-extras --all-packages
pre-commit install
```

We use PDM as a dependency manager and intend on using the dependencies listed in `pdm.lock` in a production environment.
We use UV as a dependency manager and intend on using the dependencies listed in `uv.lock` in a production environment.

We use ruff to lint/format; if using the PDM workflow, `pre-commit` will automatically fail the commit if there are linting/formatting errors.
We use ruff to lint/format; if using the UV workflow, `pre-commit` will automatically fail the commit if there are linting/formatting errors.

To format:

Expand All @@ -40,9 +43,9 @@ To run linter and automatically fix errors:

## running infrastructure locally

You can use `docker compose up -d -f docker-compose-dev.yml` or to automatically spin up both a broker instance and a database instance locally.
You can use `docker compose -f docker-compose-dev.yml up` or to automatically spin up both a broker instance and a database instance locally.

If you also want to run DIAL inside the container, you can instead run `docker compose up -d`
If you also want to run DIAL inside the container, you can instead run `docker compose up`

To remove the infrastructure containers: `docker compose down -v`; leave off the `-v` flag if you would like to persist the DB data.

Expand All @@ -51,8 +54,9 @@ To remove the infrastructure containers: `docker compose down -v`; leave off the
To run the service: `python scripts/launch_service.py`

In a separate terminal, you can run one of the following clients:
- Automatic: `python scripts/automated_client.py`
- Manual: `python scripts/manual_client.py`

- Automatic: `python scripts/automated_client.py`
- Manual: `python scripts/manual_client.py`

CLI arg `--config` or environment variable `DIAL_CONFIG_FILE` should be a path to a valid JSON configuration. If neither value is set, it will default to `local-conf.json` .

Expand Down Expand Up @@ -90,21 +94,25 @@ helm install dial . -n dial --create-namespace
```

For detailed Helm chart documentation, see:

- [charts/dial/README.md](charts/dial/README.md) - Comprehensive Helm documentation

### Common Helm Commands

With custom INTERSECT configuration:

```bash
helm install dial . -n dial --create-namespace -f values.yaml -f values.config.yaml
```

With NodePort service:

```bash
helm install dial . -n dial --create-namespace -f values.yaml -f values.nodePort.yaml
```

With external MongoDB:

```bash
helm install dial . -n dial --create-namespace \
--set mongodb.enabled=false \
Expand All @@ -113,6 +121,12 @@ helm install dial . -n dial --create-namespace \

## Testing

You will need `pytest` installed to run the tests, it should be automatically included in your virtual environment if using the PDM workflow.
You will need `pytest` installed to run the tests.

`pytest tests/`

## Building the documentation

You will need to make sure the `docs` optional dependency group is installed. Then you can run `sphinx build -W --keep-going docs/ docs/_build/` .

`pdm run test-all`
To quickly spin up the documentation web server on `http://localhost:8000` : `python -m http.server -d docs/_build/`
Loading
Loading