Files
serena/pyproject.toml
T
Dominik Jain 61f7c15b15 Support onboarding task (initial demo)
* Add LLM prompt factory (yaml-based)
  * Add list_dir tool
  * Add onboarding tool (which returns prompt only, as registered MCP prompts
    do not appear to be usable by Claude Desktop)
2025-03-24 17:07:40 +01:00

267 lines
4.5 KiB
TOML

[build-system]
build-backend = "hatchling.build"
requires = [
"hatchling"
]
[project]
name = "serena"
version = "0.1.0"
description = ""
authors = [
{name = "Oraios AI", email = "michael.panchenko@oraios-ai.de"}
]
readme = "README.md"
requires-python = ">=3.11, <3.12"
classifiers = [
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.11"
]
dependencies = [
"pandas>=2.2.1",
"plotly>=5.19.0",
"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",
"fastmcp>=0.4.1",
"sensai-utils>=1.4.0",
]
[project.license]
text = "MIT"
[project.optional-dependencies]
dev = [
"black[jupyter]>=23.7.0",
"docutils>=0.20.1",
"jinja2",
"jupyter>=1.0.0",
# In version 1.0.4 we get a NoneType error related to some config conversion (yml_analytics is None and should be a list)
"jupyter-book==1.0.0",
"mypy>=1.4.1",
"nbqa>=1.7.1",
"nbstripout>=0.6.1",
"poethepoet>=0.20.0",
"pre-commit>=3.3.3",
"pytest>=8.0.2",
"pytest-cov",
"ruff>=0.0.285",
"sphinx>=7",
"sphinx-book-theme>=1.0.1",
"sphinx-comments>=0.0.3",
"sphinx-copybutton>=0.5.2",
"sphinx-jupyterbook-latex>=1.0.0",
"toml-sort>=0.24.2",
"sphinx-togglebutton>=0.3.2",
"sphinx-toolbox>=3.5.0",
"sphinxcontrib-bibtex",
"sphinxcontrib-spelling>=8.0.0",
]
[project.urls]
Homepage = "https://github.com/oraios/serena"
[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.nbqa.exclude]
ruff = "\\.jupyter_cache|jupyter_execute"
mypy = "\\.jupyter_cache|jupyter_execute"
[tool.poe.env]
PYDEVD_DISABLE_FILE_VALIDATION = "1"
[tool.poe.tasks]
test = "pytest test --cov=serena --cov-report=xml --cov-report=term-missing --durations=0 -v --color=yes"
_black_check = "black --check --exclude src/multilspy/ ."
_ruff_check = "ruff check --exclude .venv/|src/multilspy/ ."
_ruff_check_nb = "nbqa ruff check docs"
_black_format = "black --exclude .venv/|src/multilspy/ ."
_ruff_format = "ruff check --exclude src/multilspy/ --fix ."
_ruff_format_nb = "nbqa ruff --fix docs"
lint = [
"_black_check",
"_ruff_check",
"_ruff_check_nb"
]
clean-nbs = "python docs/nbstripout.py"
format = [
"_ruff_format",
"_ruff_format_nb",
"_black_format"
]
_autogen_rst = "python docs/autogen_rst.py"
_sphinx_build = "sphinx-build -W -b html docs docs/_build"
_jb_generate_toc = "python docs/create_toc.py"
_jb_generate_config = "jupyter-book config sphinx docs/"
doc-clean = "rm -rf docs/_build"
doc-generate-files = [
"_autogen_rst",
"_jb_generate_toc",
"_jb_generate_config"
]
doc-spellcheck = "sphinx-build -W -b spelling docs docs/_build"
doc-build = [
"doc-generate-files",
"doc-spellcheck",
"_sphinx_build"
]
_mypy = "mypy src/serena"
_mypy_nb = "nbqa mypy docs"
type-check = [
"_mypy",
"_mypy_nb"
]
[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",
]
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"
]
"docs/**" = [
"D103"
]
"examples/**" = [
"D103"
]
"scripts/**" = [
"D103"
]