# 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.

[project]
name = "python_examples"
version = "0.1.0"
description = "Examples for the Iggy Python SDK"
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
    "apache-iggy",
    "argparse==1.4.0",
    "loguru==0.7.3",
    "pyrefly>=1.1.1",
    "ruff>=0.15.19",
]

[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.uv.sources]
apache-iggy = { path = "../../foreign/python" }

[tool.uv]
exclude-newer = "7 days"

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