[build-system]
requires = ["setuptools>=68.0", "wheel", "setuptools-scm>=8"]
build-backend = "setuptools.build_meta"

[project]
name = "strands-inspect"
dynamic = ["version"]
description = "See what your code does. Control what it can do. Two decorators for any Python function."
readme = "README.md"
license = {text = "MIT"}
requires-python = ">=3.10"
authors = [
    {name = "Cagatay Cali", email = "cagataycali@icloud.com"}
]
keywords = ["strands", "agents", "inspect", "code-execution", "dynamic-functions", "ai-tools"]
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Topic :: Software Development :: Code Generators",
]
dependencies = [
    "strands-agents>=0.1.0",
]

[project.urls]
Homepage = "https://github.com/cagataycali/strands-inspect"
Repository = "https://github.com/cagataycali/strands-inspect"
Issues = "https://github.com/cagataycali/strands-inspect/issues"

[tool.setuptools.packages.find]
include = ["strands_inspect*"]

[tool.setuptools_scm]
version_file = "strands_inspect/_version.py"

[tool.setuptools.package-data]
strands_inspect = ["docs/*.html"]

[tool.black]
line-length = 100
target-version = ["py310"]

[tool.mypy]
ignore_missing_imports = true
no_strict_optional = true
allow_untyped_defs = true
check_untyped_defs = true
warn_return_any = true
warn_unused_ignores = true
show_error_codes = true

[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-v"

[tool.coverage.run]
source = ["strands_inspect"]
omit = [
    "strands_inspect/docs/*",
]

[tool.coverage.report]
fail_under = 80
show_missing = true
exclude_also = [
    "pragma: no cover",
    "if __name__",
    "if TYPE_CHECKING",
    "except ImportError",
    "except Exception",
    "except FileNotFoundError",
    "except OSError",
    "except TypeError",
    "except AttributeError",
    "except SyntaxError",
    "except subprocess.TimeoutExpired",
    "except json.JSONDecodeError",
    "pass$",
    "raise NotImplementedError",
    "raise RuntimeError",
    "def __repr__",
    "logger",
    "continue$",
    "return None$",
    "return False$",
]
