[tool.poetry]
name = "aiservice"
version = "0.0.1"
description = ""
authors = ["CodeFlash Inc. <contact@codeflash.ai>"]
homepage = "https://codeflash.ai"
readme = "README.md"
exclude = [
    "experiments/*",
    "tests/*",
    "docs/*",
    "scripts/*",
    "*.pyc",
    "*.pyo",
    "*.pyd",
    "__pycache__",
    "*.so",
    "*.dylib",
    "*.dll",
    "*.exe",
    "*.log",
    "*.tmp",
    ".env",
    ".env.*",
    "*.pem",
    "*.key",
    "secrets.*",
    "config.yaml",
    "config.json",
    ".git",
    ".gitignore",
    ".gitattributes",
    ".github",
    "Dockerfile",
    "docker-compose.yml",
    "*.md",
    "*.txt",
    "*.csv",
    "*.db",
    "*.sqlite3",
    "*.pdf",
    "*.docx",
    "*.xlsx",
    "*.pptx",
    "*.iml",
    ".idea",
    ".vscode",
    ".DS_Store",
    "Thumbs.db",
    "venv",
    "env",
]
# Don't forget to install the poetry plugins we use too:
# poetry self add poetry-plugin-up

[tool.poetry.dependencies]
python = "^3.12.1"
django = "^5.0.6"
django-ninja = "^1.3.0"
pydantic = ">=2.9.0"
python-dotenv = "^1.0.1"
dj-database-url = "^2.2.0"
psycopg2-binary = "^2.9.9"
black = "^24.4.2"
gunicorn = "^22.0.0"
uvicorn = "^0.32.0"
jedi = "^0.19.0"
libcst = "^1.5.0"
posthog = "^3.5.0"
pytest = "^8.2.1"
sentry-sdk = { extras = ["django"], version = "^2.3.1" }
isort = "^5.13.2"
gitpython = "^3.1.43"
ruff = ">=0.7.0"
pytest-django = "^4.8.0"
nltk = "^3.9.1"
openai = "^1.52.2"

[tool.poetry.group.dev]
optional = true

[tool.poetry.group.dev.dependencies]
ipython = "^8.12.0"
mypy = ">=1.13"
types-Pygments = ">=2.18"
types-colorama = ">=0.4.15"
types-setuptools = ">=75.2"

[tool.mypy]
show_error_code_links = true
pretty = true
show_absolute_path = true
show_error_context = true
show_error_end = true
strict = true
warn_unreachable = true
install_types = true
plugins = [
    "pydantic.mypy"
]

[[tool.mypy.overrides]]
module = [
    "jedi",
    "jedi.api.classes",
    "inquirer",
    "inquirer.themes"
]
ignore_missing_imports = true

[tool.pydantic-mypy]
init_forbid_extra = true
init_typed = true
warn_required_dynamic_aliases = true

[tool.ruff.lint]
select = ["ALL"]
ignore = ["C901", "D100", "D101", "D102", "D103", "D105", "D107", "S101", "S603", "S607", "ANN101",
    "COM812", "FIX002", "PLR0912", "PLR0913", "PLR0915", "TD002", "TD003", "TD004"]

[tool.ruff.lint.flake8-type-checking]
strict = true
runtime-evaluated-base-classes = ["pydantic.BaseModel"]
runtime-evaluated-decorators = ["pydantic.validate_call"]

[tool.ruff.lint.pep8-naming]
classmethod-decorators = [
    # Allow Pydantic's `@validator` decorator to trigger class method treatment.
    "pydantic.validator",
]

[tool.ruff]
line-length = 120
fix = true
show-fixes = true

[tool.ruff.format]
docstring-code-format = true
skip-magic-trailing-comma = true

[tool.codeflash]
module-root = "."
tests-root = "."
test-framework = "pytest"
ignore-paths = []

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"