Files
Pygentic-AI/pyproject.toml
Francis Secada f9762093f8 feat: upgrade Docker image to Python 3.13
Upgrade from Python 3.12.3 to Python 3.13.3 using deadsnakes PPA.

Changes:
- Add build.sh execution in Dockerfile to install Python 3.13
- Install Python 3.13 from deadsnakes PPA with dev packages
- Set Python 3.13 as default via update-alternatives
- Create venv explicitly with Python 3.13
- Update pyproject.toml to require Python >= 3.13
- Fix line endings in shell scripts (CRLF → LF)

Build process:
1. Adds deadsnakes PPA repository
2. Installs python3.13, python3.13-dev, python3.13-venv, python3.13-distutils
3. Sets as system default Python
4. UV creates venv with Python 3.13
5. All packages install successfully

Tested with FastAPI 0.128.0 - all dependencies working correctly.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-04 11:17:53 -05:00

128 lines
2.7 KiB
TOML

[tool.ruff]
fix = true
exclude = [
".bzr",
".direnv",
".eggs",
".git",
".hg",
".mypy_cache",
".nox",
".pants.d",
".pytype",
".ruff_cache",
".svn",
".tox",
".venv",
"__pypackages__",
"_build",
"buck-out",
"build",
"dist",
"node_modules",
"venv",
"migrations",
]
line-length = 80
[tool.ruff.lint]
preview = true
select = ["E", "F", "B"]
#select = ["E", "F", "I", "PL", "I", "B"]
ignore = ["B008", "E501"] # black will take care of line-length violations
ignore-init-module-imports = true
unfixable = []
[tool.ruff.lint.mccabe]
max-complexity = 10
[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["F403", "F405", "E501"]
"consts.py" = ["E501"]
[tool.black]
line-length = 80
target-version = ['py39', 'py310', 'py311', 'py312', 'py313']
extend-exclude = '''
/(
# The following are specific to Black, you probably don't want those.
| blib2to3
| tests/data
| profiling
)/
'''
[tool.isort]
profile = "black"
line_length = 80
[tool.uv.sources]
fastapi-debug-toolbar = { git = "https://github.com/fsecada01/fastapi-debug-toolbar.git", rev = "patch-2" }
#multi_line_output = 3
#include_trailing_comma = true
#force_grid_wrap = 0
[project]
name = "agentic_ai_service"
authors = [
{ name = "Francis Secada", email = "francis.secada@gmail.com" }
]
readme = "README.md"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
]
version = "1.0.0b0"
requires-python = ">=3.13"
dependencies = [
"aiofiles>=24.1.0",
"aiomysql>=0.2.0",
"celery>=5.4.0",
"fastapi>=0.115.7",
"fastapi-restful>=0.6.0",
"fastcrud>=0.15.5",
"flower>=2.0.1",
"greenlet>=3.1.1",
"gunicorn>=25.0.1 ; sys_platform != 'win32'",
"html5lib>=1.1",
"httpx-html>=0.11.0.dev0",
"httpx[socks]>=0.28.1",
"hypercorn>=0.17.3 ; sys_platform == 'win32'",
"itsdangerous>=2.2.0",
"jinjax>=0.48",
"loguru>=0.7.3",
"lxml[html-clean]>=5.3.0",
"openai>=1.60.0",
"praw>=7.8.1",
"tavily-python>=0.7.0",
"psycopg>=3.2.4",
"pydantic-ai[examples]>=0.0.18",
"pydantic-settings>=2.7.1",
"python-dateutil>=2.9.0.post0",
"python-decouple>=3.8",
"python-slugify>=8.0.4",
"pytz>=2024.2",
"redis>=5.2.1",
"simplejson>=3.19.3",
"sqlalchemy-mixins>=2.0.5",
"sqlmodel>=0.0.22",
"sqlmodel-crud-utilities",
"typing-inspect>=0.9.0",
"uvicorn>=0.34.0",
"xmljson>=0.2.1",
"xmltodict>=0.14.2",
]
[dependency-groups]
dev = [
"alembic>=1.18.3",
"black>=26.1.0",
"fastapi-debug-toolbar",
"isort>=7.0.0",
"jupyterlab>=4.5.3",
"jupyterlab-code-formatter>=3.0.2",
"pre-commit>=4.5.1",
"ruff>=0.14.14",
]