Ctrl K
ComunidadGuías…

backend/pyproject.toml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
[project]
name = "backend"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11,<3.12"
dependencies = [
    "pip>=23.0",
    "camel-ai[eigent]==0.2.91a7",
    "fastapi>=0.115.12",
    "fastapi-babel>=1.0.0",
    "uvicorn[standard]>=0.34.2",
    "pydantic-i18n>=0.4.5",
    "python-dotenv>=1.1.0",
    "httpx[socks]>=0.28.1",
    "pydash>=8.0.5",
    "inflection>=0.5.1",
    "aiofiles>=24.1.0",
    "openai>=1.99.3,<2",
    "nodejs-wheel>=22.18.0",
    "numpy>=1.23.0,<2.0.0",
    "debugpy>=1.8.17",
    "qdrant-client>=1.16.2",
    "pyyaml>=6.0.3",
    "opentelemetry-api>=1.34.1",
    "opentelemetry-sdk>=1.34.1",
    "opentelemetry-exporter-otlp-proto-http>=1.34.1",
    "truststore>=0.10.0",
    "jsonschema>=4.26.0",
]


[dependency-groups]
dev = [
    "babel>=2.17.0",
    "pre-commit>=4.0.0",
    "pytest>=8.4.1",
    "pytest-asyncio>=1.1.0",
]

[tool.ruff]
line-length = 79
target-version = "py311"
exclude = ["benchmark/answer"]

[tool.ruff.lint]
select = [
    "E",      # pycodestyle errors
    "W",      # pycodestyle warnings
    "F",      # pyflakes (unused imports, variables, etc.)
    "I",      # isort (import sorting)
    "UP",     # pyupgrade (Python syntax upgrades)
    "B",      # flake8-bugbear
]
ignore = [
    "E402",   # module level import not at top of file (needed for path setup)
    "E501",   # line too long (handled by formatter)
    "E712",   # == False comparisons (needed for SQLAlchemy)
    "B904",   # raise from - too many existing violations
    "B023",   # closure captures loop variable - existing pattern
    "B017",   # blind except in tests - acceptable
    "B905",   # zip strict - existing code doesn't use strict parameter
]

[tool.ruff.lint.isort]
force-single-line = false
combine-as-imports = true
known-third-party = ["camel"]

[tool.ruff.lint.per-file-ignores]
"**/tests/**" = ["F841"]  # unused variables OK in tests

[tool.ruff.format]
quote-style = "double"
indent-style = "space"

[tool.bandit]
exclude_dirs = ["tests", ".venv", "venv", "benchmark/answer"]
skips = [
    "B101",  # assert_used - OK in non-production code
    "B105",  # hardcoded_password_string - false positive on env var names
    "B110",  # try_except_pass - used intentionally for error suppression
    "B113",  # request_without_timeout - handled by httpx defaults
    "B311",  # random - OK for non-crypto use
    "B404",  # import subprocess - needed for process management
    "B603",  # subprocess_without_shell - shell=False is safer
    "B607",  # start_process_with_partial_path - acceptable for system cmds
]

[tool.pytest.ini_options]
testpaths = ["tests"]
pythonpath = ["."]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]