mirror of
https://github.com/lfnovo/open-notebook.git
synced 2026-10-14 21:59:13 +00:00
Some checks are pending
Development Build / extract-version (push) Waiting to run
Development Build / changes (push) Waiting to run
Development Build / build-regular (push) Blocked by required conditions
Development Build / build-single (push) Blocked by required conditions
Development Build / summary (push) Blocked by required conditions
Tests / Backend Typecheck (push) Waiting to run
Tests / Backend Tests (push) Waiting to run
Tests / Backend Lint (push) Waiting to run
Tests / Frontend Tests (push) Waiting to run
Tests / Frontend Lint (push) Waiting to run
Tests / Frontend Build (push) Waiting to run
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
103 lines
2.7 KiB
TOML
103 lines
2.7 KiB
TOML
[project]
|
|
name = "open-notebook"
|
|
version = "1.15.0"
|
|
description = "An open source implementation of a research assistant, inspired by Google Notebook LM"
|
|
authors = [
|
|
{name = "Luis Novo", email = "lfnovo@gmail.com"}
|
|
]
|
|
readme = "README.md"
|
|
classifiers = [
|
|
"License :: OSI Approved :: MIT License",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.11",
|
|
]
|
|
requires-python = ">=3.11,<3.13"
|
|
dependencies = [
|
|
"fastapi>=0.104.0",
|
|
"uvicorn>=0.24.0",
|
|
"pydantic>=2.9.2",
|
|
"loguru>=0.7.2",
|
|
"langchain>=1.3.9,<2",
|
|
"langchain-core>=1.4.6,<2",
|
|
"langchain-text-splitters>=1.1.2,<2",
|
|
"langgraph>=1.0.5,<2",
|
|
"tiktoken>=0.12.0",
|
|
"langgraph-checkpoint-sqlite>=3.1.1,<4",
|
|
# The langchain-* provider packages below have no direct imports in this
|
|
# codebase: they are runtime requirements of esperanto's dynamic
|
|
# `to_langchain()` (esperanto declares them only as optional extras).
|
|
# deepseek/xai/openrouter/openai-compatible all route through
|
|
# langchain-openai, so no dedicated packages are needed for them.
|
|
"langchain-openai>=1.1.14,<2",
|
|
"langchain-anthropic>=1.4.6,<2",
|
|
"langchain-ollama>=1.0.1,<2",
|
|
"langchain-google-genai>=4.1.2,<5",
|
|
"langchain-groq>=1.1.1,<2",
|
|
"langchain-mistralai>=1.1.1,<2",
|
|
"tomli>=2.0.2",
|
|
"python-dotenv>=1.2.2",
|
|
"httpx[socks]>=0.27.0",
|
|
"content-core>=2.2.0,<3",
|
|
"ai-prompter>=0.4,<1",
|
|
"esperanto>=2.28.0,<3",
|
|
"surrealdb>=1.0.4",
|
|
"podcast-creator>=0.13.1,<1",
|
|
"surreal-commands>=1.3.1,<2",
|
|
"numpy>=2.4.1",
|
|
"pycountry>=26.2.16",
|
|
"babel>=2.18.0",
|
|
]
|
|
|
|
[tool.setuptools]
|
|
package-dir = {"open_notebook" = "open_notebook"}
|
|
|
|
[tool.setuptools.package-data]
|
|
open_notebook = ["ai/assets/*"]
|
|
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=61.0"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"mypy>=1.11.1",
|
|
"pre-commit>=4.1.0",
|
|
"pytest>=9.0.3",
|
|
"pytest-asyncio>=1.2.0",
|
|
"pytest-cov>=7.0.0",
|
|
"ruff>=0.14.13",
|
|
"types-requests>=2.32.4.20250913",
|
|
]
|
|
notebooks = [
|
|
"ipykernel>=6.29.5",
|
|
"ipywidgets>=8.1.5",
|
|
]
|
|
|
|
[tool.isort]
|
|
profile = "black"
|
|
line_length = 88
|
|
|
|
[tool.ruff]
|
|
line-length = 88
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I"]
|
|
ignore = [
|
|
"E501", # line too long
|
|
"E402", # module level import not at top of file (Streamlit requires this pattern)
|
|
"F541", # f-string without placeholders
|
|
]
|
|
|
|
[tool.uv]
|
|
# Security floors for transitive runtime, notebook and development dependencies,
|
|
# so a future resolution cannot select versions with known advisories again
|
|
# (raised in #1404; originally proposed in #1389).
|
|
constraint-dependencies = [
|
|
"anyio>=4.14.2",
|
|
"pyjwt>=2.15.1",
|
|
"urllib3>=2.8.0",
|
|
"tornado>=6.5.10",
|
|
"virtualenv>=21.14.5",
|
|
"soupsieve>=2.9",
|
|
]
|