lionagi 0.15.14__tar.gz → 0.16.0__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.
- lionagi-0.16.0/.github/workflows/benchmarks.yml +95 -0
- lionagi-0.16.0/.github/workflows/refresh-bench-baselines.yml +98 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/PKG-INFO +4 -2
- lionagi-0.16.0/benchmarks/README.md +45 -0
- lionagi-0.16.0/benchmarks/baselines/concurrency-asyncio.json +59 -0
- lionagi-0.16.0/benchmarks/baselines/concurrency-trio.json +59 -0
- lionagi-0.16.0/benchmarks/baselines/fuzzy.json +74 -0
- lionagi-0.16.0/benchmarks/baselines/ln-asyncio.json +67 -0
- lionagi-0.16.0/benchmarks/baselines/ln-trio.json +67 -0
- lionagi-0.16.0/benchmarks/ci_compare.py +126 -0
- lionagi-0.16.0/benchmarks/concurrency_bench.py +281 -0
- lionagi-0.16.0/benchmarks/fuzzy_bench.py +302 -0
- lionagi-0.16.0/benchmarks/ln_bench.py +304 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/cookbook/brainstorming.md +5 -5
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/cookbook/code-review-crew.md +6 -6
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/core-concepts/sessions-and-branches.md +3 -3
- lionagi-0.16.0/docs/index.md +176 -0
- lionagi-0.16.0/docs/problem-statement.md +85 -0
- lionagi-0.16.0/lionagi/libs/validate/fuzzy_match_keys.py +7 -0
- lionagi-0.16.0/lionagi/libs/validate/string_similarity.py +7 -0
- lionagi-0.16.0/lionagi/ln/__init__.py +77 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/ln/_async_call.py +13 -10
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/ln/_hash.py +33 -8
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/ln/_list_call.py +2 -35
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/ln/_to_list.py +51 -28
- lionagi-0.16.0/lionagi/ln/_utils.py +156 -0
- lionagi-0.16.0/lionagi/ln/concurrency/__init__.py +61 -0
- lionagi-0.16.0/lionagi/ln/concurrency/_compat.py +65 -0
- lionagi-0.16.0/lionagi/ln/concurrency/cancel.py +117 -0
- lionagi-0.16.0/lionagi/ln/concurrency/errors.py +35 -0
- lionagi-0.16.0/lionagi/ln/concurrency/patterns.py +302 -0
- lionagi-0.16.0/lionagi/ln/concurrency/primitives.py +331 -0
- lionagi-0.16.0/lionagi/ln/concurrency/resource_tracker.py +69 -0
- lionagi-0.16.0/lionagi/ln/concurrency/task.py +93 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/ln/concurrency/throttle.py +3 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/ln/concurrency/utils.py +1 -0
- lionagi-0.16.0/lionagi/ln/fuzzy/__init__.py +15 -0
- {lionagi-0.15.14/lionagi/ln → lionagi-0.16.0/lionagi/ln/fuzzy}/_extract_json.py +22 -9
- {lionagi-0.15.14/lionagi/ln → lionagi-0.16.0/lionagi/ln/fuzzy}/_fuzzy_json.py +14 -8
- lionagi-0.15.14/lionagi/libs/validate/fuzzy_match_keys.py → lionagi-0.16.0/lionagi/ln/fuzzy/_fuzzy_match.py +30 -42
- lionagi-0.16.0/lionagi/ln/fuzzy/_fuzzy_validate.py +46 -0
- lionagi-0.15.14/lionagi/ln/_models.py → lionagi-0.16.0/lionagi/ln/types.py +153 -4
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/flow.py +2 -1
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/operate/operate.py +26 -16
- lionagi-0.16.0/lionagi/protocols/contracts.py +46 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/generic/event.py +6 -6
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/generic/processor.py +9 -5
- lionagi-0.16.0/lionagi/protocols/ids.py +82 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/types.py +10 -12
- lionagi-0.16.0/lionagi/service/third_party/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/utils.py +34 -64
- lionagi-0.16.0/lionagi/version.py +1 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/pyproject.toml +5 -2
- {lionagi-0.15.14 → lionagi-0.16.0}/uv.lock +86 -5
- lionagi-0.15.14/docs/index.md +0 -151
- lionagi-0.15.14/lionagi/ln/__init__.py +0 -87
- lionagi-0.15.14/lionagi/ln/_types.py +0 -146
- lionagi-0.15.14/lionagi/ln/concurrency/__init__.py +0 -53
- lionagi-0.15.14/lionagi/ln/concurrency/cancel.py +0 -134
- lionagi-0.15.14/lionagi/ln/concurrency/errors.py +0 -35
- lionagi-0.15.14/lionagi/ln/concurrency/patterns.py +0 -259
- lionagi-0.15.14/lionagi/ln/concurrency/primitives.py +0 -290
- lionagi-0.15.14/lionagi/ln/concurrency/resource_tracker.py +0 -182
- lionagi-0.15.14/lionagi/ln/concurrency/task.py +0 -111
- lionagi-0.15.14/lionagi/version.py +0 -1
- {lionagi-0.15.14 → lionagi-0.16.0}/.coveragerc +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/.env.example +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/.github/FUNDING.yml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/.github/dependabot.yml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/.github/workflows/ci.yml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/.github/workflows/codeql.yml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/.github/workflows/docs-deploy.yml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/.github/workflows/release.yml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/.gitignore +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/.pre-commit-config.yaml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/.python-version +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/CODE_OF_CONDUCT.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/CONTRIBUTING.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/LICENSE +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/README.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/assets/operation_builder.gif +0 -0
- /lionagi-0.15.14/lionagi/adapters/__init__.py → /lionagi-0.16.0/benchmarks/baselines/.gitkeep +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/cookbooks/001_branch_converse.ipynb +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/cookbooks/002_branch_interact.ipynb +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/cookbooks/003_branch_info.ipynb +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/cookbooks/004_conversation_patterns.ipynb +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/cookbooks/005_react_basics.ipynb +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/cookbooks/006_operation_graphs_claim_extraction.ipynb +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/cookbooks/007_fan_out_in.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/cookbooks/claude_proxy/README.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/cookbooks/claude_proxy/claude_code_proxy.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/cookbooks/claude_proxy/run_w_claude_code_proxy.ipynb +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/cookbooks/data/002_comedian.json +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/cookbooks/data/002_critic.json +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/cookbooks/data/006_lion_proof_ch2.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/cookbooks/using_claude_code.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/DOCUMENTATION_STANDARDS.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/advanced/custom-operations.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/advanced/error-handling.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/advanced/flow-composition.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/advanced/index.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/advanced/observability.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/advanced/performance.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/code-of-conduct.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/comparisons/langgraph.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/contributing.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/cookbook/claim-extraction.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/cookbook/data-persistence.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/cookbook/hr-automation.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/cookbook/index.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/cookbook/research-synthesis.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/core-concepts/index.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/core-concepts/lionagi-philosophy.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/core-concepts/messages-and-memory.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/core-concepts/models-and-providers.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/core-concepts/operations.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/core-concepts/tools-and-functions.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/for-ai-agents/claude-code-usage.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/for-ai-agents/index.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/for-ai-agents/orchestration-guide.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/for-ai-agents/pattern-selection.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/for-ai-agents/self-improvement.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/includes/abbreviations.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/integrations/databases.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/integrations/dspy-optimization.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/integrations/index.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/integrations/llamaindex-rag.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/integrations/llm-providers.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/integrations/mcp-servers.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/integrations/tools.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/integrations/vector-stores.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/marketing/language-interoperability-manifesto.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/migration/from-autogen.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/migration/from-crewai.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/migration/from-langchain.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/migration/index.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/patterns/conditional-flows.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/patterns/fan-out-in.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/patterns/index.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/patterns/react-with-rag.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/patterns/sequential-analysis.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/patterns/tournament-validation.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/quickstart/claude-code-integration.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/quickstart/index.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/quickstart/installation.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/quickstart/orchestration-first.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/quickstart/your-first-flow.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/reference/api/index.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/reference/changelog.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/reference/troubleshooting.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/stylesheets/extra.css +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/thinking-in-lionagi/branches-as-agents.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/thinking-in-lionagi/builder-pattern.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/thinking-in-lionagi/graphs-over-chains.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/thinking-in-lionagi/index.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/docs/thinking-in-lionagi/why-lionagi.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/_class_registry.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/_errors.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/_types.py +0 -0
- {lionagi-0.15.14/lionagi/libs/token_transform → lionagi-0.16.0/lionagi/adapters}/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/adapters/_utils.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/adapters/async_postgres_adapter.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/adapters/postgres_model_adapter.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/config.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/fields/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/fields/action.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/fields/base.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/fields/code.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/fields/file.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/fields/instruct.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/fields/reason.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/fields/research.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/concurrency.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/file/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/file/_utils.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/file/chunk.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/file/concat.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/file/concat_files.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/file/file_ops.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/file/params.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/file/process.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/file/save.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/nested/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/nested/flatten.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/nested/nfilter.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/nested/nget.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/nested/ninsert.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/nested/nmerge.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/nested/npop.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/nested/nset.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/nested/unflatten.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/nested/utils.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/parse.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/schema/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/schema/as_readable.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/schema/extract_code_block.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/schema/extract_docstring.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/schema/function_to_schema.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/schema/json_schema.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/schema/load_pydantic_model_from_schema.py +0 -0
- {lionagi-0.15.14/lionagi/libs/unstructured → lionagi-0.16.0/lionagi/libs/token_transform}/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/base.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/llmlingua.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/perplexity.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/symbolic_compress_context.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/base.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/abstract_algebra.toml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/category_theory.toml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/complex_analysis.toml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/framework_options.json +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/group_theory.toml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/math_logic.toml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/reflective_patterns.toml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/set_theory.toml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/topology_fundamentals.toml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/mapping/lion_emoji_mapping.toml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/mapping/python_math_mapping.toml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/mapping/rust_chinese_mapping.toml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/utility/base_synthlang_system_prompt.toml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/translate_to_synthlang.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/token_transform/types.py +0 -0
- {lionagi-0.15.14/lionagi/operations/communicate → lionagi-0.16.0/lionagi/libs/unstructured}/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/unstructured/pdf_to_image.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/unstructured/read_image_to_base64.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/validate/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/validate/common_field_validators.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/validate/fuzzy_validate_mapping.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/validate/to_num.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/validate/validate_boolean.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/libs/validate/xml_parser.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/ln/_json_dump.py +0 -0
- /lionagi-0.15.14/lionagi/libs/validate/string_similarity.py → /lionagi-0.16.0/lionagi/ln/fuzzy/_string_similarity.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/models/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/models/field_model.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/models/hashable_model.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/models/model_params.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/models/note.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/models/operable_model.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/models/schema_model.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/ReAct/ReAct.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/ReAct/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/ReAct/utils.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/_act/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/_act/act.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/brainstorm/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/brainstorm/brainstorm.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/brainstorm/prompt.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/builder.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/chat/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/chat/chat.py +0 -0
- {lionagi-0.15.14/lionagi/operations/translate → lionagi-0.16.0/lionagi/operations/communicate}/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/communicate/communicate.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/instruct/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/instruct/instruct.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/interpret/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/interpret/interpret.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/manager.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/node.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/operate/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/parse/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/parse/parse.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/plan/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/plan/plan.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/plan/prompt.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/select/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/select/select.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/select/utils.py +0 -0
- {lionagi-0.15.14/lionagi/service/third_party → lionagi-0.16.0/lionagi/operations/translate}/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/translate/translate.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/types.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/operations/utils.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/_concepts.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/action/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/action/function_calling.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/action/manager.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/action/tool.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/forms/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/forms/base.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/forms/flow.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/forms/form.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/forms/report.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/generic/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/generic/element.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/generic/log.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/generic/pile.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/generic/progression.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/graph/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/graph/_utils.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/graph/edge.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/graph/graph.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/graph/node.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/mail/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/mail/exchange.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/mail/mail.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/mail/mailbox.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/mail/manager.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/mail/package.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/action_request.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/action_response.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/assistant_response.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/base.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/instruction.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/manager.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/message.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/system.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/templates/README.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/operatives/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/operatives/operative.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/protocols/operatives/step.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/py.typed +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/api_calling.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/endpoint.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/endpoint_config.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/header_factory.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/match_endpoint.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/providers/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/providers/anthropic_.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/providers/claude_code_.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/providers/claude_code_cli.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/providers/exa_.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/providers/nvidia_nim_.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/providers/oai_.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/providers/ollama_.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/providers/perplexity_.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/connections/providers/types.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/hooks/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/hooks/_types.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/hooks/_utils.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/hooks/hook_event.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/hooks/hook_registry.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/imodel.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/manager.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/rate_limited_processor.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/resilience.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/third_party/README.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/third_party/anthropic_models.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/third_party/claude_code.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/third_party/exa_models.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/third_party/openai_model_names.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/third_party/pplx_models.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/token_calculator.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/service/types.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/session/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/session/branch.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/session/prompts.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/session/session.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/settings.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/tools/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/tools/base.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/tools/file/__init__.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/tools/file/reader.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/tools/memory/tools.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/lionagi/tools/types.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/main.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/mkdocs.yml +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/scripts/README.md +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/scripts/concat.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/scripts/config.py +0 -0
- {lionagi-0.15.14 → lionagi-0.16.0}/scripts/update_openai_models.py +0 -0
@@ -0,0 +1,95 @@
|
|
1
|
+
name: Benchmarks
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ main, master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ main, master ]
|
8
|
+
|
9
|
+
permissions:
|
10
|
+
contents: read
|
11
|
+
|
12
|
+
jobs:
|
13
|
+
run-benchmarks:
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
timeout-minutes: 20
|
16
|
+
strategy:
|
17
|
+
matrix:
|
18
|
+
python-version: ["3.12"]
|
19
|
+
|
20
|
+
steps:
|
21
|
+
- name: Checkout
|
22
|
+
uses: actions/checkout@v4
|
23
|
+
|
24
|
+
- name: Setup Python ${{ matrix.python-version }}
|
25
|
+
uses: actions/setup-python@v5
|
26
|
+
with:
|
27
|
+
python-version: ${{ matrix.python-version }}
|
28
|
+
|
29
|
+
- name: Install uv
|
30
|
+
run: |
|
31
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
32
|
+
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
|
33
|
+
|
34
|
+
- name: Install dependencies
|
35
|
+
run: |
|
36
|
+
uv venv
|
37
|
+
source .venv/bin/activate
|
38
|
+
uv sync --all-extras
|
39
|
+
|
40
|
+
- name: Run concurrency benchmarks (asyncio)
|
41
|
+
run: |
|
42
|
+
source .venv/bin/activate
|
43
|
+
python -m benchmarks.concurrency_bench --repeat 100 --backend asyncio --output benchmarks/_ci_out/concurrency-asyncio.json
|
44
|
+
|
45
|
+
- name: Run concurrency benchmarks (trio)
|
46
|
+
run: |
|
47
|
+
source .venv/bin/activate
|
48
|
+
python -m benchmarks.concurrency_bench --repeat 100 --backend trio --output benchmarks/_ci_out/concurrency-trio.json
|
49
|
+
|
50
|
+
- name: Run ln benchmarks (asyncio)
|
51
|
+
run: |
|
52
|
+
source .venv/bin/activate
|
53
|
+
python -m benchmarks.ln_bench --repeat 10 --backend asyncio --output benchmarks/_ci_out/ln-asyncio.json
|
54
|
+
|
55
|
+
- name: Run ln benchmarks (trio)
|
56
|
+
run: |
|
57
|
+
source .venv/bin/activate
|
58
|
+
python -m benchmarks.ln_bench --repeat 10 --backend trio --output benchmarks/_ci_out/ln-trio.json
|
59
|
+
|
60
|
+
- name: Run fuzzy benchmarks
|
61
|
+
run: |
|
62
|
+
source .venv/bin/activate
|
63
|
+
python -m benchmarks.fuzzy_bench --repeat 10 --output benchmarks/_ci_out/fuzzy.json
|
64
|
+
|
65
|
+
- name: Compare concurrency asyncio vs baseline (if present)
|
66
|
+
run: |
|
67
|
+
source .venv/bin/activate
|
68
|
+
python benchmarks/ci_compare.py --baseline benchmarks/baselines/concurrency-asyncio.json --current benchmarks/_ci_out/concurrency-asyncio.json --threshold 0.2
|
69
|
+
|
70
|
+
- name: Compare concurrency trio vs baseline (if present)
|
71
|
+
run: |
|
72
|
+
source .venv/bin/activate
|
73
|
+
python benchmarks/ci_compare.py --baseline benchmarks/baselines/concurrency-trio.json --current benchmarks/_ci_out/concurrency-trio.json --threshold 0.2
|
74
|
+
|
75
|
+
- name: Compare ln asyncio vs baseline (if present)
|
76
|
+
run: |
|
77
|
+
source .venv/bin/activate
|
78
|
+
python benchmarks/ci_compare.py --baseline benchmarks/baselines/ln-asyncio.json --current benchmarks/_ci_out/ln-asyncio.json --threshold 0.2
|
79
|
+
|
80
|
+
- name: Compare ln trio vs baseline (if present)
|
81
|
+
run: |
|
82
|
+
source .venv/bin/activate
|
83
|
+
python benchmarks/ci_compare.py --baseline benchmarks/baselines/ln-trio.json --current benchmarks/_ci_out/ln-trio.json --threshold 0.2
|
84
|
+
|
85
|
+
- name: Compare fuzzy vs baseline (if present)
|
86
|
+
run: |
|
87
|
+
source .venv/bin/activate
|
88
|
+
python benchmarks/ci_compare.py --baseline benchmarks/baselines/fuzzy.json --current benchmarks/_ci_out/fuzzy.json --threshold 0.2
|
89
|
+
|
90
|
+
- name: Upload results artifact
|
91
|
+
uses: actions/upload-artifact@v4
|
92
|
+
if: always()
|
93
|
+
with:
|
94
|
+
name: benchmark-results-py${{ matrix.python-version }}
|
95
|
+
path: benchmarks/_ci_out/**/*.json
|
@@ -0,0 +1,98 @@
|
|
1
|
+
name: Refresh Bench Baselines
|
2
|
+
|
3
|
+
on:
|
4
|
+
workflow_dispatch: {}
|
5
|
+
|
6
|
+
permissions:
|
7
|
+
contents: write
|
8
|
+
pull-requests: write
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
refresh:
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
timeout-minutes: 20
|
14
|
+
steps:
|
15
|
+
- name: Checkout
|
16
|
+
uses: actions/checkout@v4
|
17
|
+
|
18
|
+
- name: Setup Python 3.12
|
19
|
+
uses: actions/setup-python@v5
|
20
|
+
with:
|
21
|
+
python-version: '3.12'
|
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
|
+
source .venv/bin/activate
|
32
|
+
uv sync --all-extras
|
33
|
+
|
34
|
+
- name: Run concurrency benchmarks (asyncio)
|
35
|
+
run: |
|
36
|
+
source .venv/bin/activate
|
37
|
+
python -m benchmarks.concurrency_bench --repeat 100 --backend asyncio --output benchmarks/_ci_out/concurrency-asyncio.json
|
38
|
+
|
39
|
+
- name: Run concurrency benchmarks (trio)
|
40
|
+
run: |
|
41
|
+
source .venv/bin/activate
|
42
|
+
python -m benchmarks.concurrency_bench --repeat 100 --backend trio --output benchmarks/_ci_out/concurrency-trio.json
|
43
|
+
|
44
|
+
- name: Run ln benchmarks (asyncio)
|
45
|
+
run: |
|
46
|
+
source .venv/bin/activate
|
47
|
+
python -m benchmarks.ln_bench --repeat 10 --backend asyncio --output benchmarks/_ci_out/ln-asyncio.json
|
48
|
+
|
49
|
+
- name: Run ln benchmarks (trio)
|
50
|
+
run: |
|
51
|
+
source .venv/bin/activate
|
52
|
+
python -m benchmarks.ln_bench --repeat 10 --backend trio --output benchmarks/_ci_out/ln-trio.json
|
53
|
+
|
54
|
+
- name: Run fuzzy benchmarks
|
55
|
+
run: |
|
56
|
+
source .venv/bin/activate
|
57
|
+
python -m benchmarks.fuzzy_bench --repeat 10 --output benchmarks/_ci_out/fuzzy.json
|
58
|
+
|
59
|
+
- name: Copy outputs to baselines
|
60
|
+
run: |
|
61
|
+
cp benchmarks/_ci_out/concurrency-asyncio.json benchmarks/baselines/concurrency-asyncio.json
|
62
|
+
cp benchmarks/_ci_out/concurrency-trio.json benchmarks/baselines/concurrency-trio.json
|
63
|
+
cp benchmarks/_ci_out/ln-asyncio.json benchmarks/baselines/ln-asyncio.json
|
64
|
+
cp benchmarks/_ci_out/ln-trio.json benchmarks/baselines/ln-trio.json
|
65
|
+
cp benchmarks/_ci_out/fuzzy.json benchmarks/baselines/fuzzy.json
|
66
|
+
|
67
|
+
- name: Commit and create PR for updated baselines
|
68
|
+
env:
|
69
|
+
GH_TOKEN: ${{ github.token }}
|
70
|
+
run: |
|
71
|
+
git config --local user.email "action@github.com"
|
72
|
+
git config --local user.name "GitHub Action"
|
73
|
+
|
74
|
+
# Create a unique branch name with timestamp
|
75
|
+
BRANCH_NAME="chore/refresh-baselines-$(date +%Y%m%d-%H%M%S)"
|
76
|
+
git checkout -b "$BRANCH_NAME"
|
77
|
+
|
78
|
+
# Add and commit changes
|
79
|
+
git add benchmarks/baselines/*.json
|
80
|
+
git commit -m "chore(benchmarks): refresh CI-native baselines [skip ci]"
|
81
|
+
|
82
|
+
# Push the branch
|
83
|
+
git push origin "$BRANCH_NAME"
|
84
|
+
|
85
|
+
# Create pull request using GitHub CLI
|
86
|
+
gh pr create \
|
87
|
+
--title "chore(benchmarks): refresh CI-native baselines" \
|
88
|
+
--body "Automated refresh of benchmark baselines from GitHub Actions workflow." \
|
89
|
+
--label "enhancement" \
|
90
|
+
--head "$BRANCH_NAME" \
|
91
|
+
--base main
|
92
|
+
|
93
|
+
- name: Upload baselines artifact (fallback)
|
94
|
+
if: ${{ failure() }}
|
95
|
+
uses: actions/upload-artifact@v4
|
96
|
+
with:
|
97
|
+
name: refreshed-bench-baselines
|
98
|
+
path: benchmarks/baselines/*.json
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: lionagi
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.16.0
|
4
4
|
Summary: An Intelligence Operating System.
|
5
5
|
Author-email: HaiyangLi <quantocean.li@gmail.com>
|
6
6
|
License: Apache License
|
@@ -223,12 +223,14 @@ Requires-Dist: aiocache>=0.12.0
|
|
223
223
|
Requires-Dist: aiohttp>=3.11.0
|
224
224
|
Requires-Dist: anyio>=4.7.0
|
225
225
|
Requires-Dist: backoff>=2.0.0
|
226
|
+
Requires-Dist: exceptiongroup>=1.3.0
|
226
227
|
Requires-Dist: jinja2>=3.0.0
|
227
228
|
Requires-Dist: json-repair>=0.40.0
|
229
|
+
Requires-Dist: msgspec>=0.18.0
|
228
230
|
Requires-Dist: pillow>=10.0.0
|
229
231
|
Requires-Dist: psutil>=6.0.0
|
230
232
|
Requires-Dist: pydantic-settings>=2.8.0
|
231
|
-
Requires-Dist: pydapter[pandas]>=1.0.
|
233
|
+
Requires-Dist: pydapter[pandas]>=1.0.5
|
232
234
|
Requires-Dist: python-dotenv>=1.1.0
|
233
235
|
Requires-Dist: tiktoken>=0.9.0
|
234
236
|
Requires-Dist: toml>=0.8.0
|
@@ -0,0 +1,45 @@
|
|
1
|
+
Minimal concurrency benchmarks
|
2
|
+
|
3
|
+
This folder contains a lightweight benchmark runner for lionagi.ln.concurrency.
|
4
|
+
It establishes a baseline for core patterns to help catch regressions.
|
5
|
+
|
6
|
+
How to run (concurrency)
|
7
|
+
- Asyncio backend (default):
|
8
|
+
- `python -m benchmarks.concurrency_bench`
|
9
|
+
- Trio backend:
|
10
|
+
- `python -m benchmarks.concurrency_bench --backend trio`
|
11
|
+
|
12
|
+
Options
|
13
|
+
- `--backend {asyncio,trio}`: Select async backend (default: asyncio)
|
14
|
+
- `--repeat N`: Repeat each scenario N times and report aggregates (default: 3)
|
15
|
+
- `--json`: Also print JSON to stdout (besides saving to file)
|
16
|
+
- `--output PATH`: Save results JSON to a custom path
|
17
|
+
- `--compare BASELINE.json`: Compare against a previous run and show deltas
|
18
|
+
|
19
|
+
How to run (ln functions)
|
20
|
+
- Asyncio backend (default):
|
21
|
+
- `python -m benchmarks.ln_bench`
|
22
|
+
- Trio backend:
|
23
|
+
- `python -m benchmarks.ln_bench --backend trio`
|
24
|
+
|
25
|
+
Options are the same as the concurrency runner.
|
26
|
+
|
27
|
+
Results
|
28
|
+
- Results are saved under `benchmarks/results/<timestamp>-<backend>.json` (concurrency)
|
29
|
+
and `benchmarks/results/ln-<timestamp>-<backend>.json` (ln functions) by default.
|
30
|
+
- Each scenario reports min/mean/median/max (seconds) over the configured repeats.
|
31
|
+
|
32
|
+
Scenarios (initial set)
|
33
|
+
- gather_100_yield: 100 tasks, each yields once (sleep 0)
|
34
|
+
- bounded_map_2000_limit_100: 2000 items, async no-op mapper, limit=100
|
35
|
+
- completion_stream_1000_limit_100: 1000 awaitables streamed with limit=100
|
36
|
+
- race_first_completion_10: 10 tasks where one completes immediately
|
37
|
+
- cancel_propagation_500: 500 tasks; one fails quickly to trigger cancellation
|
38
|
+
- taskgroup_start_1000_noop: start 1000 short-lived tasks
|
39
|
+
|
40
|
+
Notes
|
41
|
+
- Fuzzy utilities benches are available:
|
42
|
+
- `python -m benchmarks.fuzzy_bench` (JSON parsing, extraction, key matching)
|
43
|
+
- Outputs to `benchmarks/results/fuzzy-<timestamp>.json`
|
44
|
+
- These are micro-benchmarks intended to detect relative changes, not absolute throughput.
|
45
|
+
- Run on a quiet machine for less noisy results. Prefer CI runners for consistency.
|
@@ -0,0 +1,59 @@
|
|
1
|
+
{
|
2
|
+
"meta": {
|
3
|
+
"backend": "asyncio",
|
4
|
+
"python": "3.10.18",
|
5
|
+
"platform": "Linux-6.11.0-1018-azure-x86_64-with-glibc2.39",
|
6
|
+
"anyio": "unknown",
|
7
|
+
"timestamp": "2025-09-02T13:35:48.146812+00:00"
|
8
|
+
},
|
9
|
+
"results": {
|
10
|
+
"gather_100_yield": {
|
11
|
+
"name": "gather_100_yield",
|
12
|
+
"runs": 100,
|
13
|
+
"min": 0.0013307739999959267,
|
14
|
+
"mean": 0.002037186759999088,
|
15
|
+
"median": 0.001366159999989236,
|
16
|
+
"max": 0.06699832600000377
|
17
|
+
},
|
18
|
+
"bounded_map_2000_limit_100": {
|
19
|
+
"name": "bounded_map_2000_limit_100",
|
20
|
+
"runs": 100,
|
21
|
+
"min": 0.051471915000007584,
|
22
|
+
"mean": 0.11217115943999971,
|
23
|
+
"median": 0.13023979999999824,
|
24
|
+
"max": 0.15564669899998762
|
25
|
+
},
|
26
|
+
"completion_stream_1000_limit_100": {
|
27
|
+
"name": "completion_stream_1000_limit_100",
|
28
|
+
"runs": 100,
|
29
|
+
"min": 0.0329682240000011,
|
30
|
+
"mean": 0.059458141469999365,
|
31
|
+
"median": 0.03493375699999035,
|
32
|
+
"max": 0.12365313499998365
|
33
|
+
},
|
34
|
+
"race_first_completion_10": {
|
35
|
+
"name": "race_first_completion_10",
|
36
|
+
"runs": 100,
|
37
|
+
"min": 0.00037635299997873517,
|
38
|
+
"mean": 0.0003924061999981632,
|
39
|
+
"median": 0.0003883794999950396,
|
40
|
+
"max": 0.0005232460000001993
|
41
|
+
},
|
42
|
+
"cancel_propagation_500": {
|
43
|
+
"name": "cancel_propagation_500",
|
44
|
+
"runs": 100,
|
45
|
+
"min": 0.01751969400001485,
|
46
|
+
"mean": 0.02870361817999765,
|
47
|
+
"median": 0.0186188854999898,
|
48
|
+
"max": 0.10571556099998247
|
49
|
+
},
|
50
|
+
"taskgroup_start_1000_noop": {
|
51
|
+
"name": "taskgroup_start_1000_noop",
|
52
|
+
"runs": 100,
|
53
|
+
"min": 0.012939626999980192,
|
54
|
+
"mean": 0.030543536530002482,
|
55
|
+
"median": 0.013727217000010228,
|
56
|
+
"max": 0.09765000000001578
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
{
|
2
|
+
"meta": {
|
3
|
+
"backend": "trio",
|
4
|
+
"python": "3.10.18",
|
5
|
+
"platform": "Linux-6.11.0-1018-azure-x86_64-with-glibc2.39",
|
6
|
+
"anyio": "unknown",
|
7
|
+
"timestamp": "2025-09-02T13:36:12.244949+00:00"
|
8
|
+
},
|
9
|
+
"results": {
|
10
|
+
"gather_100_yield": {
|
11
|
+
"name": "gather_100_yield",
|
12
|
+
"runs": 100,
|
13
|
+
"min": 0.0014117040000201087,
|
14
|
+
"mean": 0.0014656342899996844,
|
15
|
+
"median": 0.0014346675000069808,
|
16
|
+
"max": 0.002635558999998011
|
17
|
+
},
|
18
|
+
"bounded_map_2000_limit_100": {
|
19
|
+
"name": "bounded_map_2000_limit_100",
|
20
|
+
"runs": 100,
|
21
|
+
"min": 0.052032400000001644,
|
22
|
+
"mean": 0.10031968010999832,
|
23
|
+
"median": 0.1200106145000035,
|
24
|
+
"max": 0.14297211099997753
|
25
|
+
},
|
26
|
+
"completion_stream_1000_limit_100": {
|
27
|
+
"name": "completion_stream_1000_limit_100",
|
28
|
+
"runs": 100,
|
29
|
+
"min": 0.035846581000015476,
|
30
|
+
"mean": 0.05587740749000119,
|
31
|
+
"median": 0.036930268499986596,
|
32
|
+
"max": 0.11426646800001095
|
33
|
+
},
|
34
|
+
"race_first_completion_10": {
|
35
|
+
"name": "race_first_completion_10",
|
36
|
+
"runs": 100,
|
37
|
+
"min": 0.0007386779999762894,
|
38
|
+
"mean": 0.0007710282699966342,
|
39
|
+
"median": 0.0007622674999936407,
|
40
|
+
"max": 0.0009878740000033304
|
41
|
+
},
|
42
|
+
"cancel_propagation_500": {
|
43
|
+
"name": "cancel_propagation_500",
|
44
|
+
"runs": 100,
|
45
|
+
"min": 0.02046249400001443,
|
46
|
+
"mean": 0.0379207331500001,
|
47
|
+
"median": 0.027372422999988544,
|
48
|
+
"max": 0.10746313000001351
|
49
|
+
},
|
50
|
+
"taskgroup_start_1000_noop": {
|
51
|
+
"name": "taskgroup_start_1000_noop",
|
52
|
+
"runs": 100,
|
53
|
+
"min": 0.013291812999995045,
|
54
|
+
"mean": 0.026810758450000947,
|
55
|
+
"median": 0.013807971500000349,
|
56
|
+
"max": 0.09094968200000153
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
{
|
2
|
+
"meta": {
|
3
|
+
"python": "3.10.18",
|
4
|
+
"platform": "Linux-6.11.0-1018-azure-x86_64-with-glibc2.39",
|
5
|
+
"anyio": "unknown",
|
6
|
+
"timestamp": "2025-09-02T13:36:36.355579+00:00"
|
7
|
+
},
|
8
|
+
"results": {
|
9
|
+
"fuzzy_json_valid_1000": {
|
10
|
+
"name": "fuzzy_json_valid_1000",
|
11
|
+
"runs": 10,
|
12
|
+
"min": 0.0027464740000198162,
|
13
|
+
"mean": 0.0027687305000000605,
|
14
|
+
"median": 0.0027608015000026853,
|
15
|
+
"max": 0.002856620000017074
|
16
|
+
},
|
17
|
+
"fuzzy_json_dirty_single_quotes_500": {
|
18
|
+
"name": "fuzzy_json_dirty_single_quotes_500",
|
19
|
+
"runs": 10,
|
20
|
+
"min": 0.0052496760000053655,
|
21
|
+
"mean": 0.005336624200006667,
|
22
|
+
"median": 0.005300931500002548,
|
23
|
+
"max": 0.005598335999991377
|
24
|
+
},
|
25
|
+
"extract_json_direct_1000": {
|
26
|
+
"name": "extract_json_direct_1000",
|
27
|
+
"runs": 10,
|
28
|
+
"min": 0.0007120979999797328,
|
29
|
+
"mean": 0.0007235028999957649,
|
30
|
+
"median": 0.0007229384999902777,
|
31
|
+
"max": 0.0007527449999997771
|
32
|
+
},
|
33
|
+
"extract_json_markdown_blocks_200": {
|
34
|
+
"name": "extract_json_markdown_blocks_200",
|
35
|
+
"runs": 10,
|
36
|
+
"min": 0.0032754620000048362,
|
37
|
+
"mean": 0.0032953269999950407,
|
38
|
+
"median": 0.003279153999997675,
|
39
|
+
"max": 0.003359698999986449
|
40
|
+
},
|
41
|
+
"fuzzy_match_keys_2000": {
|
42
|
+
"name": "fuzzy_match_keys_2000",
|
43
|
+
"runs": 10,
|
44
|
+
"min": 0.3180015540000056,
|
45
|
+
"mean": 0.32003289620000147,
|
46
|
+
"median": 0.31981371050000007,
|
47
|
+
"max": 0.32366155500000104
|
48
|
+
},
|
49
|
+
"string_similarity_bulk_2000": {
|
50
|
+
"name": "string_similarity_bulk_2000",
|
51
|
+
"runs": 10,
|
52
|
+
"min": 0.15625453399999856,
|
53
|
+
"mean": 0.1588215744999985,
|
54
|
+
"median": 0.15791424849999203,
|
55
|
+
"max": 0.16330740000000787
|
56
|
+
},
|
57
|
+
"ref_std_json_valid_1000": {
|
58
|
+
"name": "ref_std_json_valid_1000",
|
59
|
+
"runs": 10,
|
60
|
+
"min": 0.006303881999997429,
|
61
|
+
"mean": 0.006335769899999377,
|
62
|
+
"median": 0.006317558000006329,
|
63
|
+
"max": 0.0064248369999972965
|
64
|
+
},
|
65
|
+
"ref_orjson_valid_1000": {
|
66
|
+
"name": "ref_orjson_valid_1000",
|
67
|
+
"runs": 10,
|
68
|
+
"min": 0.0012476400000025478,
|
69
|
+
"mean": 0.0012560897000042815,
|
70
|
+
"median": 0.0012546530000179246,
|
71
|
+
"max": 0.0012660250000067208
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
@@ -0,0 +1,67 @@
|
|
1
|
+
{
|
2
|
+
"meta": {
|
3
|
+
"backend": "asyncio",
|
4
|
+
"python": "3.10.18",
|
5
|
+
"platform": "Linux-6.11.0-1018-azure-x86_64-with-glibc2.39",
|
6
|
+
"anyio": "unknown",
|
7
|
+
"timestamp": "2025-09-02T13:36:20.408039+00:00"
|
8
|
+
},
|
9
|
+
"results": {
|
10
|
+
"alcall_async_noop_1000_conc_100": {
|
11
|
+
"name": "alcall_async_noop_1000_conc_100",
|
12
|
+
"runs": 10,
|
13
|
+
"min": 0.027339697999991586,
|
14
|
+
"mean": 0.04231285889999583,
|
15
|
+
"median": 0.028904450999988285,
|
16
|
+
"max": 0.09554383200000416
|
17
|
+
},
|
18
|
+
"alcall_sync_noop_1000_conc_64": {
|
19
|
+
"name": "alcall_sync_noop_1000_conc_64",
|
20
|
+
"runs": 10,
|
21
|
+
"min": 0.1231813789999876,
|
22
|
+
"mean": 0.14566904129999897,
|
23
|
+
"median": 0.12549639949999403,
|
24
|
+
"max": 0.2023504040000148
|
25
|
+
},
|
26
|
+
"bcall_async_noop_1000_batch_50": {
|
27
|
+
"name": "bcall_async_noop_1000_batch_50",
|
28
|
+
"runs": 10,
|
29
|
+
"min": 0.03463674900001479,
|
30
|
+
"mean": 0.041982428599999365,
|
31
|
+
"median": 0.0348497119999962,
|
32
|
+
"max": 0.10610733600000799
|
33
|
+
},
|
34
|
+
"to_list_flatten_nested_10000": {
|
35
|
+
"name": "to_list_flatten_nested_10000",
|
36
|
+
"runs": 10,
|
37
|
+
"min": 0.03234598599999572,
|
38
|
+
"mean": 0.03946182770000632,
|
39
|
+
"median": 0.03328560400001379,
|
40
|
+
"max": 0.09648447600000054
|
41
|
+
},
|
42
|
+
"to_list_flatten_unique_2000_mixed": {
|
43
|
+
"name": "to_list_flatten_unique_2000_mixed",
|
44
|
+
"runs": 10,
|
45
|
+
"min": 0.006223709000011013,
|
46
|
+
"mean": 0.006309181899999317,
|
47
|
+
"median": 0.006298704499997143,
|
48
|
+
"max": 0.006478685000018913
|
49
|
+
},
|
50
|
+
"hash_dict_complex_1000": {
|
51
|
+
"name": "hash_dict_complex_1000",
|
52
|
+
"runs": 10,
|
53
|
+
"min": 0.320240278,
|
54
|
+
"mean": 0.3215539886000016,
|
55
|
+
"median": 0.32136970400000564,
|
56
|
+
"max": 0.3242211730000122
|
57
|
+
},
|
58
|
+
"json_dumps_medium_1000": {
|
59
|
+
"name": "json_dumps_medium_1000",
|
60
|
+
"runs": 10,
|
61
|
+
"min": 0.053597306000000344,
|
62
|
+
"mean": 0.053890407500000494,
|
63
|
+
"median": 0.05394290499999954,
|
64
|
+
"max": 0.0542278519999968
|
65
|
+
}
|
66
|
+
}
|
67
|
+
}
|
@@ -0,0 +1,67 @@
|
|
1
|
+
{
|
2
|
+
"meta": {
|
3
|
+
"backend": "trio",
|
4
|
+
"python": "3.10.18",
|
5
|
+
"platform": "Linux-6.11.0-1018-azure-x86_64-with-glibc2.39",
|
6
|
+
"anyio": "unknown",
|
7
|
+
"timestamp": "2025-09-02T13:36:29.672202+00:00"
|
8
|
+
},
|
9
|
+
"results": {
|
10
|
+
"alcall_async_noop_1000_conc_100": {
|
11
|
+
"name": "alcall_async_noop_1000_conc_100",
|
12
|
+
"runs": 10,
|
13
|
+
"min": 0.039496262000000115,
|
14
|
+
"mean": 0.06164876089999893,
|
15
|
+
"median": 0.0449869785000061,
|
16
|
+
"max": 0.10796760300002006
|
17
|
+
},
|
18
|
+
"alcall_sync_noop_1000_conc_64": {
|
19
|
+
"name": "alcall_sync_noop_1000_conc_64",
|
20
|
+
"runs": 10,
|
21
|
+
"min": 0.20247881000000234,
|
22
|
+
"mean": 0.22778642419999925,
|
23
|
+
"median": 0.2086333964999909,
|
24
|
+
"max": 0.28522025600000234
|
25
|
+
},
|
26
|
+
"bcall_async_noop_1000_batch_50": {
|
27
|
+
"name": "bcall_async_noop_1000_batch_50",
|
28
|
+
"runs": 10,
|
29
|
+
"min": 0.0380686379999986,
|
30
|
+
"mean": 0.0461074301999929,
|
31
|
+
"median": 0.03830965849999757,
|
32
|
+
"max": 0.11178060099999243
|
33
|
+
},
|
34
|
+
"to_list_flatten_nested_10000": {
|
35
|
+
"name": "to_list_flatten_nested_10000",
|
36
|
+
"runs": 10,
|
37
|
+
"min": 0.03396243599999593,
|
38
|
+
"mean": 0.04107517129999962,
|
39
|
+
"median": 0.03474533150000525,
|
40
|
+
"max": 0.09925096700001745
|
41
|
+
},
|
42
|
+
"to_list_flatten_unique_2000_mixed": {
|
43
|
+
"name": "to_list_flatten_unique_2000_mixed",
|
44
|
+
"runs": 10,
|
45
|
+
"min": 0.006309203000000707,
|
46
|
+
"mean": 0.012771716699998593,
|
47
|
+
"median": 0.0065092619999944645,
|
48
|
+
"max": 0.06665278799999896
|
49
|
+
},
|
50
|
+
"hash_dict_complex_1000": {
|
51
|
+
"name": "hash_dict_complex_1000",
|
52
|
+
"runs": 10,
|
53
|
+
"min": 0.3123992969999847,
|
54
|
+
"mean": 0.3132378978000048,
|
55
|
+
"median": 0.3127961700000128,
|
56
|
+
"max": 0.31525472800001353
|
57
|
+
},
|
58
|
+
"json_dumps_medium_1000": {
|
59
|
+
"name": "json_dumps_medium_1000",
|
60
|
+
"runs": 10,
|
61
|
+
"min": 0.0535302880000188,
|
62
|
+
"mean": 0.05378593110000338,
|
63
|
+
"median": 0.053629779000019084,
|
64
|
+
"max": 0.05512452299998927
|
65
|
+
}
|
66
|
+
}
|
67
|
+
}
|