pyproject.toml•3.36 kB
[build-system]
requires = ["setuptools>=45", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "BiRRe"
version = "4.0.0b1"
description = "Model Context Protocol server for BitSight security ratings"
readme = "README.md"
requires-python = ">=3.13"
license = "Unlicense"
license-files = ["LICENSE"]
authors = [{ name = "boecht" }]
keywords = [
"bitsight",
"cybersecurity",
"fastmcp",
"llm-tools",
"mcp",
"model-context-protocol",
"risk-management",
"security-ratings",
]
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Environment :: Plugins",
"Framework :: AsyncIO",
"Framework :: Pydantic :: 2",
"Intended Audience :: Financial and Insurance Industry",
"Intended Audience :: Information Technology",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.13",
"Topic :: Office/Business :: Financial :: Investment",
"Topic :: Security",
"Typing :: Typed",
]
dependencies = [
"dynaconf>=3.2.3,<4",
"fastmcp>=2.13.0,<3",
"httpx>=0.24.0,<0.29",
"openapi-spec-validator>=0.7.1,<0.8",
"prance>=23.6.7",
"pydantic>=2.12.0,<3",
"python-dotenv>=1.1.0,<2",
"rich>=13.7.0",
"structlog>=24.1.0",
"typer>=0.12.3",
"typing_extensions>=4.9.0",
]
[project.optional-dependencies]
pytest-dependencies = [
"pytest>=8.3.0",
"pytest-asyncio>=0.24.0",
"pytest-cov>=5.0.0",
"pytest-mock>=3.12.0",
]
[project.scripts]
birre = "birre.cli.main:main"
[project.urls]
repository = "https://github.com/boecht/birre"
[project.entry-points."mcp.servers"]
birre = "birre:create_birre_server"
[dependency-groups]
dev = [
"cyclonedx-bom>=7.2.1",
"hypothesis>=6.100.0",
"mypy>=1.18.0",
"pytest>=8.3.0",
"pytest-asyncio>=0.24.0",
"pytest-benchmark>=5.1.0",
"pytest-cov>=5.0.0",
"pytest-mock>=3.12.0",
"ruff>=0.14.0",
"types-pyyaml>=6.0.12",
]
[tool.mypy]
check_untyped_defs = true
disallow_any_generics = true
disallow_any_unimported = false
disallow_subclassing_any = true
disallow_untyped_defs = true
files = "src"
mypy_path = "$MYPY_CONFIG_FILE_DIR/src:$MYPY_CONFIG_FILE_DIR/.deps_cache"
no_implicit_reexport = true
python_version = "3.13"
show_error_codes = true
strict = true
warn_no_return = true
warn_redundant_casts = true
warn_return_any = true
warn_unused_configs = true
warn_unused_ignores = true
[[tool.mypy.overrides]]
module = ["dynaconf", "dynaconf.*", "prance", "prance.*"]
ignore_missing_imports = true
# FastMCP generic type parameters - framework limitation
[[tool.mypy.overrides]]
module = "birre.*"
disable_error_code = ["type-arg"]
[tool.ruff]
line-length = 100
target-version = "py313"
extend-exclude = [
".venv/",
"BiRRe.egg-info",
"dist/",
"docs/apis/",
"src/birre/resources/apis/",
"scripts/",
]
[tool.ruff.format]
quote-style = "double"
[tool.ruff.lint]
select = [
"C90", # mccabe complexity
"E", # pycodestyle errors
"F", # pyflakes
"I", # isort
"UP", # pyupgrade
]
ignore = []
[tool.ruff.lint.mccabe]
max-complexity = 10
[tool.setuptools.package-dir]
"" = "src"
[tool.setuptools.packages.find]
where = ["src"]
include = ["birre*"]
[tool.setuptools.package-data]
"birre" = ["py.typed", "mcp_metadata.json"]
"birre.resources" = ["apis/**/*.json"]