# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

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

[project]
name = "apache-iggy"
requires-python = ">=3.10"
version = "0.9.0.dev6"
description = "Apache Iggy is the persistent message streaming platform written in Rust, supporting QUIC, TCP and HTTP transport protocols, capable of processing millions of messages per second."
readme = "README.md"
license = { file = "LICENSE" }
authors = [{ name = "Iggy Committers", email = "dev@iggy.apache.org" }]
keywords = ["streaming", "messaging", "pubsub", "iggy", "rust", "performance"]
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: Apache Software License",
    "Operating System :: OS Independent",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Rust",
    "Programming Language :: Python :: Implementation :: CPython",
    "Programming Language :: Python :: Implementation :: PyPy",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Topic :: System :: Networking",
    "Topic :: System :: Distributed Computing",
]

[project.urls]
"Homepage" = "https://iggy.apache.org"
"Documentation" = "https://iggy.apache.org/docs/"
"Repository" = "https://github.com/apache/iggy"
"Bug Tracker" = "https://github.com/apache/iggy/issues"
"Discord" = "https://discord.gg/C5Sux5NcRa"

[tool.maturin]
features = ["pyo3/extension-module"]
# LICENSE-binary enumerates the statically-linked Rust crates
# bundled into the wheel by maturin/PyO3. Generated at build time by
# `scripts/ci/third-party-licenses.sh --generate --manifest foreign/python/Cargo.toml --output foreign/python/LICENSE-binary`
# (foreign/python is excluded from the workspace, so cargo-about must be
# pointed at this Cargo.toml explicitly). File is .gitignored; the wheel
# build pipeline must generate it before invoking maturin.
include = [
    { path = "LICENSE", format = [
        "sdist",
        "wheel",
    ] },
    { path = "NOTICE", format = [
        "sdist",
        "wheel",
    ] },
    { path = "LICENSE-binary", format = [
        "wheel",
    ] },
    { path = "apache_iggy.pyi", format = [
        "sdist",
    ] },
]

[tool.ruff.lint]
select = [
    "S", # detects usage of commands like `exec()` and `eval()`. Also usage of `pickle`, `marshal`, etc.
    "B", # flake8-bugbear rule family for likely bugs and unsafe exception patterns
    "E", # pycodestyle errors: basic PEP 8 style violations
    "F", # Pyflakes: undefined names, unused imports, and other logic issues
    "W", # pycodestyle warnings: whitespace and other style warnings
    "I", # isort: import sorting and grouping rules
    "T10", # flake8-debugger: debugger statements like pdb or breakpoint
    "C4", # flake8-comprehensions: unnecessary or suboptimal comprehensions
    "ARG", # flake8-unused-arguments: unused function arguments
    "SIM", # flake8-simplify: simplify redundant logic and expressions
    "UP", # pyupgrade: use newer, simpler Python syntax
]

[tool.ruff.lint.per-file-ignores]
"tests/*.py" = ["S101", "B017"]

[project.optional-dependencies]
# Core testing dependencies
testing = [
    "pytest>=9.1.1,<10.0",
    "pytest-asyncio>=0.24.0,<2.0",
    "pytest-cov>=4.0,<8.0",
    "pytest-xdist>=3.0,<4.0",
    "pytest-timeout>=2.0,<3.0",
]

# For containerized testing (CI/CD)
testing-docker = ["testcontainers>=4.15.0,<5.0"]

# Development tools
dev = [
    "maturin>=1.15.0,<2.0",
    "pyrefly>=1.2.0",
    "ruff>=0.1.0,<1.0",
]

# All dependencies for full development setup
all = [
    "maturin>=1.15.0,<2.0",
    "pyrefly>=1.2.0",
    "pytest>=9.1.1,<10.0",
    "pytest-asyncio>=0.24.0,<2.0",
    "pytest-cov>=4.0,<8.0",
    "pytest-xdist>=3.0,<4.0",
    "pytest-timeout>=2.0,<3.0",
    "ruff>=0.1.0,<1.0",
    "testcontainers>=4.15.0,<5.0",
]

[tool.pytest.ini_options]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "session"
timeout = 30
# A test that pins the GIL leaves neither pytest-timeout nor asyncio able to fire.
# The faulthandler watchdog needs no GIL, so it dumps every thread and aborts the run.
faulthandler_timeout = 60
faulthandler_exit_on_timeout = true
testpaths = ["tests"]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
addopts = ["-v", "--strict-markers", "--tb=short", "--disable-warnings"]
markers = [
    "integration: Integration tests that require a running server",
    "unit: Fast unit tests",
]
filterwarnings = [
    "ignore::DeprecationWarning",
    "ignore::pytest.PytestUnraisableExceptionWarning",
]

[tool.uv]
exclude-newer = "7 days"
cache-keys = [
    { file = "pyproject.toml" },
    { file = "Cargo.toml" },
    { file = "Cargo.lock" },
    { file = "../../Cargo.toml" },
    { file = "../../Cargo.lock" },
    { file = "src/**/*.rs" },
    { file = "../../core/**/Cargo.toml" },
    { file = "../../core/**/*.rs" },
]

[tool.pyrefly]
search-path = ["."]
project-includes = [
    "**/*.py*",
]
