Add Handbook.md benchmark tasks
This commit is contained in:
@@ -0,0 +1,187 @@
|
||||
[project]
|
||||
name = "worldbench-syntara"
|
||||
version = "0.0.1"
|
||||
description = "Worldbench Syntara monorepo"
|
||||
requires-python = ">=3.13"
|
||||
classifiers = [
|
||||
"Programming Language :: Python :: 3 :: Only",
|
||||
"Programming Language :: Python :: 3.13",
|
||||
]
|
||||
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
"bandit[toml]>=1.8.6",
|
||||
"pre-commit>=4.4.0",
|
||||
"pyproject-fmt>=2.11.0",
|
||||
"pytest>=9.0.2",
|
||||
"pytest-cov>=7.0.0",
|
||||
"pytest-github-actions-annotate-failures>=0.3.0",
|
||||
"pytest-timeout>=2.3.1",
|
||||
"pytest-xdist>=3.8.0",
|
||||
"ruff>=0.14.5",
|
||||
"ty>=0.0.17",
|
||||
]
|
||||
|
||||
[tool.uv]
|
||||
sources.core = { workspace = true }
|
||||
sources.read_file_safe = { workspace = true }
|
||||
# TODO[rz] re-enable once deployment has updated uv
|
||||
# required-version = ">=0.11"
|
||||
# Require packages to have been published before this date.
|
||||
# Matches a 14-day supply-chain protection policy.
|
||||
# Update periodically: set to ~14 days before the current date.
|
||||
exclude-newer = "2026-04-22T00:00:00Z"
|
||||
workspace.members = [
|
||||
"packages/core",
|
||||
"packages/google_calendar",
|
||||
"packages/google_mail",
|
||||
"packages/jira",
|
||||
"packages/mcp_proxy",
|
||||
"packages/read_file_safe",
|
||||
"packages/shopify",
|
||||
"packages/slack",
|
||||
"packages/syntara",
|
||||
]
|
||||
|
||||
[tool.ruff]
|
||||
target-version = "py313"
|
||||
line-length = 120
|
||||
extend-exclude = [
|
||||
"vulture_whitelist.py",
|
||||
]
|
||||
force-exclude = true
|
||||
format.indent-style = "space"
|
||||
format.quote-style = "double"
|
||||
lint.select = [
|
||||
# Async
|
||||
"ASYNC", # flake8-async
|
||||
|
||||
# Code quality
|
||||
"B", # flake8-bugbear
|
||||
"C4", # flake8-comprehensions
|
||||
"E", # pycodestyle errors
|
||||
# Core Python
|
||||
"F", # Pyflakes
|
||||
"FA", # flake8-future-annotations
|
||||
|
||||
"FLY", # flynt
|
||||
"FURB", # refurb
|
||||
# Logging
|
||||
"G", # flake8-logging-format
|
||||
"I", # isort
|
||||
"ICN001", # flake8-import-conventions
|
||||
|
||||
"INT", # flake8-gettext
|
||||
"ISC", # flake8-implicit-str-concat
|
||||
"LOG", # flake8-logging
|
||||
|
||||
"PERF", # Perflint
|
||||
"PGH", # pygrep-hooks
|
||||
"PIE", # flake8-pie
|
||||
"PLC", # pylint conventions
|
||||
"PLE", # pylint errors
|
||||
"PLW", # pylint warnings
|
||||
# Testing
|
||||
"PT", # flake8-pytest-style
|
||||
|
||||
# Type checking
|
||||
"PYI", # flake8-pyi
|
||||
# Style and formatting
|
||||
"Q", # flake8-quotes
|
||||
# Error handling
|
||||
"RSE", # flake8-raise
|
||||
|
||||
"RUF", # Ruff-specific rules
|
||||
|
||||
# Security
|
||||
"S", # flake8-bandit
|
||||
|
||||
"SIM", # flake8-simplify
|
||||
"SLOT", # flake8-slots
|
||||
"T10", # flake8-debugger
|
||||
"TID", # flake8-tidy-imports
|
||||
"UP", # pyupgrade
|
||||
|
||||
"W", # pycodestyle warnings
|
||||
# Miscellaneous
|
||||
"YTT", # flake8-2020
|
||||
]
|
||||
lint.ignore = [
|
||||
"ASYNC230", # Blocking I/O in async context - accepted in this codebase
|
||||
"ASYNC240", # Blocking HTTP in async context - accepted in this codebase
|
||||
"B008", # FastAPI uses function calls in defaults for dependency injection
|
||||
"B023", # Function definition in loop - acceptable in this codebase
|
||||
"B904", # raise without from - intentional
|
||||
"E501", # Line too long - formatter handles wrapping; strings/comments can't be auto-wrapped
|
||||
"G004", # Logging statement uses f-string
|
||||
"PERF401", # Use list comprehension - minor style preference
|
||||
"PGH003", # ty doesn't support error codes in type: ignore comments
|
||||
"PLC0415", # Imports not at top-level - intentional conditional/lazy import pattern
|
||||
"PLW0602", # Global variable used before assignment - intentional state pattern
|
||||
"PLW0603", # Global statement - intentional mutable state pattern
|
||||
"PLW1510", # subprocess without check= - intentional
|
||||
"PLW2901", # Loop variable overwritten - intentional
|
||||
"PT011", # pytest.raises too broad - acceptable for ValueError in this codebase
|
||||
"RUF001", # Ambiguous unicode characters in strings - intentional in content
|
||||
"S101", # Assert statements - accepted outside tests in this codebase
|
||||
"S104", # Binding to all interfaces - intentional in server code
|
||||
"S106", # Hardcoded password - mock/test data
|
||||
"S108", # Insecure temp file usage - test infrastructure
|
||||
"S113", # Requests without timeout - accepted in test clients
|
||||
"S603", # subprocess call - intentional
|
||||
"SIM117", # Nested with statements - minor style preference
|
||||
]
|
||||
lint.per-file-ignores."packages/*/test_client.py" = [
|
||||
"S101", # Allow assert statements in test clients
|
||||
]
|
||||
lint.per-file-ignores."packages/*/tests/**/*.py" = [
|
||||
"PT004", # Allow fixtures without return values (setup fixtures)
|
||||
"PT018", # Allow composite assertions (assert a and b) in tests
|
||||
"S101", # Allow assert statements in tests
|
||||
"S105", # Allow hardcoded test credentials
|
||||
"S607", # Allow partial executable paths in test subprocess calls
|
||||
]
|
||||
lint.per-file-ignores."scripts/**/*.py" = [
|
||||
"S607", # Allow partial executable paths in dev/build scripts
|
||||
]
|
||||
# Pin workspace packages as first-party so isort grouping is identical whether
|
||||
# or not the package is installed in the current env (e.g. pre-commit's
|
||||
# isolated ruff env vs. `uv run` with workspace packages installed).
|
||||
lint.isort.known-first-party = [
|
||||
"core",
|
||||
"google_calendar",
|
||||
"google_mail",
|
||||
"jira",
|
||||
"mcp_proxy",
|
||||
"read_file_safe",
|
||||
"shopify",
|
||||
"slack",
|
||||
# Temporary syntara→core compatibility shim; REMOVE after 2026-06-18.
|
||||
"syntara",
|
||||
]
|
||||
|
||||
[tool.pyproject-fmt]
|
||||
keep_full_version = true
|
||||
max_supported_python = "3.13"
|
||||
|
||||
[tool.bandit]
|
||||
exclude_dirs = [ "tests" ]
|
||||
skips = [ "B101", "B601" ]
|
||||
|
||||
[tool.pytest]
|
||||
ini_options.pythonpath = [ ".", "src" ]
|
||||
ini_options.python_files = [ "test_*.py", "*_test.py" ]
|
||||
ini_options.python_classes = [ "Test*" ]
|
||||
ini_options.python_functions = [ "test_*" ]
|
||||
ini_options.addopts = [
|
||||
"-v",
|
||||
"--strict-markers",
|
||||
# loadgroup behaves like the default `load` scheduler, except tests marked
|
||||
# with the same `xdist_group` run on one worker — see tests/test_bundle.py.
|
||||
"--dist=loadgroup",
|
||||
"--import-mode=importlib",
|
||||
]
|
||||
ini_options.markers = [
|
||||
"e2e: marks tests as end-to-end tests (deselect with '-m \"not e2e\"')",
|
||||
]
|
||||
ini_options.timeout = 30
|
||||
Reference in New Issue
Block a user