lionagi 0.16.0__tar.gz → 0.16.2__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 → lionagi-0.16.2}/PKG-INFO +3 -4
- {lionagi-0.16.0 → lionagi-0.16.2}/benchmarks/baselines/concurrency-asyncio.json +1 -1
- {lionagi-0.16.0 → lionagi-0.16.2}/benchmarks/baselines/concurrency-trio.json +1 -1
- {lionagi-0.16.0 → lionagi-0.16.2}/benchmarks/baselines/fuzzy.json +1 -1
- {lionagi-0.16.0 → lionagi-0.16.2}/benchmarks/baselines/ln-asyncio.json +1 -1
- {lionagi-0.16.0 → lionagi-0.16.2}/benchmarks/baselines/ln-trio.json +1 -1
- {lionagi-0.16.0 → lionagi-0.16.2}/benchmarks/ln_bench.py +1 -1
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/adapters/async_postgres_adapter.py +1 -1
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/file/save.py +8 -1
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/nested/ninsert.py +3 -6
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/nested/nmerge.py +1 -2
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/__init__.py +6 -0
- lionagi-0.16.2/lionagi/ln/_json_dump.py +348 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/models/note.py +8 -4
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/ReAct/utils.py +1 -2
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/brainstorm/brainstorm.py +10 -10
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/action/function_calling.py +1 -4
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/generic/element.py +6 -72
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/generic/log.py +2 -2
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/graph/graph.py +1 -2
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/graph/node.py +2 -4
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/instruction.py +1 -2
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/manager.py +1 -2
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/message.py +9 -5
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/endpoint.py +7 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/providers/claude_code_.py +7 -3
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/resilience.py +1 -2
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/session/branch.py +1 -101
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/session/session.py +9 -14
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/utils.py +2 -1
- lionagi-0.16.2/lionagi/version.py +1 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/pyproject.toml +3 -4
- {lionagi-0.16.0 → lionagi-0.16.2}/uv.lock +7 -9
- lionagi-0.16.0/lionagi/libs/file/params.py +0 -175
- lionagi-0.16.0/lionagi/libs/token_transform/base.py +0 -54
- lionagi-0.16.0/lionagi/libs/token_transform/llmlingua.py +0 -1
- lionagi-0.16.0/lionagi/libs/token_transform/perplexity.py +0 -450
- lionagi-0.16.0/lionagi/libs/token_transform/symbolic_compress_context.py +0 -152
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang.py +0 -9
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/base.py +0 -128
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/resources/frameworks/abstract_algebra.toml +0 -11
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/resources/frameworks/category_theory.toml +0 -11
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/resources/frameworks/complex_analysis.toml +0 -11
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/resources/frameworks/framework_options.json +0 -52
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/resources/frameworks/group_theory.toml +0 -11
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/resources/frameworks/math_logic.toml +0 -11
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/resources/frameworks/reflective_patterns.toml +0 -11
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/resources/frameworks/set_theory.toml +0 -11
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/resources/frameworks/topology_fundamentals.toml +0 -11
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/resources/mapping/lion_emoji_mapping.toml +0 -61
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/resources/mapping/python_math_mapping.toml +0 -41
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/resources/mapping/rust_chinese_mapping.toml +0 -60
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/resources/utility/base_synthlang_system_prompt.toml +0 -11
- lionagi-0.16.0/lionagi/libs/token_transform/synthlang_/translate_to_synthlang.py +0 -140
- lionagi-0.16.0/lionagi/libs/token_transform/types.py +0 -15
- lionagi-0.16.0/lionagi/ln/_json_dump.py +0 -75
- lionagi-0.16.0/lionagi/operations/translate/__init__.py +0 -0
- lionagi-0.16.0/lionagi/operations/translate/translate.py +0 -47
- lionagi-0.16.0/lionagi/service/third_party/__init__.py +0 -0
- lionagi-0.16.0/lionagi/tools/memory/tools.py +0 -497
- lionagi-0.16.0/lionagi/version.py +0 -1
- lionagi-0.16.0/scripts/concat.py +0 -95
- lionagi-0.16.0/scripts/config.py +0 -18
- {lionagi-0.16.0 → lionagi-0.16.2}/.coveragerc +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/.env.example +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/.github/FUNDING.yml +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/.github/dependabot.yml +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/.github/workflows/benchmarks.yml +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/.github/workflows/ci.yml +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/.github/workflows/codeql.yml +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/.github/workflows/docs-deploy.yml +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/.github/workflows/refresh-bench-baselines.yml +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/.github/workflows/release.yml +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/.gitignore +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/.pre-commit-config.yaml +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/.python-version +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/CODE_OF_CONDUCT.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/CONTRIBUTING.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/LICENSE +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/README.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/assets/operation_builder.gif +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/benchmarks/README.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/benchmarks/baselines/.gitkeep +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/benchmarks/ci_compare.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/benchmarks/concurrency_bench.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/benchmarks/fuzzy_bench.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/cookbooks/001_branch_converse.ipynb +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/cookbooks/002_branch_interact.ipynb +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/cookbooks/003_branch_info.ipynb +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/cookbooks/004_conversation_patterns.ipynb +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/cookbooks/005_react_basics.ipynb +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/cookbooks/006_operation_graphs_claim_extraction.ipynb +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/cookbooks/007_fan_out_in.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/cookbooks/claude_proxy/README.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/cookbooks/claude_proxy/claude_code_proxy.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/cookbooks/claude_proxy/run_w_claude_code_proxy.ipynb +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/cookbooks/data/002_comedian.json +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/cookbooks/data/002_critic.json +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/cookbooks/data/006_lion_proof_ch2.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/cookbooks/using_claude_code.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/DOCUMENTATION_STANDARDS.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/advanced/custom-operations.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/advanced/error-handling.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/advanced/flow-composition.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/advanced/index.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/advanced/observability.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/advanced/performance.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/code-of-conduct.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/comparisons/langgraph.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/contributing.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/cookbook/brainstorming.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/cookbook/claim-extraction.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/cookbook/code-review-crew.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/cookbook/data-persistence.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/cookbook/hr-automation.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/cookbook/index.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/cookbook/research-synthesis.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/core-concepts/index.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/core-concepts/lionagi-philosophy.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/core-concepts/messages-and-memory.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/core-concepts/models-and-providers.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/core-concepts/operations.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/core-concepts/sessions-and-branches.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/core-concepts/tools-and-functions.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/for-ai-agents/claude-code-usage.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/for-ai-agents/index.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/for-ai-agents/orchestration-guide.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/for-ai-agents/pattern-selection.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/for-ai-agents/self-improvement.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/includes/abbreviations.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/index.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/integrations/databases.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/integrations/dspy-optimization.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/integrations/index.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/integrations/llamaindex-rag.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/integrations/llm-providers.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/integrations/mcp-servers.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/integrations/tools.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/integrations/vector-stores.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/marketing/language-interoperability-manifesto.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/migration/from-autogen.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/migration/from-crewai.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/migration/from-langchain.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/migration/index.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/patterns/conditional-flows.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/patterns/fan-out-in.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/patterns/index.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/patterns/react-with-rag.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/patterns/sequential-analysis.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/patterns/tournament-validation.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/problem-statement.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/quickstart/claude-code-integration.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/quickstart/index.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/quickstart/installation.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/quickstart/orchestration-first.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/quickstart/your-first-flow.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/reference/api/index.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/reference/changelog.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/reference/troubleshooting.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/stylesheets/extra.css +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/thinking-in-lionagi/branches-as-agents.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/thinking-in-lionagi/builder-pattern.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/thinking-in-lionagi/graphs-over-chains.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/thinking-in-lionagi/index.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/docs/thinking-in-lionagi/why-lionagi.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/_class_registry.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/_errors.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/_types.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/adapters/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/adapters/_utils.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/adapters/postgres_model_adapter.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/config.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/fields/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/fields/action.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/fields/base.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/fields/code.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/fields/file.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/fields/instruct.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/fields/reason.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/fields/research.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/concurrency.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/file/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/file/_utils.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/file/chunk.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/file/concat.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/file/concat_files.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/file/file_ops.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/file/process.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/nested/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/nested/flatten.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/nested/nfilter.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/nested/nget.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/nested/npop.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/nested/nset.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/nested/unflatten.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/nested/utils.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/parse.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/schema/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/schema/as_readable.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/schema/extract_code_block.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/schema/extract_docstring.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/schema/function_to_schema.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/schema/json_schema.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/schema/load_pydantic_model_from_schema.py +0 -0
- {lionagi-0.16.0/lionagi/libs/token_transform → lionagi-0.16.2/lionagi/libs/unstructured}/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/unstructured/pdf_to_image.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/unstructured/read_image_to_base64.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/validate/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/validate/common_field_validators.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/validate/fuzzy_match_keys.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/validate/fuzzy_validate_mapping.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/validate/string_similarity.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/validate/to_num.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/validate/validate_boolean.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/libs/validate/xml_parser.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/_async_call.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/_hash.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/_list_call.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/_to_list.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/_utils.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/concurrency/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/concurrency/_compat.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/concurrency/cancel.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/concurrency/errors.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/concurrency/patterns.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/concurrency/primitives.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/concurrency/resource_tracker.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/concurrency/task.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/concurrency/throttle.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/concurrency/utils.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/fuzzy/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/fuzzy/_extract_json.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/fuzzy/_fuzzy_json.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/fuzzy/_fuzzy_match.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/fuzzy/_fuzzy_validate.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/fuzzy/_string_similarity.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/ln/types.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/models/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/models/field_model.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/models/hashable_model.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/models/model_params.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/models/operable_model.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/models/schema_model.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/ReAct/ReAct.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/ReAct/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/_act/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/_act/act.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/brainstorm/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/brainstorm/prompt.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/builder.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/chat/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/chat/chat.py +0 -0
- {lionagi-0.16.0/lionagi/libs/unstructured → lionagi-0.16.2/lionagi/operations/communicate}/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/communicate/communicate.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/flow.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/instruct/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/instruct/instruct.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/interpret/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/interpret/interpret.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/manager.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/node.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/operate/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/operate/operate.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/parse/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/parse/parse.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/plan/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/plan/plan.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/plan/prompt.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/select/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/select/select.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/select/utils.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/types.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/operations/utils.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/_concepts.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/action/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/action/manager.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/action/tool.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/contracts.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/forms/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/forms/base.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/forms/flow.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/forms/form.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/forms/report.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/generic/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/generic/event.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/generic/pile.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/generic/processor.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/generic/progression.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/graph/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/graph/_utils.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/graph/edge.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/ids.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/mail/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/mail/exchange.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/mail/mail.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/mail/mailbox.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/mail/manager.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/mail/package.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/action_request.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/action_response.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/assistant_response.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/base.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/system.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/templates/README.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/operatives/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/operatives/operative.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/operatives/step.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/protocols/types.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/py.typed +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/api_calling.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/endpoint_config.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/header_factory.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/match_endpoint.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/providers/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/providers/anthropic_.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/providers/claude_code_cli.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/providers/exa_.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/providers/nvidia_nim_.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/providers/oai_.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/providers/ollama_.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/providers/perplexity_.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/connections/providers/types.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/hooks/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/hooks/_types.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/hooks/_utils.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/hooks/hook_event.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/hooks/hook_registry.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/imodel.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/manager.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/rate_limited_processor.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/third_party/README.md +0 -0
- {lionagi-0.16.0/lionagi/operations/communicate → lionagi-0.16.2/lionagi/service/third_party}/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/third_party/anthropic_models.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/third_party/claude_code.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/third_party/exa_models.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/third_party/openai_model_names.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/third_party/pplx_models.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/token_calculator.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/service/types.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/session/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/session/prompts.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/settings.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/tools/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/tools/base.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/tools/file/__init__.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/tools/file/reader.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/lionagi/tools/types.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/main.py +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/mkdocs.yml +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/scripts/README.md +0 -0
- {lionagi-0.16.0 → lionagi-0.16.2}/scripts/update_openai_models.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: lionagi
|
3
|
-
Version: 0.16.
|
3
|
+
Version: 0.16.2
|
4
4
|
Summary: An Intelligence Operating System.
|
5
5
|
Author-email: HaiyangLi <quantocean.li@gmail.com>
|
6
6
|
License: Apache License
|
@@ -223,17 +223,16 @@ 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
|
227
226
|
Requires-Dist: jinja2>=3.0.0
|
228
227
|
Requires-Dist: json-repair>=0.40.0
|
229
228
|
Requires-Dist: msgspec>=0.18.0
|
230
229
|
Requires-Dist: pillow>=10.0.0
|
231
230
|
Requires-Dist: psutil>=6.0.0
|
232
231
|
Requires-Dist: pydantic-settings>=2.8.0
|
233
|
-
Requires-Dist:
|
232
|
+
Requires-Dist: pydantic>=2.8.0
|
233
|
+
Requires-Dist: pydapter[pandas]>=1.1.1
|
234
234
|
Requires-Dist: python-dotenv>=1.1.0
|
235
235
|
Requires-Dist: tiktoken>=0.9.0
|
236
|
-
Requires-Dist: toml>=0.8.0
|
237
236
|
Provides-Extra: all
|
238
237
|
Requires-Dist: aiosqlite>=0.21.0; extra == 'all'
|
239
238
|
Requires-Dist: claude-code-sdk>=0.0.15; extra == 'all'
|
@@ -89,7 +89,7 @@ class LionAGIAsyncPostgresAdapter(AsyncPostgresAdapter[T]):
|
|
89
89
|
sa.Column("id", sa.String, primary_key=True),
|
90
90
|
sa.Column("content", json_type),
|
91
91
|
sa.Column("node_metadata", json_type),
|
92
|
-
sa.Column("created_at", sa.
|
92
|
+
sa.Column("created_at", sa.Float),
|
93
93
|
sa.Column("embedding", json_type, nullable=True),
|
94
94
|
).create(sync_conn, checkfirst=True)
|
95
95
|
)
|
@@ -89,7 +89,14 @@ def save_chunks(
|
|
89
89
|
random_hash_digits=random_hash_digits,
|
90
90
|
)
|
91
91
|
save_to_file(
|
92
|
-
ln.json_dumps(
|
92
|
+
ln.json_dumps(
|
93
|
+
chunk,
|
94
|
+
pretty=True,
|
95
|
+
sort_keys=True,
|
96
|
+
append_newline=True,
|
97
|
+
deterministic_sets=True,
|
98
|
+
decimal_as_float=True,
|
99
|
+
),
|
93
100
|
directory=file_path.parent,
|
94
101
|
filename=file_path.name,
|
95
102
|
verbose=verbose,
|
@@ -50,8 +50,7 @@ def ninsert(
|
|
50
50
|
if isinstance(part, int):
|
51
51
|
if isinstance(nested_structure, dict):
|
52
52
|
raise TypeError(
|
53
|
-
f"Unsupported key type: {type(part).__name__}."
|
54
|
-
"Only string keys are acceptable.",
|
53
|
+
f"Unsupported key type: {type(part).__name__}.Only string keys are acceptable.",
|
55
54
|
)
|
56
55
|
while len(nested_structure) <= part:
|
57
56
|
nested_structure.append(None)
|
@@ -67,8 +66,7 @@ def ninsert(
|
|
67
66
|
raise TypeError("Cannot use NoneType as a key in a dictionary")
|
68
67
|
if isinstance(part, (float, complex)):
|
69
68
|
raise TypeError(
|
70
|
-
f"Unsupported key type: {type(part).__name__}."
|
71
|
-
"Only string keys are acceptable.",
|
69
|
+
f"Unsupported key type: {type(part).__name__}.Only string keys are acceptable.",
|
72
70
|
)
|
73
71
|
if part not in nested_structure:
|
74
72
|
next_part = indices[i + 1]
|
@@ -77,8 +75,7 @@ def ninsert(
|
|
77
75
|
)
|
78
76
|
else:
|
79
77
|
raise TypeError(
|
80
|
-
f"Invalid container type: {type(nested_structure)} "
|
81
|
-
"encountered during insertion"
|
78
|
+
f"Invalid container type: {type(nested_structure)} encountered during insertion"
|
82
79
|
)
|
83
80
|
|
84
81
|
nested_structure = nested_structure[part]
|
@@ -51,8 +51,7 @@ def nmerge(
|
|
51
51
|
return _merge_sequences(nested_structure, sort_list, custom_sort)
|
52
52
|
else:
|
53
53
|
raise TypeError(
|
54
|
-
"All items in the input list must be of the same type, "
|
55
|
-
"either dict, list, or Iterable."
|
54
|
+
"All items in the input list must be of the same type, either dict, list, or Iterable."
|
56
55
|
)
|
57
56
|
|
58
57
|
|
@@ -4,7 +4,10 @@ from ._json_dump import (
|
|
4
4
|
DEFAULT_SERIALIZER,
|
5
5
|
DEFAULT_SERIALIZER_OPTION,
|
6
6
|
get_orjson_default,
|
7
|
+
json_dumpb,
|
7
8
|
json_dumps,
|
9
|
+
json_lines_iter,
|
10
|
+
make_options,
|
8
11
|
)
|
9
12
|
from ._list_call import lcall
|
10
13
|
from ._to_list import to_list
|
@@ -47,6 +50,9 @@ __all__ = (
|
|
47
50
|
"DEFAULT_SERIALIZER_OPTION",
|
48
51
|
"get_orjson_default",
|
49
52
|
"json_dumps",
|
53
|
+
"make_options",
|
54
|
+
"json_dumpb",
|
55
|
+
"json_lines_iter",
|
50
56
|
"lcall",
|
51
57
|
"to_list",
|
52
58
|
"acreate_path",
|
@@ -0,0 +1,348 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
import datetime as dt
|
4
|
+
import decimal
|
5
|
+
import re
|
6
|
+
from collections.abc import Callable, Iterable, Mapping
|
7
|
+
from enum import Enum
|
8
|
+
from functools import lru_cache
|
9
|
+
from pathlib import Path
|
10
|
+
from textwrap import shorten
|
11
|
+
from typing import Any
|
12
|
+
from uuid import UUID
|
13
|
+
|
14
|
+
import orjson
|
15
|
+
|
16
|
+
__all__ = [
|
17
|
+
"get_orjson_default",
|
18
|
+
"DEFAULT_SERIALIZER",
|
19
|
+
"DEFAULT_SERIALIZER_OPTION",
|
20
|
+
"make_options",
|
21
|
+
"json_dumpb",
|
22
|
+
"json_dumps",
|
23
|
+
"json_lines_iter",
|
24
|
+
]
|
25
|
+
|
26
|
+
# Types orjson already serializes natively at C/Rust speed.
|
27
|
+
# (We only route them through default() when passthrough is requested.)
|
28
|
+
_NATIVE = (dt.datetime, dt.date, dt.time, UUID)
|
29
|
+
|
30
|
+
# --------- helpers ------------------------------------------------------------
|
31
|
+
|
32
|
+
_ADDR_PAT = re.compile(r" at 0x[0-9A-Fa-f]+")
|
33
|
+
|
34
|
+
|
35
|
+
def _clip(s: str, limit: int = 2048) -> str:
|
36
|
+
return shorten(s, width=limit, placeholder=f"...(+{len(s) - limit} chars)") # type: ignore[arg-type]
|
37
|
+
|
38
|
+
|
39
|
+
def _normalize_for_sorting(x: Any) -> str:
|
40
|
+
"""Normalize repr/str to remove process-specific addresses."""
|
41
|
+
s = str(x)
|
42
|
+
return _ADDR_PAT.sub(" at 0x?", s)
|
43
|
+
|
44
|
+
|
45
|
+
def _stable_sorted_iterable(o: Iterable[Any]) -> list[Any]:
|
46
|
+
"""
|
47
|
+
Deterministic ordering for sets (including mixed types).
|
48
|
+
Key: (class name, normalized str) avoids comparisons across unlike types
|
49
|
+
and removes memory address variance in default reprs.
|
50
|
+
"""
|
51
|
+
return sorted(
|
52
|
+
o, key=lambda x: (x.__class__.__name__, _normalize_for_sorting(x))
|
53
|
+
)
|
54
|
+
|
55
|
+
|
56
|
+
def _safe_exception_payload(ex: Exception) -> dict[str, str]:
|
57
|
+
return {"type": ex.__class__.__name__, "message": str(ex)}
|
58
|
+
|
59
|
+
|
60
|
+
def _default_serializers(
|
61
|
+
deterministic_sets: bool,
|
62
|
+
decimal_as_float: bool,
|
63
|
+
enum_as_name: bool,
|
64
|
+
passthrough_datetime: bool,
|
65
|
+
) -> dict[type, Callable[[Any], Any]]:
|
66
|
+
ser: dict[type, Callable[[Any], Any]] = {
|
67
|
+
Path: str,
|
68
|
+
decimal.Decimal: (float if decimal_as_float else str),
|
69
|
+
set: (_stable_sorted_iterable if deterministic_sets else list),
|
70
|
+
frozenset: (_stable_sorted_iterable if deterministic_sets else list),
|
71
|
+
}
|
72
|
+
if enum_as_name:
|
73
|
+
ser[Enum] = lambda e: e.name
|
74
|
+
# Only needed if you also set OPT_PASSTHROUGH_DATETIME via options.
|
75
|
+
if passthrough_datetime:
|
76
|
+
ser[dt.datetime] = lambda o: o.isoformat()
|
77
|
+
return ser
|
78
|
+
|
79
|
+
|
80
|
+
# --------- default() factory --------------------------------------------------
|
81
|
+
|
82
|
+
|
83
|
+
def get_orjson_default(
|
84
|
+
*,
|
85
|
+
order: list[type] | None = None,
|
86
|
+
additional: Mapping[type, Callable[[Any], Any]] | None = None,
|
87
|
+
extend_default: bool = True,
|
88
|
+
deterministic_sets: bool = False,
|
89
|
+
decimal_as_float: bool = False,
|
90
|
+
enum_as_name: bool = False,
|
91
|
+
passthrough_datetime: bool = False,
|
92
|
+
safe_fallback: bool = False,
|
93
|
+
fallback_clip: int = 2048,
|
94
|
+
) -> Callable[[Any], Any]:
|
95
|
+
"""
|
96
|
+
Build a fast, extensible `default=` callable for orjson.dumps.
|
97
|
+
|
98
|
+
- deterministic_sets: sort set/frozenset deterministically (slower).
|
99
|
+
- decimal_as_float: serialize Decimal as float (faster/smaller; precision loss).
|
100
|
+
- enum_as_name: serialize Enum as .name (else orjson uses .value by default).
|
101
|
+
- passthrough_datetime: if True, also pass OPT_PASSTHROUGH_DATETIME in options.
|
102
|
+
- safe_fallback: if True, unknown objects never raise (for logs);
|
103
|
+
Exceptions become a tiny dict; all else becomes clipped repr(str).
|
104
|
+
|
105
|
+
'order' and 'additional' preserve your override semantics.
|
106
|
+
"""
|
107
|
+
ser = _default_serializers(
|
108
|
+
deterministic_sets=deterministic_sets,
|
109
|
+
decimal_as_float=decimal_as_float,
|
110
|
+
enum_as_name=enum_as_name,
|
111
|
+
passthrough_datetime=passthrough_datetime,
|
112
|
+
)
|
113
|
+
if additional:
|
114
|
+
ser.update(additional)
|
115
|
+
|
116
|
+
base_order: list[type] = [Path, decimal.Decimal, set, frozenset]
|
117
|
+
if enum_as_name:
|
118
|
+
base_order.insert(0, Enum)
|
119
|
+
if passthrough_datetime:
|
120
|
+
base_order.insert(0, dt.datetime)
|
121
|
+
|
122
|
+
if order:
|
123
|
+
order_ = (
|
124
|
+
(base_order + [t for t in order if t not in base_order])
|
125
|
+
if extend_default
|
126
|
+
else list(order)
|
127
|
+
)
|
128
|
+
else:
|
129
|
+
order_ = base_order.copy()
|
130
|
+
|
131
|
+
if not passthrough_datetime:
|
132
|
+
# Avoid checks for types already on the orjson native fast path.
|
133
|
+
order_ = [t for t in order_ if t not in _NATIVE]
|
134
|
+
|
135
|
+
order_tuple = tuple(order_)
|
136
|
+
cache: dict[type, Callable[[Any], Any]] = {}
|
137
|
+
|
138
|
+
def default(obj: Any) -> Any:
|
139
|
+
typ = obj.__class__
|
140
|
+
func = cache.get(typ)
|
141
|
+
if func is None:
|
142
|
+
for T in order_tuple:
|
143
|
+
if issubclass(typ, T):
|
144
|
+
f = ser.get(T)
|
145
|
+
if f:
|
146
|
+
cache[typ] = f
|
147
|
+
func = f
|
148
|
+
break
|
149
|
+
else:
|
150
|
+
# Duck-typed support for common data holders
|
151
|
+
md = getattr(obj, "model_dump", None)
|
152
|
+
if callable(md):
|
153
|
+
try:
|
154
|
+
return md()
|
155
|
+
except Exception:
|
156
|
+
pass
|
157
|
+
dd = getattr(obj, "dict", None)
|
158
|
+
if callable(dd):
|
159
|
+
try:
|
160
|
+
return dd()
|
161
|
+
except Exception:
|
162
|
+
pass
|
163
|
+
if safe_fallback:
|
164
|
+
if isinstance(obj, Exception):
|
165
|
+
return _safe_exception_payload(obj)
|
166
|
+
return _clip(repr(obj), fallback_clip)
|
167
|
+
raise TypeError(
|
168
|
+
f"Type is not JSON serializable: {typ.__name__}"
|
169
|
+
)
|
170
|
+
return func(obj)
|
171
|
+
|
172
|
+
return default
|
173
|
+
|
174
|
+
|
175
|
+
@lru_cache(maxsize=128)
|
176
|
+
def _cached_default(
|
177
|
+
deterministic_sets: bool,
|
178
|
+
decimal_as_float: bool,
|
179
|
+
enum_as_name: bool,
|
180
|
+
passthrough_datetime: bool,
|
181
|
+
safe_fallback: bool,
|
182
|
+
fallback_clip: int,
|
183
|
+
):
|
184
|
+
return get_orjson_default(
|
185
|
+
deterministic_sets=deterministic_sets,
|
186
|
+
decimal_as_float=decimal_as_float,
|
187
|
+
enum_as_name=enum_as_name,
|
188
|
+
passthrough_datetime=passthrough_datetime,
|
189
|
+
safe_fallback=safe_fallback,
|
190
|
+
fallback_clip=fallback_clip,
|
191
|
+
)
|
192
|
+
|
193
|
+
|
194
|
+
# --------- defaults & options -------------------------------------------------
|
195
|
+
|
196
|
+
# Compact, no newline, no sorting: neutral default for most use-cases.
|
197
|
+
DEFAULT_SERIALIZER_OPTION = 0
|
198
|
+
DEFAULT_SERIALIZER = get_orjson_default()
|
199
|
+
|
200
|
+
|
201
|
+
def make_options(
|
202
|
+
*,
|
203
|
+
pretty: bool = False,
|
204
|
+
sort_keys: bool = False,
|
205
|
+
naive_utc: bool = False,
|
206
|
+
utc_z: bool = False,
|
207
|
+
append_newline: bool = False,
|
208
|
+
passthrough_datetime: bool = False,
|
209
|
+
allow_non_str_keys: bool = False,
|
210
|
+
) -> int:
|
211
|
+
"""
|
212
|
+
Compose orjson 'option' bit flags succinctly.
|
213
|
+
"""
|
214
|
+
opt = 0
|
215
|
+
if append_newline:
|
216
|
+
opt |= orjson.OPT_APPEND_NEWLINE
|
217
|
+
if pretty:
|
218
|
+
opt |= orjson.OPT_INDENT_2
|
219
|
+
if sort_keys:
|
220
|
+
opt |= orjson.OPT_SORT_KEYS
|
221
|
+
if naive_utc:
|
222
|
+
opt |= orjson.OPT_NAIVE_UTC
|
223
|
+
if utc_z:
|
224
|
+
opt |= orjson.OPT_UTC_Z
|
225
|
+
if passthrough_datetime:
|
226
|
+
opt |= orjson.OPT_PASSTHROUGH_DATETIME
|
227
|
+
if allow_non_str_keys:
|
228
|
+
opt |= orjson.OPT_NON_STR_KEYS
|
229
|
+
return opt
|
230
|
+
|
231
|
+
|
232
|
+
# --------- dump helpers -------------------------------------------------------
|
233
|
+
|
234
|
+
|
235
|
+
def json_dumpb(
|
236
|
+
obj: Any,
|
237
|
+
*,
|
238
|
+
pretty: bool = False,
|
239
|
+
sort_keys: bool = False,
|
240
|
+
naive_utc: bool = False,
|
241
|
+
utc_z: bool = False,
|
242
|
+
append_newline: bool = False,
|
243
|
+
allow_non_str_keys: bool = False,
|
244
|
+
deterministic_sets: bool = False,
|
245
|
+
decimal_as_float: bool = False,
|
246
|
+
enum_as_name: bool = False,
|
247
|
+
passthrough_datetime: bool = False,
|
248
|
+
safe_fallback: bool = False,
|
249
|
+
fallback_clip: int = 2048,
|
250
|
+
default: Callable[[Any], Any] | None = None,
|
251
|
+
options: int | None = None,
|
252
|
+
) -> bytes:
|
253
|
+
"""
|
254
|
+
Serialize to **bytes** (fast path). Prefer this in hot code.
|
255
|
+
|
256
|
+
Notes:
|
257
|
+
- If you set passthrough_datetime=True, you likely also want it in options.
|
258
|
+
- safe_fallback=True is recommended for LOGGING ONLY.
|
259
|
+
"""
|
260
|
+
if default is None:
|
261
|
+
default = _cached_default(
|
262
|
+
deterministic_sets=deterministic_sets,
|
263
|
+
decimal_as_float=decimal_as_float,
|
264
|
+
enum_as_name=enum_as_name,
|
265
|
+
passthrough_datetime=passthrough_datetime,
|
266
|
+
safe_fallback=safe_fallback,
|
267
|
+
fallback_clip=fallback_clip,
|
268
|
+
)
|
269
|
+
opt = (
|
270
|
+
options
|
271
|
+
if options is not None
|
272
|
+
else make_options(
|
273
|
+
pretty=pretty,
|
274
|
+
sort_keys=sort_keys,
|
275
|
+
naive_utc=naive_utc,
|
276
|
+
utc_z=utc_z,
|
277
|
+
append_newline=append_newline,
|
278
|
+
passthrough_datetime=passthrough_datetime,
|
279
|
+
allow_non_str_keys=allow_non_str_keys,
|
280
|
+
)
|
281
|
+
)
|
282
|
+
return orjson.dumps(obj, default=default, option=opt)
|
283
|
+
|
284
|
+
|
285
|
+
def json_dumps(
|
286
|
+
obj: Any,
|
287
|
+
/,
|
288
|
+
*,
|
289
|
+
decode: bool = True,
|
290
|
+
**kwargs: Any,
|
291
|
+
) -> str | bytes:
|
292
|
+
"""
|
293
|
+
Serialize to str by default (decode=True), or bytes if decode=False.
|
294
|
+
"""
|
295
|
+
out = json_dumpb(obj, **kwargs)
|
296
|
+
return out.decode("utf-8") if decode else out
|
297
|
+
|
298
|
+
|
299
|
+
# --------- streaming for very large outputs ----------------------------------
|
300
|
+
|
301
|
+
|
302
|
+
def json_lines_iter(
|
303
|
+
it: Iterable[Any],
|
304
|
+
*,
|
305
|
+
# default() configuration for each line
|
306
|
+
deterministic_sets: bool = False,
|
307
|
+
decimal_as_float: bool = False,
|
308
|
+
enum_as_name: bool = False,
|
309
|
+
passthrough_datetime: bool = False,
|
310
|
+
safe_fallback: bool = False,
|
311
|
+
fallback_clip: int = 2048,
|
312
|
+
# options
|
313
|
+
naive_utc: bool = False,
|
314
|
+
utc_z: bool = False,
|
315
|
+
allow_non_str_keys: bool = False,
|
316
|
+
# advanced
|
317
|
+
default: Callable[[Any], Any] | None = None,
|
318
|
+
options: int | None = None,
|
319
|
+
) -> Iterable[bytes]:
|
320
|
+
"""
|
321
|
+
Stream an iterable as **NDJSON** (one JSON object per line) in **bytes**.
|
322
|
+
|
323
|
+
Always ensures a trailing newline per line (OPT_APPEND_NEWLINE).
|
324
|
+
"""
|
325
|
+
if default is None:
|
326
|
+
default = _cached_default(
|
327
|
+
deterministic_sets=deterministic_sets,
|
328
|
+
decimal_as_float=decimal_as_float,
|
329
|
+
enum_as_name=enum_as_name,
|
330
|
+
passthrough_datetime=passthrough_datetime,
|
331
|
+
safe_fallback=safe_fallback,
|
332
|
+
fallback_clip=fallback_clip,
|
333
|
+
)
|
334
|
+
if options is None:
|
335
|
+
opt = make_options(
|
336
|
+
pretty=False,
|
337
|
+
sort_keys=False,
|
338
|
+
naive_utc=naive_utc,
|
339
|
+
utc_z=utc_z,
|
340
|
+
append_newline=True, # enforce newline for NDJSON
|
341
|
+
passthrough_datetime=passthrough_datetime,
|
342
|
+
allow_non_str_keys=allow_non_str_keys,
|
343
|
+
)
|
344
|
+
else:
|
345
|
+
opt = options | orjson.OPT_APPEND_NEWLINE
|
346
|
+
|
347
|
+
for item in it:
|
348
|
+
yield orjson.dumps(item, default=default, option=opt)
|
@@ -9,10 +9,6 @@ from pydantic import BaseModel, ConfigDict, Field, field_serializer
|
|
9
9
|
from typing_extensions import override
|
10
10
|
|
11
11
|
from lionagi.libs.nested.flatten import flatten
|
12
|
-
from lionagi.libs.nested.nget import nget
|
13
|
-
from lionagi.libs.nested.ninsert import ninsert
|
14
|
-
from lionagi.libs.nested.npop import npop
|
15
|
-
from lionagi.libs.nested.nset import nset
|
16
12
|
from lionagi.utils import UNDEFINED, copy, to_list
|
17
13
|
|
18
14
|
IndiceType: TypeAlias = str | list[str | int]
|
@@ -120,6 +116,8 @@ class Note(BaseModel):
|
|
120
116
|
Raises:
|
121
117
|
KeyError: If the path is not found and no default value is provided.
|
122
118
|
"""
|
119
|
+
from lionagi.libs.nested.npop import npop
|
120
|
+
|
123
121
|
indices = to_list(indices, flatten=True, dropna=True)
|
124
122
|
return npop(self.content, indices, default)
|
125
123
|
|
@@ -130,6 +128,8 @@ class Note(BaseModel):
|
|
130
128
|
indices: Path where to insert
|
131
129
|
value: Value to insert
|
132
130
|
"""
|
131
|
+
from lionagi.libs.nested.ninsert import ninsert
|
132
|
+
|
133
133
|
indices = to_list(indices, flatten=True, dropna=True)
|
134
134
|
ninsert(self.content, indices, value)
|
135
135
|
|
@@ -144,6 +144,8 @@ class Note(BaseModel):
|
|
144
144
|
if self.get(indices, None) is None:
|
145
145
|
self.insert(indices, value)
|
146
146
|
else:
|
147
|
+
from lionagi.libs.nested.nset import nset
|
148
|
+
|
147
149
|
nset(self.content, indices, value)
|
148
150
|
|
149
151
|
def get(
|
@@ -170,6 +172,8 @@ class Note(BaseModel):
|
|
170
172
|
Raises:
|
171
173
|
KeyError: If the path is not found and no default value is provided.
|
172
174
|
"""
|
175
|
+
from lionagi.libs.nested.nget import nget
|
176
|
+
|
173
177
|
indices = to_list(indices, flatten=True, dropna=True)
|
174
178
|
return nget(self.content, indices, default)
|
175
179
|
|
@@ -18,8 +18,7 @@ class PlannedAction(HashableModel):
|
|
18
18
|
action_type: str | None = Field(
|
19
19
|
default=None,
|
20
20
|
description=(
|
21
|
-
"The name or type of tool/action to invoke. "
|
22
|
-
"(e.g., 'search_exa', 'reader_tool')"
|
21
|
+
"The name or type of tool/action to invoke. (e.g., 'search_exa', 'reader_tool')"
|
23
22
|
),
|
24
23
|
)
|
25
24
|
description: str | None = Field(
|
@@ -309,8 +309,8 @@ async def brainstormStream(
|
|
309
309
|
)
|
310
310
|
print(f"\n-----Exploring Idea-----\n{snippet}")
|
311
311
|
new_branch = session.split(branch)
|
312
|
-
resp = await new_branch.
|
313
|
-
ins_, **(explore_kwargs or {})
|
312
|
+
resp = await new_branch.operate(
|
313
|
+
**ins_.to_dict(), **(explore_kwargs or {})
|
314
314
|
)
|
315
315
|
return InstructResponse(instruct=ins_, response=resp)
|
316
316
|
|
@@ -357,8 +357,8 @@ async def brainstormStream(
|
|
357
357
|
else i.guidance
|
358
358
|
)
|
359
359
|
print(f"\n-----Exploring Idea-----\n{snippet}")
|
360
|
-
seq_res = await branch.
|
361
|
-
i, **(explore_kwargs or {})
|
360
|
+
seq_res = await branch.operate(
|
361
|
+
**i.to_dict(), **(explore_kwargs or {})
|
362
362
|
)
|
363
363
|
ins_res = InstructResponse(
|
364
364
|
instruct=i, response=seq_res
|
@@ -389,8 +389,8 @@ async def brainstormStream(
|
|
389
389
|
|
390
390
|
async def _explore(ins_: Instruct):
|
391
391
|
child_branch = session.split(base_branch)
|
392
|
-
child_resp = await child_branch.
|
393
|
-
ins_, **(explore_kwargs or {})
|
392
|
+
child_resp = await child_branch.operate(
|
393
|
+
**ins_.to_dict(), **(explore_kwargs or {})
|
394
394
|
)
|
395
395
|
return InstructResponse(
|
396
396
|
instruct=ins_, response=child_resp
|
@@ -453,8 +453,8 @@ async def brainstormStream(
|
|
453
453
|
f"\n-----Exploring Idea (sequential in chunk)-----\n{snippet}"
|
454
454
|
)
|
455
455
|
|
456
|
-
seq_resp = await local_branch.
|
457
|
-
ins_, **(explore_kwargs or {})
|
456
|
+
seq_resp = await local_branch.operate(
|
457
|
+
**ins_.to_dict(), **(explore_kwargs or {})
|
458
458
|
)
|
459
459
|
chunk_results.append(
|
460
460
|
InstructResponse(
|
@@ -468,8 +468,8 @@ async def brainstormStream(
|
|
468
468
|
all_responses = await alcall(
|
469
469
|
all_chunks,
|
470
470
|
explore_chunk_sequentially,
|
471
|
-
|
472
|
-
|
471
|
+
output_flatten=True,
|
472
|
+
output_dropna=True,
|
473
473
|
)
|
474
474
|
out.explore = all_responses
|
475
475
|
|
@@ -130,10 +130,7 @@ class FunctionCalling(Event):
|
|
130
130
|
Returns:
|
131
131
|
A string containing the class name and key attributes.
|
132
132
|
"""
|
133
|
-
return (
|
134
|
-
f"FunctionCalling(function={self.func_tool.function}, "
|
135
|
-
f"arguments={self.arguments})"
|
136
|
-
)
|
133
|
+
return f"FunctionCalling(function={self.func_tool.function}, arguments={self.arguments})"
|
137
134
|
|
138
135
|
def to_dict(self) -> dict[str, Any]:
|
139
136
|
"""Convert instance to dictionary.
|