lionherd-core 1.0.0a4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- lionherd_core-1.0.0a4/.coveragerc +34 -0
- lionherd_core-1.0.0a4/.github/workflows/ci.yml +190 -0
- lionherd_core-1.0.0a4/.github/workflows/codeql.yml +39 -0
- lionherd_core-1.0.0a4/.github/workflows/pre-commit.yml +39 -0
- lionherd_core-1.0.0a4/.github/workflows/release.yml +65 -0
- lionherd_core-1.0.0a4/.gitignore +28 -0
- lionherd_core-1.0.0a4/.markdownlint-cli2.yaml +7 -0
- lionherd_core-1.0.0a4/.markdownlint.json +6 -0
- lionherd_core-1.0.0a4/.pre-commit-config.yaml +117 -0
- lionherd_core-1.0.0a4/.python-version +1 -0
- lionherd_core-1.0.0a4/CHANGELOG.md +145 -0
- lionherd_core-1.0.0a4/CONTRIBUTING.md +294 -0
- lionherd_core-1.0.0a4/LICENSE +201 -0
- lionherd_core-1.0.0a4/PKG-INFO +505 -0
- lionherd_core-1.0.0a4/README.md +472 -0
- lionherd_core-1.0.0a4/docs/DOC_STANDARD.md +643 -0
- lionherd_core-1.0.0a4/docs/api/base/broadcaster.md +637 -0
- lionherd_core-1.0.0a4/docs/api/base/element.md +1003 -0
- lionherd_core-1.0.0a4/docs/api/base/event.md +891 -0
- lionherd_core-1.0.0a4/docs/api/base/eventbus.md +743 -0
- lionherd_core-1.0.0a4/docs/api/base/flow.md +755 -0
- lionherd_core-1.0.0a4/docs/api/base/graph.md +1389 -0
- lionherd_core-1.0.0a4/docs/api/base/node.md +1099 -0
- lionherd_core-1.0.0a4/docs/api/base/pile.md +1064 -0
- lionherd_core-1.0.0a4/docs/api/base/progression.md +1109 -0
- lionherd_core-1.0.0a4/docs/api/libs/concurrency/cancel.md +787 -0
- lionherd_core-1.0.0a4/docs/api/libs/concurrency/errors.md +632 -0
- lionherd_core-1.0.0a4/docs/api/libs/concurrency/patterns.md +850 -0
- lionherd_core-1.0.0a4/docs/api/libs/concurrency/primitives.md +1309 -0
- lionherd_core-1.0.0a4/docs/api/libs/concurrency/priority_queue.md +1159 -0
- lionherd_core-1.0.0a4/docs/api/libs/concurrency/resource_tracker.md +708 -0
- lionherd_core-1.0.0a4/docs/api/libs/concurrency/task.md +692 -0
- lionherd_core-1.0.0a4/docs/api/libs/concurrency/utils.md +910 -0
- lionherd_core-1.0.0a4/docs/api/libs/schema_handlers/function_call_parser.md +739 -0
- lionherd_core-1.0.0a4/docs/api/libs/schema_handlers/minimal_yaml.md +824 -0
- lionherd_core-1.0.0a4/docs/api/libs/schema_handlers/schema_to_model.md +822 -0
- lionherd_core-1.0.0a4/docs/api/libs/schema_handlers/typescript.md +687 -0
- lionherd_core-1.0.0a4/docs/api/libs/string_handlers/extract_json.md +648 -0
- lionherd_core-1.0.0a4/docs/api/libs/string_handlers/fuzzy_json.md +650 -0
- lionherd_core-1.0.0a4/docs/api/libs/string_handlers/string_similarity.md +1027 -0
- lionherd_core-1.0.0a4/docs/api/libs/string_handlers/to_num.md +503 -0
- lionherd_core-1.0.0a4/docs/api/ln/async_call.md +1094 -0
- lionherd_core-1.0.0a4/docs/api/ln/fuzzy_match.md +819 -0
- lionherd_core-1.0.0a4/docs/api/ln/fuzzy_validate.md +848 -0
- lionherd_core-1.0.0a4/docs/api/ln/hash.md +587 -0
- lionherd_core-1.0.0a4/docs/api/ln/json_dump.md +1194 -0
- lionherd_core-1.0.0a4/docs/api/ln/list_call.md +649 -0
- lionherd_core-1.0.0a4/docs/api/ln/overview.md +1863 -0
- lionherd_core-1.0.0a4/docs/api/ln/to_dict.md +834 -0
- lionherd_core-1.0.0a4/docs/api/ln/to_list.md +627 -0
- lionherd_core-1.0.0a4/docs/api/ln/utils.md +1007 -0
- lionherd_core-1.0.0a4/docs/api/lndl/errors.md +937 -0
- lionherd_core-1.0.0a4/docs/api/lndl/fuzzy.md +860 -0
- lionherd_core-1.0.0a4/docs/api/lndl/parser.md +1285 -0
- lionherd_core-1.0.0a4/docs/api/lndl/prompt.md +648 -0
- lionherd_core-1.0.0a4/docs/api/lndl/resolver.md +938 -0
- lionherd_core-1.0.0a4/docs/api/lndl/types.md +1169 -0
- lionherd_core-1.0.0a4/docs/api/types/base.md +1087 -0
- lionherd_core-1.0.0a4/docs/api/types/model.md +947 -0
- lionherd_core-1.0.0a4/docs/api/types/operable.md +1096 -0
- lionherd_core-1.0.0a4/docs/api/types/sentinel.md +1054 -0
- lionherd_core-1.0.0a4/docs/api/types/spec.md +1421 -0
- lionherd_core-1.0.0a4/notebooks/references/broadcaster_eventbus.ipynb +518 -0
- lionherd_core-1.0.0a4/notebooks/references/concurrency_cancel.ipynb +753 -0
- lionherd_core-1.0.0a4/notebooks/references/concurrency_errors.ipynb +604 -0
- lionherd_core-1.0.0a4/notebooks/references/concurrency_patterns.ipynb +1016 -0
- lionherd_core-1.0.0a4/notebooks/references/concurrency_primitives.ipynb +849 -0
- lionherd_core-1.0.0a4/notebooks/references/concurrency_priority_queue.ipynb +665 -0
- lionherd_core-1.0.0a4/notebooks/references/concurrency_resource_tracker.ipynb +636 -0
- lionherd_core-1.0.0a4/notebooks/references/concurrency_task.ipynb +903 -0
- lionherd_core-1.0.0a4/notebooks/references/concurrency_utils.ipynb +578 -0
- lionherd_core-1.0.0a4/notebooks/references/element.ipynb +485 -0
- lionherd_core-1.0.0a4/notebooks/references/event.ipynb +468 -0
- lionherd_core-1.0.0a4/notebooks/references/flow.ipynb +449 -0
- lionherd_core-1.0.0a4/notebooks/references/graph.ipynb +452 -0
- lionherd_core-1.0.0a4/notebooks/references/ln_async_call.ipynb +728 -0
- lionherd_core-1.0.0a4/notebooks/references/ln_fuzzy_match.ipynb +746 -0
- lionherd_core-1.0.0a4/notebooks/references/ln_fuzzy_validate.ipynb +1070 -0
- lionherd_core-1.0.0a4/notebooks/references/ln_hash.ipynb +1056 -0
- lionherd_core-1.0.0a4/notebooks/references/ln_json_dump.ipynb +921 -0
- lionherd_core-1.0.0a4/notebooks/references/ln_list_call.ipynb +830 -0
- lionherd_core-1.0.0a4/notebooks/references/ln_overview.ipynb +1199 -0
- lionherd_core-1.0.0a4/notebooks/references/ln_to_dict.ipynb +1080 -0
- lionherd_core-1.0.0a4/notebooks/references/ln_to_list.ipynb +967 -0
- lionherd_core-1.0.0a4/notebooks/references/ln_utils.ipynb +998 -0
- lionherd_core-1.0.0a4/notebooks/references/lndl_errors.ipynb +927 -0
- lionherd_core-1.0.0a4/notebooks/references/lndl_fuzzy.ipynb +729 -0
- lionherd_core-1.0.0a4/notebooks/references/lndl_parser.ipynb +1043 -0
- lionherd_core-1.0.0a4/notebooks/references/lndl_prompt.ipynb +1060 -0
- lionherd_core-1.0.0a4/notebooks/references/lndl_resolver.ipynb +1006 -0
- lionherd_core-1.0.0a4/notebooks/references/lndl_types.ipynb +1146 -0
- lionherd_core-1.0.0a4/notebooks/references/node.ipynb +721 -0
- lionherd_core-1.0.0a4/notebooks/references/pile.ipynb +789 -0
- lionherd_core-1.0.0a4/notebooks/references/progression.ipynb +441 -0
- lionherd_core-1.0.0a4/notebooks/references/schema_function_call_parser.ipynb +969 -0
- lionherd_core-1.0.0a4/notebooks/references/schema_minimal_yaml.ipynb +772 -0
- lionherd_core-1.0.0a4/notebooks/references/schema_to_model.ipynb +905 -0
- lionherd_core-1.0.0a4/notebooks/references/schema_typescript.ipynb +441 -0
- lionherd_core-1.0.0a4/notebooks/references/string_extract_json.ipynb +779 -0
- lionherd_core-1.0.0a4/notebooks/references/string_fuzzy_json.ipynb +1305 -0
- lionherd_core-1.0.0a4/notebooks/references/string_similarity.ipynb +734 -0
- lionherd_core-1.0.0a4/notebooks/references/string_to_num.ipynb +697 -0
- lionherd_core-1.0.0a4/notebooks/references/types_base.ipynb +1250 -0
- lionherd_core-1.0.0a4/notebooks/references/types_model.ipynb +728 -0
- lionherd_core-1.0.0a4/notebooks/references/types_operable.ipynb +1475 -0
- lionherd_core-1.0.0a4/notebooks/references/types_sentinel.ipynb +882 -0
- lionherd_core-1.0.0a4/notebooks/references/types_spec.ipynb +872 -0
- lionherd_core-1.0.0a4/notebooks/references/types_spec_advanced.ipynb +1129 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/README.md +131 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/concurrency/README.md +238 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/concurrency/deadline_patterns.ipynb +651 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/concurrency/error_handling_timeouts.ipynb +565 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/concurrency/resource_leak_detection.ipynb +714 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/concurrency/service_lifecycle.ipynb +949 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/concurrency/task_coordination.ipynb +1237 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/concurrency/transaction_shielding.ipynb +620 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/ln_utilities/README.md +299 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/ln_utilities/advanced_to_dict.ipynb +417 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/ln_utilities/api_field_flattening.ipynb +873 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/ln_utilities/async_path_creation.ipynb +430 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/ln_utilities/content_deduplication.ipynb +1021 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/ln_utilities/custom_json_serialization.ipynb +429 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/ln_utilities/data_migration.ipynb +1007 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/ln_utilities/fuzzy_json_parsing.ipynb +1092 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/ln_utilities/fuzzy_validation.ipynb +498 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/ln_utilities/llm_complex_models.ipynb +580 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/ln_utilities/multistage_pipeline.ipynb +637 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/ln_utilities/nested_cleaning.ipynb +835 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/schema_handlers/README.md +423 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/schema_handlers/dynamic_schema_selection.ipynb +999 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/schema_handlers/mcp_tool_pipeline.ipynb +1178 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/string_handlers/README.md +335 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/string_handlers/cli_fuzzy_matching.ipynb +726 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/string_handlers/consensus_matching.ipynb +836 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/string_handlers/fuzzy_deduplication.ipynb +1258 -0
- lionherd_core-1.0.0a4/notebooks/tutorials/string_handlers/phonetic_matching.ipynb +837 -0
- lionherd_core-1.0.0a4/pyproject.toml +84 -0
- lionherd_core-1.0.0a4/ruff.toml +105 -0
- lionherd_core-1.0.0a4/src/lionherd_core/__init__.py +86 -0
- lionherd_core-1.0.0a4/src/lionherd_core/base/__init__.py +30 -0
- lionherd_core-1.0.0a4/src/lionherd_core/base/_utils.py +295 -0
- lionherd_core-1.0.0a4/src/lionherd_core/base/broadcaster.py +128 -0
- lionherd_core-1.0.0a4/src/lionherd_core/base/element.py +308 -0
- lionherd_core-1.0.0a4/src/lionherd_core/base/event.py +367 -0
- lionherd_core-1.0.0a4/src/lionherd_core/base/eventbus.py +112 -0
- lionherd_core-1.0.0a4/src/lionherd_core/base/flow.py +285 -0
- lionherd_core-1.0.0a4/src/lionherd_core/base/graph.py +613 -0
- lionherd_core-1.0.0a4/src/lionherd_core/base/node.py +332 -0
- lionherd_core-1.0.0a4/src/lionherd_core/base/pile.py +833 -0
- lionherd_core-1.0.0a4/src/lionherd_core/base/progression.py +261 -0
- lionherd_core-1.0.0a4/src/lionherd_core/errors.py +120 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/__init__.py +2 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/concurrency/__init__.py +62 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/concurrency/_cancel.py +85 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/concurrency/_errors.py +80 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/concurrency/_patterns.py +238 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/concurrency/_primitives.py +253 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/concurrency/_priority_queue.py +135 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/concurrency/_resource_tracker.py +80 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/concurrency/_run_async.py +52 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/concurrency/_task.py +58 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/concurrency/_utils.py +62 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/schema_handlers/__init__.py +35 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/schema_handlers/_function_call_parser.py +122 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/schema_handlers/_minimal_yaml.py +88 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/schema_handlers/_schema_to_model.py +251 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/schema_handlers/_typescript.py +153 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/string_handlers/__init__.py +28 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/string_handlers/_extract_json.py +65 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/string_handlers/_fuzzy_json.py +152 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/string_handlers/_string_similarity.py +347 -0
- lionherd_core-1.0.0a4/src/lionherd_core/libs/string_handlers/_to_num.py +63 -0
- lionherd_core-1.0.0a4/src/lionherd_core/ln/__init__.py +45 -0
- lionherd_core-1.0.0a4/src/lionherd_core/ln/_async_call.py +314 -0
- lionherd_core-1.0.0a4/src/lionherd_core/ln/_fuzzy_match.py +166 -0
- lionherd_core-1.0.0a4/src/lionherd_core/ln/_fuzzy_validate.py +151 -0
- lionherd_core-1.0.0a4/src/lionherd_core/ln/_hash.py +141 -0
- lionherd_core-1.0.0a4/src/lionherd_core/ln/_json_dump.py +347 -0
- lionherd_core-1.0.0a4/src/lionherd_core/ln/_list_call.py +110 -0
- lionherd_core-1.0.0a4/src/lionherd_core/ln/_to_dict.py +373 -0
- lionherd_core-1.0.0a4/src/lionherd_core/ln/_to_list.py +190 -0
- lionherd_core-1.0.0a4/src/lionherd_core/ln/_utils.py +156 -0
- lionherd_core-1.0.0a4/src/lionherd_core/lndl/__init__.py +62 -0
- lionherd_core-1.0.0a4/src/lionherd_core/lndl/errors.py +30 -0
- lionherd_core-1.0.0a4/src/lionherd_core/lndl/fuzzy.py +321 -0
- lionherd_core-1.0.0a4/src/lionherd_core/lndl/parser.py +427 -0
- lionherd_core-1.0.0a4/src/lionherd_core/lndl/prompt.py +137 -0
- lionherd_core-1.0.0a4/src/lionherd_core/lndl/resolver.py +323 -0
- lionherd_core-1.0.0a4/src/lionherd_core/lndl/types.py +287 -0
- lionherd_core-1.0.0a4/src/lionherd_core/protocols.py +181 -0
- lionherd_core-1.0.0a4/src/lionherd_core/py.typed +0 -0
- lionherd_core-1.0.0a4/src/lionherd_core/types/__init__.py +49 -0
- lionherd_core-1.0.0a4/src/lionherd_core/types/_sentinel.py +151 -0
- lionherd_core-1.0.0a4/src/lionherd_core/types/base.py +341 -0
- lionherd_core-1.0.0a4/src/lionherd_core/types/model.py +159 -0
- lionherd_core-1.0.0a4/src/lionherd_core/types/operable.py +133 -0
- lionherd_core-1.0.0a4/src/lionherd_core/types/spec.py +320 -0
- lionherd_core-1.0.0a4/src/lionherd_core/types/spec_adapters/__init__.py +10 -0
- lionherd_core-1.0.0a4/src/lionherd_core/types/spec_adapters/_protocol.py +125 -0
- lionherd_core-1.0.0a4/src/lionherd_core/types/spec_adapters/pydantic_field.py +177 -0
- lionherd_core-1.0.0a4/tests/base/test_adapter_defaults.py +410 -0
- lionherd_core-1.0.0a4/tests/base/test_base_utils.py +1085 -0
- lionherd_core-1.0.0a4/tests/base/test_broadcaster.py +449 -0
- lionherd_core-1.0.0a4/tests/base/test_element.py +1342 -0
- lionherd_core-1.0.0a4/tests/base/test_event.py +1907 -0
- lionherd_core-1.0.0a4/tests/base/test_event_status_race.py +389 -0
- lionherd_core-1.0.0a4/tests/base/test_eventbus.py +803 -0
- lionherd_core-1.0.0a4/tests/base/test_flow.py +1319 -0
- lionherd_core-1.0.0a4/tests/base/test_graph.py +1954 -0
- lionherd_core-1.0.0a4/tests/base/test_graph_event_loop.py +374 -0
- lionherd_core-1.0.0a4/tests/base/test_meta_key.py +380 -0
- lionherd_core-1.0.0a4/tests/base/test_node.py +2298 -0
- lionherd_core-1.0.0a4/tests/base/test_pile.py +2225 -0
- lionherd_core-1.0.0a4/tests/base/test_progression.py +1216 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/__init__.py +4 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_broadcaster_leak.py +236 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_cancel.py +233 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_completion_stream.py +435 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_concurrency_errors.py +31 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_errors.py +98 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_eventbus_leak.py +167 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_graph_race.py +150 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_init_exports.py +39 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_patterns.py +484 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_primitives.py +697 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_priority_queue.py +360 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_property.py +35 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_run_async_in_sync_context.py +201 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_task.py +79 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_taskgroup.py +178 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_utils.py +274 -0
- lionherd_core-1.0.0a4/tests/libs/concurrency/test_wrapper_functions.py +243 -0
- lionherd_core-1.0.0a4/tests/libs/schema_handlers/__init__.py +4 -0
- lionherd_core-1.0.0a4/tests/libs/schema_handlers/test_function_call_parser.py +502 -0
- lionherd_core-1.0.0a4/tests/libs/schema_handlers/test_minimal_yaml.py +555 -0
- lionherd_core-1.0.0a4/tests/libs/schema_handlers/test_schema_to_model.py +474 -0
- lionherd_core-1.0.0a4/tests/libs/schema_handlers/test_typescript.py +524 -0
- lionherd_core-1.0.0a4/tests/libs/string_handlers/test_extract_json.py +183 -0
- lionherd_core-1.0.0a4/tests/libs/string_handlers/test_fuzzy_json.py +430 -0
- lionherd_core-1.0.0a4/tests/libs/string_handlers/test_string_similarity.py +227 -0
- lionherd_core-1.0.0a4/tests/libs/string_handlers/test_to_dict.py +1034 -0
- lionherd_core-1.0.0a4/tests/libs/string_handlers/test_to_num.py +169 -0
- lionherd_core-1.0.0a4/tests/ln/test_alcall.py +851 -0
- lionherd_core-1.0.0a4/tests/ln/test_fuzzy_match.py +245 -0
- lionherd_core-1.0.0a4/tests/ln/test_fuzzy_validate.py +621 -0
- lionherd_core-1.0.0a4/tests/ln/test_hash.py +290 -0
- lionherd_core-1.0.0a4/tests/ln/test_json_dump.py +699 -0
- lionherd_core-1.0.0a4/tests/ln/test_lcall.py +233 -0
- lionherd_core-1.0.0a4/tests/ln/test_ln_to_dict.py +209 -0
- lionherd_core-1.0.0a4/tests/ln/test_to_list.py +471 -0
- lionherd_core-1.0.0a4/tests/ln/test_utils.py +396 -0
- lionherd_core-1.0.0a4/tests/lndl/__init__.py +2 -0
- lionherd_core-1.0.0a4/tests/lndl/test_extract_lacts.py +106 -0
- lionherd_core-1.0.0a4/tests/lndl/test_lndl_actions.py +650 -0
- lionherd_core-1.0.0a4/tests/lndl/test_lndl_fuzzy.py +1090 -0
- lionherd_core-1.0.0a4/tests/lndl/test_lndl_prefixed.py +1024 -0
- lionherd_core-1.0.0a4/tests/lndl/test_parser.py +189 -0
- lionherd_core-1.0.0a4/tests/lndl/test_prompt.py +13 -0
- lionherd_core-1.0.0a4/tests/lndl/test_revalidation.py +187 -0
- lionherd_core-1.0.0a4/tests/lndl/test_types.py +65 -0
- lionherd_core-1.0.0a4/tests/lndl/test_validation_guard.py +308 -0
- lionherd_core-1.0.0a4/tests/test_errors.py +441 -0
- lionherd_core-1.0.0a4/tests/types/spec_adapters/__init__.py +4 -0
- lionherd_core-1.0.0a4/tests/types/spec_adapters/test_adapters_py311.py +801 -0
- lionherd_core-1.0.0a4/tests/types/spec_adapters/test_protocol.py +304 -0
- lionherd_core-1.0.0a4/tests/types/test_hashable_model.py +369 -0
- lionherd_core-1.0.0a4/tests/types/test_operable.py +1428 -0
- lionherd_core-1.0.0a4/tests/types/test_spec.py +1478 -0
- lionherd_core-1.0.0a4/tests/types/test_types.py +1460 -0
- lionherd_core-1.0.0a4/tests/types/test_types_py311.py +349 -0
- lionherd_core-1.0.0a4/uv.lock +2067 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
[run]
|
|
2
|
+
source = src/lionherd_core
|
|
3
|
+
omit =
|
|
4
|
+
*/tests/*
|
|
5
|
+
*/test_*
|
|
6
|
+
*/__pycache__/*
|
|
7
|
+
*/site-packages/*
|
|
8
|
+
.venv/*
|
|
9
|
+
|
|
10
|
+
[report]
|
|
11
|
+
precision = 2
|
|
12
|
+
show_missing = True
|
|
13
|
+
skip_covered = False
|
|
14
|
+
sort = Cover
|
|
15
|
+
|
|
16
|
+
exclude_lines =
|
|
17
|
+
pragma: no cover
|
|
18
|
+
def __repr__
|
|
19
|
+
if self.debug:
|
|
20
|
+
if settings.DEBUG
|
|
21
|
+
raise AssertionError
|
|
22
|
+
raise NotImplementedError
|
|
23
|
+
if 0:
|
|
24
|
+
if False:
|
|
25
|
+
if __name__ == .__main__.:
|
|
26
|
+
if TYPE_CHECKING:
|
|
27
|
+
class .*\bProtocol\):
|
|
28
|
+
@(abc\.)?abstractmethod
|
|
29
|
+
|
|
30
|
+
[html]
|
|
31
|
+
directory = htmlcov
|
|
32
|
+
|
|
33
|
+
[json]
|
|
34
|
+
output = coverage.json
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
concurrency:
|
|
11
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
12
|
+
cancel-in-progress: true
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
# =============================================================================
|
|
16
|
+
# Linting and formatting checks
|
|
17
|
+
# =============================================================================
|
|
18
|
+
lint:
|
|
19
|
+
name: Lint (ruff)
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
|
|
24
|
+
- name: Set up Python
|
|
25
|
+
uses: actions/setup-python@v5
|
|
26
|
+
with:
|
|
27
|
+
python-version: "3.11"
|
|
28
|
+
|
|
29
|
+
- name: Install uv
|
|
30
|
+
uses: astral-sh/setup-uv@v5
|
|
31
|
+
with:
|
|
32
|
+
enable-cache: true
|
|
33
|
+
cache-dependency-glob: "uv.lock"
|
|
34
|
+
|
|
35
|
+
- name: Install dependencies (workspace dev deps + all package extras)
|
|
36
|
+
run: uv sync --all-extras
|
|
37
|
+
|
|
38
|
+
- name: Run ruff check
|
|
39
|
+
run: uv run ruff check .
|
|
40
|
+
|
|
41
|
+
- name: Run ruff format check
|
|
42
|
+
run: uv run ruff format --check .
|
|
43
|
+
|
|
44
|
+
# =============================================================================
|
|
45
|
+
# Type checking
|
|
46
|
+
# =============================================================================
|
|
47
|
+
typecheck:
|
|
48
|
+
name: Type Check (mypy)
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
steps:
|
|
51
|
+
- uses: actions/checkout@v4
|
|
52
|
+
|
|
53
|
+
- name: Set up Python
|
|
54
|
+
uses: actions/setup-python@v5
|
|
55
|
+
with:
|
|
56
|
+
python-version: "3.11"
|
|
57
|
+
|
|
58
|
+
- name: Install uv
|
|
59
|
+
uses: astral-sh/setup-uv@v5
|
|
60
|
+
with:
|
|
61
|
+
enable-cache: true
|
|
62
|
+
cache-dependency-glob: "uv.lock"
|
|
63
|
+
|
|
64
|
+
- name: Install dependencies (workspace dev deps + all package extras)
|
|
65
|
+
run: uv sync --group dev --all-extras
|
|
66
|
+
|
|
67
|
+
- name: Run mypy
|
|
68
|
+
run: uv run mypy src/lionherd_core
|
|
69
|
+
continue-on-error: true # Don't block CI on type errors initially
|
|
70
|
+
|
|
71
|
+
# =============================================================================
|
|
72
|
+
# Test suite (matrix: Python versions)
|
|
73
|
+
# =============================================================================
|
|
74
|
+
test:
|
|
75
|
+
name: Test (Python ${{ matrix.python-version }})
|
|
76
|
+
runs-on: ubuntu-latest
|
|
77
|
+
strategy:
|
|
78
|
+
fail-fast: false
|
|
79
|
+
matrix:
|
|
80
|
+
python-version: ["3.11", "3.12", "3.13", "3.14"]
|
|
81
|
+
|
|
82
|
+
steps:
|
|
83
|
+
- uses: actions/checkout@v4
|
|
84
|
+
|
|
85
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
86
|
+
uses: actions/setup-python@v5
|
|
87
|
+
with:
|
|
88
|
+
python-version: ${{ matrix.python-version }}
|
|
89
|
+
|
|
90
|
+
- name: Install uv
|
|
91
|
+
uses: astral-sh/setup-uv@v5
|
|
92
|
+
with:
|
|
93
|
+
enable-cache: true
|
|
94
|
+
cache-dependency-glob: "uv.lock"
|
|
95
|
+
|
|
96
|
+
- name: Install dependencies (workspace dev deps + all package extras)
|
|
97
|
+
run: uv sync --group dev --all-extras
|
|
98
|
+
|
|
99
|
+
- name: Run tests (parallel execution)
|
|
100
|
+
if: matrix.python-version != '3.11'
|
|
101
|
+
run: |
|
|
102
|
+
uv run pytest tests/ \
|
|
103
|
+
--junitxml=junit.xml \
|
|
104
|
+
--tb=short \
|
|
105
|
+
-n auto
|
|
106
|
+
|
|
107
|
+
- name: Run tests with coverage (Python 3.11 only)
|
|
108
|
+
if: matrix.python-version == '3.11'
|
|
109
|
+
run: |
|
|
110
|
+
uv run pytest tests/ \
|
|
111
|
+
--cov=src/lionherd_core \
|
|
112
|
+
--cov-report=xml \
|
|
113
|
+
--cov-report=term-missing:skip-covered \
|
|
114
|
+
--junitxml=junit.xml \
|
|
115
|
+
--tb=short \
|
|
116
|
+
-n auto
|
|
117
|
+
|
|
118
|
+
- name: Upload coverage to Codecov
|
|
119
|
+
uses: codecov/codecov-action@v4
|
|
120
|
+
if: matrix.python-version == '3.11'
|
|
121
|
+
with:
|
|
122
|
+
file: ./coverage.xml
|
|
123
|
+
flags: unittests
|
|
124
|
+
name: codecov-umbrella
|
|
125
|
+
fail_ci_if_error: false
|
|
126
|
+
env:
|
|
127
|
+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
128
|
+
|
|
129
|
+
- name: Upload test results
|
|
130
|
+
uses: actions/upload-artifact@v4
|
|
131
|
+
if: always()
|
|
132
|
+
with:
|
|
133
|
+
name: test-results-${{ matrix.python-version }}
|
|
134
|
+
path: |
|
|
135
|
+
junit.xml
|
|
136
|
+
coverage.xml
|
|
137
|
+
|
|
138
|
+
# =============================================================================
|
|
139
|
+
# Build check (ensure package builds correctly)
|
|
140
|
+
# =============================================================================
|
|
141
|
+
build:
|
|
142
|
+
name: Build Package
|
|
143
|
+
runs-on: ubuntu-latest
|
|
144
|
+
steps:
|
|
145
|
+
- uses: actions/checkout@v4
|
|
146
|
+
|
|
147
|
+
- name: Set up Python
|
|
148
|
+
uses: actions/setup-python@v5
|
|
149
|
+
with:
|
|
150
|
+
python-version: "3.11"
|
|
151
|
+
|
|
152
|
+
- name: Install uv
|
|
153
|
+
uses: astral-sh/setup-uv@v5
|
|
154
|
+
with:
|
|
155
|
+
enable-cache: true
|
|
156
|
+
|
|
157
|
+
- name: Build package
|
|
158
|
+
run: uv build
|
|
159
|
+
|
|
160
|
+
- name: Upload build artifacts
|
|
161
|
+
uses: actions/upload-artifact@v4
|
|
162
|
+
with:
|
|
163
|
+
name: dist
|
|
164
|
+
path: dist/
|
|
165
|
+
|
|
166
|
+
# =============================================================================
|
|
167
|
+
# All checks must pass (required status check)
|
|
168
|
+
# =============================================================================
|
|
169
|
+
ci-success:
|
|
170
|
+
name: CI Success
|
|
171
|
+
runs-on: ubuntu-latest
|
|
172
|
+
needs: [lint, typecheck, test, build]
|
|
173
|
+
if: always()
|
|
174
|
+
steps:
|
|
175
|
+
- name: Check all jobs
|
|
176
|
+
run: |
|
|
177
|
+
if [ "${{ needs.lint.result }}" != "success" ]; then
|
|
178
|
+
echo "Linting failed"
|
|
179
|
+
exit 1
|
|
180
|
+
fi
|
|
181
|
+
if [ "${{ needs.test.result }}" != "success" ]; then
|
|
182
|
+
echo "Tests failed"
|
|
183
|
+
exit 1
|
|
184
|
+
fi
|
|
185
|
+
if [ "${{ needs.build.result }}" != "success" ]; then
|
|
186
|
+
echo "Build failed"
|
|
187
|
+
exit 1
|
|
188
|
+
fi
|
|
189
|
+
# typecheck is allowed to fail (continue-on-error)
|
|
190
|
+
echo "All required checks passed!"
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: "CodeQL"
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, develop]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main, develop]
|
|
8
|
+
schedule:
|
|
9
|
+
- cron: "0 0 * * 0"
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
analyze:
|
|
13
|
+
name: Analyze
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
permissions:
|
|
16
|
+
actions: read
|
|
17
|
+
contents: read
|
|
18
|
+
security-events: write
|
|
19
|
+
|
|
20
|
+
strategy:
|
|
21
|
+
fail-fast: false
|
|
22
|
+
matrix:
|
|
23
|
+
language: ["python"]
|
|
24
|
+
|
|
25
|
+
steps:
|
|
26
|
+
- name: Checkout repository
|
|
27
|
+
uses: actions/checkout@v5
|
|
28
|
+
|
|
29
|
+
- name: Initialize CodeQL
|
|
30
|
+
uses: github/codeql-action/init@v4
|
|
31
|
+
with:
|
|
32
|
+
languages: ${{ matrix.language }}
|
|
33
|
+
|
|
34
|
+
- name: Autobuild
|
|
35
|
+
uses: github/codeql-action/autobuild@v4
|
|
36
|
+
|
|
37
|
+
- name: Perform CodeQL Analysis
|
|
38
|
+
uses: github/codeql-action/analyze@v4
|
|
39
|
+
# filepath: .github/workflows/codeql-analysis.yml
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Pre-commit Checks
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
pre-commit:
|
|
9
|
+
name: Pre-commit Hooks
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
with:
|
|
14
|
+
fetch-depth: 0 # Fetch all history for proper diff
|
|
15
|
+
|
|
16
|
+
- name: Set up Python
|
|
17
|
+
uses: actions/setup-python@v5
|
|
18
|
+
with:
|
|
19
|
+
python-version: "3.11"
|
|
20
|
+
|
|
21
|
+
- name: Install uv
|
|
22
|
+
uses: astral-sh/setup-uv@v5
|
|
23
|
+
with:
|
|
24
|
+
enable-cache: true
|
|
25
|
+
cache-dependency-glob: "uv.lock"
|
|
26
|
+
|
|
27
|
+
- name: Install dependencies (workspace dev deps + all package extras)
|
|
28
|
+
run: uv sync --group dev --all-extras
|
|
29
|
+
|
|
30
|
+
- name: Cache pre-commit environments
|
|
31
|
+
uses: actions/cache@v4
|
|
32
|
+
with:
|
|
33
|
+
path: ~/.cache/pre-commit
|
|
34
|
+
key: pre-commit-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }}
|
|
35
|
+
restore-keys: |
|
|
36
|
+
pre-commit-${{ runner.os }}-
|
|
37
|
+
|
|
38
|
+
- name: Run pre-commit (changed files only)
|
|
39
|
+
run: uv run pre-commit run --show-diff-on-failure --color=always --from-ref origin/${{ github.base_ref }} --to-ref HEAD
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
test:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
strategy:
|
|
14
|
+
matrix:
|
|
15
|
+
python-version: ["3.11", "3.12", "3.13", "3.14"]
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v5
|
|
18
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
19
|
+
uses: actions/setup-python@v6
|
|
20
|
+
with:
|
|
21
|
+
python-version: ${{ matrix.python-version }}
|
|
22
|
+
|
|
23
|
+
- name: Install uv
|
|
24
|
+
run: |
|
|
25
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
26
|
+
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
|
|
27
|
+
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: |
|
|
30
|
+
uv venv
|
|
31
|
+
uv sync --all-extras
|
|
32
|
+
|
|
33
|
+
- name: Run tests
|
|
34
|
+
run: |
|
|
35
|
+
source .venv/bin/activate
|
|
36
|
+
uv run pytest --asyncio-mode=auto --maxfail=1 --disable-warnings tests/
|
|
37
|
+
|
|
38
|
+
deploy:
|
|
39
|
+
needs: test
|
|
40
|
+
runs-on: ubuntu-latest
|
|
41
|
+
steps:
|
|
42
|
+
- uses: actions/checkout@v5
|
|
43
|
+
- name: Set up Python
|
|
44
|
+
uses: actions/setup-python@v6
|
|
45
|
+
with:
|
|
46
|
+
python-version: "3.12"
|
|
47
|
+
|
|
48
|
+
- name: Install uv
|
|
49
|
+
run: |
|
|
50
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
51
|
+
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
|
|
52
|
+
|
|
53
|
+
- name: Install dependencies
|
|
54
|
+
run: |
|
|
55
|
+
uv venv
|
|
56
|
+
uv pip install twine
|
|
57
|
+
|
|
58
|
+
- name: Build package
|
|
59
|
+
run: uv build
|
|
60
|
+
|
|
61
|
+
- name: Publish package to PyPI
|
|
62
|
+
env:
|
|
63
|
+
TWINE_USERNAME: __token__
|
|
64
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_API_KEY }}
|
|
65
|
+
run: uv run twine upload dist/*
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Python-generated files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[oc]
|
|
4
|
+
build/
|
|
5
|
+
dist/
|
|
6
|
+
wheels/
|
|
7
|
+
*.egg-info
|
|
8
|
+
targets/
|
|
9
|
+
node_modules/
|
|
10
|
+
|
|
11
|
+
# Virtual environments
|
|
12
|
+
.venv
|
|
13
|
+
|
|
14
|
+
*.gitignore
|
|
15
|
+
.benchmarks/
|
|
16
|
+
.*_cache/
|
|
17
|
+
*.khive/
|
|
18
|
+
*.hypothesis/
|
|
19
|
+
|
|
20
|
+
*.coverage
|
|
21
|
+
*coverage.json
|
|
22
|
+
|
|
23
|
+
*.DS_Store
|
|
24
|
+
data/
|
|
25
|
+
|
|
26
|
+
site/
|
|
27
|
+
|
|
28
|
+
node_modules/
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Pre-commit hooks for lionherd monorepo
|
|
2
|
+
# Docs: https://pre-commit.com/
|
|
3
|
+
# Install: pre-commit install
|
|
4
|
+
# Run: pre-commit run --all-files
|
|
5
|
+
# Update: pre-commit autoupdate
|
|
6
|
+
|
|
7
|
+
default_language_version:
|
|
8
|
+
python: python3.11
|
|
9
|
+
node: system
|
|
10
|
+
|
|
11
|
+
repos:
|
|
12
|
+
# =============================================================================
|
|
13
|
+
# Basic file checks (fast, no dependencies)
|
|
14
|
+
# =============================================================================
|
|
15
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
16
|
+
rev: v4.6.0
|
|
17
|
+
hooks:
|
|
18
|
+
- id: trailing-whitespace
|
|
19
|
+
exclude: \.md$
|
|
20
|
+
- id: end-of-file-fixer
|
|
21
|
+
exclude: \.svg$
|
|
22
|
+
- id: mixed-line-ending
|
|
23
|
+
args: [--fix=lf]
|
|
24
|
+
- id: check-yaml
|
|
25
|
+
args: [--unsafe] # Allow custom YAML tags
|
|
26
|
+
- id: check-json
|
|
27
|
+
- id: check-toml
|
|
28
|
+
- id: check-merge-conflict
|
|
29
|
+
- id: check-added-large-files
|
|
30
|
+
args: [--maxkb=1000]
|
|
31
|
+
- id: check-case-conflict
|
|
32
|
+
- id: detect-private-key
|
|
33
|
+
|
|
34
|
+
# =============================================================================
|
|
35
|
+
# TOML formatting (before Python, as it may format pyproject.toml)
|
|
36
|
+
# =============================================================================
|
|
37
|
+
- repo: https://github.com/ComPWA/taplo-pre-commit
|
|
38
|
+
rev: v0.9.3
|
|
39
|
+
hooks:
|
|
40
|
+
- id: taplo-format
|
|
41
|
+
|
|
42
|
+
# =============================================================================
|
|
43
|
+
# Python: Ruff (linter BEFORE formatter)
|
|
44
|
+
# =============================================================================
|
|
45
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
46
|
+
rev: v0.14.2
|
|
47
|
+
hooks:
|
|
48
|
+
# Linter with auto-fix
|
|
49
|
+
- id: ruff
|
|
50
|
+
args: [--fix]
|
|
51
|
+
types_or: [python, pyi]
|
|
52
|
+
# Formatter
|
|
53
|
+
- id: ruff-format
|
|
54
|
+
types_or: [python, pyi]
|
|
55
|
+
|
|
56
|
+
# =============================================================================
|
|
57
|
+
# Rust: Clippy linter
|
|
58
|
+
# =============================================================================
|
|
59
|
+
- repo: https://github.com/doublify/pre-commit-rust
|
|
60
|
+
rev: v1.0
|
|
61
|
+
hooks:
|
|
62
|
+
- id: fmt
|
|
63
|
+
name: cargo fmt
|
|
64
|
+
args: [--all, --]
|
|
65
|
+
- id: clippy
|
|
66
|
+
name: cargo clippy
|
|
67
|
+
args: [--all-targets, --all-features, --, -D, warnings]
|
|
68
|
+
|
|
69
|
+
# =============================================================================
|
|
70
|
+
# Next.js / TypeScript: ESLint
|
|
71
|
+
# =============================================================================
|
|
72
|
+
- repo: https://github.com/pre-commit/mirrors-eslint
|
|
73
|
+
rev: v9.17.0
|
|
74
|
+
hooks:
|
|
75
|
+
- id: eslint
|
|
76
|
+
files: \.(js|jsx|ts|tsx)$
|
|
77
|
+
types: [file]
|
|
78
|
+
args: [--fix, --max-warnings=0]
|
|
79
|
+
additional_dependencies:
|
|
80
|
+
- eslint@9.17.0
|
|
81
|
+
- eslint-config-next@15.1.3
|
|
82
|
+
- typescript@5.7.2
|
|
83
|
+
- "@typescript-eslint/parser@8.18.0"
|
|
84
|
+
- "@typescript-eslint/eslint-plugin@8.18.0"
|
|
85
|
+
|
|
86
|
+
# =============================================================================
|
|
87
|
+
# JSON/YAML formatting
|
|
88
|
+
# =============================================================================
|
|
89
|
+
- repo: https://github.com/pre-commit/mirrors-prettier
|
|
90
|
+
rev: v4.0.0-alpha.8
|
|
91
|
+
hooks:
|
|
92
|
+
- id: prettier
|
|
93
|
+
types_or: [json, yaml]
|
|
94
|
+
exclude: ^(package-lock\.json|pnpm-lock\.yaml|yarn\.lock)$
|
|
95
|
+
|
|
96
|
+
# =============================================================================
|
|
97
|
+
# Markdown linting
|
|
98
|
+
# =============================================================================
|
|
99
|
+
- repo: https://github.com/DavidAnson/markdownlint-cli2
|
|
100
|
+
rev: v0.18.1
|
|
101
|
+
hooks:
|
|
102
|
+
- id: markdownlint-cli2
|
|
103
|
+
args: [--fix]
|
|
104
|
+
exclude: ^\.github/
|
|
105
|
+
|
|
106
|
+
# CI optimization: only run on changed files
|
|
107
|
+
ci:
|
|
108
|
+
autofix_commit_msg: |
|
|
109
|
+
[pre-commit.ci] auto fixes from pre-commit.com hooks
|
|
110
|
+
|
|
111
|
+
for more information, see https://pre-commit.ci
|
|
112
|
+
autofix_prs: true
|
|
113
|
+
autoupdate_branch: ""
|
|
114
|
+
autoupdate_commit_msg: "[pre-commit.ci] pre-commit autoupdate"
|
|
115
|
+
autoupdate_schedule: weekly
|
|
116
|
+
skip: []
|
|
117
|
+
submodules: false
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.11
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [1.0.0a4](https://github.com/khive-ai/lionherd-core/releases/tag/v1.0.0-alpha4) - 2025-11-11
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **Error Handling**: `Graph`, `Flow`, and `Pile` now raise `NotFoundError` and
|
|
15
|
+
`ExistsError` instead of `ValueError` for missing/duplicate items (#129, #131,
|
|
16
|
+
#133). Exception metadata (`.details`, `.retryable`, `.__cause__`) is now
|
|
17
|
+
preserved for retry logic. Update exception handlers from `except ValueError`
|
|
18
|
+
to `except NotFoundError` or `except ExistsError` as appropriate.
|
|
19
|
+
- `Pile.pop()` now raises `NotFoundError` (was `ValueError`) for consistency
|
|
20
|
+
with `Pile.get()` and `Pile.remove()`.
|
|
21
|
+
- **Performance**: `Pile` methods now use single-lookup pattern (try/except vs
|
|
22
|
+
if/check) for 50% performance improvement on failed lookups (#128).
|
|
23
|
+
- **Module Organization**: Async utilities consolidated to `libs/concurrency` for
|
|
24
|
+
cleaner structure (#114).
|
|
25
|
+
|
|
26
|
+
### Removed
|
|
27
|
+
|
|
28
|
+
- **BREAKING**: `Graph.get_node()` and `Graph.get_edge()` removed in favor of
|
|
29
|
+
direct Pile access (#117, #124, #132).
|
|
30
|
+
|
|
31
|
+
**Migration**:
|
|
32
|
+
|
|
33
|
+
```python
|
|
34
|
+
# Before
|
|
35
|
+
node = graph.get_node(node_id)
|
|
36
|
+
edge = graph.get_edge(edge_id)
|
|
37
|
+
|
|
38
|
+
# After
|
|
39
|
+
node = graph.nodes[node_id]
|
|
40
|
+
edge = graph.edges[edge_id]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Rationale**: Eliminates unnecessary wrapper methods. Direct Pile access is
|
|
44
|
+
more Pythonic and consistent with dict/list-like interfaces.
|
|
45
|
+
|
|
46
|
+
### Fixed
|
|
47
|
+
|
|
48
|
+
- **BREAKING**: `Element.to_dict()` `created_at_format` now applies to ALL modes
|
|
49
|
+
(#39). DB mode default changed from `isoformat` (string) to `datetime` (object)
|
|
50
|
+
for ORM compatibility. Migration: use `to_dict(mode='db',
|
|
51
|
+
created_at_format='isoformat')` for backward compatibility.
|
|
52
|
+
|
|
53
|
+
### Added
|
|
54
|
+
|
|
55
|
+
- **Tutorial Infrastructure**: 29 executable tutorials covering concurrency
|
|
56
|
+
patterns, schema/string handlers, ln utilities, and advanced workflows (#99-106).
|
|
57
|
+
Includes circuit breakers, deadline management, fuzzy matching, pipelines, and
|
|
58
|
+
resource lifecycle patterns.
|
|
59
|
+
- **API Documentation**: Complete reference docs and Jupyter notebooks for all
|
|
60
|
+
base types (Element, Node, Pile, Progression, Flow, Graph, Event, Broadcaster,
|
|
61
|
+
EventBus), types system (HashableModel, Operable/Spec, Sentinel), and libs
|
|
62
|
+
(concurrency, schema, string, ln utilities) (#39, #43-46, #52, #54-59).
|
|
63
|
+
- **LNDL Documentation**: Complete API documentation and Jupyter notebooks for LNDL
|
|
64
|
+
(Language InterOperable Network Directive Language) system (#53). Includes 6
|
|
65
|
+
module docs (types, parser, resolver, fuzzy, prompt, errors) and 6 reference
|
|
66
|
+
notebooks with 100% execution coverage (185/185 cells).
|
|
67
|
+
- **Node Features**: Content constraint (dict|Serializable|BaseModel|None, no
|
|
68
|
+
primitives) and embedding serialization support for pgvector + JSONB (#50, #113).
|
|
69
|
+
- **Pile.pop() default**: Optional default parameter for safer fallback, consistent
|
|
70
|
+
with `dict.pop()` behavior (#118, #123).
|
|
71
|
+
- **Test Coverage**: Race condition tests for Event timeout/exception/cancellation
|
|
72
|
+
scenarios and fuzzy JSON kwargs regression tests (#32, #107, #112).
|
|
73
|
+
|
|
74
|
+
## [1.0.0a3](https://github.com/khive-ai/lionherd-core/releases/tag/v1.0.0-alpha3) - 2025-11-06
|
|
75
|
+
|
|
76
|
+
### Fixed
|
|
77
|
+
|
|
78
|
+
- **Memory Leaks**: `EventBus` (#22) and `Broadcaster` (#24) now use
|
|
79
|
+
`weakref` for automatic callback cleanup. Prevents unbounded growth in
|
|
80
|
+
long-running apps.
|
|
81
|
+
- **TOCTOU Races**: `Graph.add_edge()` (#21) and `Event.invoke()` (#26)
|
|
82
|
+
synchronized with decorators. Eliminates 10% duplicate execution rate
|
|
83
|
+
under concurrency.
|
|
84
|
+
- **LNDL Guard**: `ensure_no_action_calls()` (#23) prevents `ActionCall`
|
|
85
|
+
persistence. Recursively detects placeholders in nested models/collections.
|
|
86
|
+
- **Backend Agnostic**: `Event._async_lock` now anyio-based (was
|
|
87
|
+
`asyncio.Lock`). Enables Trio support.
|
|
88
|
+
|
|
89
|
+
### Changed
|
|
90
|
+
|
|
91
|
+
- **Event Idempotency**: Clarified `invoke()` caches results after
|
|
92
|
+
COMPLETED/FAILED. Use `as_fresh_event()` for retry.
|
|
93
|
+
|
|
94
|
+
### Added
|
|
95
|
+
|
|
96
|
+
- Race/memory leak tests with GC validation. 100% coverage for guards.
|
|
97
|
+
|
|
98
|
+
## [1.0.0a2](https://github.com/khive-ai/lionherd-core/releases/tag/v1.0.0-alpha2) - 2025-11-05
|
|
99
|
+
|
|
100
|
+
### Added
|
|
101
|
+
|
|
102
|
+
- **Event Timeout Support**: Optional `timeout` field with validation.
|
|
103
|
+
Converts `TimeoutError` to `LionherdTimeoutError` with `status=CANCELLED`,
|
|
104
|
+
`retryable=True`.
|
|
105
|
+
- **PriorityQueue**: Async priority queue using `heapq` + anyio primitives
|
|
106
|
+
with `put()`, `get()`, `put_nowait()`, `get_nowait()`. 100% test coverage.
|
|
107
|
+
- **LNDL Reserved Keyword Validation**: Python keyword checking for action
|
|
108
|
+
names with `UserWarning`.
|
|
109
|
+
|
|
110
|
+
### Fixed
|
|
111
|
+
|
|
112
|
+
- **PriorityQueue Deadlock**: `get_nowait()` now notifies waiting putters,
|
|
113
|
+
preventing deadlock with bounded queues.
|
|
114
|
+
- **LNDL**: Fixed typo in error messages and improved system prompt examples.
|
|
115
|
+
|
|
116
|
+
### Changed
|
|
117
|
+
|
|
118
|
+
- **Flow Architecture** (breaking): Composition over inheritance. `add()` →
|
|
119
|
+
`add_progression()`, `pile` → `items`.
|
|
120
|
+
- **Copy Semantics** (breaking): `with_updates()` now uses
|
|
121
|
+
`Literal["shallow", "deep"] | None` instead of two booleans.
|
|
122
|
+
- **Event Documentation**: Simplified docstrings, added `@final` to
|
|
123
|
+
`invoke()`, moved rationale to tests.
|
|
124
|
+
- **EventStatus**: Uses `lionherd_core.types.Enum` instead of `(str, Enum)`
|
|
125
|
+
for `Allowable` protocol support.
|
|
126
|
+
|
|
127
|
+
## [1.0.0a1](https://github.com/khive-ai/lionherd-core/releases/tag/v1.0.0-alpha1) - 2025-11-03
|
|
128
|
+
|
|
129
|
+
### Added
|
|
130
|
+
|
|
131
|
+
- **LNDL Action Syntax**: Added support for tool/function invocations within
|
|
132
|
+
LNDL responses using `<lact>` tags. Supports both namespaced actions
|
|
133
|
+
(`<lact Model.field alias>function(...)</lact>`) for mixing with lvars and
|
|
134
|
+
direct actions (`<lact name>function(...)</lact>`) for entire output.
|
|
135
|
+
Includes fuzzy matching support and complete validation lifecycle with
|
|
136
|
+
re-validation after action execution.
|
|
137
|
+
- Added `py.typed` marker file for PEP 561 compliance to enable type checking support
|
|
138
|
+
|
|
139
|
+
## [1.0.0a0](https://github.com/khive-ai/lionherd-core/releases/tag/v1.0.0-alpha) - 2025-11-02
|
|
140
|
+
|
|
141
|
+
### Added
|
|
142
|
+
|
|
143
|
+
- Initial release of lionherd-core
|
|
144
|
+
- Core orchestration framework
|
|
145
|
+
- Base abstractions and protocols
|