* fix: improve async batch retain with large payloads * fix: improve async batch retain with large payloads * api * api * api * api * api * Clean up perf benchmark: keep only Python files - Remove README.md and PERFORMANCE_FINDINGS.md - Remove results/ JSON files (gitignored) - Remove test_data/ directory - Keep only __init__.py and retain_perf.py * docs: explain automatic batch optimization for async retain - Add section explaining Hindsight automatically handles batch sizing - Users don't need to manually tune batch sizes with async mode - Hindsight splits large batches (>10k tokens) into optimized sub-batches - Include example showing best practices * docs: remove emojis and code example from performance page * fix: correct OperationDetails type to match API response - Change optional fields to use | null instead of ? - Fixes TypeScript compilation error in control plane build * fix: use discriminated union for OperationDetails type - Support both success and error states properly - Fixes TypeScript error when setting error state * fix: use unique document_ids in batch retain examples - Each item in a batch must have unique document_id - Update both Python and JavaScript examples - Fixes test-doc-examples CI failure * chore: trigger CI * fix: test mocking and duplicate document_ids in examples - Mock _get_pool() in test_async_retain_tags.py to avoid _initialized error - Set _initialized = True on mocked MemoryEngine instances - Fix duplicate document_ids in retain.py and retain.mjs examples * fix: properly mock async pool/connection and fix more duplicate document_ids - Use AsyncMock for pool.acquire() to fix 'can't be used in await' error - Fix duplicate document_ids in retain-async examples (retain.py and retain.mjs) - Remove batch-level document_id parameter that caused duplicates * ci: collect all doc example failures and show summary - Run all Python/Node.js/CLI examples regardless of individual failures - Collect failure list and display summary at the end - Show pass/fail count and list of failed files - Exit with failure only after running all examples * refactor: extract doc example testing to standalone script - Create scripts/test-doc-examples.sh to run all examples - Collects logs of failed examples separately - Shows full error logs only for failures at the end - Clean summary with pass/fail counts - Proper exit codes - Replaces inline bash in CI workflow * fix: doc examples - duplicate document_ids and error handling - retain.py: move document_id to item level to avoid duplicates - documents.mjs: add error handling for getDocument to show clear error message * fix: update tests for duplicate document_id validation - test_async_retain_tags: verify operation structure instead of exact UUID - test_delete_bank: use unique document_ids (team-doc-1, team-doc-2)
93 lines
2.8 KiB
TOML
93 lines
2.8 KiB
TOML
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "hindsight-dev"
|
|
version = "0.4.11"
|
|
description = "Development utilities for Hindsight"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"hindsight-api",
|
|
"python-fasthtml>=0.12.33",
|
|
"streamlit>=1.51.0",
|
|
"openai>=1.0.0",
|
|
"rich>=13.0.0",
|
|
"pydantic>=2.0.0",
|
|
"httpx>=0.27.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
test = [
|
|
"pytest>=8.0.0",
|
|
"httpx>=0.27.0",
|
|
"python-dotenv>=1.0.0",
|
|
]
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["hindsight_dev", "benchmarks", "upgrade_tests"]
|
|
|
|
[tool.uv.sources]
|
|
hindsight-api = { workspace = true }
|
|
|
|
[project.scripts]
|
|
generate-openapi = "hindsight_dev.generate_openapi:generate_openapi_spec"
|
|
generate-changelog = "hindsight_dev.generate_changelog:main"
|
|
sync-cookbook = "hindsight_dev.sync_cookbook:main"
|
|
generate-llms-full = "hindsight_dev.generate_llms_full:main"
|
|
check-openapi-compatibility = "hindsight_dev.check_openapi_compatibility:main"
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"ruff>=0.8.0",
|
|
"ty>=0.0.1",
|
|
]
|
|
|
|
[tool.ruff]
|
|
line-length = 120
|
|
target-version = "py311"
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"E", # pycodestyle errors
|
|
"W", # pycodestyle warnings
|
|
"F", # Pyflakes
|
|
"I", # isort
|
|
]
|
|
ignore = [
|
|
"E501", # line too long (handled by formatter)
|
|
"E402", # module import not at top of file
|
|
"E712", # avoid equality comparisons to False (intentional for optional bools)
|
|
"F401", # unused import (too noisy during development)
|
|
"F403", # star imports (fasthtml uses this pattern)
|
|
"F405", # may be undefined from star imports (fasthtml uses this pattern)
|
|
"F841", # unused variable (too noisy during development)
|
|
"F811", # redefined while unused
|
|
"F821", # undefined name (forward references in type hints)
|
|
"W291", # trailing whitespace (in multiline strings)
|
|
"W293", # blank line contains whitespace (in multiline strings)
|
|
]
|
|
|
|
[tool.ruff.format]
|
|
quote-style = "double"
|
|
indent-style = "space"
|
|
|
|
[tool.ty]
|
|
# Type checking configuration
|
|
# ty is an extremely fast Python type checker from Astral (same team as ruff/uv)
|
|
|
|
[tool.ty.environment]
|
|
python-version = "3.11"
|
|
|
|
[tool.ty.rules]
|
|
# Disable noisy rules
|
|
invalid-argument-type = "ignore" # Too many false positives
|
|
invalid-return-type = "ignore" # Often intentional
|
|
# missing-argument and unknown-argument are enabled (default)
|
|
invalid-parameter-default = "ignore" # Optional params with None default
|
|
possibly-missing-attribute = "ignore" # Common with Optional types
|
|
unsupported-operator = "ignore" # Pandas DataFrame operations
|
|
unresolved-reference = "ignore" # Forward references
|
|
unresolved-import = "ignore" # Dynamic imports
|
|
invalid-assignment = "ignore" # Intentional monkey-patching
|
|
no-matching-overload = "ignore" # Complex generic issues
|