pyproject.toml•2.75 kB
[project]
name = "owl-mcp"
description = "A MCP server for OWL ontology operations"
readme = "README.md"
authors = [
{name = "OWL Server Team"}
]
requires-python = "<=3.13,>=3.10"
dynamic = ["version"]
dependencies = [
"click>=8.0.0",
"py-horned-owl>=0.1.0",
"watchdog>=3.0.0",
"mcp>=0.1.0",
"pydantic>=2.11.4",
"pyyaml>=6.0.2",
]
[dependency-groups]
dev = [
"black>=23.0.0",
"deepdiff>=6.7.1",
"isort>=5.0.0",
"jupyter>=1.0.0",
"nbformat",
"mkdocs>=1.4.0",
"mkdocs-material>=9.0.0",
"mkdocs-windmill",
"mkdocstrings[python]>=0.21.0",
"pymdown-extensions>=10.0.0",
"mypy>=1.0.0",
"pytest>=7.0.0",
"pytest-asyncio>=0.18.0",
"pytest-cov>=4.0.0",
"ruff>=0.11.5",
"tox>=4.25.0",
]
[project.scripts]
owl-mcp = "owl_mcp.mcp_tools:main"
[tool.deptry]
known_first_party = ["owl_mcp"]
extend_exclude = ["docs"]
[build-system]
requires = ["hatchling", "uv-dynamic-versioning"]
build-backend = "hatchling.build"
[tool.hatch.version]
source = "uv-dynamic-versioning"
[tool.uv-dynamic-versioning]
vcs = "git"
style = "pep440"
fallback-version = "0.1.0"
[tool.hatch.build.targets.wheel]
packages = ["src/owl_mcp"]
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py"]
addopts = "-v --cov=owl_mcp --cov-report=xml"
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
[tool.ruff]
line-length = 100
target-version = "py310"
[tool.ruff.format]
exclude = [
"docs/",
"tests/input"
]
[tool.ruff.lint]
exclude = [
"docs/",
"tests/input"
]
select = [
# core
"F", # Pyflakes
"E", # pycodestyle errors
"W", # pycodestyle warnings
"C90", # mccabe
"I", # isort
"N", # pep8-naming
"UP", # pyupgrade
# extensions
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"EXE", # flake8-executable
"ISC", # flake8-implicit-str-concat
"PIE", # flake8-pie
"T20", # flake8-print
"PT", # flake8-pytest-style
"Q", # flake8-quotes
"RET", # flake8-return
"SIM", # flake8-simplify
"ARG", # flake8-unused-arguments
"ERA", # eradicate
"PL", # Pylint
"TRY", # tryceratops
"PERF", # Perflint
"RUF", # Ruff-specific rules
]
ignore = [
# UP007: non-pep604-annotation-union
"UP007",
# E203: whitespace before ',', ';', or ':'
"E203",
# E501: line length (specified elsewhere)
"E501",
# ISC001: conflicts with Ruff's formatter
"ISC001",
# T201: print
"T201"
]
[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["S101"] # use of assert
[tool.ruff.lint.mccabe]
# Flag errors (`C901`) whenever the complexity level exceeds 15.
max-complexity = 15