Spaces:
Running
Running
| [project] | |
| name = "flow-agent" | |
| version = "0.1.0" | |
| description = "Autonomous coding agent with a polished CLI" | |
| authors = [{ name = "Victor Dibia" }] | |
| readme = "README.md" | |
| requires-python = ">=3.10" | |
| license = { text = "MIT" } | |
| classifiers = [ | |
| "Development Status :: 4 - Beta", | |
| "Environment :: Console", | |
| "Intended Audience :: Developers", | |
| "License :: OSI Approved :: MIT License", | |
| "Programming Language :: Python :: 3", | |
| "Programming Language :: Python :: 3.10", | |
| "Programming Language :: Python :: 3.11", | |
| "Programming Language :: Python :: 3.12", | |
| "Programming Language :: Python :: 3.13", | |
| "Typing :: Typed", | |
| ] | |
| dependencies = [ | |
| "pydantic>=2.0.0", | |
| "pydantic-settings>=2.0.0", | |
| "rich>=13.0.0", | |
| "typer>=0.9.0", | |
| "httpx>=0.25.0", | |
| "python-dotenv>=1.0.0", | |
| "agent-framework-core>=1.0.0b5", | |
| "azure-identity>=1.15.0", | |
| "pyyaml>=6.0.0", | |
| # OpenTelemetry for experiments tracing | |
| "opentelemetry-api>=1.20.0", | |
| "opentelemetry-sdk>=1.20.0", | |
| "opentelemetry-semantic-conventions>=0.41b0", | |
| # Web UI dependencies | |
| "fastapi>=0.109.0", | |
| "uvicorn>=0.27.0", | |
| "sqlmodel>=0.0.14", | |
| "aiosqlite>=0.19.0", | |
| "greenlet>=3.0.0", # Required for SQLAlchemy async support | |
| # Logging dependencies | |
| "loguru>=0.7.3", | |
| "tiktoken>=0.12.0", | |
| ] | |
| [project.optional-dependencies] | |
| # Optional features | |
| research = ["beautifulsoup4>=4.12.0", "html2text>=2024.2.26"] | |
| langgraph = [ | |
| "langgraph>=0.2.0", | |
| "langchain-core>=0.3.0", | |
| "langchain-openai>=0.2.0", | |
| ] | |
| smolagents = [ | |
| "smolagents[toolkit]>=1.24.0", | |
| "pdfminer.six>=20240706", | |
| "cffi>=1.16.0", | |
| "cryptography>=42.0.0", | |
| "Pillow>=11.0.0", | |
| "puremagic>=1.28", | |
| "pypdf>=5.1.0", | |
| "youtube_transcript_api>=0.6.2", | |
| "python_pptx>=1.0.2", | |
| "serpapi>=0.1.5", | |
| "mammoth>=1.8.0", | |
| "markdownify>=0.13.1", | |
| "pandas>=2.2.3", | |
| "openpyxl>=3.1.0", | |
| "wikipedia-api>=0.9.0", | |
| ] | |
| # Bundles | |
| optimizer = ["gepa>=0.0.27", "litellm>=1.0.0"] | |
| hf-datasets = ["datasets>=2.0.0"] | |
| # Bundles | |
| all = ["flow-agent[research,langgraph,optimizer,smolagents,hf-datasets]"] | |
| dev = [ | |
| "pytest>=8.0.0", | |
| "pytest-asyncio>=0.23.0", | |
| "pytest-cov>=4.1.0", | |
| "mypy>=1.8.0", | |
| "pyright>=1.1.350", | |
| "ruff>=0.2.0", | |
| "pre-commit>=3.6.0", | |
| "poethepoet>=0.24.0", | |
| ] | |
| [project.scripts] | |
| flow = "flow.cli:main" | |
| [project.urls] | |
| Homepage = "https://github.com/victordibia/flow" | |
| Repository = "https://github.com/victordibia/flow" | |
| Issues = "https://github.com/victordibia/flow/issues" | |
| [build-system] | |
| requires = ["hatchling"] | |
| build-backend = "hatchling.build" | |
| [tool.hatch.build.targets.wheel] | |
| packages = ["src/flow"] | |
| # ============================================================================ | |
| # Type Checking - Strict | |
| # ============================================================================ | |
| [tool.pyright] | |
| include = ["src"] | |
| exclude = ["**/tests/**", "**/.venv/**", "**/skills/**"] | |
| typeCheckingMode = "strict" | |
| pythonVersion = "3.10" | |
| reportMissingTypeStubs = false | |
| reportUnnecessaryIsInstance = false | |
| # agent_framework is optional - ignore type issues in harness | |
| reportUnknownMemberType = "warning" | |
| reportUnknownVariableType = "warning" | |
| reportUnknownArgumentType = "warning" | |
| [tool.mypy] | |
| plugins = ["pydantic.mypy"] | |
| strict = true | |
| python_version = "3.10" | |
| ignore_missing_imports = true | |
| disallow_untyped_defs = true | |
| no_implicit_optional = true | |
| check_untyped_defs = true | |
| warn_return_any = true | |
| show_error_codes = true | |
| warn_unused_ignores = false | |
| disallow_incomplete_defs = true | |
| disallow_untyped_decorators = true | |
| exclude = ["src/flow/skills/"] | |
| # ============================================================================ | |
| # Linting - Ruff | |
| # ============================================================================ | |
| [tool.ruff] | |
| line-length = 120 | |
| target-version = "py310" | |
| src = ["src"] | |
| fix = true | |
| include = ["*.py", "*.pyi", "**/pyproject.toml"] | |
| exclude = ["docs/*", "src/flow/skills/*"] | |
| [tool.ruff.lint] | |
| select = [ | |
| "E", # pycodestyle errors | |
| "F", # pyflakes | |
| "I", # isort | |
| "B", # bugbear | |
| "UP", # pyupgrade | |
| "ANN", # annotations | |
| "S", # bandit (security) | |
| "RUF", # ruff-specific | |
| "ASYNC", # async checks | |
| "D", # pydocstyle | |
| ] | |
| ignore = [ | |
| "D100", # allow missing docstring in public module | |
| "D104", # allow missing docstring in public package | |
| "D107", # allow missing docstring in __init__ | |
| "ANN401", # allow Any type (needed for generic tool/event handling) | |
| "S101", # allow assert statements (used in tests) | |
| "B008", # allow Depends() in function defaults (FastAPI pattern) | |
| ] | |
| [tool.ruff.lint.per-file-ignores] | |
| "**/tests/**" = ["D", "ANN", "S"] | |
| [tool.ruff.lint.pydocstyle] | |
| convention = "google" | |
| [tool.ruff.format] | |
| docstring-code-format = true | |
| # ============================================================================ | |
| # Testing - Pytest | |
| # ============================================================================ | |
| [tool.pytest.ini_options] | |
| testpaths = ["tests"] | |
| pythonpath = ["src"] | |
| addopts = "-ra -q -r fEX" | |
| asyncio_mode = "auto" | |
| asyncio_default_fixture_loop_scope = "function" | |
| filterwarnings = [] | |
| [tool.coverage.run] | |
| source = ["src/flow"] | |
| omit = ["**/__init__.py"] | |
| [tool.coverage.report] | |
| exclude_lines = [ | |
| "pragma: no cover", | |
| "if TYPE_CHECKING:", | |
| "raise NotImplementedError", | |
| ] | |
| # ============================================================================ | |
| # Task Runner - Poe | |
| # ============================================================================ | |
| [tool.poe.tasks] | |
| fmt = "ruff format src tests" | |
| lint = "ruff check src tests --fix" | |
| pyright = "pyright src" | |
| mypy = "mypy src" | |
| test = "pytest tests -v --cov=flow --cov-report=term-missing" | |
| check = ["fmt", "lint", "pyright", "mypy", "test"] | |