Files
cleveractors-core/pyproject.toml
freemo bd93ae8894 chore: bootstrap cleveractors-core project skeleton
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.
2026-05-17 00:13:54 +00:00

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/"]