diff --git a/.github/workflows/docs-check.yml b/.github/workflows/docs-check.yml index 6160fd59..9c0802ec 100644 --- a/.github/workflows/docs-check.yml +++ b/.github/workflows/docs-check.yml @@ -12,7 +12,6 @@ on: - 'docs/**' - 'mkdocs.yml' - 'src/**' - - 'terratorch_iterate/**' - '.github/workflows/docs-check.yml' workflow_dispatch: diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index e0fc469e..3d698b1b 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -26,8 +26,8 @@ jobs: run: | # Advisory: pyproject.toml requires-python is >=3.11 and the repo has a # large pre-existing pylint backlog (notably R0801 duplicate-code - # across c3/{notebook,pythonscript,rscript} and the terratorch_iterate + # across c3/{notebook,pythonscript,rscript} and the claimed.iterate # modules). Mirrors the flake8 "exit-zero" pattern in # python-package-conda.yml so findings surface in logs without # blocking every PR. - pylint --exit-zero $(git ls-files 'src/**/*.py' 'terratorch_iterate/**/*.py') + pylint --exit-zero $(git ls-files 'src/**/*.py') diff --git a/.github/workflows/python-package-conda.yml b/.github/workflows/python-package-conda.yml index 9544e584..26a0f67b 100644 --- a/.github/workflows/python-package-conda.yml +++ b/.github/workflows/python-package-conda.yml @@ -30,9 +30,9 @@ jobs: - name: Lint with flake8 run: | # stop the build if there are Python syntax errors or undefined names - flake8 src terratorch_iterate --count --select=E9,F63,F7,F82 --show-source --statistics + flake8 src --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 src terratorch_iterate --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + flake8 src --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Test with pytest run: | # Advisory: many tests require optional heavy deps (torch, terratorch). diff --git a/docs/index.md b/docs/index.md index 01f21e5e..61fefc9a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -158,7 +158,7 @@ To run a benchmark over a ray cluster (which must be created before running), us To check the experiment results, use `mlflow ui --host $(hostname -f) --port --backend-store-uri ` and click the link. ![mlflow demo](images/mlflow.png) -## :::terratorch_iterate.backbone_benchmark.benchmark_backbone +## :::claimed.iterate.backbone_benchmark.benchmark_backbone ## Default and Task specification @@ -166,15 +166,15 @@ Under each of these, as well as for the `optimization_space`, the structure of p An exception is made for `batch_size` in `optimization_space`, which should be passed in the root level and is not passed to the `terratorch_task`. -### :::terratorch_iterate.benchmark_types.Defaults +### :::claimed.iterate.benchmark_types.Defaults -### :::terratorch_iterate.benchmark_types.Task +### :::claimed.iterate.benchmark_types.Task -## :::terratorch_iterate.benchmark_types.ParameterBounds +## :::claimed.iterate.benchmark_types.ParameterBounds -## :::terratorch_iterate.benchmark_types.TaskTypeEnum +## :::claimed.iterate.benchmark_types.TaskTypeEnum -## :::terratorch_iterate.benchmark_types.ParameterTypeEnum +## :::claimed.iterate.benchmark_types.ParameterTypeEnum ## Credits diff --git a/docs/ray.md b/docs/ray.md index ceec6366..e6e12c86 100644 --- a/docs/ray.md +++ b/docs/ray.md @@ -63,4 +63,4 @@ You can then use ray job to interact with your job. See [the ray quickstart guid More easily, you can use the ray dashboard and MLFlow to check your job. -## :::terratorch_iterate.benchmark_ray.benchmark_backbone +## :::claimed.iterate.benchmark_ray.benchmark_backbone diff --git a/docs/repeating_experiments.md b/docs/repeating_experiments.md index edd9edb5..0bfa8fe1 100644 --- a/docs/repeating_experiments.md +++ b/docs/repeating_experiments.md @@ -8,4 +8,4 @@ You can do this with: repeat_best_experiment --config ``` -## :::terratorch_iterate.repeat_best_experiment.rerun_best_from_backbone +## :::claimed.iterate.repeat_best_experiment.rerun_best_from_backbone diff --git a/pyproject.toml b/pyproject.toml index 2fb90a2d..8d2d4b3b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -107,16 +107,14 @@ c3_create_operator = "c3.create_operator:main" c3_create_containerless_operator = "c3.create_containerless_operator:main" c3_create_gridwrapper = "c3.create_gridwrapper:main" claimed = "claimed.claimed:main" -# terratorch-iterate -iterate-classic = "terratorch_iterate.main:main" -iterate = "terratorch_iterate.iterate2:main" +# terratorch-iterate (now bundled under claimed.iterate) +iterate-classic = "claimed.iterate.main:main" +iterate = "claimed.iterate.iterate2:main" -# Pick up packages from both layouts: -# src/c3*, src/claimed* — claimed sources -# terratorch_iterate* — iterate sources (top-level) +# All sources live under src/: c3*, claimed* (claimed.iterate is included by claimed*). [tool.setuptools.packages.find] -where = ["src", "."] -include = ["c3*", "claimed*", "terratorch_iterate*"] +where = ["src"] +include = ["c3*", "claimed*"] [tool.setuptools.package-data] "c3.templates" = ["*"] diff --git a/terratorch_iterate/__init__.py b/src/claimed/iterate/__init__.py similarity index 100% rename from terratorch_iterate/__init__.py rename to src/claimed/iterate/__init__.py diff --git a/terratorch_iterate/backbone_benchmark.py b/src/claimed/iterate/backbone_benchmark.py similarity index 98% rename from terratorch_iterate/backbone_benchmark.py rename to src/claimed/iterate/backbone_benchmark.py index 02969d69..70b6a246 100644 --- a/terratorch_iterate/backbone_benchmark.py +++ b/src/claimed/iterate/backbone_benchmark.py @@ -17,16 +17,16 @@ from optuna.samplers import BaseSampler, RandomSampler from tabulate import tabulate import pickle -from terratorch_iterate.iterate_types import ( +from claimed.iterate.iterate_types import ( Defaults, ParameterBounds, Task, combine_with_defaults, optimization_space_type, ) -from terratorch_iterate.model_fitting import fit_model, fit_model_with_hparams -from terratorch_iterate.repeat_best_experiment import rerun_best_from_backbone -from terratorch_iterate.utils import ( +from claimed.iterate.model_fitting import fit_model, fit_model_with_hparams +from claimed.iterate.repeat_best_experiment import rerun_best_from_backbone +from claimed.iterate.utils import ( check_existing_task_parent_runs, check_existing_experiments, unflatten, diff --git a/terratorch_iterate/benchmark_ray.py b/src/claimed/iterate/benchmark_ray.py similarity index 97% rename from terratorch_iterate/benchmark_ray.py rename to src/claimed/iterate/benchmark_ray.py index 0c7ea5c4..384a6834 100644 --- a/terratorch_iterate/benchmark_ray.py +++ b/src/claimed/iterate/benchmark_ray.py @@ -14,15 +14,15 @@ from ray.tune.search.optuna import OptunaSearch from tabulate import tabulate -from terratorch_iterate.backbone_benchmark import parse_optimization_space -from terratorch_iterate.iterate_types import ( +from claimed.iterate.backbone_benchmark import parse_optimization_space +from claimed.iterate.iterate_types import ( Defaults, Task, TrainingSpec, combine_with_defaults, optimization_space_type, ) -from terratorch_iterate.model_fitting import fit_model, ray_tune_model, valid_task_types +from claimed.iterate.model_fitting import fit_model, ray_tune_model, valid_task_types def benchmark_backbone_on_task( diff --git a/terratorch_iterate/benchmark_types.py b/src/claimed/iterate/benchmark_types.py similarity index 100% rename from terratorch_iterate/benchmark_types.py rename to src/claimed/iterate/benchmark_types.py diff --git a/terratorch_iterate/config_util/__init__.py b/src/claimed/iterate/config_util/__init__.py similarity index 100% rename from terratorch_iterate/config_util/__init__.py rename to src/claimed/iterate/config_util/__init__.py diff --git a/terratorch_iterate/config_util/build_iterate_config.py b/src/claimed/iterate/config_util/build_iterate_config.py similarity index 99% rename from terratorch_iterate/config_util/build_iterate_config.py rename to src/claimed/iterate/config_util/build_iterate_config.py index e45d8c73..54de9e16 100644 --- a/terratorch_iterate/config_util/build_iterate_config.py +++ b/src/claimed/iterate/config_util/build_iterate_config.py @@ -2,7 +2,7 @@ import yaml import pandas as pd import click -from terratorch_iterate.iterate_types import ( +from claimed.iterate.iterate_types import ( TaskTypeEnum, ) from copy import deepcopy diff --git a/src/claimed/iterate/iterate2/__init__.py b/src/claimed/iterate/iterate2/__init__.py new file mode 100644 index 00000000..62af455c --- /dev/null +++ b/src/claimed/iterate/iterate2/__init__.py @@ -0,0 +1,4 @@ +# claimed.iterate.iterate2 package +# Re-export main so that `from claimed.iterate.iterate2 import main` keeps +# working after iterate2.py was turned into a package directory. +from claimed.iterate.iterate2._iterate2 import main # noqa: F401 diff --git a/terratorch_iterate/iterate2/_iterate2.py b/src/claimed/iterate/iterate2/_iterate2.py similarity index 99% rename from terratorch_iterate/iterate2/_iterate2.py rename to src/claimed/iterate/iterate2/_iterate2.py index 52ded5a9..0dd01e54 100644 --- a/terratorch_iterate/iterate2/_iterate2.py +++ b/src/claimed/iterate/iterate2/_iterate2.py @@ -61,7 +61,7 @@ import optuna import yaml -from terratorch_iterate.iterate2.plugin.coordinator import load_builtin_plugins, resolve_storage +from claimed.iterate.iterate2.plugin.coordinator import load_builtin_plugins, resolve_storage load_builtin_plugins() diff --git a/src/claimed/iterate/iterate2/plugin/__init__.py b/src/claimed/iterate/iterate2/plugin/__init__.py new file mode 100644 index 00000000..f5bcb5a9 --- /dev/null +++ b/src/claimed/iterate/iterate2/plugin/__init__.py @@ -0,0 +1 @@ +# claimed.iterate.iterate2.plugin package diff --git a/terratorch_iterate/iterate2/plugin/coordinator/__init__.py b/src/claimed/iterate/iterate2/plugin/coordinator/__init__.py similarity index 90% rename from terratorch_iterate/iterate2/plugin/coordinator/__init__.py rename to src/claimed/iterate/iterate2/plugin/coordinator/__init__.py index fd6459a8..c415f1a7 100644 --- a/terratorch_iterate/iterate2/plugin/coordinator/__init__.py +++ b/src/claimed/iterate/iterate2/plugin/coordinator/__init__.py @@ -12,7 +12,7 @@ Usage ----- ->>> from terratorch_iterate.iterate2.plugin.coordinator import resolve_storage +>>> from claimed.iterate.iterate2.plugin.coordinator import resolve_storage >>> storage = resolve_storage("sqlite:///my_study.db") """ @@ -82,9 +82,9 @@ def load_builtin_plugins() -> None: """Import all built-in coordinator plugins so they self-register.""" import importlib _builtins = [ - "terratorch_iterate.iterate2.plugin.coordinator.sqlite", - "terratorch_iterate.iterate2.plugin.coordinator.journalfs", - "terratorch_iterate.iterate2.plugin.coordinator.postgresql", + "claimed.iterate.iterate2.plugin.coordinator.sqlite", + "claimed.iterate.iterate2.plugin.coordinator.journalfs", + "claimed.iterate.iterate2.plugin.coordinator.postgresql", ] for mod in _builtins: try: diff --git a/terratorch_iterate/iterate2/plugin/coordinator/journalfs.py b/src/claimed/iterate/iterate2/plugin/coordinator/journalfs.py similarity index 95% rename from terratorch_iterate/iterate2/plugin/coordinator/journalfs.py rename to src/claimed/iterate/iterate2/plugin/coordinator/journalfs.py index 633afff6..cf376974 100644 --- a/terratorch_iterate/iterate2/plugin/coordinator/journalfs.py +++ b/src/claimed/iterate/iterate2/plugin/coordinator/journalfs.py @@ -26,7 +26,7 @@ from optuna.storages import JournalFileStorage as _JournalFileBackend # type: ignore _USE_BACKEND = False -from terratorch_iterate.iterate2.plugin.coordinator import CoordinatorPlugin, register +from claimed.iterate.iterate2.plugin.coordinator import CoordinatorPlugin, register logger = logging.getLogger("iterate2.coordinator.journalfs") diff --git a/terratorch_iterate/iterate2/plugin/coordinator/postgresql.py b/src/claimed/iterate/iterate2/plugin/coordinator/postgresql.py similarity index 98% rename from terratorch_iterate/iterate2/plugin/coordinator/postgresql.py rename to src/claimed/iterate/iterate2/plugin/coordinator/postgresql.py index 825477ab..ffcc9b8f 100644 --- a/terratorch_iterate/iterate2/plugin/coordinator/postgresql.py +++ b/src/claimed/iterate/iterate2/plugin/coordinator/postgresql.py @@ -22,7 +22,7 @@ import logging import re -from terratorch_iterate.iterate2.plugin.coordinator import CoordinatorPlugin, register +from claimed.iterate.iterate2.plugin.coordinator import CoordinatorPlugin, register logger = logging.getLogger("iterate2.coordinator.postgresql") diff --git a/terratorch_iterate/iterate2/plugin/coordinator/sqlite.py b/src/claimed/iterate/iterate2/plugin/coordinator/sqlite.py similarity index 94% rename from terratorch_iterate/iterate2/plugin/coordinator/sqlite.py rename to src/claimed/iterate/iterate2/plugin/coordinator/sqlite.py index b5cc38b2..d7249ff3 100644 --- a/terratorch_iterate/iterate2/plugin/coordinator/sqlite.py +++ b/src/claimed/iterate/iterate2/plugin/coordinator/sqlite.py @@ -16,7 +16,7 @@ import logging -from terratorch_iterate.iterate2.plugin.coordinator import CoordinatorPlugin, register +from claimed.iterate.iterate2.plugin.coordinator import CoordinatorPlugin, register logger = logging.getLogger("iterate2.coordinator.sqlite") diff --git a/terratorch_iterate/iterate_types.py b/src/claimed/iterate/iterate_types.py similarity index 100% rename from terratorch_iterate/iterate_types.py rename to src/claimed/iterate/iterate_types.py diff --git a/terratorch_iterate/main.py b/src/claimed/iterate/main.py similarity index 98% rename from terratorch_iterate/main.py rename to src/claimed/iterate/main.py index 9dabddbd..a396978e 100644 --- a/terratorch_iterate/main.py +++ b/src/claimed/iterate/main.py @@ -4,15 +4,15 @@ from pathlib import Path from jsonargparse import ArgumentParser import pandas as pd -from terratorch_iterate.backbone_benchmark import benchmark_backbone -from terratorch_iterate.iterate_types import Defaults, Task -from terratorch_iterate.repeat_best_experiment import rerun_best_from_backbone -from terratorch_iterate.utils import ( +from claimed.iterate.backbone_benchmark import benchmark_backbone +from claimed.iterate.iterate_types import Defaults, Task +from claimed.iterate.repeat_best_experiment import rerun_best_from_backbone +from claimed.iterate.utils import ( get_logger, import_custom_modules, get_results_and_parameters, ) -from terratorch_iterate.config_util import build_iterate_config +from claimed.iterate.config_util import build_iterate_config def _summarize( diff --git a/terratorch_iterate/model_fitting.py b/src/claimed/iterate/model_fitting.py similarity index 99% rename from terratorch_iterate/model_fitting.py rename to src/claimed/iterate/model_fitting.py index 8ef1819c..ef847a45 100644 --- a/terratorch_iterate/model_fitting.py +++ b/src/claimed/iterate/model_fitting.py @@ -44,7 +44,7 @@ from torchgeo.datamodules import BaseDataModule from torchgeo.trainers import BaseTask -from terratorch_iterate.iterate_types import ( +from claimed.iterate.iterate_types import ( ParameterBounds, ParameterTypeEnum, TrainingSpec, @@ -54,7 +54,7 @@ ) -from terratorch_iterate.utils import get_logger +from claimed.iterate.utils import get_logger LOGGER = get_logger() diff --git a/terratorch_iterate/module.py b/src/claimed/iterate/module.py similarity index 100% rename from terratorch_iterate/module.py rename to src/claimed/iterate/module.py diff --git a/terratorch_iterate/plot_tools.py b/src/claimed/iterate/plot_tools.py similarity index 100% rename from terratorch_iterate/plot_tools.py rename to src/claimed/iterate/plot_tools.py diff --git a/terratorch_iterate/py.typed b/src/claimed/iterate/py.typed similarity index 100% rename from terratorch_iterate/py.typed rename to src/claimed/iterate/py.typed diff --git a/terratorch_iterate/repeat_best_experiment.py b/src/claimed/iterate/repeat_best_experiment.py similarity index 99% rename from terratorch_iterate/repeat_best_experiment.py rename to src/claimed/iterate/repeat_best_experiment.py index fdb4e40a..9ddf083c 100644 --- a/terratorch_iterate/repeat_best_experiment.py +++ b/src/claimed/iterate/repeat_best_experiment.py @@ -24,13 +24,13 @@ from lightning.pytorch.loggers.mlflow import MLFlowLogger import time -from terratorch_iterate.iterate_types import ( +from claimed.iterate.iterate_types import ( Defaults, Task, TrainingSpec, combine_with_defaults, ) -from terratorch_iterate.model_fitting import ( +from claimed.iterate.model_fitting import ( get_default_callbacks, inject_hparams, valid_task_types, diff --git a/terratorch_iterate/tests/__init__.py b/src/claimed/iterate/tests/__init__.py similarity index 100% rename from terratorch_iterate/tests/__init__.py rename to src/claimed/iterate/tests/__init__.py diff --git a/terratorch_iterate/utils.py b/src/claimed/iterate/utils.py similarity index 99% rename from terratorch_iterate/utils.py rename to src/claimed/iterate/utils.py index 5fcce35d..f926b239 100644 --- a/terratorch_iterate/utils.py +++ b/src/claimed/iterate/utils.py @@ -10,8 +10,8 @@ from matplotlib import pyplot as plt from ast import literal_eval import optuna -from terratorch_iterate.iterate_types import Task -from terratorch_iterate import plot_tools +from claimed.iterate.iterate_types import Task +from claimed.iterate import plot_tools import sys from mlflow.entities.experiment import Experiment import importlib diff --git a/src/claimed/jobcoordinator/db.py b/src/claimed/jobcoordinator/db.py index 43632cb3..903d63cd 100644 --- a/src/claimed/jobcoordinator/db.py +++ b/src/claimed/jobcoordinator/db.py @@ -16,7 +16,7 @@ ``UPDATE ... WHERE status='pending'`` and a small retry loop. The URL-normalisation helpers mirror the iterate2 coordinator plugins -(``terratorch_iterate/iterate2/plugin/coordinator/{sqlite,postgresql}.py``) so the +(``src/claimed/iterate/iterate2/plugin/coordinator/{sqlite,postgresql}.py``) so the accepted ``--db`` syntax is consistent across CLAIMED. """ diff --git a/terratorch_iterate/iterate2/__init__.py b/terratorch_iterate/iterate2/__init__.py deleted file mode 100644 index 8c5e8517..00000000 --- a/terratorch_iterate/iterate2/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -# terratorch_iterate.iterate2 package -# Re-export main so that `from terratorch_iterate.iterate2 import main` keeps -# working after iterate2.py was turned into a package directory. -from terratorch_iterate.iterate2._iterate2 import main # noqa: F401 diff --git a/terratorch_iterate/iterate2/plugin/__init__.py b/terratorch_iterate/iterate2/plugin/__init__.py deleted file mode 100644 index f89e362c..00000000 --- a/terratorch_iterate/iterate2/plugin/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# terratorch_iterate.iterate2.plugin package diff --git a/tests/integration/test_coordinator_plugins.py b/tests/integration/test_coordinator_plugins.py index 2cdc54fe..36d82233 100644 --- a/tests/integration/test_coordinator_plugins.py +++ b/tests/integration/test_coordinator_plugins.py @@ -33,7 +33,7 @@ def _fresh_registry(): """Return a clean load_builtin_plugins / resolve_storage pair backed by an isolated registry so tests cannot leak state into each other.""" # Re-import the coordinator package with a private registry copy. - from terratorch_iterate.iterate2.plugin import coordinator as coord_pkg + from claimed.iterate.iterate2.plugin import coordinator as coord_pkg import importlib, types # Build a fresh module clone with its own empty registry. @@ -76,36 +76,36 @@ def objective(trial): class TestSQLiteCoordinator: def _make_storage(self, db_url: str): - from terratorch_iterate.iterate2.plugin.coordinator.sqlite import SQLiteCoordinator + from claimed.iterate.iterate2.plugin.coordinator.sqlite import SQLiteCoordinator return SQLiteCoordinator().get_storage(db_url) def test_matches_sqlite_scheme(self): - from terratorch_iterate.iterate2.plugin.coordinator.sqlite import SQLiteCoordinator + from claimed.iterate.iterate2.plugin.coordinator.sqlite import SQLiteCoordinator p = SQLiteCoordinator() assert p.matches("sqlite:///foo.db") def test_matches_dot_db_extension(self): - from terratorch_iterate.iterate2.plugin.coordinator.sqlite import SQLiteCoordinator + from claimed.iterate.iterate2.plugin.coordinator.sqlite import SQLiteCoordinator p = SQLiteCoordinator() assert p.matches("/tmp/my_study.db") def test_matches_dot_sqlite_extension(self): - from terratorch_iterate.iterate2.plugin.coordinator.sqlite import SQLiteCoordinator + from claimed.iterate.iterate2.plugin.coordinator.sqlite import SQLiteCoordinator p = SQLiteCoordinator() assert p.matches("/tmp/my_study.sqlite") def test_no_match_journalfs(self): - from terratorch_iterate.iterate2.plugin.coordinator.sqlite import SQLiteCoordinator + from claimed.iterate.iterate2.plugin.coordinator.sqlite import SQLiteCoordinator p = SQLiteCoordinator() assert not p.matches("js:///tmp/journal.log") def test_normalises_plain_path_to_sqlite_url(self): - from terratorch_iterate.iterate2.plugin.coordinator.sqlite import SQLiteCoordinator + from claimed.iterate.iterate2.plugin.coordinator.sqlite import SQLiteCoordinator url = SQLiteCoordinator().get_storage("/tmp/study.db") assert url.startswith("sqlite:///") def test_passthrough_existing_sqlite_url(self): - from terratorch_iterate.iterate2.plugin.coordinator.sqlite import SQLiteCoordinator + from claimed.iterate.iterate2.plugin.coordinator.sqlite import SQLiteCoordinator url = "sqlite:///existing.db" assert SQLiteCoordinator().get_storage(url) == url @@ -116,7 +116,7 @@ def test_full_study_lifecycle(self, tmp_path): def test_resolve_storage_via_registry(self, tmp_path): """End-to-end: resolve_storage() picks the SQLite plugin.""" - from terratorch_iterate.iterate2.plugin.coordinator import ( + from claimed.iterate.iterate2.plugin.coordinator import ( load_builtin_plugins, resolve_storage, ) load_builtin_plugins() @@ -131,19 +131,19 @@ def test_resolve_storage_via_registry(self, tmp_path): class TestJournalFSCoordinator: def _make_storage(self, journal_path: str): - from terratorch_iterate.iterate2.plugin.coordinator.journalfs import JournalFSCoordinator + from claimed.iterate.iterate2.plugin.coordinator.journalfs import JournalFSCoordinator return JournalFSCoordinator().get_storage(f"js:///{journal_path}") def test_matches_js_prefix(self): - from terratorch_iterate.iterate2.plugin.coordinator.journalfs import JournalFSCoordinator + from claimed.iterate.iterate2.plugin.coordinator.journalfs import JournalFSCoordinator assert JournalFSCoordinator().matches("js:///tmp/j.log") def test_no_match_sqlite(self): - from terratorch_iterate.iterate2.plugin.coordinator.journalfs import JournalFSCoordinator + from claimed.iterate.iterate2.plugin.coordinator.journalfs import JournalFSCoordinator assert not JournalFSCoordinator().matches("sqlite:///foo.db") def test_no_match_postgresql(self): - from terratorch_iterate.iterate2.plugin.coordinator.journalfs import JournalFSCoordinator + from claimed.iterate.iterate2.plugin.coordinator.journalfs import JournalFSCoordinator assert not JournalFSCoordinator().matches("postgresql://u:p@h/db") def test_returns_journal_storage_object(self, tmp_path): @@ -184,7 +184,7 @@ def run(storage, name): assert not errors, f"Concurrent writers raised: {errors}" def test_resolve_storage_via_registry(self, tmp_path): - from terratorch_iterate.iterate2.plugin.coordinator import ( + from claimed.iterate.iterate2.plugin.coordinator import ( load_builtin_plugins, resolve_storage, ) load_builtin_plugins() @@ -211,24 +211,24 @@ def test_resolve_storage_via_registry(self, tmp_path): class TestPostgreSQLCoordinator: def test_matches_postgresql_scheme(self): - from terratorch_iterate.iterate2.plugin.coordinator.postgresql import PostgreSQLCoordinator + from claimed.iterate.iterate2.plugin.coordinator.postgresql import PostgreSQLCoordinator assert PostgreSQLCoordinator().matches("postgresql://u:p@h/db") def test_matches_legacy_postgres_scheme(self): - from terratorch_iterate.iterate2.plugin.coordinator.postgresql import PostgreSQLCoordinator + from claimed.iterate.iterate2.plugin.coordinator.postgresql import PostgreSQLCoordinator assert PostgreSQLCoordinator().matches("postgres://u:p@h/db") def test_no_match_sqlite(self): - from terratorch_iterate.iterate2.plugin.coordinator.postgresql import PostgreSQLCoordinator + from claimed.iterate.iterate2.plugin.coordinator.postgresql import PostgreSQLCoordinator assert not PostgreSQLCoordinator().matches("sqlite:///foo.db") def test_no_match_journalfs(self): - from terratorch_iterate.iterate2.plugin.coordinator.postgresql import PostgreSQLCoordinator + from claimed.iterate.iterate2.plugin.coordinator.postgresql import PostgreSQLCoordinator assert not PostgreSQLCoordinator().matches("js:///foo.log") def test_normalises_legacy_scheme(self): """'postgres://' must be normalised to 'postgresql://' before it reaches SQLAlchemy.""" - from terratorch_iterate.iterate2.plugin.coordinator.postgresql import _extract_host + from claimed.iterate.iterate2.plugin.coordinator.postgresql import _extract_host # Test the helper that parses the host out of the normalised URL. host = _extract_host("postgresql://user:pass@my-host.example.com:5432/db") assert host == "my-host.example.com" @@ -248,14 +248,14 @@ def mock_import(name, *args, **kwargs): return real_import(name, *args, **kwargs) monkeypatch.setattr(builtins, "__import__", mock_import) - from terratorch_iterate.iterate2.plugin.coordinator.postgresql import PostgreSQLCoordinator + from claimed.iterate.iterate2.plugin.coordinator.postgresql import PostgreSQLCoordinator with pytest.raises(ImportError, match="psycopg2"): PostgreSQLCoordinator().get_storage("postgresql://u:p@h/db") @postgres_required def test_full_study_lifecycle(self): import uuid - from terratorch_iterate.iterate2.plugin.coordinator.postgresql import PostgreSQLCoordinator + from claimed.iterate.iterate2.plugin.coordinator.postgresql import PostgreSQLCoordinator storage = PostgreSQLCoordinator().get_storage(POSTGRES_URL) study_name = f"pg_integration_{uuid.uuid4().hex[:8]}" try: @@ -270,7 +270,7 @@ def test_full_study_lifecycle(self): @postgres_required def test_resolve_storage_via_registry(self): from optuna.storages import RDBStorage - from terratorch_iterate.iterate2.plugin.coordinator import ( + from claimed.iterate.iterate2.plugin.coordinator import ( load_builtin_plugins, resolve_storage, ) load_builtin_plugins() @@ -281,7 +281,7 @@ def test_resolve_storage_via_registry(self): def test_parallel_trials(self): """Multiple threads sharing a PostgreSQL study must all complete cleanly.""" import threading, uuid - from terratorch_iterate.iterate2.plugin.coordinator.postgresql import PostgreSQLCoordinator + from claimed.iterate.iterate2.plugin.coordinator.postgresql import PostgreSQLCoordinator storage = PostgreSQLCoordinator().get_storage(POSTGRES_URL) study_name = f"pg_parallel_{uuid.uuid4().hex[:8]}" study = optuna.create_study(study_name=study_name, storage=storage, diff --git a/tests/integration/test_main.py b/tests/integration/test_main.py index dffbbe6d..3b2f88f7 100644 --- a/tests/integration/test_main.py +++ b/tests/integration/test_main.py @@ -2,7 +2,7 @@ from pathlib import Path import yaml -from terratorch_iterate.main import main +from claimed.iterate.main import main import pytest import sys diff --git a/tests/unit/test_build_geobench_configs.py b/tests/unit/test_build_geobench_configs.py index a75ae558..fa216278 100644 --- a/tests/unit/test_build_geobench_configs.py +++ b/tests/unit/test_build_geobench_configs.py @@ -1,7 +1,7 @@ from pathlib import Path import pytest import yaml -from terratorch_iterate.config_util.build_iterate_config import generate_iterate_config +from claimed.iterate.config_util.build_iterate_config import generate_iterate_config from deepdiff import DeepDiff import logging diff --git a/tests/unit/test_model_fitting.py b/tests/unit/test_model_fitting.py index 7a4dcb26..5460d712 100644 --- a/tests/unit/test_model_fitting.py +++ b/tests/unit/test_model_fitting.py @@ -1,7 +1,7 @@ from pathlib import Path from jsonargparse import ArgumentParser, Namespace -from terratorch_iterate.iterate_types import Task +from claimed.iterate.iterate_types import Task import uuid import pytest diff --git a/tests/unit/test_tasktypeenum.py b/tests/unit/test_tasktypeenum.py index 1dfb6690..90fab5d1 100644 --- a/tests/unit/test_tasktypeenum.py +++ b/tests/unit/test_tasktypeenum.py @@ -1,4 +1,4 @@ -from terratorch_iterate.iterate_types import TaskTypeEnum +from claimed.iterate.iterate_types import TaskTypeEnum import pytest from terratorch.tasks.base_task import TerraTorchTask from terratorch.tasks.classification_tasks import ClassificationTask