[build-system] requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta" [project] name = "skydiscover" dynamic = ["version"] description = "A Flexible Framework for AI-Driven Scientific and Algorithmic Discovery" readme = "README.md" requires-python = ">=3.10, <3.14" license = {text = "Apache-2.0"} dependencies = [ "openai>=1.0.0", "pyyaml>=6.0", "tqdm>=4.64.0", "numpy>=1.22.0", ] [project.optional-dependencies] math = [ "scipy>=1.11.0", "sympy>=1.14.0", "jax>=0.6.2", "optax>=0.2.6", "torch", "scikit-learn>=1.0.0", "numba", "pandas", "matplotlib", "plotly", "networkx", "cvxpy", "autograd", "pymoo", "PyWavelets", ] adrs = [ "numpy>=1.22.0", "pandas", "networkx>=3.2,<3.4", "torch", ] external = [ "openevolve", "gepa[full]", "litellm>=1.81", # gepa[full] needs litellm, but uv override-dependencies strips the [full] extra ] dev = [ "pytest>=7.0.0", "pytest-asyncio>=0.21.0", "black>=22.0.0", "isort>=5.10.0", "mypy>=0.950", "requests>=2.28.0", ] frontier-cs = [ "anthropic>=0.74.0", "colorlog>=6.10.1", "datasets>=4.4.1", "google-genai>=1.55.0", "google-generativeai>=0.8.5", "numpy>=2.0.0", # Frontier-CS requires numpy 2.x "python-dotenv>=1.2.1", "skypilot>=0.10.5", ] prompt-optimization = [ "dspy>=3.1.3", "litellm>=1.81", "bm25s>=0.3.0", "pystemmer>=2.2.0.3", "datasets>=4.5.0", "diskcache>=5.6.3", "ujson>=5.11.0", ] [tool.uv] override-dependencies = ["httpx>=0.28.1", "gepa>=0.0.26"] [tool.uv.sources] openevolve = { git = "https://github.com/algorithmicsuperintelligence/openevolve.git", branch = "main" } gepa = { git = "https://github.com/gepa-ai/gepa.git", branch = "main" } [tool.black] line-length = 100 target-version = ['py310'] include = '\.pyi?$' [tool.isort] profile = "black" line_length = 100 [tool.mypy] python_version = "3.10" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true disallow_incomplete_defs = true [project.scripts] skydiscover-run = "skydiscover.cli:main" skydiscover-viewer = "skydiscover.extras.monitor.viewer:main" [tool.pytest.ini_options] testpaths = ["tests"] markers = [ "slow: marks tests as slow (deselect with '-m \"not slow\"')", "integration: marks tests as integration tests requiring external services" ] addopts = "--strict-markers" [tool.setuptools.packages.find] include = ["skydiscover*"] [tool.setuptools.package-data] skydiscover = [ "context_builder/*/templates/*.txt", "search/evox/config/*.yaml", "search/evox/config/*.txt", "extras/external/defaults/*.yaml", "extras/monitor/dashboard.html", ] [tool.setuptools.dynamic] version = {attr = "skydiscover._version.__version__"}