[build-system] requires = ["setuptools>=84.0.0"] build-backend = "setuptools.build_meta" [project] name = "mcpify-openapi" # "mcpify" on PyPI is an unrelated package; CLI command stays `mcpify` version = "1.19.0" description = "Turn any OpenAPI REST API into an MCP server so AI agents can call it — a focused, production-ready CLI with zero runtime dependencies" readme = "README.md" requires-python = ">=3.10" license = { text = "MIT" } keywords = ["mcp", "model-context-protocol", "openapi", "swagger", "ai-agents", "claude", "rest", "api", "cli"] classifiers = [ "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries", "Topic :: Utilities", ] [project.optional-dependencies] yaml = ["pyyaml>=6.0.3"] otel = ["opentelemetry-sdk>=1.20.0", "opentelemetry-exporter-otlp-proto-http>=1.20.0"] dev = ["pytest>=9.1.1", "pytest-cov>=7.1.0", "ruff>=0.16.4", "mypy>=2.3.1", "types-PyYAML", "pyyaml>=6.0.3"] [project.scripts] mcpify = "mcpify.cli:main" [tool.setuptools.packages.find] include = ["mcpify*"] [tool.setuptools.package-data] mcpify = ["config-schema.json"] [tool.pytest.ini_options] testpaths = ["tests"] pythonpath = ["."] [tool.ruff] line-length = 100 target-version = "py310" [tool.ruff.lint] select = [ "E", "F", "W", "I", "UP", "B", "SIM", # temel dogruluk seti "A", "C4", "DTZ", "FLY", "ICN", "PIE", # isim/veri hijyeni "RET", "RSE", "SLF", "SLOT", "TID", # yapisal netlik "PERF", "FURB", "RUF", # performans + ruff ozel "S", "ARG", # guvenlik lint + olcu argumanlari ] ignore = ["E501"] [tool.ruff.lint.per-file-ignores] # testlerde assert bir ozellik, fixture argumanlari da bilerek imzada "tests/*" = [ "S101", "ARG001", "ARG002", "ARG005", # test sabitleri sahte sifrelerdir; kendi XML'ini kendi parse eder; # beyaz kutu _private erisimleri; subprocess E2E uretilen betigi kosar "S104", "S105", "S106", "S314", "S603", "SLF001", # test sunuculari ClassVar olmayan callable olmayan sinif nitelikleri kullanir "RUF012", ] [tool.mypy] strict = true warn_unreachable = true warn_unused_ignores = true ignore_missing_imports = true [tool.coverage.run] source = ["mcpify"] [tool.coverage.report] show_missing = true precision = 1