[project]
name = "filoma"
version = "1.7.4"
description = "Modular Python tool for profiling files, analyzing directory structures, and inspecting image data"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
    "rich>=13.0.0",
    "numpy>=1.26.0",
    "pillow>=10.0.0",
    "polars>=1.0.0",
    "loguru>=0.7.0",
    "ipython>=9.4.0",
]

[project.optional-dependencies]
dev = [
    "pytest>=8.3.5",
    "pytest-xdist>=3.2.0",
    "ruff>=0.1.0",
    "pre-commit>=4.2.0",
    "maturin>=1.9.0",
    "twine>=6.1.0",
    "ipython>=9.4.0",
    "ipykernel>=6.30.1",
]

pd = [
    "pandas>=2.0.0",
    "pyarrow>=12.0.0",
    "ipython>=9.4.0",
    "ipykernel>=6.30.1",
    "jupyterlab>=4.0.0",
]

docs = [
    "mkdocs>=1.5.0",
    "mkdocs-material>=9.0.0",
    "mkdocstrings>=0.23.0",
    "mkdocstrings-python>=0.23.0",
    "pymdown-extensions",
    "nbconvert>=7.5.0",
    "ipykernel>=6.30.1",
    "ipython>=9.4.0",
    "nbformat>=5.7.0",
    "jupyterlab>=4.0.0",
    "pyarrow>=12.0.0",
]

dedup = [
    "datasketch>=1.5.3",
    "pillow>=10.0.0",
]

[build-system]
requires = ["maturin>=1.0,<2.0"]
build-backend = "maturin"

[tool.ruff]
line-length = 150  # Increased to handle long UI strings and f-strings
target-version = "py311"

[tool.ruff.lint]
select = [
    "E",  # pycodestyle errors
    "W",  # pycodestyle warnings
    "F",  # pyflakes
    "I",  # isort
]
ignore = []

[tool.ruff.format]
quote-style = "double"
indent-style = "space"

[tool.maturin]
python-source = "src"
module-name = "filoma.filoma_core"
# Use manylinux for PyPI compatibility
compatibility = "manylinux2014"
features = ["pyo3/extension-module"]
# to build with maturin, run: maturin develop --bindings pyo3 --release --manifest-path Cargo.toml -v

[tool.pytest.ini_options]
# Suppress the informational Rust progress warning in CI logs
filterwarnings = [
    "ignore::UserWarning:filoma.directories.directory_profiler",
]

[dependency-groups]
dev = [
    "mkdocs>=1.6.1",
    "mkdocs-material>=9.6.19",
    "mkdocstrings>=0.30.0",
    "mkdocstrings-python>=1.18.2",
    "pymdown-extensions>=10.16.1",
]
