mirror of
https://github.com/tiennm99/serena.git
synced 2026-07-18 22:17:39 +00:00
Need to look over the snapshot results to see whether they're what we expect. Also, for some reason tests are failing...
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",
|
|
"agno>=1.2.15",
|
|
"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"]
|
|
|
|
[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",
|
|
]
|