diff --git a/cli/pyproject.toml b/cli/pyproject.toml index f43cc5b..5fff24d 100644 --- a/cli/pyproject.toml +++ b/cli/pyproject.toml @@ -26,6 +26,8 @@ dev = [ "ipython>=8.39.0", "pyright>=1.1.410", "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.19", ] diff --git a/cli/tests/fixtures/expected_output/services/test-service/current/app/pyproject.toml b/cli/tests/fixtures/expected_output/services/test-service/current/app/pyproject.toml index 1982b9c..910f605 100644 --- a/cli/tests/fixtures/expected_output/services/test-service/current/app/pyproject.toml +++ b/cli/tests/fixtures/expected_output/services/test-service/current/app/pyproject.toml @@ -11,6 +11,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/cli/uv.lock b/cli/uv.lock index 70ef340..b8526e6 100644 --- a/cli/uv.lock +++ b/cli/uv.lock @@ -23,6 +23,8 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, { name = "twine", specifier = ">=6.2.0" }, ] @@ -49,6 +51,8 @@ dev = [ { name = "ipython" }, { name = "pyright" }, { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -71,6 +75,8 @@ dev = [ { name = "ipython", specifier = ">=8.39.0" }, { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, ] @@ -716,6 +722,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + [[package]] name = "pytest-mock" version = "3.15.1" diff --git a/justfile b/justfile index 0a6ebbd..14cc2bb 100644 --- a/justfile +++ b/justfile @@ -6,8 +6,18 @@ default: @just --list # Run tests for ALL services (using find loop) -test-all: - find services -name "pyproject.toml" -execdir uv run pytest \; +test-all: test-all-services + cd cli && uv run pytest + cd packages/agebd && uv run pytest + +test-all-services: + #!/usr/bin/env bash + for dir in services/*/current/app; do + if [ -d "$dir" ]; then + (cd "$dir" && uv run pytest) + fi + done + # find services -name "pyproject.toml" -execdir uv run pytest \; # Sync all envs sync-all: diff --git a/packages/agebd/pyproject.toml b/packages/agebd/pyproject.toml index 57f1919..adefca4 100644 --- a/packages/agebd/pyproject.toml +++ b/packages/agebd/pyproject.toml @@ -15,6 +15,8 @@ dependencies = [ dev = [ "pyright>=1.1.410", "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.19", "twine>=6.2.0", ] diff --git a/packages/agebd/uv.lock b/packages/agebd/uv.lock index 3abe14f..2f7b7f4 100644 --- a/packages/agebd/uv.lock +++ b/packages/agebd/uv.lock @@ -16,6 +16,8 @@ dependencies = [ dev = [ { name = "pyright" }, { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, { name = "twine" }, ] @@ -31,6 +33,8 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, { name = "twine", specifier = ">=6.2.0" }, ] @@ -458,6 +462,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "pywin32-ctypes" version = "0.2.3" diff --git a/services/dbpm3curr/current/app/pyproject.toml b/services/dbpm3curr/current/app/pyproject.toml index 9969f38..ee536c3 100644 --- a/services/dbpm3curr/current/app/pyproject.toml +++ b/services/dbpm3curr/current/app/pyproject.toml @@ -12,6 +12,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/services/dbpm3curr/current/app/uv.lock b/services/dbpm3curr/current/app/uv.lock index 19b6a42..0fdd944 100644 --- a/services/dbpm3curr/current/app/uv.lock +++ b/services/dbpm3curr/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -37,6 +42,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -50,6 +57,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -220,6 +229,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "rich" version = "15.0.0" diff --git a/services/injectionguard/current/app/pyproject.toml b/services/injectionguard/current/app/pyproject.toml index 0885f3f..7e41b93 100644 --- a/services/injectionguard/current/app/pyproject.toml +++ b/services/injectionguard/current/app/pyproject.toml @@ -12,6 +12,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/services/injectionguard/current/app/uv.lock b/services/injectionguard/current/app/uv.lock index ca83005..d6fd6c1 100644 --- a/services/injectionguard/current/app/uv.lock +++ b/services/injectionguard/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -37,6 +42,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -50,6 +57,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -220,6 +229,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "rich" version = "15.0.0" diff --git a/services/master/current/app/pyproject.toml b/services/master/current/app/pyproject.toml index 5787e26..a8339d9 100644 --- a/services/master/current/app/pyproject.toml +++ b/services/master/current/app/pyproject.toml @@ -12,6 +12,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/services/master/current/app/uv.lock b/services/master/current/app/uv.lock index e8a43d2..79f5e75 100644 --- a/services/master/current/app/uv.lock +++ b/services/master/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -37,6 +42,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -50,6 +57,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -220,6 +229,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "pyyaml" version = "6.0.3" diff --git a/services/nturns/current/app/pyproject.toml b/services/nturns/current/app/pyproject.toml index 13230ee..e05f3f7 100644 --- a/services/nturns/current/app/pyproject.toml +++ b/services/nturns/current/app/pyproject.toml @@ -13,6 +13,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/services/nturns/current/app/uv.lock b/services/nturns/current/app/uv.lock index 3208ae2..943dcfa 100644 --- a/services/nturns/current/app/uv.lock +++ b/services/nturns/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -38,6 +43,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -52,6 +59,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -222,6 +231,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "rich" version = "15.0.0" diff --git a/services/plots/current/app/pyproject.toml b/services/plots/current/app/pyproject.toml index 10a6f91..083065f 100644 --- a/services/plots/current/app/pyproject.toml +++ b/services/plots/current/app/pyproject.toml @@ -14,6 +14,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/services/plots/current/app/uv.lock b/services/plots/current/app/uv.lock index d2161b5..d181ebe 100644 --- a/services/plots/current/app/uv.lock +++ b/services/plots/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -38,6 +43,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -52,6 +59,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -343,6 +352,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -355,6 +390,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "rich" version = "15.0.0" diff --git a/services/postmortemlog/current/app/pyproject.toml b/services/postmortemlog/current/app/pyproject.toml index c80ecbe..00f1a05 100644 --- a/services/postmortemlog/current/app/pyproject.toml +++ b/services/postmortemlog/current/app/pyproject.toml @@ -14,6 +14,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/services/postmortemlog/current/app/uv.lock b/services/postmortemlog/current/app/uv.lock index 4a1bd38..c29d2e6 100644 --- a/services/postmortemlog/current/app/uv.lock +++ b/services/postmortemlog/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -39,6 +44,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -54,6 +61,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -345,6 +354,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -357,6 +392,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "rich" version = "15.0.0" diff --git a/services/scrubbing/current/app/pyproject.toml b/services/scrubbing/current/app/pyproject.toml index 48b5c9a..15aa097 100644 --- a/services/scrubbing/current/app/pyproject.toml +++ b/services/scrubbing/current/app/pyproject.toml @@ -12,6 +12,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/services/scrubbing/current/app/uv.lock b/services/scrubbing/current/app/uv.lock index b007b71..0675884 100644 --- a/services/scrubbing/current/app/uv.lock +++ b/services/scrubbing/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -37,6 +42,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -50,6 +57,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -220,6 +229,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "rich" version = "15.0.0" diff --git a/services/shifttool/current/app/pyproject.toml b/services/shifttool/current/app/pyproject.toml index b80a7e5..36996b7 100644 --- a/services/shifttool/current/app/pyproject.toml +++ b/services/shifttool/current/app/pyproject.toml @@ -12,6 +12,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/services/shifttool/current/app/uv.lock b/services/shifttool/current/app/uv.lock index 650b5e7..b93a6a5 100644 --- a/services/shifttool/current/app/uv.lock +++ b/services/shifttool/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -36,6 +41,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -48,6 +55,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -218,6 +227,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "rich" version = "15.0.0" diff --git a/services/taubpm/current/app/pyproject.toml b/services/taubpm/current/app/pyproject.toml index 9b549f6..48396b3 100644 --- a/services/taubpm/current/app/pyproject.toml +++ b/services/taubpm/current/app/pyproject.toml @@ -12,6 +12,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/services/taubpm/current/app/uv.lock b/services/taubpm/current/app/uv.lock index 8545543..16af299 100644 --- a/services/taubpm/current/app/uv.lock +++ b/services/taubpm/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -37,6 +42,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -50,6 +57,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -220,6 +229,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "rich" version = "15.0.0" diff --git a/services/taupct/current/app/pyproject.toml b/services/taupct/current/app/pyproject.toml index 468df8d..a38926f 100644 --- a/services/taupct/current/app/pyproject.toml +++ b/services/taupct/current/app/pyproject.toml @@ -12,6 +12,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/services/taupct/current/app/uv.lock b/services/taupct/current/app/uv.lock index b3ce4c0..042f322 100644 --- a/services/taupct/current/app/uv.lock +++ b/services/taupct/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -37,6 +42,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -50,6 +57,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -220,6 +229,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "rich" version = "15.0.0" diff --git a/services/timing/current/app/pyproject.toml b/services/timing/current/app/pyproject.toml index 1723540..b97acf1 100644 --- a/services/timing/current/app/pyproject.toml +++ b/services/timing/current/app/pyproject.toml @@ -12,6 +12,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/services/timing/current/app/uv.lock b/services/timing/current/app/uv.lock index fc46548..11dbeb2 100644 --- a/services/timing/current/app/uv.lock +++ b/services/timing/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -37,6 +42,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -50,6 +57,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -220,6 +229,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "rich" version = "15.0.0" diff --git a/services/topuptool/current/app/pyproject.toml b/services/topuptool/current/app/pyproject.toml index a573cd2..feb71a2 100644 --- a/services/topuptool/current/app/pyproject.toml +++ b/services/topuptool/current/app/pyproject.toml @@ -12,6 +12,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/services/topuptool/current/app/uv.lock b/services/topuptool/current/app/uv.lock index 20087c3..e9ed638 100644 --- a/services/topuptool/current/app/uv.lock +++ b/services/topuptool/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -37,6 +42,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -50,6 +57,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -220,6 +229,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "rich" version = "15.0.0" diff --git a/services/tune/current/app/pyproject.toml b/services/tune/current/app/pyproject.toml index f73a517..ec5ec6b 100644 --- a/services/tune/current/app/pyproject.toml +++ b/services/tune/current/app/pyproject.toml @@ -5,6 +5,7 @@ description = "AGEBD-TUNE Service" requires-python = "==3.10.*" dependencies = [ "agebd", + "sls2om==0.1.0", "pyepics>=3.5.8", "nafflib>=2.1.1", "numpy>=2.2.6", @@ -15,6 +16,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] @@ -22,6 +25,7 @@ dev = [ # Path is relative to where agebd package is deployed on hla # machines (see CI/CD in .gitea/workflows) agebd = { path = "../../../../packages/agebd", editable = true } +sls2om = { index = "gitea-sls" } [build-system] requires = ["hatchling"] @@ -30,6 +34,11 @@ build-backend = "hatchling.build" [tool.uv] package = true +[[tool.uv.index]] +# SLS Packages on Gitea +name = "gitea-sls" +url = "https://gitea.psi.ch/api/packages/sls/pypi/simple/" + [tool.pytest.ini_options] pythonpath = ["src"] env = [ @@ -48,4 +57,7 @@ line-length = 100 extend-select = ["I"] [tool.ruff.lint.isort] -known-first-party = ["agebd"] +known-first-party = [ + "agebd", + "sls2om", +] diff --git a/services/tune/current/app/src/agebd_tune/service.py b/services/tune/current/app/src/agebd_tune/service.py index f8ed2ef..f47df11 100644 --- a/services/tune/current/app/src/agebd_tune/service.py +++ b/services/tune/current/app/src/agebd_tune/service.py @@ -6,9 +6,6 @@ from time import sleep, time import nafflib import numpy as np from epics import PV - -# TODO: handle how to incorporate this into the framework -from OMFacility import Facility from scipy.fft import fft from sklearn.utils.extmath import randomized_svd @@ -16,6 +13,7 @@ from agebd.pv import get_pv_class from agebd.service.base import BaseService from agebd.service.pvs import BasePVs from agebd.utils import printgetversion +from sls2om.OMFacility import Facility __version__ = printgetversion(__file__) diff --git a/services/tune/current/app/tests/test_app.py b/services/tune/current/app/tests/test_app.py index 2afcc45..353fc55 100644 --- a/services/tune/current/app/tests/test_app.py +++ b/services/tune/current/app/tests/test_app.py @@ -1,7 +1,9 @@ from agebd_tune import PVs, Service -def test_app(): +def test_app(mocker): + mocker.patch("agebd_tune.service.Facility") + service_name = "DUMMY" pvs = PVs(service_name=service_name) service = Service(name=service_name, pvs=pvs) diff --git a/services/tune/current/app/uv.lock b/services/tune/current/app/uv.lock index e6c3586..ad5e128 100644 --- a/services/tune/current/app/uv.lock +++ b/services/tune/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -35,11 +40,14 @@ dependencies = [ { name = "pyepics" }, { name = "scikit-learn" }, { name = "scipy" }, + { name = "sls2om" }, ] [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -51,11 +59,14 @@ requires-dist = [ { name = "pyepics", specifier = ">=3.5.8" }, { name = "scikit-learn", specifier = ">=1.7.2" }, { name = "scipy", specifier = ">=1.15.3" }, + { name = "sls2om", specifier = "==0.1.0", index = "https://gitea.psi.ch/api/packages/sls/pypi/simple/" }, ] [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -295,6 +306,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -307,6 +344,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "pytz" version = "2026.2" @@ -411,6 +457,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] +[[package]] +name = "sls2om" +version = "0.1.0" +source = { registry = "https://gitea.psi.ch/api/packages/sls/pypi/simple/" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://gitea.psi.ch/api/packages/sls/pypi/files/sls2om/0.1.0/sls2om-0.1.0.tar.gz", hash = "sha256:4592902f2cdc0179412321d5133e883ef754f18dd3ff9ff4acd67802723d46c1" } +wheels = [ + { url = "https://gitea.psi.ch/api/packages/sls/pypi/files/sls2om/0.1.0/sls2om-0.1.0-py3-none-any.whl", hash = "sha256:075f3e8dce337c9ecb18ab0dc74ef850f4d0470d4b4cfcd918f328c552ce9c92" }, +] + [[package]] name = "threadpoolctl" version = "3.6.0" diff --git a/services/tunebump/current/app/pyproject.toml b/services/tunebump/current/app/pyproject.toml index 45ab86b..b079125 100644 --- a/services/tunebump/current/app/pyproject.toml +++ b/services/tunebump/current/app/pyproject.toml @@ -5,6 +5,7 @@ description = "AGEBD-TUNEBUMP Service" requires-python = "==3.10.*" dependencies = [ "agebd", + "sls2om==0.1.0", "pyepics>=3.5.8", "numpy>=2.2.6", "scipy>=1.15.3", @@ -13,6 +14,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] @@ -20,6 +23,7 @@ dev = [ # Path is relative to where agebd package is deployed on hla # machines (see CI/CD in .gitea/workflows) agebd = { path = "../../../../packages/agebd", editable = true } +sls2om = { index = "gitea-sls" } [build-system] requires = ["hatchling"] @@ -28,6 +32,11 @@ build-backend = "hatchling.build" [tool.uv] package = true +[[tool.uv.index]] +# SLS Packages on Gitea +name = "gitea-sls" +url = "https://gitea.psi.ch/api/packages/sls/pypi/simple/" + [tool.pytest.ini_options] pythonpath = ["src"] env = [ @@ -46,4 +55,7 @@ line-length = 100 extend-select = ["I"] [tool.ruff.lint.isort] -known-first-party = ["agebd"] +known-first-party = [ + "agebd", + "sls2om", +] diff --git a/services/tunebump/current/app/src/agebd_tunebump/service.py b/services/tunebump/current/app/src/agebd_tunebump/service.py index 76e7afe..14389ce 100644 --- a/services/tunebump/current/app/src/agebd_tunebump/service.py +++ b/services/tunebump/current/app/src/agebd_tunebump/service.py @@ -2,18 +2,14 @@ from datetime import datetime import numpy as np from epics import PV - -# TODO: how to package/deploy this to use it here? -from OMFacility import Facility - -# TODO: how to package/deploy this to use it here? -from OMSLS2Magnet import SLS2Magnet from scipy import signal from agebd.pv import get_pv_class from agebd.service.base import BaseService from agebd.service.pvs import BasePVs from agebd.utils import printgetversion +from sls2om.OMFacility import Facility +from sls2om.OMSLS2Magnet import SLS2Magnet __version__ = printgetversion(__file__) diff --git a/services/tunebump/current/app/tests/test_app.py b/services/tunebump/current/app/tests/test_app.py index ea2bb02..200d088 100644 --- a/services/tunebump/current/app/tests/test_app.py +++ b/services/tunebump/current/app/tests/test_app.py @@ -1,7 +1,10 @@ from agebd_tunebump import PVs, Service -def test_app(): +def test_app(mocker): + mocker.patch("agebd_tunebump.service.Facility") + mocker.patch("agebd_tunebump.service.SLS2Magnet") + service_name = "DUMMY" pvs = PVs(service_name=service_name) service = Service(name=service_name, pvs=pvs) diff --git a/services/tunebump/current/app/uv.lock b/services/tunebump/current/app/uv.lock index 66b28bd..431c64a 100644 --- a/services/tunebump/current/app/uv.lock +++ b/services/tunebump/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -33,11 +38,14 @@ dependencies = [ { name = "numpy" }, { name = "pyepics" }, { name = "scipy" }, + { name = "sls2om" }, ] [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -47,11 +55,14 @@ requires-dist = [ { name = "numpy", specifier = ">=2.2.6" }, { name = "pyepics", specifier = ">=3.5.8" }, { name = "scipy", specifier = ">=1.15.3" }, + { name = "sls2om", specifier = "==0.1.0", index = "https://gitea.psi.ch/api/packages/sls/pypi/simple/" }, ] [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -222,6 +233,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "rich" version = "15.0.0" @@ -289,6 +335,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, ] +[[package]] +name = "sls2om" +version = "0.1.0" +source = { registry = "https://gitea.psi.ch/api/packages/sls/pypi/simple/" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://gitea.psi.ch/api/packages/sls/pypi/files/sls2om/0.1.0/sls2om-0.1.0.tar.gz", hash = "sha256:4592902f2cdc0179412321d5133e883ef754f18dd3ff9ff4acd67802723d46c1" } +wheels = [ + { url = "https://gitea.psi.ch/api/packages/sls/pypi/files/sls2om/0.1.0/sls2om-0.1.0-py3-none-any.whl", hash = "sha256:075f3e8dce337c9ecb18ab0dc74ef850f4d0470d4b4cfcd918f328c552ce9c92" }, +] + [[package]] name = "tomli" version = "2.4.1" diff --git a/services/tunefbx/current/app/pyproject.toml b/services/tunefbx/current/app/pyproject.toml index 8577af6..d9b798e 100644 --- a/services/tunefbx/current/app/pyproject.toml +++ b/services/tunefbx/current/app/pyproject.toml @@ -12,6 +12,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/services/tunefbx/current/app/uv.lock b/services/tunefbx/current/app/uv.lock index 3983d84..225b83a 100644 --- a/services/tunefbx/current/app/uv.lock +++ b/services/tunefbx/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -37,6 +42,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -50,6 +57,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -220,6 +229,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "rich" version = "15.0.0" diff --git a/services/tunefby/current/app/pyproject.toml b/services/tunefby/current/app/pyproject.toml index aca04d1..cc32635 100644 --- a/services/tunefby/current/app/pyproject.toml +++ b/services/tunefby/current/app/pyproject.toml @@ -12,6 +12,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ] diff --git a/services/tunefby/current/app/uv.lock b/services/tunefby/current/app/uv.lock index 94fb628..97cb71e 100644 --- a/services/tunefby/current/app/uv.lock +++ b/services/tunefby/current/app/uv.lock @@ -8,12 +8,14 @@ version = "0.1.0" source = { editable = "../../../../packages/agebd" } dependencies = [ { name = "h5py" }, + { name = "pyepics" }, { name = "typer" }, ] [package.metadata] requires-dist = [ { name = "h5py", specifier = ">=3.16.0" }, + { name = "pyepics", specifier = ">=3.5.10" }, { name = "typer", specifier = ">=0.23.2" }, ] @@ -21,7 +23,10 @@ requires-dist = [ dev = [ { name = "pyright", specifier = ">=1.1.410" }, { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.19" }, + { name = "twine", specifier = ">=6.2.0" }, ] [[package]] @@ -37,6 +42,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "pytest" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, { name = "ruff" }, ] @@ -50,6 +57,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest-env", specifier = ">=1.7.0" }, + { name = "pytest-mock", specifier = ">=3.15.1" }, { name = "ruff", specifier = ">=0.15.20" }, ] @@ -220,6 +229,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] +[[package]] +name = "pytest-env" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "python-dotenv" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/49/08ee056f9cc655e437abcf2ae399884844b623223476ae6a77244131db03/pytest_env-1.7.0.tar.gz", hash = "sha256:0c1dc1101fb8d3ab3611e8f8d657ba06c3c0c167fc85c90457e5b27f2508f43e", size = 16408, upload-time = "2026-07-21T13:09:21.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3e/fc/9f2975c41d41bf5bd9a7d0fc03085ec20052b456b079df53828ae4a1b100/pytest_env-1.7.0-py3-none-any.whl", hash = "sha256:9ee0f1fe859d23fcdb533fe2909a404b3b133d02674a56df275bbe4df4eb104b", size = 10263, upload-time = "2026-07-21T13:09:20.677Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + [[package]] name = "rich" version = "15.0.0" diff --git a/templates/service/{{service_name_lower}}/current/app/pyproject.toml.jinja b/templates/service/{{service_name_lower}}/current/app/pyproject.toml.jinja index a15a66b..10d21ed 100644 --- a/templates/service/{{service_name_lower}}/current/app/pyproject.toml.jinja +++ b/templates/service/{{service_name_lower}}/current/app/pyproject.toml.jinja @@ -11,6 +11,8 @@ dependencies = [ [dependency-groups] dev = [ "pytest>=8.4.2", + "pytest-env>=1.7.0", + "pytest-mock>=3.15.1", "ruff>=0.15.20", ]