blob: 8ce1bf8a5490efae22de4510f3f3b84422ac9158 [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
[build-system]
requires = ["flit_core >=3.2,<4"]
build-backend = "flit_core.buildapi"
[project]
name = "apache-burr"
version = "0.42.0"
dependencies = [] # yes, there are none
requires-python = ">=3.9"
authors = [
{name = "Elijah ben Izzy", email = "elijah@apache.org"},
{name = "Stefan Krawczyk", email = "stefan@apache.org"},
]
maintainers = [
{name = "Elijah ben Izzy", email = "elijah@apache.org"},
{name = "Stefan Krawczyk", email = "stefan@apache.org"},
]
description = "Apache Burr (incubating) makes it easy to develop applications that make decisions (chatbots, agents, simulations, etc...) from simple python building blocks."
readme = "README.md"
license-files = ["LICENSE-wheel", "NOTICE", "DISCLAIMER"]
keywords = ["mlops", "data", "state-machine", "llmops"]
classifiers = [
"Development Status :: 4 - Beta",
"Programming Language :: Python"
]
[project.optional-dependencies]
streamlit = [
"streamlit",
"graphviz",
"matplotlib",
"sf-hamilton",
]
hamilton = [
"sf-hamilton"
]
graphviz = [
"graphviz"
]
aiosqlite = [
"aiosqlite"
]
asyncpg = [
"asyncpg"
]
postgresql = [
"psycopg2-binary"
] # leaving it here for backwards compatibility
psycopg2 = [
"psycopg2-binary"
]
pymongo = [
"pymongo"
]
redis = [
"redis"
]
release = [
"jinja2",
]
tests = [
"pytest",
"pytest-asyncio",
"apache-burr[hamilton]",
"langchain_core",
"langchain_community",
"pandas",
"pydantic[email]>=2.0",
"pyarrow",
"apache-burr[aiosqlite]",
"apache-burr[asyncpg]",
"apache-burr[psycopg2]",
"apache-burr[pymongo]",
"apache-burr[redis]",
"apache-burr[opentelemetry]",
"apache-burr[langfuse]",
"apache-burr[haystack]",
"apache-burr[ray]"
]
documentation = [
"apache-burr[tests]",
"apache-burr[bedrock]",
"sphinx<9",
"sphinx-autobuild",
"myst-nb",
"furo",
"sphinx-sitemap",
"sphinx-toolbox",
"apache-burr[aiosqlite]",
"apache-burr[asyncpg]",
"apache-burr[psycopg2]",
"apache-burr[pymongo]",
"apache-burr[redis]",
"apache-burr[ray]",
"apache-burr[streamlit]",
"sphinxcontrib-googleanalytics"
]
tracking-client = [
"pydantic>=2.0"
]
tracking-client-s3 = [
"apache-burr[tracking-client]",
"boto3"
]
bedrock = [
"boto3"
]
tracking-server-s3 = [
"aerich",
"aiobotocore",
"fastapi",
"tortoise-orm[accel, asyncmy]",
"apache-burr[tracking-server]",
"typing-inspect"
]
tracking-server = [
"click",
"fastapi",
"uvicorn",
"pydantic>=2.0",
"pydantic-settings",
"fastapi-pagination",
"fastapi-utils",
"aiofiles",
"requests",
"jinja2",
"openai", # temporary for the demo, we will likely remove
"typing-inspect",
]
pydantic = [
"pydantic>=2.0"
]
haystack = [
"haystack-ai"
]
cli = [
"loguru",
"click",
"requests"
]
tracking = [
"apache-burr[tracking-client]",
"apache-burr[tracking-server]",
]
learn = [
"apache-burr[tracking,streamlit,graphviz,hamilton,cli,inappexamples]"
]
start = [
"apache-burr[learn]"
]
inappexamples = [
"opentelemetry-api",
"opentelemetry-sdk",
'opentelemetry-instrumentation-openai',
'tavily-python',
]
# All the bloatware from various LLM demos
# In the future most people will be relying on simple APIs, not this
# But its good for demos!
# TODO -- fill this up with whatever is needed for the demos, it's not complete
examples = [
"langchain",
"langchain-community",
"langchain-openai",
"apache-burr[inappexamples]"
]
# just install everything for developers
developer = [
"apache-burr[streamlit]",
"apache-burr[graphviz]",
"apache-burr[tracking]",
"apache-burr[tests]",
"apache-burr[documentation]",
"apache-burr[examples]",
"build",
"twine",
"pre-commit",
"tomli; python_version < '3.11'",
]
opentelemetry = [
"opentelemetry-api",
"opentelemetry-sdk",
]
langfuse = [
"langfuse>=3.0.0",
"apache-burr[opentelemetry]",
]
ray = [
"ray[default]"
]
[tool.aerich]
tortoise_orm = "burr.tracking.server.s3.settings.TORTOISE_ORM"
location = "./burr/tracking/server/s3/migrations"
src_folder = "./."
[project.urls]
Homepage = "https://github.com/apache/burr"
Documentation = "https://github.com/apache/burr"
Repository = "https://github.com/apache/burr"
"Bug Tracker" = "https://github.com/apache/burr"
[project.scripts]
burr = "burr.cli.__main__:cli_run_server"
burr-demo = "burr.cli.__main__:cli_demo_server"
burr-admin-server = "burr.cli.__main__:cli_run_server"
burr-admin-publish = "burr.cli.__main__:cli_build_and_publish"
burr-admin-build-ui = "burr.cli.__main__:cli_build_ui"
burr-admin-generate-demo-data = "burr.cli.__main__:cli_generate_demo_data"
burr-test-case = "burr.cli.__main__:cli_test_case"
[dependency-groups]
dev = [
"apache-burr[cli]",
"flit",
]
[tool.flit.module]
name = "burr"
[tool.flit.sdist]
include = [
"LICENSE",
"NOTICE",
"DISCLAIMER",
"LICENSE-wheel",
"scripts/**",
"telemetry/ui/**",
"examples/__init__.py",
"examples/email-assistant/**",
"examples/multi-modal-chatbot/**",
"examples/streaming-fastapi/**",
"examples/deep-researcher/**",
"examples/hello-world-counter/**",
]
exclude = [
# burr-redirect: non-ASF PyPI redirect package, not part of the ASF source release.
"burr-redirect/**",
"telemetry/ui/node_modules/**",
"telemetry/ui/build/**",
"telemetry/ui/dist/**",
"telemetry/ui/.cache/**",
"telemetry/ui/.next/**",
"**/__pycache__/**",
"**/*.pyc",
".git/**",
".github/**",
"docs/**",
"website/**",
# Exclude VCS and system files
".gitignore",
".gitmodules",
"**/.gitignore",
"**/.DS_Store",
# Exclude unwanted examples - flit auto-includes examples/ as a package because of __init__.py,
# and exclude patterns take precedence over include patterns. We must explicitly exclude each
# unwanted example directory. Only email-assistant, multi-modal-chatbot, streaming-fastapi,
# and deep-researcher should be included (see include list above).
# NOTE: If you add/remove examples, update this list AND tests/test_release_config.py
"examples/README.md",
"examples/validate_examples.py",
"examples/fastapi_mount_example.py",
"examples/adaptive-crag/**",
"examples/conversational-rag/**",
"examples/custom-serde/**",
"examples/deployment/**",
"examples/hamilton-integration/**",
"examples/haystack-integration/**",
"examples/image-telephone/**",
"examples/instructor-gemini-flash/**",
"examples/integrations/**",
"examples/llm-adventure-game/**",
"examples/ml-training/**",
"examples/multi-agent-collaboration/**",
"examples/openai-compatible-agent/**",
"examples/opentelemetry/**",
"examples/other-examples/**",
"examples/parallelism/**",
"examples/pytest/**",
"examples/rag-lancedb-ingestion/**",
"examples/ray/**",
"examples/recursive/**",
"examples/simple-chatbot-intro/**",
"examples/simulation/**",
"examples/streaming-overview/**",
"examples/talks/**",
"examples/templates/**",
"examples/test-case-creation/**",
"examples/tool-calling/**",
"examples/tracing-and-spans/**",
"examples/typed-state/**",
"examples/web-server/**",
"examples/youtube-to-social-media-post/**",
]