codeflash-internal/django/aiservice/pyproject.toml
Saurabh Misra 198c0c1a4e
codeflash-omni-java (#2335)
# Pull Request Checklist

## Description
- [ ] **Breaking Changes**: Document any breaking changes (if
applicable)
- [ ] **Description of PR**: Clear and concise description of what this
PR accomplishes
- [ ] **Related Issues**: Link to any related issues or tickets

## Testing
- [ ] **Test cases Attached**: All relevant test cases have been
added/updated
- [ ] **Manual Testing**: Manual testing completed for the changes

## Monitoring & Debugging
- [ ] **Logging in place**: Appropriate logging has been added for
debugging user issues
- [ ] **Sentry will be able to catch errors**: Error handling ensures
Sentry can capture and report errors
- [ ] **Avoid Dev based/Prisma logging**: No development-only or
Prisma-specific logging in production code

## Configuration
- [ ] **Env variables newly added**: Any new environment variables are
documented in .env.example file or mentioned in description
---

## Additional Notes
<!-- Add any additional context, screenshots, or notes for reviewers
here -->

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: HeshamHM28 <HeshamMohamedFathy@outlook.com>
Co-authored-by: Ubuntu <ubuntu@ip-172-31-39-200.ec2.internal>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Kevin Turcios <turcioskevinr@gmail.com>
Co-authored-by: Kevin Turcios <106575910+KRRT7@users.noreply.github.com>
2026-02-13 23:26:55 +05:30

254 lines
4.9 KiB
TOML

[project]
name = "aiservice"
version = "0.0.1"
description = ""
authors = [{ name = "CodeFlash Inc.", email = "contact@codeflash.ai" }]
requires-python = ">=3.12.1,<4"
readme = "README.md"
classifiers = ["Private :: Do Not Upload"]
dependencies = [
"django>=5.0.6,<6",
"django-ninja>=1.3.0,<2",
"pydantic>=2.9.0",
"python-dotenv>=1.0.1,<2",
"dj-database-url>=2.2.0,<3",
"psycopg2-binary>=2.9.9,<3",
"gunicorn>=22.0.0,<23",
"uvicorn>=0.32.0,<0.33",
"libcst>=1.5.0,<2",
"posthog>=3.5.0,<4",
"gitpython>=3.1.43,<4",
"ruff>=0.7.0",
"openai[aiohttp]>=1.52.2,<2",
"isort>=7.0.0",
"sentry-sdk[django]>=2.35.0",
"stamina>=25.1.0",
"jedi>=0.19.2",
"anthropic>=0.75.0",
"wcwidth>=0.2.15",
"tree-sitter>=0.25.2",
"tree-sitter-javascript>=0.25.0",
"tree-sitter-typescript>=0.23.2",
"tree-sitter-java>=0.23.5",
]
[project.urls]
Homepage = "https://codeflash.ai"
[dependency-groups]
dev = [
"ipython>=8.12.0,<9",
"mypy>=1.13",
"types-Pygments>=2.18",
"types-colorama>=0.4.15",
"types-setuptools>=75.2",
"types-gevent>=24.11.0.20241230,<25",
"types-pexpect>=4.9.0.20241208,<5",
"pytest-asyncio>=1.1.0",
"pytest>=8.4.2",
"pytest-django>=4.11.1",
"ty>=0.0.8",
"prek>=0.2.25",
"coverage>=7.13.1",
]
[tool.hatch.build.targets.sdist]
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",
]
[tool.hatch.build.targets.wheel]
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",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[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"]
warn_unused_ignores = false
[[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",
"D104",
"D105",
"D107",
"D203", # incompatible with D211
"D213", # incompatible with D212
"S101",
"S603",
"S607",
"COM812",
"FIX002",
"PLR0912",
"PLR0913",
"PLR0915",
"TD002",
"TD003",
"TD004",
"N802",
"PLR2004", # magic value (replace with variable warning)
"TRY003",
"N801",
"EM101", # Exception must not use a string literal, assign to variable first"
"TRY301", # Abstract `raise` to an inner function
"LOG015",
"T201",
"E501",
"ERA001",
]
[tool.ruff.lint.flake8-type-checking]
strict = true
runtime-evaluated-base-classes = ["pydantic.BaseModel", "ninja.Schema", "typing.TypedDict"]
runtime-evaluated-decorators = [
"pydantic.validate_call",
"pydantic.dataclasses.dataclass",
"ninja.NinjaAPI.get",
"ninja.NinjaAPI.post",
"ninja.NinjaAPI.put",
"ninja.NinjaAPI.patch",
"ninja.NinjaAPI.delete",
]
# Keep LLM as runtime import - used in function signatures that may be introspected
exempt-modules = ["typing", "aiservice.llm"]
[tool.ruff.lint.pep8-naming]
classmethod-decorators = [
# Allow Pydantic's `@validator` decorator to trigger class method treatment.
"pydantic.validator",
]
[tool.ruff.lint.isort]
split-on-trailing-comma = false
[tool.ruff]
line-length = 120
fix = true
show-fixes = true
exclude = ["core/languages/python/testgen/tests", "core/languages/python/testgen/sqlalchemy"]
[tool.ruff.format]
docstring-code-format = true
skip-magic-trailing-comma = true
[tool.ty.rules]
no-matching-overload = "ignore"
[tool.ty.src]
exclude = ["tests/"]
[tool.codeflash]
module-root = "."
tests-root = "tests"
test-framework = "pytest"
ignore-paths = []