[tool.poetry] name = "starfish-core" version = "0.1.3" description = "" authors = ["Starfish AI Inc."] readme = "README.md" packages = [ {include = "starfish", from = "src"} ] [tool.poetry.dependencies] python = ">=3.10,<4.0" litellm = ">=1.65.1,<2.0.0" fastapi = ">=0.95.0" loguru = ">=0.7.3,<0.8.0" cachetools = ">=5.5.2,<6.0.0" ollama = ">=0.4.7,<0.5.0" python-dotenv = ">=1.1.0,<2.0.0" aiosqlite = ">=0.21.0,<0.22.0" aiofiles = ">=24.1.0,<25.0.0" typing-extensions = ">=4.0.0,<5.0.0" posthog = "^3.11.0" cloudpickle = "^2.2.0" datasets = "3.6.0" psutil = ">=7.0.0,<8.0.0" nest_asyncio = "^1.6.0" docstring_parser = "^0.16.0" mcp = "^1.8.1" # Force cryptography >=44.0.1 due to transitive security vulnerability # See: https://openssl-library.org/news/secadv/20250211.txt cryptography = ">=44.0.1" # Embedding dependencies faiss-cpu = "^1.7.4" sentence-transformers = "^4.1.0" unstructured = { version = "^0.10.0", extras = ["pdf"], optional = true } python-docx = { version = "*", optional = true } python-pptx = { version = "*", optional = true } openpyxl = { version = "*", optional = true } pytube = { version = "^15.0.0", optional = true } youtube-transcript-api = { version = "^0.6.1", optional = true } pdfminer_six = { version = "^20250506", optional = true } # Add optional dependencies for parsers [tool.poetry.extras] docx = ["python-docx"] ppt = ["python-pptx"] excel = ["openpyxl"] youtube = ["pytube", "youtube-transcript-api"] pdf = ["pdfminer_six"] unstructured = ["unstructured"] all = [ "python-docx", "python-pptx", "openpyxl", "pytube", "youtube-transcript-api", "pdfminer_six", "unstructured", ] [build-system] requires = ["poetry-core>=2.0.0,<3.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry.group.dev.dependencies] ipykernel = "^6.29.5" twine = "^5.0.0" ruff = "^0.8.6" vcrpy = "^7.0.0" isort = "^5.13.2" pre-commit = "^4.0.1" pytest = "^8.3.3" pytest-asyncio = "^0.24.0" pytest-dependency = "^0.6.0" pytest-timeout = "^2.3.1" pytest-cov = "^6.0.0" nbval = "^0.11.0" [tool.poetry.scripts] starfish = "starfish.api.cli:main" data-template = "src.starfish.data_gen_template.cli:main" [tool.ruff] line-length = 160 # Auto-fix settings fix = true unsafe-fixes = true [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "F401", # Unused imports "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "N", # PEP8 naming convetions "D" # pydocstyle ] ignore = [ "D100", # Remove this eventually "C901", # too complex "W191", # indentation contains tabs "D401", # imperative mood "N806", # uppercase variable names, for example, "API_KEY" ] exclude = [ ".git", "__pycache__", "venv", "build", "dist", ] [tool.ruff.lint.per-file-ignores] "tests/**/*" = ["D"] # ignore tests for now [tool.ruff.lint.pydocstyle] convention = "google" [tool.isort] profile = "black" line_length = 88 [tool.pytest.ini_options] asyncio_mode = "strict" asyncio_default_fixture_loop_scope = "function"