bd93ae8894
Initial scaffolding for the library extracted from cleveragents-core
at commit 20ad9a46. This commit lays the empty package shell and the
quality-gate machinery; subsequent commits move actual source.
- pyproject.toml: Hatchling build; Python 3.13; pinned runtime
deps trimmed to what the library actually needs (pydantic,
structlog, langchain-core, langgraph, jinja2, pyyaml, jsonschema,
python-ulid). Dev/tests/docs extras mirror the parent.
- noxfile.py: 8 sessions matching cleveragents-core by name
(format, lint, typecheck, unit_tests, coverage_report,
security_scan, dead_code, complexity, build, docs); slimmed of
the parent's pabot / template-DB / worker plumbing because the
library is pure-domain.
- LICENSE, NOTICE, CODE_OF_CONDUCT.md, ATTRIBUTIONS.md,
.editorconfig, .gitattributes, .gitignore, .pre-commit-config.yaml,
.semgrep.yml, .bumpversion.cfg, behave.ini, pyrightconfig.json,
.python-version: copied verbatim from cleveragents-core so org-
wide policy stays in lockstep.
- README.md: tailored to the library's role; explains the
boundary with cleveragents-core and what's NOT in scope.
- src/cleveractors/__init__.py + py.typed: empty package marker
with module-level docstring listing the eventual sub-packages.
- features/steps/__init__.py: Behave test tree placeholder.
No source code is moved in this commit. The next two commits add the
CI workflow and the minimal shared types, after which the actor /
langgraph / templates / lsp / acms / agents subpackages land one
commit at a time.
161 lines
4.4 KiB
TOML
161 lines
4.4 KiB
TOML
[build-system]
|
|
requires = ["hatchling>=1.21.0"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "cleveractors"
|
|
version = "0.1.0"
|
|
description = "Pure Python library for declarative actor definitions: YAML schema, Jinja2 preprocessing, validation, and LangGraph compilation. Extracted from cleveragents-core."
|
|
readme = "README.md"
|
|
requires-python = ">=3.13"
|
|
license = {text = "MIT"}
|
|
authors = [
|
|
{name = "CleverThis Engineering", email = "engineering@cleverthis.com"},
|
|
]
|
|
keywords = ["cleveragents", "cleveractors", "actor", "langgraph", "ai", "yaml"]
|
|
classifiers = [
|
|
"Development Status :: 4 - Beta",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
]
|
|
|
|
# Runtime dependencies — the minimum the library needs to:
|
|
# - parse an actor YAML file
|
|
# - Jinja2-preprocess it
|
|
# - validate the schema with Pydantic
|
|
# - compile to a LangGraph node/edge graph
|
|
#
|
|
# Notably absent (compared to cleveragents-core's full dep set):
|
|
# - sqlalchemy / alembic — no persistence in the library
|
|
# - uvicorn / typer — no CLI / HTTP surface
|
|
# - dependency-injector — DI is the consumer's responsibility
|
|
# - faiss-cpu / numpy — vector storage is downstream
|
|
# - rx — reactive routing stays in cleveragents-core
|
|
# - a2a-sdk — the wire protocol stays in cleveragents-core
|
|
dependencies = [
|
|
"pydantic>=2.7.0",
|
|
"structlog>=24.4.0",
|
|
"langchain-core>=0.3.0",
|
|
"langgraph>=0.2.0",
|
|
"jinja2>=3.1.0",
|
|
"pyyaml>=6.0.3",
|
|
"jsonschema>=4.20.0",
|
|
"python-ulid>=2.7.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"ruff>=0.15.0,<0.16.0",
|
|
"pyright>=1.1.350",
|
|
"types-pyyaml>=6.0.0",
|
|
"pre-commit>=3.6.0",
|
|
"bandit[toml]>=1.7.5",
|
|
"semgrep>=1.60.0",
|
|
"vulture>=2.10",
|
|
"radon>=6.0.1",
|
|
]
|
|
tests = [
|
|
"behave==1.3.3",
|
|
"slipcover>=1.0.17",
|
|
"asv>=0.6.5",
|
|
"robotframework>=7.3.2",
|
|
"robotframework-pabot>=4.0.0",
|
|
"faker>=20.0.0",
|
|
]
|
|
docs = [
|
|
"mkdocs>=1.6.1",
|
|
"mkdocs-material>=9.6.0",
|
|
"mkdocstrings[python]>=0.24.0",
|
|
"mkdocs-gen-files>=0.5.0",
|
|
"mkdocs-literate-nav>=0.6.0",
|
|
"griffe-pydantic>=1.0.0",
|
|
"ruff>=0.4.0",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://cleverthis.com/cleveragents"
|
|
Documentation = "https://docs.cleverthis.com/cleveractors"
|
|
Repository = "https://git.cleverthis.com/cleveragents/cleveractors-core"
|
|
Issues = "https://git.cleverthis.com/cleveragents/cleveractors-core/issues"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/cleveractors"]
|
|
include = [
|
|
"src/cleveractors/py.typed",
|
|
]
|
|
|
|
[tool.ruff]
|
|
line-length = 88
|
|
target-version = "py313"
|
|
src = ["src", "features"]
|
|
extend-exclude = ["**/*.feature"]
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "W", "B", "UP", "I", "SIM", "RUF"]
|
|
ignore = []
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"__init__.py" = ["F401"]
|
|
"features/steps/*.py" = ["F811", "E501", "B010", "I001"]
|
|
"features/environment.py" = ["E501"]
|
|
|
|
[tool.ruff.format]
|
|
quote-style = "double"
|
|
indent-style = "space"
|
|
line-ending = "auto"
|
|
|
|
[tool.pyright]
|
|
include = ["src"]
|
|
exclude = ["**/.nox", "**/__pycache__", "**/site-packages"]
|
|
pythonVersion = "3.13"
|
|
typeCheckingMode = "strict"
|
|
strictListInference = true
|
|
strictDictionaryInference = true
|
|
strictSetInference = true
|
|
reportMissingImports = true
|
|
reportMissingTypeStubs = false
|
|
reportMissingTypeArgument = true
|
|
reportIncompatibleMethodOverride = true
|
|
reportIncompatibleVariableOverride = true
|
|
reportUnusedImport = true
|
|
reportUnusedClass = true
|
|
reportUnusedFunction = true
|
|
reportUnusedVariable = true
|
|
reportDuplicateImport = true
|
|
reportOptionalMemberAccess = true
|
|
reportOptionalCall = true
|
|
reportOptionalIterable = true
|
|
reportOptionalContextManager = true
|
|
reportOptionalOperand = true
|
|
reportTypedDictNotRequiredAccess = true
|
|
reportUnnecessaryIsInstance = true
|
|
reportUnnecessaryCast = true
|
|
reportUnnecessaryComparison = true
|
|
reportImplicitStringConcatenation = false
|
|
reportUnusedCallResult = false
|
|
reportUnknownMemberType = false
|
|
reportUnknownVariableType = false
|
|
reportUnknownParameterType = false
|
|
|
|
[tool.coverage.run]
|
|
source = ["src"]
|
|
branch = true
|
|
data_file = "build/.coverage"
|
|
|
|
[tool.coverage.html]
|
|
directory = "build/htmlcov"
|
|
|
|
[tool.bandit]
|
|
targets = ["src/cleveractors"]
|
|
severity = "MEDIUM"
|
|
confidence = "MEDIUM"
|
|
|
|
[tool.vulture]
|
|
paths = ["src/cleveractors"]
|
|
min_confidence = 80
|
|
exclude = ["build/", ".nox/", ".venv/"]
|