starfish_data_ai / pyproject.toml
John-Jiang's picture
init commit
5301c48
[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"