mirror of
https://github.com/fsecada01/Pygentic-AI.git
synced 2026-05-12 04:04:57 +00:00
BREAKING CHANGE: Removed pip-style requirements files
Migration Details:
- Removed core_requirements.{in,txt} and dev_requirements.in
- Consolidated all dependencies into pyproject.toml
- Added platform markers for Windows-specific packages:
- pywin32>=311 (sys_platform == 'win32')
- win32-setctime>=1.2.0 (sys_platform == 'win32')
- hypercorn (Windows ASGI server)
- gunicorn (Unix WSGI server)
CI/CD Changes:
- Updated .github/workflows/test.yml to use 'uv sync --group test'
- Simplified installation: no more manual pip install steps
- Uses 'uv run pytest' for test execution with PYTHONPATH
Benefits:
- ✅ Fixes pywin32 installation failure on Ubuntu CI runners
- ✅ Single source of truth for dependencies (pyproject.toml)
- ✅ Faster resolution with uv lockfile
- ✅ Modern Python packaging (PEP 621)
- ✅ Proper dependency groups (dev, test)
- ✅ Platform-aware installation
New Workflow:
- Production: uv sync
- With tests: uv sync --group test
- With dev tools: uv sync --group dev
- All groups: uv sync --all-groups
Added MIGRATION_UV.md with full migration guide for developers.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
173 lines
3.5 KiB
TOML
173 lines
3.5 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 = "strategiq"
|
|
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 = [
|
|
# Core async I/O
|
|
"aiofiles>=24.1.0",
|
|
"aiomysql>=0.3.2",
|
|
|
|
# Web framework
|
|
"fastapi>=0.128.1",
|
|
"fastapi-restful>=0.6.0",
|
|
"fastcrud>=0.21.0",
|
|
"uvicorn>=0.40.0",
|
|
|
|
# WSGI/ASGI servers (platform-specific)
|
|
"gunicorn>=25.0.1 ; sys_platform != 'win32'",
|
|
"hypercorn>=0.18.0 ; sys_platform == 'win32'",
|
|
|
|
# Task queue
|
|
"celery>=5.6.2",
|
|
"flower>=2.0.1",
|
|
"redis>=7.1.0",
|
|
|
|
# Database
|
|
"psycopg>=3.3.2",
|
|
"sqlalchemy>=2.0.37",
|
|
"sqlalchemy-mixins>=2.0.5",
|
|
"sqlmodel>=0.0.22",
|
|
"sqlmodel-crud-utilities",
|
|
"greenlet>=3.1.1",
|
|
|
|
# HTTP clients
|
|
"httpx[socks]>=0.28.1",
|
|
"httpx-html>=0.11.0.dev0",
|
|
|
|
# HTML/XML parsing
|
|
"html5lib>=1.1",
|
|
"lxml[html-clean]>=6.0.2",
|
|
"beautifulsoup4>=4.14.3",
|
|
|
|
# Templating
|
|
"jinjax>=0.63",
|
|
"jinja2>=3.1.6",
|
|
|
|
# AI/LLM
|
|
"openai>=2.16.0",
|
|
"pydantic-ai[examples]>=0.4.3",
|
|
"anthropic>=0.77.1",
|
|
"tavily-python>=0.7.21",
|
|
|
|
# Reddit API
|
|
"praw>=7.8.1",
|
|
|
|
# PDF generation
|
|
"reportlab>=4.4.9",
|
|
|
|
# Configuration
|
|
"pydantic>=2.10.5",
|
|
"pydantic-settings>=2.12.0",
|
|
"python-decouple>=3.8",
|
|
"python-dotenv>=1.0.1",
|
|
|
|
# Utilities
|
|
"loguru>=0.7.3",
|
|
"python-dateutil>=2.9.0.post0",
|
|
"python-slugify>=8.0.4",
|
|
"pytz>=2025.2",
|
|
"itsdangerous>=2.2.0",
|
|
"typing-inspect>=0.9.0",
|
|
|
|
# Serialization
|
|
"simplejson>=3.20.2",
|
|
"xmljson>=0.2.1",
|
|
"xmltodict>=1.0.2",
|
|
|
|
# Windows-specific dependencies (mark as platform-specific)
|
|
"pywin32>=311 ; sys_platform == 'win32'",
|
|
"win32-setctime>=1.2.0 ; sys_platform == 'win32'",
|
|
]
|
|
|
|
[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",
|
|
]
|
|
|
|
test = [
|
|
"pytest>=9.0.2",
|
|
"pytest-asyncio>=1.3.0",
|
|
"pytest-cov>=7.0.0",
|
|
"httpx>=0.28.1", # For TestClient
|
|
]
|