mirror of
https://github.com/tiennm99/serena.git
synced 2026-07-14 09:05:44 +00:00
263 lines
4.4 KiB
TOML
263 lines
4.4 KiB
TOML
[build-system]
|
|
build-backend = "hatchling.build"
|
|
requires = [
|
|
"hatchling"
|
|
]
|
|
|
|
[project]
|
|
name = "serena"
|
|
version = "0.1.0"
|
|
description = ""
|
|
authors = [
|
|
{name = "Oraios AI", email = "info@oraios-ai.de"}
|
|
]
|
|
readme = "README.md"
|
|
requires-python = ">=3.11, <3.12"
|
|
classifiers = [
|
|
"License :: OSI Approved :: MIT License",
|
|
"Programming Language :: Python :: 3.11"
|
|
]
|
|
dependencies = [
|
|
"requests>=2.32.3,<3",
|
|
"pyright>=1.1.396,<2",
|
|
"overrides>=7.7.0,<8",
|
|
"python-dotenv>=1.0.0, <2",
|
|
"mcp>=1.5.0",
|
|
"fastapi>=0.115.12",
|
|
"fastmcp>=0.4.1",
|
|
"sensai-utils>=1.4.0",
|
|
"pydantic>=2.10.6",
|
|
"types-pyyaml>=6.0.12.20241230",
|
|
"pyyaml>=6.0.2",
|
|
"ruamel.yaml>=0.18.0",
|
|
"jinja2>=3.1.6",
|
|
"dotenv>=0.9.9",
|
|
"pathspec>=0.12.1",
|
|
"psutil>=7.0.0",
|
|
"docstring_parser>=0.16",
|
|
"joblib>=1.5.1",
|
|
]
|
|
|
|
[project.scripts]
|
|
serena-mcp-server = "serena.mcp:start_mcp_server"
|
|
|
|
[project.license]
|
|
text = "MIT"
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"black[jupyter]>=23.7.0",
|
|
"jinja2",
|
|
# In version 1.0.4 we get a NoneType error related to some config conversion (yml_analytics is None and should be a list)
|
|
"mypy>=1.4.1",
|
|
"poethepoet>=0.20.0",
|
|
"pytest>=8.0.2",
|
|
"ruff>=0.0.285",
|
|
"toml-sort>=0.24.2",
|
|
"types-pyyaml>=6.0.12.20241230",
|
|
"syrupy>=4.9.1",
|
|
]
|
|
agno = [
|
|
"agno>=1.2.6",
|
|
"sqlalchemy>=2.0.40",
|
|
]
|
|
anthropic = [
|
|
"anthropic>=0.49.0",
|
|
]
|
|
google = [
|
|
"google-genai>=1.8.0",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/oraios/serena"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/serena", "src/multilspy", "src/interprompt"]
|
|
|
|
[tool.black]
|
|
line-length = 140
|
|
target-version = [
|
|
"py311"
|
|
]
|
|
|
|
[tool.doc8]
|
|
max-line-length = 1000
|
|
|
|
[tool.mypy]
|
|
allow_redefinition = true
|
|
check_untyped_defs = true
|
|
disallow_incomplete_defs = true
|
|
disallow_untyped_defs = true
|
|
ignore_missing_imports = true
|
|
no_implicit_optional = true
|
|
pretty = true
|
|
show_error_codes = true
|
|
show_error_context = true
|
|
show_traceback = true
|
|
strict_equality = true
|
|
strict_optional = true
|
|
warn_no_return = true
|
|
warn_redundant_casts = true
|
|
warn_unreachable = true
|
|
warn_unused_configs = true
|
|
warn_unused_ignores = true
|
|
exclude = "^build/|^docs/"
|
|
|
|
[tool.poe.env]
|
|
PYDEVD_DISABLE_FILE_VALIDATION = "1"
|
|
|
|
[tool.poe.tasks]
|
|
test = "pytest test --color=yes"
|
|
_black_check = "black --check --exclude src/multilspy/ src scripts test"
|
|
_ruff_check = "ruff check --exclude .venv/ --exclude src/multilspy/ src scripts test"
|
|
_black_format = "black --exclude .venv/|src/multilspy/ src scripts test"
|
|
_ruff_format = "ruff check --exclude src/multilspy/ --fix src scripts test"
|
|
lint = [
|
|
"_black_check",
|
|
"_ruff_check",
|
|
]
|
|
format = [
|
|
"_ruff_format",
|
|
"_black_format"
|
|
]
|
|
_mypy = "mypy src/serena"
|
|
type-check = [
|
|
"_mypy",
|
|
]
|
|
|
|
[tool.ruff]
|
|
target-version = "py311"
|
|
line-length = 140
|
|
|
|
[tool.ruff.format]
|
|
quote-style = "double"
|
|
indent-style = "space"
|
|
line-ending = "auto"
|
|
skip-magic-trailing-comma = false
|
|
docstring-code-format = true
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"ASYNC",
|
|
"B",
|
|
"C4",
|
|
"C90",
|
|
"COM",
|
|
"D",
|
|
"DTZ",
|
|
"E",
|
|
"F",
|
|
"FLY",
|
|
"G",
|
|
"I",
|
|
"ISC",
|
|
"PIE",
|
|
"PLC",
|
|
"PLE",
|
|
"PLW",
|
|
"RET",
|
|
"RUF",
|
|
"RSE",
|
|
"SIM",
|
|
"TID",
|
|
"UP",
|
|
"W",
|
|
"YTT"
|
|
]
|
|
ignore = [
|
|
"RUF002",
|
|
"RUF005",
|
|
"SIM118",
|
|
"SIM108",
|
|
"E501",
|
|
"E741",
|
|
"B008",
|
|
"B011",
|
|
"B028",
|
|
"D100",
|
|
"D101",
|
|
"D102",
|
|
"D103",
|
|
"D104",
|
|
"D105",
|
|
"D107",
|
|
"D200",
|
|
"D203",
|
|
"D213",
|
|
"D401",
|
|
"D402",
|
|
"DTZ005",
|
|
"E402",
|
|
"E501",
|
|
"E701",
|
|
"E731",
|
|
"C408",
|
|
"E203",
|
|
"G004",
|
|
"RET505",
|
|
"D106",
|
|
"D205",
|
|
"D212",
|
|
"PLW2901",
|
|
"B027",
|
|
"D404",
|
|
"D407",
|
|
"D408",
|
|
"D409",
|
|
"D400",
|
|
"D415",
|
|
"COM812",
|
|
"RET503",
|
|
"RET504",
|
|
"UP038",
|
|
"F403",
|
|
"F405",
|
|
"C401",
|
|
"C901",
|
|
"ASYNC230",
|
|
"ISC003",
|
|
"B024",
|
|
"B007",
|
|
"SIM102",
|
|
"W291",
|
|
"W293",
|
|
"B009",
|
|
"SIM103", # forbids multiple returns
|
|
"SIM110", # requires use of any(...) instead of for-loop
|
|
"G001", # forbids str.format in log statements
|
|
"E722", # forbids unspecific except clause
|
|
]
|
|
unfixable = [
|
|
"F841",
|
|
"F601",
|
|
"F602",
|
|
"B018"
|
|
]
|
|
extend-fixable = [
|
|
"F401",
|
|
"B905",
|
|
"W291"
|
|
]
|
|
|
|
[tool.ruff.lint.mccabe]
|
|
max-complexity = 20
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"tests/**" = [
|
|
"D103"
|
|
]
|
|
"scripts/**" = [
|
|
"D103"
|
|
]
|
|
|
|
[tool.pytest.ini_options]
|
|
markers = [
|
|
"python: language server running for Python",
|
|
"go: language server running for Go",
|
|
"java: language server running for Java",
|
|
"rust: language server running for Rust",
|
|
"typescript: language server running for TypeScript",
|
|
"php: language server running for PHP",
|
|
"snapshot: snapshot tests",
|
|
]
|