These modules are now proprietary and live in the Nextra SaaS product. xml-pipeline remains the OSS core with: - Message pump and pipeline steps - Handler contract and responses - LLM router abstraction - Native tools - Config loading - Memory/context buffer Removed: - xml_pipeline/console/ → nextra/console/ - xml_pipeline/auth/ → nextra/auth/ - xml_pipeline/server/ → nextra/server/ - Legacy files: agentserver.py, main.py, xml_listener.py The simple console example remains in examples/console/. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
198 lines
5.4 KiB
TOML
198 lines
5.4 KiB
TOML
# pyproject.toml — OSS xml-pipeline library
|
|
#
|
|
# This is the open-source core: message pump, handlers, LLM abstraction, tools.
|
|
# Advanced features (TUI console, LSP, auth, WebSocket server) are in Nextra.
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=45", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "xml-pipeline"
|
|
version = "0.4.0"
|
|
description = "Schema-driven XML message bus for multi-agent systems"
|
|
readme = "README.md"
|
|
requires-python = ">=3.11"
|
|
license = {text = "MIT"}
|
|
authors = [
|
|
{name = "xml-pipeline contributors"},
|
|
]
|
|
keywords = [
|
|
"xml",
|
|
"multi-agent",
|
|
"message-bus",
|
|
"llm",
|
|
"pipeline",
|
|
"async",
|
|
]
|
|
classifiers = [
|
|
"Development Status :: 4 - Beta",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Framework :: AsyncIO",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
"Topic :: System :: Distributed Computing",
|
|
]
|
|
|
|
# =============================================================================
|
|
# CORE DEPENDENCIES — minimal set for the library
|
|
# =============================================================================
|
|
dependencies = [
|
|
# XML processing & validation
|
|
"lxml>=4.9",
|
|
|
|
# Async streaming pipeline
|
|
"aiostream>=0.5",
|
|
|
|
# Configuration
|
|
"pyyaml>=6.0",
|
|
|
|
# Case conversion (snake_case <-> camelCase)
|
|
"pyhumps>=3.0",
|
|
|
|
# Ed25519 identity keys for signing
|
|
"cryptography>=41.0",
|
|
|
|
# HTTP client for LLM backends
|
|
"httpx>=0.27",
|
|
|
|
# Colored terminal output (minimal, no TUI)
|
|
"termcolor>=2.0",
|
|
]
|
|
|
|
# =============================================================================
|
|
# OPTIONAL DEPENDENCIES — user opts in
|
|
# =============================================================================
|
|
[project.optional-dependencies]
|
|
|
|
# LLM provider SDKs (alternative to raw httpx calls)
|
|
anthropic = ["anthropic>=0.39"]
|
|
openai = ["openai>=1.0"]
|
|
|
|
# Tool backends
|
|
redis = ["redis>=5.0"] # Distributed key-value store
|
|
search = ["duckduckgo-search>=6.0"] # Web search tool
|
|
|
|
# Console example (optional, for interactive use)
|
|
console = ["prompt_toolkit>=3.0"]
|
|
|
|
# All LLM providers
|
|
llm = ["xml-pipeline[anthropic,openai]"]
|
|
|
|
# All tools
|
|
tools = ["xml-pipeline[redis,search]"]
|
|
|
|
# Everything (for local development)
|
|
all = ["xml-pipeline[llm,tools,console]"]
|
|
|
|
# Testing
|
|
test = [
|
|
"pytest>=7.0",
|
|
"pytest-asyncio>=0.23",
|
|
"pytest-cov>=4.0",
|
|
]
|
|
|
|
# Development (linting, type checking)
|
|
dev = [
|
|
"xml-pipeline[test,all]",
|
|
"mypy>=1.8",
|
|
"ruff>=0.1",
|
|
"types-PyYAML",
|
|
]
|
|
|
|
# =============================================================================
|
|
# CLI ENTRY POINTS
|
|
# =============================================================================
|
|
[project.scripts]
|
|
xml-pipeline = "xml_pipeline.cli:main"
|
|
xp = "xml_pipeline.cli:main" # Short alias
|
|
|
|
# =============================================================================
|
|
# PROJECT URLS
|
|
# =============================================================================
|
|
[project.urls]
|
|
Homepage = "https://xml-pipeline.org"
|
|
Documentation = "https://xml-pipeline.org/docs"
|
|
Repository = "https://git.xml-pipeline.org/dullfig/xml-pipeline"
|
|
Issues = "https://git.xml-pipeline.org/dullfig/xml-pipeline/issues"
|
|
|
|
# =============================================================================
|
|
# PACKAGE DISCOVERY
|
|
# =============================================================================
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = [
|
|
"xml_pipeline*",
|
|
"third_party*",
|
|
"examples*",
|
|
]
|
|
exclude = [
|
|
"tests*",
|
|
"docs*",
|
|
]
|
|
|
|
[tool.setuptools.package-data]
|
|
xml_pipeline = [
|
|
"schema/*.xsd",
|
|
"prompts/*.txt",
|
|
]
|
|
|
|
# =============================================================================
|
|
# PYTEST
|
|
# =============================================================================
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
asyncio_default_fixture_loop_scope = "function"
|
|
testpaths = ["tests"]
|
|
python_files = ["test_*.py"]
|
|
norecursedirs = [".git", "__pycache__", "*.egg-info", "build", "dist"]
|
|
markers = [
|
|
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
|
|
"integration: marks tests requiring external services",
|
|
]
|
|
|
|
# =============================================================================
|
|
# RUFF (linting)
|
|
# =============================================================================
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py311"
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"E", # pycodestyle errors
|
|
"F", # pyflakes
|
|
"I", # isort
|
|
"N", # pep8-naming
|
|
"W", # pycodestyle warnings
|
|
"UP", # pyupgrade
|
|
"B", # flake8-bugbear
|
|
"C4", # flake8-comprehensions
|
|
"SIM", # flake8-simplify
|
|
]
|
|
ignore = [
|
|
"E501", # line too long (handled by formatter)
|
|
"B008", # function call in default argument
|
|
]
|
|
|
|
[tool.ruff.lint.isort]
|
|
known-first-party = ["xml_pipeline", "third_party"]
|
|
|
|
# =============================================================================
|
|
# MYPY (type checking)
|
|
# =============================================================================
|
|
[tool.mypy]
|
|
python_version = "3.11"
|
|
warn_return_any = true
|
|
warn_unused_ignores = true
|
|
disallow_untyped_defs = true
|
|
strict_optional = true
|
|
ignore_missing_imports = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = "third_party.*"
|
|
ignore_errors = true
|