From 2b9cdbced2765f4e36b149056f63950ac7a9baeb Mon Sep 17 00:00:00 2001 From: thorinaboenke Date: Mon, 15 Jun 2026 15:52:14 +0200 Subject: [PATCH 1/9] use optional dependencies --- .github/workflows/python-app.yml | 2 +- README.md | 4 ++-- docs/installation.md | 38 ++++++++++++++++++++++++++++---- pyproject.toml | 6 +++-- 4 files changed, 41 insertions(+), 9 deletions(-) diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index e9727e9a..0f87154e 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -30,7 +30,7 @@ jobs: run: uv run --dev prek run -a - name: Test with pytest - run: uv run --dev pytest -s + run: uv run --dev --extra dataframes pytest -s # integration tests for DetectMateService - name: Checkout DetectMateService diff --git a/README.md b/README.md index c9ccb822..8e72b48e 100644 --- a/README.md +++ b/README.md @@ -42,13 +42,13 @@ protoc --proto_path=src/detectmatelibrary/schemas/ --python_out=src/detectmateli Run the tests: ```bash -uv run pytest -q +uv run --dev --extra dataframes pytest -q ``` Run the tests with coverage (add --cov-report=html to generate an HTML report): ```bash -uv run pytest --cov=. --cov-report=term-missing +uv run --dev --extra dataframes pytest --cov=. --cov-report=term-missing ``` ## Workspace generator (`mate create`) diff --git a/docs/installation.md b/docs/installation.md index 2f04fc82..4a88f8f1 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -22,6 +22,36 @@ To install it in a different venv as a library: uv pip install --no-cache-dir ``` +### Optional dependencies + +Not all features require the same dependencies. DetectMateLibrary uses optional extras so you only install what you need: +Optional Dependency Groups https://pydevtools.com/handbook/explanation/what-are-optional-dependencies-and-dependency-groups/ + +| Extra | Installs | When you need it | +|---|---|---| +| `dataframes` | `pandas`, `polars` | Using `EventDataFrame`, `ChunkedEventDataFrame`, `DataNormalizer`, or LogBatcher parser | +| `polars-rtcompat` | `polars[rtcompat]` | Running on older CPUs without AVX2 support (e.g. some VMs or embedded hardware); not needed for standard deployments | + +Install an extra with `uv sync`: + +```bash +uv sync --extra dataframes +``` + +Or with `uv pip install` / pip when installing as a library: + +```bash +uv pip install "detectmatelibrary[dataframes]" +# or +pip install "detectmatelibrary[dataframes]" +``` + +Combine multiple extras if needed: + +```bash +uv sync --extra dataframes --extra polars-rtcompat +``` + ## Developer setup **Purpose**: prepare a development environment with test and lint tooling. @@ -70,21 +100,21 @@ protoc \ ### Step 3: Run unit tests -Run the full test suite: +The full test suite exercises dataframe-dependent code, so the `dataframes` extra must be present. Run all tests with: ```bash -uv run --dev pytest -s +uv run --dev --extra dataframes pytest -s ``` Run tests with coverage (terminal summary): ```bash -uv run --dev pytest --cov=. --cov-report=term-missing +uv run --dev --extra dataframes pytest --cov=. --cov-report=term-missing ``` **Tips**: -- Run a single test or directory to speed iteration: `uv run --dev pytest tests/some_test.py::test_name -q` +- Run a single test or directory to speed iteration: `uv run --dev --extra dataframes pytest tests/some_test.py::test_name -q` ## Troubleshooting diff --git a/pyproject.toml b/pyproject.toml index eb59512b..c0bd95fe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,8 +18,6 @@ dependencies = [ "scikit-learn>=1.8.0", "tiktoken>=0.12.0", "numpy>=2.3.2", - "pandas>=2.3.2", - "polars>=1.40.1", "detectmateperformance>=0.1.0", "msgpack>=1.0.0", "fsspec>=2024.1.0", @@ -36,6 +34,10 @@ dev = [ ] [project.optional-dependencies] +dataframes = [ + "pandas>=2.3.2", + "polars>=1.40.1", +] polars-rtcompat = [ "polars[rtcompat]>=1.38.1", ] From 66d3d3a6c43a1927e3c11f21def1f06598377066 Mon Sep 17 00:00:00 2001 From: thorinaboenke Date: Mon, 22 Jun 2026 15:38:34 +0200 Subject: [PATCH 2/9] aff optional dependenci group llm --- README.md | 4 ++-- docs/development.md | 4 ++-- docs/installation.md | 11 ++++++----- docs/parsers/logbatcher_parser.md | 10 ++++++++++ pyproject.toml | 13 ++++++++----- 5 files changed, 28 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 8e72b48e..bb7e2d50 100644 --- a/README.md +++ b/README.md @@ -42,13 +42,13 @@ protoc --proto_path=src/detectmatelibrary/schemas/ --python_out=src/detectmateli Run the tests: ```bash -uv run --dev --extra dataframes pytest -q +uv run --dev --extra dataframes --extra llm pytest -q ``` Run the tests with coverage (add --cov-report=html to generate an HTML report): ```bash -uv run --dev --extra dataframes pytest --cov=. --cov-report=term-missing +uv run --dev --extra dataframes --extra llm pytest --cov=. --cov-report=term-missing ``` ## Workspace generator (`mate create`) diff --git a/docs/development.md b/docs/development.md index 94239b1b..2e7f0217 100644 --- a/docs/development.md +++ b/docs/development.md @@ -36,8 +36,8 @@ uv run prek run -a ## Add tests and run pytest -In oder to run the tests run the following command: +In order to run the tests run the following command: ```bash -uv run --dev pytest +uv run --dev --extra dataframes --extra llm pytest ``` diff --git a/docs/installation.md b/docs/installation.md index 4a88f8f1..69c8053d 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -29,7 +29,8 @@ Optional Dependency Groups https://pydevtools.com/handbook/explanation/what-are- | Extra | Installs | When you need it | |---|---|---| -| `dataframes` | `pandas`, `polars` | Using `EventDataFrame`, `ChunkedEventDataFrame`, `DataNormalizer`, or LogBatcher parser | +| `llm` | `openai`, `tenacity`, `scipy`, `scikit-learn`, `tiktoken`, `pandas` | Using the `LogBatcherParser` (LLM-based log parsing) | +| `dataframes` | `pandas`, `polars` | Using `EventDataFrame`, `ChunkedEventDataFrame`, or `DataNormalizer` | | `polars-rtcompat` | `polars[rtcompat]` | Running on older CPUs without AVX2 support (e.g. some VMs or embedded hardware); not needed for standard deployments | Install an extra with `uv sync`: @@ -100,21 +101,21 @@ protoc \ ### Step 3: Run unit tests -The full test suite exercises dataframe-dependent code, so the `dataframes` extra must be present. Run all tests with: +The full test suite covers dataframe and LLM-parser code, so both extras must be present. Run all tests with: ```bash -uv run --dev --extra dataframes pytest -s +uv run --dev --extra dataframes --extra llm pytest -s ``` Run tests with coverage (terminal summary): ```bash -uv run --dev --extra dataframes pytest --cov=. --cov-report=term-missing +uv run --dev --extra dataframes --extra llm pytest --cov=. --cov-report=term-missing ``` **Tips**: -- Run a single test or directory to speed iteration: `uv run --dev --extra dataframes pytest tests/some_test.py::test_name -q` +- Run a single test or directory to speed iteration: `uv run --dev --extra dataframes --extra llm pytest tests/some_test.py::test_name -q` ## Troubleshooting diff --git a/docs/parsers/logbatcher_parser.md b/docs/parsers/logbatcher_parser.md index 5970876f..76ac920b 100644 --- a/docs/parsers/logbatcher_parser.md +++ b/docs/parsers/logbatcher_parser.md @@ -7,6 +7,16 @@ LLM-based log parser that infers event templates from raw log messages using any | **Input** | [LogSchema](../schemas.md) | Raw log string | | **Output** | [ParserSchema](../schemas.md) | Structured log with template and variables | +## Installation + +`LogBatcherParser` requires the `llm` optional extra: + +```bash +pip install "detectmatelibrary[llm]" +# or with uv +uv sync --extra llm +``` + ## Overview `LogBatcherParser` wraps the [LogBatcher](https://github.com/LogIntelligence/LogBatcher) engine (MIT, LogIntelligence 2024) as a `CoreParser`. Parsing proceeds in two phases: diff --git a/pyproject.toml b/pyproject.toml index c0bd95fe..7f8865e3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,11 +12,6 @@ dependencies = [ "pydantic>=2.13.3", "pyyaml>=6.0.3", "regex>=2025.11.3", - "openai>=2.26.0", - "tenacity>=9.1.4", - "scipy>=1.17.1", - "scikit-learn>=1.8.0", - "tiktoken>=0.12.0", "numpy>=2.3.2", "detectmateperformance>=0.1.0", "msgpack>=1.0.0", @@ -34,6 +29,14 @@ dev = [ ] [project.optional-dependencies] +llm = [ + "openai>=2.26.0", + "tenacity>=9.1.4", + "scipy>=1.17.1", + "scikit-learn>=1.8.0", + "tiktoken>=0.12.0", + "pandas>=2.3.2", +] dataframes = [ "pandas>=2.3.2", "polars>=1.40.1", From aa78f2e8b0cd4db130556697eafc02646a33289f Mon Sep 17 00:00:00 2001 From: thorinaboenke Date: Mon, 22 Jun 2026 15:56:49 +0200 Subject: [PATCH 3/9] lazy dataframe import --- .../utils/persistency/__init__.py | 21 ++++++++++- .../utils/persistency/persistency_saver.py | 37 +++++++++++++------ 2 files changed, 45 insertions(+), 13 deletions(-) diff --git a/src/detectmatelibrary/utils/persistency/__init__.py b/src/detectmatelibrary/utils/persistency/__init__.py index fff0f391..315d2de1 100644 --- a/src/detectmatelibrary/utils/persistency/__init__.py +++ b/src/detectmatelibrary/utils/persistency/__init__.py @@ -1,8 +1,8 @@ +from typing import Any + from .event_persistency import EventPersistency from .persistency_saver import PersistencySaver, PersistencySaverConfig, PersistencyLoadError from .event_data_structures.base import EventDataStructure -from .event_data_structures.dataframes.event_dataframe import EventDataFrame -from .event_data_structures.dataframes.chunked_event_dataframe import ChunkedEventDataFrame from .event_data_structures.trackers.stability.stability_tracker import EventStabilityTracker __all__ = [ @@ -15,3 +15,20 @@ "ChunkedEventDataFrame", "EventStabilityTracker", ] + +_DATAFRAME_EXPORTS = {"EventDataFrame", "ChunkedEventDataFrame"} + + +def __getattr__(name: str) -> Any: + if name in _DATAFRAME_EXPORTS: + try: + from .event_data_structures.dataframes import EventDataFrame, ChunkedEventDataFrame + except ImportError as e: + raise ImportError( + f"'{name}' requires the 'dataframes' extra: " + "pip install 'detectmatelibrary[dataframes]'" + ) from e + globals()["EventDataFrame"] = EventDataFrame + globals()["ChunkedEventDataFrame"] = ChunkedEventDataFrame + return globals()[name] + raise AttributeError(f"module {__name__!r} has no attribute {name!r}") diff --git a/src/detectmatelibrary/utils/persistency/persistency_saver.py b/src/detectmatelibrary/utils/persistency/persistency_saver.py index 13db6e16..a9796898 100644 --- a/src/detectmatelibrary/utils/persistency/persistency_saver.py +++ b/src/detectmatelibrary/utils/persistency/persistency_saver.py @@ -9,10 +9,6 @@ import fsspec from detectmatelibrary.utils.persistency.event_data_structures.base import EventDataStructure -from detectmatelibrary.utils.persistency.event_data_structures.dataframes import ( - EventDataFrame, - ChunkedEventDataFrame, -) from detectmatelibrary.utils.persistency.event_data_structures.trackers import ( EventTracker, EventStabilityTracker, @@ -23,10 +19,33 @@ _BACKEND_REGISTRY: dict[str, type[EventDataStructure]] = { "EventTracker": EventTracker, "EventStabilityTracker": EventStabilityTracker, - "EventDataFrame": EventDataFrame, - "ChunkedEventDataFrame": ChunkedEventDataFrame, } +_DATAFRAME_BACKENDS = {"EventDataFrame", "ChunkedEventDataFrame"} + + +def _get_backend_cls(name: str) -> type[EventDataStructure]: + if name in _BACKEND_REGISTRY: + return _BACKEND_REGISTRY[name] + if name in _DATAFRAME_BACKENDS: + try: + from detectmatelibrary.utils.persistency.event_data_structures.dataframes import ( + ChunkedEventDataFrame, + EventDataFrame, + ) + except ImportError as e: + raise PersistencyLoadError( + f"Backend '{name}' requires the 'dataframes' extra: " + "pip install 'detectmatelibrary[dataframes]'" + ) from e + df_registry: dict[str, type[EventDataStructure]] = { + "EventDataFrame": EventDataFrame, + "ChunkedEventDataFrame": ChunkedEventDataFrame, + } + return df_registry[name] + raise PersistencyLoadError(f"Unknown backend '{name}' — cannot restore event") + + _EXTENSION_MAP: dict[str, str] = { "EventTracker": "msgpack", "EventStabilityTracker": "msgpack", @@ -154,11 +173,7 @@ def load(self) -> None: file_path = f"{self._root}/events/{event_id_str}.{ext}" with self._fs.open(file_path, "rb") as f: data = f.read() - if backend_name not in _BACKEND_REGISTRY: - raise PersistencyLoadError( - f"Unknown backend '{backend_name}' — cannot restore event '{event_id}'" - ) - backend_cls = _BACKEND_REGISTRY[backend_name] + backend_cls = _get_backend_cls(backend_name) self._persistency.events_data[event_id] = backend_cls.load(data, **global_kwargs) except PersistencyLoadError: raise From 669e9ee5c6603a7aeae0160942e1cd01f1714f86 Mon Sep 17 00:00:00 2001 From: thorinaboenke Date: Mon, 22 Jun 2026 15:59:13 +0200 Subject: [PATCH 4/9] fix github workflow --- .github/workflows/python-app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index 0f87154e..8ba07686 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -30,7 +30,7 @@ jobs: run: uv run --dev prek run -a - name: Test with pytest - run: uv run --dev --extra dataframes pytest -s + run: uv run --dev --extra dataframes --extra llm pytest -s # integration tests for DetectMateService - name: Checkout DetectMateService From 27a2017de676f17672464d4b583a4b0949c980ee Mon Sep 17 00:00:00 2001 From: thorinaboenke Date: Thu, 9 Jul 2026 10:57:13 +0200 Subject: [PATCH 5/9] add group full for extra dependencies --- pyproject.toml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 7f8865e3..a4a74fdb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,6 +26,7 @@ dev = [ "prek>=0.3.10", "pytest>=8.4.2", "pytest-cov>=6.2.1", + "detectmatelibrary[full]", ] [project.optional-dependencies] @@ -44,6 +45,12 @@ dataframes = [ polars-rtcompat = [ "polars[rtcompat]>=1.38.1", ] +# install all optional extras at once: uv pip install detectmatelibrary[full] +full = [ + "detectmatelibrary[llm]", + "detectmatelibrary[dataframes]", + "detectmatelibrary[polars-rtcompat]", +] [tool.setuptools.dynamic] version = {attr = "detectmatelibrary.metadata.__version__"} From 2ed7dd9dd0ddda59333eb728db56c81ea5c43c5b Mon Sep 17 00:00:00 2001 From: thorinaboenke Date: Thu, 9 Jul 2026 10:58:25 +0200 Subject: [PATCH 6/9] update docs for dependency ggroups --- docs/development.md | 4 ++-- docs/installation.md | 19 ++++++++++++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/docs/development.md b/docs/development.md index 2e7f0217..a65a0317 100644 --- a/docs/development.md +++ b/docs/development.md @@ -36,8 +36,8 @@ uv run prek run -a ## Add tests and run pytest -In order to run the tests run the following command: +In order to run the tests run the following command. The `dev` group already includes the `full` extra, so all optional dependencies are installed automatically: ```bash -uv run --dev --extra dataframes --extra llm pytest +uv run --dev pytest ``` diff --git a/docs/installation.md b/docs/installation.md index 69c8053d..1461f00a 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -32,6 +32,7 @@ Optional Dependency Groups https://pydevtools.com/handbook/explanation/what-are- | `llm` | `openai`, `tenacity`, `scipy`, `scikit-learn`, `tiktoken`, `pandas` | Using the `LogBatcherParser` (LLM-based log parsing) | | `dataframes` | `pandas`, `polars` | Using `EventDataFrame`, `ChunkedEventDataFrame`, or `DataNormalizer` | | `polars-rtcompat` | `polars[rtcompat]` | Running on older CPUs without AVX2 support (e.g. some VMs or embedded hardware); not needed for standard deployments | +| `full` | `llm` + `dataframes` + `polars-rtcompat` | Installing every optional extra at once | Install an extra with `uv sync`: @@ -53,13 +54,21 @@ Combine multiple extras if needed: uv sync --extra dataframes --extra polars-rtcompat ``` +Or install everything at once with the `full` extra: + +```bash +uv sync --extra full +# or +uv pip install "detectmatelibrary[full]" +``` + ## Developer setup **Purpose**: prepare a development environment with test and lint tooling. ### Step 1: Install Python development dependencies & pre-commit hooks -- Install dev dependencies (testing, linters, formatters): +- Install dev dependencies (testing, linters, formatters). The `dev` group also pulls in the `full` extra, so every optional dependency (LLM, dataframes, polars-rtcompat) is installed too: ```bash uv sync --dev @@ -101,21 +110,21 @@ protoc \ ### Step 3: Run unit tests -The full test suite covers dataframe and LLM-parser code, so both extras must be present. Run all tests with: +The full test suite covers dataframe and LLM-parser code, so all extras must be present. Since `uv sync --dev` already installs the `full` extra, run all tests with: ```bash -uv run --dev --extra dataframes --extra llm pytest -s +uv run --dev pytest -s ``` Run tests with coverage (terminal summary): ```bash -uv run --dev --extra dataframes --extra llm pytest --cov=. --cov-report=term-missing +uv run --dev pytest --cov=. --cov-report=term-missing ``` **Tips**: -- Run a single test or directory to speed iteration: `uv run --dev --extra dataframes --extra llm pytest tests/some_test.py::test_name -q` +- Run a single test or directory to speed iteration: `uv run --dev pytest tests/some_test.py::test_name -q` ## Troubleshooting From f5ed74fa026ea0a704acbfa5fb1dada4dca11082 Mon Sep 17 00:00:00 2001 From: thorinaboenke Date: Thu, 9 Jul 2026 10:58:41 +0200 Subject: [PATCH 7/9] update readme on dependency groups --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bb7e2d50..92e44cbb 100644 --- a/README.md +++ b/README.md @@ -42,13 +42,13 @@ protoc --proto_path=src/detectmatelibrary/schemas/ --python_out=src/detectmateli Run the tests: ```bash -uv run --dev --extra dataframes --extra llm pytest -q +uv run --dev pytest -q ``` Run the tests with coverage (add --cov-report=html to generate an HTML report): ```bash -uv run --dev --extra dataframes --extra llm pytest --cov=. --cov-report=term-missing +uv run --dev pytest --cov=. --cov-report=term-missing ``` ## Workspace generator (`mate create`) From fd840836870457024c761ea86c35f25967fb389e Mon Sep 17 00:00:00 2001 From: thorinaboenke Date: Thu, 9 Jul 2026 10:59:32 +0200 Subject: [PATCH 8/9] update uv lock --- uv.lock | 55 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 16 deletions(-) diff --git a/uv.lock b/uv.lock index 57f054d2..454d717a 100644 --- a/uv.lock +++ b/uv.lock @@ -230,28 +230,43 @@ dependencies = [ { name = "fsspec" }, { name = "msgpack" }, { name = "numpy" }, - { name = "openai" }, - { name = "pandas" }, - { name = "polars" }, { name = "protobuf", version = "6.33.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14'" }, { name = "protobuf", version = "7.34.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" }, { name = "pyarrow" }, { name = "pydantic" }, { name = "pyyaml" }, { name = "regex" }, +] + +[package.optional-dependencies] +dataframes = [ + { name = "pandas" }, + { name = "polars" }, +] +full = [ + { name = "openai" }, + { name = "pandas" }, + { name = "polars", extra = ["rtcompat"] }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "tenacity" }, + { name = "tiktoken" }, +] +llm = [ + { name = "openai" }, + { name = "pandas" }, { name = "scikit-learn" }, { name = "scipy" }, { name = "tenacity" }, { name = "tiktoken" }, ] - -[package.optional-dependencies] polars-rtcompat = [ { name = "polars", extra = ["rtcompat"] }, ] [package.dev-dependencies] dev = [ + { name = "detectmatelibrary", extra = ["full"] }, { name = "mike" }, { name = "prek" }, { name = "pytest" }, @@ -260,28 +275,33 @@ dev = [ [package.metadata] requires-dist = [ - { name = "detectmateperformance", git = "https://github.com/ait-detectmate/DetectMatePerformance?rev=main" }, + { name = "detectmatelibrary", extras = ["dataframes"], marker = "extra == 'full'" }, + { name = "detectmatelibrary", extras = ["llm"], marker = "extra == 'full'" }, + { name = "detectmatelibrary", extras = ["polars-rtcompat"], marker = "extra == 'full'" }, + { name = "detectmateperformance", specifier = ">=0.1.0" }, { name = "fsspec", specifier = ">=2024.1.0" }, { name = "msgpack", specifier = ">=1.0.0" }, { name = "numpy", specifier = ">=2.3.2" }, - { name = "openai", specifier = ">=2.26.0" }, - { name = "pandas", specifier = ">=2.3.2" }, - { name = "polars", specifier = ">=1.40.0" }, + { name = "openai", marker = "extra == 'llm'", specifier = ">=2.26.0" }, + { name = "pandas", marker = "extra == 'dataframes'", specifier = ">=2.3.2" }, + { name = "pandas", marker = "extra == 'llm'", specifier = ">=2.3.2" }, + { name = "polars", marker = "extra == 'dataframes'", specifier = ">=1.40.1" }, { name = "polars", extras = ["rtcompat"], marker = "extra == 'polars-rtcompat'", specifier = ">=1.38.1" }, { name = "protobuf", specifier = ">=6.32.1" }, { name = "pyarrow", specifier = ">=24.0.0" }, { name = "pydantic", specifier = ">=2.13.3" }, { name = "pyyaml", specifier = ">=6.0.3" }, { name = "regex", specifier = ">=2025.11.3" }, - { name = "scikit-learn", specifier = ">=1.8.0" }, - { name = "scipy", specifier = ">=1.17.1" }, - { name = "tenacity", specifier = ">=9.1.4" }, - { name = "tiktoken", specifier = ">=0.12.0" }, + { name = "scikit-learn", marker = "extra == 'llm'", specifier = ">=1.8.0" }, + { name = "scipy", marker = "extra == 'llm'", specifier = ">=1.17.1" }, + { name = "tenacity", marker = "extra == 'llm'", specifier = ">=9.1.4" }, + { name = "tiktoken", marker = "extra == 'llm'", specifier = ">=0.12.0" }, ] -provides-extras = ["polars-rtcompat"] +provides-extras = ["llm", "dataframes", "polars-rtcompat", "full"] [package.metadata.requires-dev] dev = [ + { name = "detectmatelibrary", extras = ["full"] }, { name = "mike", specifier = ">=2.2.0" }, { name = "prek", specifier = ">=0.3.10" }, { name = "pytest", specifier = ">=8.4.2" }, @@ -291,7 +311,7 @@ dev = [ [[package]] name = "detectmateperformance" version = "0.1.0" -source = { git = "https://github.com/ait-detectmate/DetectMatePerformance?rev=main#4d0d31b898712849fb2bca19089d64b9567e5aac" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "levenshtein" }, { name = "numpy" }, @@ -300,6 +320,10 @@ dependencies = [ { name = "setuptools" }, { name = "tqdm" }, ] +sdist = { url = "https://files.pythonhosted.org/packages/e8/2b/7ff298303c5ba3ba4899d1f3854b214f63a4fac4eff191012f5608f5149e/detectmateperformance-0.1.0.tar.gz", hash = "sha256:2630d509e7e2bbe6b5bcc857e8f25dfae7d99e9e2cc52f5981da9171600531dc", size = 552409, upload-time = "2026-06-12T10:42:13.326Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/dd/3db227cd60d170203ab82dd2e670bcb50c6111769c39ac8dd64935fa4c1d/detectmateperformance-0.1.0-py3-none-any.whl", hash = "sha256:db70f239e53aa17a983f99948c9239c143744c03044eeae454f546fedbaf69a5", size = 557939, upload-time = "2026-06-12T10:42:11.526Z" }, +] [[package]] name = "distro" @@ -370,7 +394,6 @@ wheels = [ [[package]] name = "idna" - version = "3.15" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/82/77/7b3966d0b9d1d31a36ddf1746926a11dface89a83409bf1483f0237aa758/idna-3.15.tar.gz", hash = "sha256:ca962446ea538f7092a95e057da437618e886f4d349216d2b1e294abfdb65fdc", size = 199245, upload-time = "2026-05-12T22:45:57.011Z" } From 6d73577c756daf1f34c4f2978a44e805098b00ce Mon Sep 17 00:00:00 2001 From: thorinaboenke Date: Fri, 10 Jul 2026 10:35:10 +0200 Subject: [PATCH 9/9] remove extra flag from python-app --- .github/workflows/python-app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index 8ba07686..e9727e9a 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -30,7 +30,7 @@ jobs: run: uv run --dev prek run -a - name: Test with pytest - run: uv run --dev --extra dataframes --extra llm pytest -s + run: uv run --dev pytest -s # integration tests for DetectMateService - name: Checkout DetectMateService