diff --git a/docs/installation.md b/docs/installation.md index 63a1cd3..2f04fc8 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -16,6 +16,12 @@ uv sync **Result**: the package is installed into the active Python environment and changes to the source tree are reflected immediately. +To install it in a different venv as a library: + +```bash +uv pip install --no-cache-dir +``` + ## Developer setup **Purpose**: prepare a development environment with test and lint tooling. diff --git a/docs/schemas.md b/docs/schemas.md index 7528133..4d418ca 100644 --- a/docs/schemas.md +++ b/docs/schemas.md @@ -122,7 +122,7 @@ from detectmatelibrary import schemas kwargs = load_somewhere() # load the dict kwargs["log"] = "Test log" -log_schema = LogSchema(kwargs) +log_schema = schemas.LogSchema(kwargs) print(log_schema.log == "Test log") # True ``` @@ -132,11 +132,11 @@ print(log_schema.log == "Test log") # True ```python from detectmatelibrary import schemas -log_schema = LogSchema() +log_schema = schemas.LogSchema() log_schema.log = "Test log" print(log_schema["log"] == log_schema.log) # True -log_schema2 = LogSchema() +log_schema2 = schemas.LogSchema() print(log_schema == log_schema2) # False log_schema2.log = "Test log" @@ -148,12 +148,12 @@ print(log_schema == log_schema2) # True ```python from detectmatelibrary import schemas -log_schema = LogSchema() +log_schema = schemas.LogSchema() log_schema.log = "Test log" serialized = log_schema.serialize() print(isinstance(serialized, bytes)) # True -new_log_schema = LogSchema() +new_log_schema = schemas.LogSchema() new_log_schema.deserialize(serialized) print(new_log_schema.schema_id == log_schema.schema_id) # True ``` diff --git a/pyproject.toml b/pyproject.toml index 0610d34..edd0e0a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,14 +3,16 @@ name = "detectmatelibrary" version = "0.1.0" description = "DetectMate Library for log processing components" readme = "README.md" +dynamic = ["authors"] requires-python = ">=3.12" dependencies = [ - "drain3>=0.9.11", "protobuf>=6.32.1", "pydantic>=2.11.7", "pyyaml>=6.0.3", "regex>=2025.11.3", "numpy>=2.3.2", + "pandas>=2.3.2", + "polars>=1.38.1", ] [dependency-groups] @@ -21,8 +23,6 @@ dev = [ "prek>=0.2.8", "pytest>=8.4.2", "pytest-cov>=6.2.1", - "pandas>=2.3.2", - "polars>=1.38.1", ] [build-system] diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..4e86b68 --- /dev/null +++ b/setup.py @@ -0,0 +1,28 @@ +from setuptools import setup, find_packages +import tomllib + + +def gather_dependencies(toml_path: str = "pyproject.toml") -> list[str]: + with open(toml_path, "rb") as f: + data = tomllib.load(f) + + # Try Poetry first + poetry_deps = data.get("tool", {}).get("poetry", {}).get("dependencies", {}) + if poetry_deps: + return [f"{dep}{version}" for dep, version in poetry_deps.items()] + + # Fall back to PEP 621 + project_deps: list[str] = data.get("project", {}).get("dependencies", []) + return project_deps + + +setup( + name="detectmatelibrary", + version="0.1.0", + package_dir={"": "src"}, + packages=find_packages(where="src"), + description="DetectMate Library for log processing components", + author="voice", + author_email="voice@example.com", + install_requires=gather_dependencies(), +) diff --git a/src/detectmatelibrary/common/_config/__init__.py b/src/detectmatelibrary/common/_config/__init__.py index a21d7ae..7c0265b 100644 --- a/src/detectmatelibrary/common/_config/__init__.py +++ b/src/detectmatelibrary/common/_config/__init__.py @@ -1,5 +1,5 @@ -from detectmatelibrary.common._config._compile import ConfigMethods, generate_detector_config -from detectmatelibrary.common._config._formats import EventsConfig +from ._compile import ConfigMethods, generate_detector_config +from ._formats import EventsConfig __all__ = ["ConfigMethods", "generate_detector_config", "EventsConfig", "BasicConfig"] diff --git a/src/detectmatelibrary/schemas/__init__.py b/src/detectmatelibrary/schemas/__init__.py index 9e91517..a960404 100644 --- a/src/detectmatelibrary/schemas/__init__.py +++ b/src/detectmatelibrary/schemas/__init__.py @@ -3,7 +3,7 @@ -from detectmatelibrary.schemas._classes import ( +from ._classes import ( BaseSchema, LogSchema, ParserSchema, @@ -13,4 +13,11 @@ ) -__all__ = ["BaseSchema", "LogSchema", "ParserSchema", "DetectorSchema", "OutputSchema", "FieldNotFound"] +__all__ = [ + "BaseSchema", + "LogSchema", + "ParserSchema", + "DetectorSchema", + "OutputSchema", + "FieldNotFound" +] diff --git a/uv.lock b/uv.lock index be22a54..f3744a7 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 3 +revision = 2 requires-python = ">=3.12" resolution-markers = [ "python_full_version >= '3.14' and sys_platform == 'win32'", @@ -19,15 +19,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] -[[package]] -name = "cachetools" -version = "4.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/74/17/5735dd9f015f03d2d928ea108f3c02075b784ceed05d32a98e7e44ddd114/cachetools-4.2.1.tar.gz", hash = "sha256:f469e29e7aa4cff64d8de4aad95ce76de8ea1125a16c68e0d93f65c3c3dc92e9", size = 24753, upload-time = "2021-01-24T22:40:13.746Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/72/8df2e0dc991f1a1d2c6869404e7622e8ee50d80bff357dbb57c3df70305b/cachetools-4.2.1-py3-none-any.whl", hash = "sha256:1d9d5f567be80f7c07d765e21b814326d78c61eb0c3a637dffc0e5d1796cb2e2", size = 12003, upload-time = "2021-01-24T22:40:11.795Z" }, -] - [[package]] name = "click" version = "8.3.1" @@ -128,9 +119,10 @@ name = "detectmatelibrary" version = "0.1.0" source = { editable = "." } dependencies = [ - { name = "drain3" }, { name = "numpy", version = "2.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" }, { name = "numpy", version = "2.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14'" }, + { name = "pandas" }, + { name = "polars" }, { name = "protobuf" }, { name = "pydantic" }, { name = "pyyaml" }, @@ -140,8 +132,6 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "mike" }, - { name = "pandas" }, - { name = "polars" }, { name = "prek" }, { name = "pytest" }, { name = "pytest-cov" }, @@ -149,8 +139,9 @@ dev = [ [package.metadata] requires-dist = [ - { name = "drain3", specifier = ">=0.9.11" }, { name = "numpy", specifier = ">=2.3.2" }, + { name = "pandas", specifier = ">=2.3.2" }, + { name = "polars", specifier = ">=1.38.1" }, { name = "protobuf", specifier = ">=6.32.1" }, { name = "pydantic", specifier = ">=2.11.7" }, { name = "pyyaml", specifier = ">=6.0.3" }, @@ -160,23 +151,11 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "mike", specifier = ">=2.1.3" }, - { name = "pandas", specifier = ">=2.3.2" }, - { name = "polars", specifier = ">=1.38.1" }, { name = "prek", specifier = ">=0.2.8" }, { name = "pytest", specifier = ">=8.4.2" }, { name = "pytest-cov", specifier = ">=6.2.1" }, ] -[[package]] -name = "drain3" -version = "0.9.11" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cachetools" }, - { name = "jsonpickle" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/dc/83/4da2d3a11b5e0edf1a4f4c0c2dd42126d2eb1f31c733967edd3dfac1af94/drain3-0.9.11.tar.gz", hash = "sha256:9ab4b1407fad74f56554ae371ef019c3c7985861631f4bab46a0e92585125f75", size = 27960, upload-time = "2022-07-17T06:40:11.433Z" } - [[package]] name = "ghp-import" version = "2.1.0" @@ -210,15 +189,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] -[[package]] -name = "jsonpickle" -version = "1.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/62/31ef0b58050a3731b079af69932104a9443bff07fe2b9564c161e3ec4348/jsonpickle-1.5.1.tar.gz", hash = "sha256:060f97096559d1b86aa16cac2f4ea5f7b6da0c15d8a4de150b78013a886f9a51", size = 109560, upload-time = "2021-01-31T05:57:15.037Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/77/a7/c2f527ddce3155ae9e008385963c2325cbfd52969f8b38efa2723e2af4af/jsonpickle-1.5.1-py2.py3-none-any.whl", hash = "sha256:8eb8323f0e12cb40687f0445e2115d8165901e20ac670add55bb53a95c68c0e5", size = 37124, upload-time = "2021-01-31T05:57:12.256Z" }, -] - [[package]] name = "markdown" version = "3.10.2"