cocoindex 0.2.8__tar.gz → 0.2.9__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.
- {cocoindex-0.2.8 → cocoindex-0.2.9}/Cargo.lock +2 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/Cargo.toml +2 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/PKG-INFO +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/THIRD_PARTY_NOTICES.html +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/amazon_s3_embedding/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/azure_blob_embedding/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/code_embedding/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/custom_output_files/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/docs_to_knowledge_graph/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/face_recognition/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/fastapi_server_docker/requirements.txt +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/gdrive_text_embedding/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/live_updates/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/manuals_llm_extraction/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/multi_format_indexing/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/paper_metadata/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/patient_intake_extraction/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/pdf_embedding/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/postgres_source/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/text_embedding/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/text_embedding_qdrant/pyproject.toml +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/setting.py +1 -2
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/base/value.rs +32 -13
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/builder/analyzed_flow.rs +3 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/builder/analyzer.rs +11 -10
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/execution/source_indexer.rs +2 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/lib_context.rs +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/llm/anthropic.rs +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/llm/gemini.rs +2 -2
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/factory_bases.rs +15 -11
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/functions/extract_by_llm.rs +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/functions/parse_json.rs +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/sources/amazon_s3.rs +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/sources/postgres.rs +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/targets/qdrant.rs +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/service/flows.rs +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/setup/auth_registry.rs +1 -1
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/setup/driver.rs +2 -2
- cocoindex-0.2.9/src/utils/deser.rs +25 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/utils/mod.rs +1 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/.cargo/config.toml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/.env.lib_debug +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/.github/ISSUE_TEMPLATE//360/237/220/233-bug-report.md" +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/.github/ISSUE_TEMPLATE//360/237/222/241-feature-request.md" +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/.github/scripts/update_version.sh +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/.github/workflows/CI.yml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/.github/workflows/_docs_release.yml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/.github/workflows/_test.yml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/.github/workflows/docs_release.yml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/.github/workflows/docs_test.yml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/.github/workflows/format.yml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/.github/workflows/release.yml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/.gitignore +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/.pre-commit-config.yaml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/CODE_OF_CONDUCT.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/CONTRIBUTING.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/LICENSE +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/about.hbs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/about.toml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/dev/neo4j.yaml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/dev/postgres.yaml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/.gitignore +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/about/community.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/ai/llm.mdx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/contributing/guide.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/contributing/new_built_in_target.mdx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/contributing/setup_dev_environment.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/core/basics.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/core/cli.mdx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/core/data_example.svg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/core/data_types.mdx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/core/flow_def.mdx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/core/flow_example.svg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/core/flow_methods.mdx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/core/settings.mdx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/custom_ops/custom_functions.mdx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/custom_ops/custom_targets.mdx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/examples/examples/academic_papers_index.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/examples/examples/codebase_index.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/examples/examples/custom_targets.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/examples/examples/docs_to_knowledge_graph.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/examples/examples/document_ai.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/examples/examples/image_search.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/examples/examples/manual_extraction.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/examples/examples/multi_format_index.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/examples/examples/patient_form_extraction.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/examples/examples/photo_search.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/examples/examples/postgres_source.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/examples/examples/product_recommendation.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/examples/examples/simple_vector_index.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/examples/index.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/getting_started/installation.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/getting_started/markdown_files.zip +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/getting_started/overview.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/getting_started/quickstart.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/ops/functions.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/ops/sources.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/ops/targets.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/query.mdx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/tutorials/live_updates.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docs/tutorials/manage_flow_dynamically.mdx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/docusaurus.config.ts +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/package.json +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/sidebars.ts +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/src/components/GitHubButton/index.tsx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/src/css/custom.css +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/src/theme/DocCard/index.tsx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/src/theme/DocCard/styles.module.css +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/src/theme/DocCardList/index.tsx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/src/theme/DocCardList/styles.module.css +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/src/theme/Root.js +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/.nojekyll +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/docusaurus.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/academic_papers_index/abstract_chunks.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/academic_papers_index/basic_info.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/academic_papers_index/chunk_embedding.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/academic_papers_index/cover.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/academic_papers_index/first_page.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/academic_papers_index/flow.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/academic_papers_index/metadata.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/codebase_index/chunk.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/codebase_index/cover.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/codebase_index/flow.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/custom_targets/convert.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/custom_targets/cover.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/docs_to_knowledge_graph/cover.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/docs_to_knowledge_graph/dedupe.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/docs_to_knowledge_graph/export_document.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/docs_to_knowledge_graph/export_relationship.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/docs_to_knowledge_graph/extract_relationship.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/docs_to_knowledge_graph/flow.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/docs_to_knowledge_graph/relationship.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/docs_to_knowledge_graph/summary.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/document_ai/cover.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/document_ai/document_ai.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/document_ai/processor.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/image_search/cover.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/image_search/embedding.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/image_search/flow.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/image_search/multi_modal_architecture.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/image_search/result.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/manual_extraction/cover.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/manual_extraction/extraction.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/manual_extraction/flow.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/manual_extraction/summary.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/multi_format_index/colpali_architecture.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/multi_format_index/cover.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/multi_format_index/embed.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/multi_format_index/flow.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/multi_format_index/pages.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/patient_form_extraction/cover.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/patient_form_extraction/extraction.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/patient_form_extraction/fields.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/patient_form_extraction/flow.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/patient_form_extraction/tomarkdown.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/photo_search/cover.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/photo_search/extraction.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/photo_search/flow.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/postgres_source/collector.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/postgres_source/cover.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/postgres_source/description.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/postgres_source/embed.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/postgres_source/flow.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/postgres_source/lineage.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/postgres_source/price.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/postgres_source/source.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/product_recommendation/cover.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/product_recommendation/dedupe.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/product_recommendation/export_all.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/product_recommendation/export_product.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/product_recommendation/export_taxonomy.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/product_recommendation/extract_product.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/product_recommendation/extract_taxonomy.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/product_recommendation/neo4j.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/product_recommendation/parse_json.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/product_recommendation/taxonomy.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/simple_vector_index/chunk.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/simple_vector_index/cover.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/simple_vector_index/embed.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/examples/simple_vector_index/flow.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/favicon.ico +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/icon.svg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/img/incremental-etl.gif +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/static/robots.txt +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/tsconfig.json +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/docs/yarn.lock +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/amazon_s3_embedding/.env.example +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/amazon_s3_embedding/.gitignore +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/amazon_s3_embedding/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/amazon_s3_embedding/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/azure_blob_embedding/.env.example +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/azure_blob_embedding/.gitignore +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/azure_blob_embedding/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/azure_blob_embedding/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/code_embedding/.env +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/code_embedding/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/code_embedding/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/custom_output_files/.env +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/custom_output_files/.gitignore +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/custom_output_files/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/custom_output_files/data/bizarre_animals.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/custom_output_files/data/chunk_norris.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/custom_output_files/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/docs_to_knowledge_graph/.env +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/docs_to_knowledge_graph/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/docs_to_knowledge_graph/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/face_recognition/.env +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/face_recognition/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/face_recognition/images/Carter_welcomes_Reagan.jpg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/face_recognition/images/Solvay_conference_1927.jpg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/face_recognition/images/Steve_Jobs_and_Bill_Gates_(522695099).jpg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/face_recognition/images/einplanck3.jpg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/face_recognition/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/fastapi_server_docker/.dockerignore +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/fastapi_server_docker/.env +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/fastapi_server_docker/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/fastapi_server_docker/compose.yaml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/fastapi_server_docker/dockerfile +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/fastapi_server_docker/files/1810.04805v2.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/fastapi_server_docker/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/gdrive_text_embedding/.env.example +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/gdrive_text_embedding/.gitignore +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/gdrive_text_embedding/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/gdrive_text_embedding/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/.env +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/colpali_main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/frontend/.gitignore +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/frontend/index.html +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/frontend/package-lock.json +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/frontend/package.json +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/frontend/src/App.jsx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/frontend/src/main.jsx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/frontend/src/style.css +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/frontend/vite.config.js +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/img/cat1.jpeg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/img/dog1.jpeg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/img/elephant1.jpg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/img/giraffe.jpg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/image_search/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/live_updates/.env +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/live_updates/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/live_updates/data/bizarre_animals.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/live_updates/data/chunk_norris.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/live_updates/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/manuals_llm_extraction/.env +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/manuals_llm_extraction/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/manuals_llm_extraction/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/manuals_llm_extraction/manuals/array.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/manuals_llm_extraction/manuals/base64.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/manuals_llm_extraction/manuals/copy.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/manuals_llm_extraction/manuals/glob.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/multi_format_indexing/.env +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/multi_format_indexing/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/multi_format_indexing/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/multi_format_indexing/source_files/1706.03762v7.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/multi_format_indexing/source_files/1810.04805v2.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/multi_format_indexing/source_files/2502.06786v3.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/multi_format_indexing/source_files/healthcare_industry_test_p101.jpg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/multi_format_indexing/source_files/healthcare_industry_test_p86.jpg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/multi_format_indexing/source_files/healthcare_industry_test_p9.jpg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/multi_format_indexing/source_files/restaurant_brands_international_2023.jpg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/multi_format_indexing/source_files/sweetgreen_2023.jpg +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/paper_metadata/.env.example +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/paper_metadata/.gitignore +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/paper_metadata/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/paper_metadata/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/paper_metadata/papers/1706.03762v7.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/paper_metadata/papers/1810.04805v2.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/paper_metadata/papers/2502.06786v3.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/paper_metadata/papers/2502.20346v1.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/patient_intake_extraction/.env.example +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/patient_intake_extraction/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/patient_intake_extraction/data/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_David_Artificial.docx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_Emily_Artificial.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_Joe_Artificial.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_From_Jane_Artificial.docx +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/patient_intake_extraction/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/pdf_embedding/.env +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/pdf_embedding/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/pdf_embedding/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/pdf_embedding/pdf_files/1706.03762v7.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/pdf_embedding/pdf_files/1810.04805v2.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/pdf_embedding/pdf_files/rfc8259.pdf +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/postgres_source/.env +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/postgres_source/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/postgres_source/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/postgres_source/prepare_source_data.sql +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/.env.example +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/.gitignore +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/img/cocoinsight.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/img/neo4j.png +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/products/p1.json +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/products/p2.json +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/products/p3.json +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/products/p4.json +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/products/p5.json +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/products/p6.json +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/products/p7.json +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/products/p8.json +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/product_recommendation/products/p9.json +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/text_embedding/.env +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/text_embedding/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/text_embedding/Text_Embedding.ipynb +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/text_embedding/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/text_embedding/markdown_files/1706.03762v7.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/text_embedding/markdown_files/1810.04805v2.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/text_embedding/markdown_files/rfc8259.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/text_embedding_qdrant/.env +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/text_embedding_qdrant/README.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/text_embedding_qdrant/main.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/examples/text_embedding_qdrant/markdown_files/rfc8259.md +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/pyproject.toml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/__init__.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/auth_registry.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/cli.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/convert.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/flow.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/functions.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/index.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/lib.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/llm.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/op.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/py.typed +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/runtime.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/setup.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/sources.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/subprocess_exec.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/targets.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/tests/__init__.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/tests/test_convert.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/tests/test_optional_database.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/tests/test_transform_flow.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/tests/test_typing.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/tests/test_validation.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/typing.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/user_app_loader.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/utils.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/python/cocoindex/validation.py +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/ruff.toml +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/base/duration.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/base/field_attrs.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/base/json_schema.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/base/mod.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/base/schema.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/base/spec.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/builder/exec_ctx.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/builder/flow_builder.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/builder/mod.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/builder/plan.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/execution/db_tracking.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/execution/db_tracking_setup.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/execution/dumper.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/execution/evaluator.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/execution/indexing_status.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/execution/live_updater.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/execution/memoization.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/execution/mod.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/execution/row_indexer.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/execution/stats.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/lib.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/llm/litellm.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/llm/mod.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/llm/ollama.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/llm/openai.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/llm/openrouter.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/llm/vllm.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/llm/voyage.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/functions/embed_text.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/functions/mod.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/functions/split_recursively.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/functions/test_utils.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/interface.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/mod.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/py_factory.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/registration.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/registry.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/sdk.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/shared/mod.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/shared/postgres.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/sources/azure_blob.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/sources/google_drive.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/sources/local_file.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/sources/mod.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/sources/shared/mod.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/sources/shared/pattern_matcher.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/targets/kuzu.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/targets/mod.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/targets/neo4j.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/targets/postgres.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/targets/shared/mod.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/targets/shared/property_graph.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/ops/targets/shared/table_columns.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/prelude.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/py/convert.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/py/mod.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/server.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/service/error.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/service/mod.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/settings.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/setup/components.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/setup/db_metadata.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/setup/flow_features.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/setup/mod.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/setup/states.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/utils/concur_control.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/utils/db.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/utils/fingerprint.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/utils/immutable.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/utils/retryable.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/utils/str_sanitize.rs +0 -0
- {cocoindex-0.2.8 → cocoindex-0.2.9}/src/utils/yaml_ser.rs +0 -0
@@ -1283,7 +1283,7 @@ dependencies = [
|
|
1283
1283
|
|
1284
1284
|
[[package]]
|
1285
1285
|
name = "cocoindex"
|
1286
|
-
version = "0.2.
|
1286
|
+
version = "0.2.9"
|
1287
1287
|
dependencies = [
|
1288
1288
|
"anyhow",
|
1289
1289
|
"async-openai",
|
@@ -1337,6 +1337,7 @@ dependencies = [
|
|
1337
1337
|
"schemars 0.8.22",
|
1338
1338
|
"serde",
|
1339
1339
|
"serde_json",
|
1340
|
+
"serde_path_to_error",
|
1340
1341
|
"serde_with",
|
1341
1342
|
"sqlx",
|
1342
1343
|
"time",
|
@@ -2,7 +2,7 @@
|
|
2
2
|
name = "cocoindex"
|
3
3
|
# Version used for local development is always higher than others to take precedence.
|
4
4
|
# Will be overridden for specific release versions.
|
5
|
-
version = "0.2.
|
5
|
+
version = "0.2.9"
|
6
6
|
edition = "2024"
|
7
7
|
rust-version = "1.88"
|
8
8
|
license = "Apache-2.0"
|
@@ -145,3 +145,4 @@ azure_storage_blobs = { version = "0.21.0", default-features = false, features =
|
|
145
145
|
"enable_reqwest_rustls",
|
146
146
|
"hmac_rust",
|
147
147
|
] }
|
148
|
+
serde_path_to_error = "0.1.17"
|
@@ -2428,7 +2428,7 @@ Software.
|
|
2428
2428
|
<h3 id="Apache-2.0">Apache License 2.0</h3>
|
2429
2429
|
<h4>Used by:</h4>
|
2430
2430
|
<ul class="license-used-by">
|
2431
|
-
<li><a href=" https://crates.io/crates/cocoindex ">cocoindex 0.2.
|
2431
|
+
<li><a href=" https://crates.io/crates/cocoindex ">cocoindex 0.2.9</a></li>
|
2432
2432
|
<li><a href=" https://github.com/awesomized/crc-fast-rust ">crc-fast 1.3.0</a></li>
|
2433
2433
|
<li><a href=" https://github.com/qdrant/rust-client ">qdrant-client 1.15.0</a></li>
|
2434
2434
|
</ul>
|
@@ -4,7 +4,7 @@ version = "0.1.0"
|
|
4
4
|
description = "Simple example for cocoindex: build embedding index based on Amazon S3 files."
|
5
5
|
requires-python = ">=3.11"
|
6
6
|
dependencies = [
|
7
|
-
"cocoindex[embeddings]>=0.2.
|
7
|
+
"cocoindex[embeddings]>=0.2.8",
|
8
8
|
"python-dotenv>=1.0.1",
|
9
9
|
"psycopg[binary,pool]",
|
10
10
|
]
|
@@ -4,7 +4,7 @@ version = "0.1.0"
|
|
4
4
|
description = "Simple example for cocoindex: build embedding index based on Azure Blob Storage files."
|
5
5
|
requires-python = ">=3.11"
|
6
6
|
dependencies = [
|
7
|
-
"cocoindex[embeddings]>=0.2.
|
7
|
+
"cocoindex[embeddings]>=0.2.8",
|
8
8
|
"python-dotenv>=1.0.1",
|
9
9
|
"psycopg[binary,pool]",
|
10
10
|
]
|
@@ -4,7 +4,7 @@ version = "0.1.0"
|
|
4
4
|
description = "Simple example for cocoindex: build embedding index based on source code."
|
5
5
|
requires-python = ">=3.11"
|
6
6
|
dependencies = [
|
7
|
-
"cocoindex[embeddings]>=0.2.
|
7
|
+
"cocoindex[embeddings]>=0.2.8",
|
8
8
|
"python-dotenv>=1.0.1",
|
9
9
|
"pgvector>=0.4.1",
|
10
10
|
"psycopg[binary,pool]",
|
@@ -3,7 +3,7 @@ name = "custom-output-files"
|
|
3
3
|
version = "0.1.0"
|
4
4
|
description = "Simple example for cocoindex: convert markdown files to HTML files and save them to a local directory."
|
5
5
|
requires-python = ">=3.11"
|
6
|
-
dependencies = ["cocoindex>=0.2.
|
6
|
+
dependencies = ["cocoindex>=0.2.8", "markdown-it-py[linkify,plugins]"]
|
7
7
|
|
8
8
|
[tool.setuptools]
|
9
9
|
packages = []
|
@@ -3,7 +3,7 @@ name = "manuals-to-kg"
|
|
3
3
|
version = "0.1.0"
|
4
4
|
description = "Simple example for cocoindex: extract triples from files and build knowledge graph."
|
5
5
|
requires-python = ">=3.11"
|
6
|
-
dependencies = ["cocoindex>=0.2.
|
6
|
+
dependencies = ["cocoindex>=0.2.8"]
|
7
7
|
|
8
8
|
[tool.setuptools]
|
9
9
|
packages = []
|
@@ -4,7 +4,7 @@ version = "0.1.0"
|
|
4
4
|
description = "Simple example for cocoindex: build embedding index based on Google Drive files."
|
5
5
|
requires-python = ">=3.11"
|
6
6
|
dependencies = [
|
7
|
-
"cocoindex[embeddings]>=0.2.
|
7
|
+
"cocoindex[embeddings]>=0.2.8",
|
8
8
|
"python-dotenv>=1.0.1",
|
9
9
|
"psycopg[binary,pool]",
|
10
10
|
]
|
@@ -4,7 +4,7 @@ version = "0.1.0"
|
|
4
4
|
description = "Image search examples for cocoindex: CLIP and ColPali-based embedding."
|
5
5
|
requires-python = ">=3.11"
|
6
6
|
dependencies = [
|
7
|
-
"cocoindex[colpali]>=0.2.
|
7
|
+
"cocoindex[colpali]>=0.2.8",
|
8
8
|
"python-dotenv>=1.0.1",
|
9
9
|
"fastapi>=0.100.0",
|
10
10
|
"torch>=2.0.0",
|
@@ -3,7 +3,7 @@ name = "live-updates-example"
|
|
3
3
|
version = "0.1.0"
|
4
4
|
description = "Simple example for cocoindex: perform live updates based on local markdown files."
|
5
5
|
requires-python = ">=3.11"
|
6
|
-
dependencies = ["cocoindex>=0.2.
|
6
|
+
dependencies = ["cocoindex>=0.2.8", "python-dotenv>=1.1.0"]
|
7
7
|
|
8
8
|
[tools.setuptools]
|
9
9
|
packages = []
|
@@ -3,7 +3,7 @@ name = "manuals-llm-extraction"
|
|
3
3
|
version = "0.1.0"
|
4
4
|
description = "Simple example for cocoindex: extract structured information from a Markdown file using LLM."
|
5
5
|
requires-python = ">=3.11"
|
6
|
-
dependencies = ["cocoindex>=0.2.
|
6
|
+
dependencies = ["cocoindex>=0.2.8", "marker-pdf>=1.8.5"]
|
7
7
|
|
8
8
|
[tool.setuptools]
|
9
9
|
packages = []
|
@@ -4,7 +4,7 @@ version = "0.1.0"
|
|
4
4
|
description = "Simple example for cocoindex: build embedding index based on local PDF files."
|
5
5
|
requires-python = ">=3.11"
|
6
6
|
dependencies = [
|
7
|
-
"cocoindex[colpali]>=0.2.
|
7
|
+
"cocoindex[colpali]>=0.2.8",
|
8
8
|
"python-dotenv>=1.0.1",
|
9
9
|
"pdf2image>=1.17.0",
|
10
10
|
"qdrant-client>=1.15.0",
|
@@ -4,7 +4,7 @@ version = "0.1.0"
|
|
4
4
|
description = "Simple example for cocoindex: build embedding index based on local PDF files."
|
5
5
|
requires-python = ">=3.11"
|
6
6
|
dependencies = [
|
7
|
-
"cocoindex[embeddings]>=0.2.
|
7
|
+
"cocoindex[embeddings]>=0.2.8",
|
8
8
|
"python-dotenv>=1.0.1",
|
9
9
|
"marker-pdf>=1.8.5",
|
10
10
|
"psycopg[binary,pool]",
|
@@ -4,7 +4,7 @@ version = "0.1.0"
|
|
4
4
|
description = "Demonstrate how to use Postgres tables as the source for CocoIndex."
|
5
5
|
requires-python = ">=3.11"
|
6
6
|
dependencies = [
|
7
|
-
"cocoindex[embeddings]>=0.2.
|
7
|
+
"cocoindex[embeddings]>=0.2.8",
|
8
8
|
"python-dotenv>=1.0.1",
|
9
9
|
"pgvector>=0.4.1",
|
10
10
|
"psycopg[binary,pool]",
|
@@ -3,7 +3,7 @@ name = "cocoindex-ecommerce-taxonomy"
|
|
3
3
|
version = "0.1.0"
|
4
4
|
description = "Simple example for CocoIndex: extract taxonomy from e-commerce products and build knowledge graph."
|
5
5
|
requires-python = ">=3.11"
|
6
|
-
dependencies = ["cocoindex>=0.2.
|
6
|
+
dependencies = ["cocoindex>=0.2.8", "jinja2>=3.1.6"]
|
7
7
|
|
8
8
|
[tool.setuptools]
|
9
9
|
packages = []
|
@@ -4,7 +4,7 @@ version = "0.1.0"
|
|
4
4
|
description = "Simple example for cocoindex: build embedding index based on local text files."
|
5
5
|
requires-python = ">=3.11"
|
6
6
|
dependencies = [
|
7
|
-
"cocoindex[embeddings]>=0.2.
|
7
|
+
"cocoindex[embeddings]>=0.2.8",
|
8
8
|
"python-dotenv>=1.0.1",
|
9
9
|
"pgvector>=0.4.1",
|
10
10
|
"psycopg[binary,pool]",
|
@@ -4,7 +4,7 @@ version = "0.1.0"
|
|
4
4
|
description = "Simple example for cocoindex: build embedding index based on local text files."
|
5
5
|
requires-python = ">=3.11"
|
6
6
|
dependencies = [
|
7
|
-
"cocoindex[embeddings]>=0.2.
|
7
|
+
"cocoindex[embeddings]>=0.2.8",
|
8
8
|
"python-dotenv>=1.0.1",
|
9
9
|
"qdrant-client>=1.6.0",
|
10
10
|
]
|
@@ -94,8 +94,7 @@ class Settings:
|
|
94
94
|
|
95
95
|
database_url = os.getenv("COCOINDEX_DATABASE_URL")
|
96
96
|
if database_url is not None:
|
97
|
-
db_kwargs: dict[str, Any] =
|
98
|
-
_load_field(db_kwargs, "url", "COCOINDEX_DATABASE_URL", required=True)
|
97
|
+
db_kwargs: dict[str, Any] = {"url": database_url}
|
99
98
|
_load_field(db_kwargs, "user", "COCOINDEX_DATABASE_USER")
|
100
99
|
_load_field(db_kwargs, "password", "COCOINDEX_DATABASE_PASSWORD")
|
101
100
|
_load_field(
|
@@ -1,13 +1,12 @@
|
|
1
|
+
use crate::prelude::*;
|
2
|
+
|
1
3
|
use super::schema::*;
|
2
4
|
use crate::base::duration::parse_duration;
|
3
|
-
use crate::{api_bail, api_error};
|
4
|
-
use anyhow::Result;
|
5
5
|
use base64::prelude::*;
|
6
6
|
use bytes::Bytes;
|
7
7
|
use chrono::Offset;
|
8
8
|
use log::warn;
|
9
9
|
use serde::{
|
10
|
-
Deserialize, Serialize,
|
11
10
|
de::{SeqAccess, Visitor},
|
12
11
|
ser::{SerializeMap, SerializeSeq, SerializeTuple},
|
13
12
|
};
|
@@ -1014,7 +1013,8 @@ where
|
|
1014
1013
|
Ok(Self {
|
1015
1014
|
fields: fields
|
1016
1015
|
.map(|(s, v)| {
|
1017
|
-
let value = Value::<VS>::from_json(v, &s.value_type.typ)
|
1016
|
+
let value = Value::<VS>::from_json(v, &s.value_type.typ)
|
1017
|
+
.with_context(|| format!("while deserializing field `{}`", s.name))?;
|
1018
1018
|
if value.is_null() && !s.value_type.nullable {
|
1019
1019
|
api_bail!("expected non-null value for `{}`", s.name);
|
1020
1020
|
}
|
@@ -1033,9 +1033,10 @@ where
|
|
1033
1033
|
fields: fields_schema
|
1034
1034
|
.map(|field| {
|
1035
1035
|
let value = match values.get_mut(&field.name) {
|
1036
|
-
Some(v) =>
|
1037
|
-
|
1038
|
-
|
1036
|
+
Some(v) => Value::<VS>::from_json(std::mem::take(v), &field.value_type.typ)
|
1037
|
+
.with_context(|| {
|
1038
|
+
format!("while deserializing field `{}`", field.name)
|
1039
|
+
})?,
|
1039
1040
|
None => Value::<VS>::default(),
|
1040
1041
|
};
|
1041
1042
|
if value.is_null() && !field.value_type.nullable {
|
@@ -1137,7 +1138,7 @@ impl BasicValue {
|
|
1137
1138
|
v.as_f64()
|
1138
1139
|
.ok_or_else(|| anyhow::anyhow!("invalid fp64 value {v}"))?,
|
1139
1140
|
),
|
1140
|
-
(v, BasicValueType::Range) => BasicValue::Range(
|
1141
|
+
(v, BasicValueType::Range) => BasicValue::Range(utils::deser::from_json_value(v)?),
|
1141
1142
|
(serde_json::Value::String(v), BasicValueType::Uuid) => BasicValue::Uuid(v.parse()?),
|
1142
1143
|
(serde_json::Value::String(v), BasicValueType::Date) => BasicValue::Date(v.parse()?),
|
1143
1144
|
(serde_json::Value::String(v), BasicValueType::Time) => BasicValue::Time(v.parse()?),
|
@@ -1170,7 +1171,11 @@ impl BasicValue {
|
|
1170
1171
|
) => {
|
1171
1172
|
let vec = v
|
1172
1173
|
.into_iter()
|
1173
|
-
.
|
1174
|
+
.enumerate()
|
1175
|
+
.map(|(i, v)| {
|
1176
|
+
BasicValue::from_json(v, element_type)
|
1177
|
+
.with_context(|| format!("while deserializing Vector element #{i}"))
|
1178
|
+
})
|
1174
1179
|
.collect::<Result<Vec<_>>>()?;
|
1175
1180
|
BasicValue::Vector(Arc::from(vec))
|
1176
1181
|
}
|
@@ -1267,7 +1272,11 @@ where
|
|
1267
1272
|
TableKind::UTable => {
|
1268
1273
|
let rows = v
|
1269
1274
|
.into_iter()
|
1270
|
-
.map(|v|
|
1275
|
+
.map(|v| {
|
1276
|
+
Ok(FieldValues::from_json(v, &s.row.fields)
|
1277
|
+
.with_context(|| format!("while deserializing UTable row"))?
|
1278
|
+
.into())
|
1279
|
+
})
|
1271
1280
|
.collect::<Result<Vec<_>>>()?;
|
1272
1281
|
Value::LTable(rows)
|
1273
1282
|
}
|
@@ -1289,10 +1298,13 @@ where
|
|
1289
1298
|
let mut field_vals_iter = v.into_iter();
|
1290
1299
|
let keys: Box<[KeyPart]> = (0..num_key_parts)
|
1291
1300
|
.map(|_| {
|
1301
|
+
let field_schema = fields_iter.next().unwrap();
|
1292
1302
|
Self::from_json(
|
1293
1303
|
field_vals_iter.next().unwrap(),
|
1294
|
-
&
|
1295
|
-
)
|
1304
|
+
&field_schema.value_type.typ,
|
1305
|
+
).with_context(|| {
|
1306
|
+
format!("while deserializing key part `{}`", field_schema.name)
|
1307
|
+
})?
|
1296
1308
|
.into_key()
|
1297
1309
|
})
|
1298
1310
|
.collect::<Result<_>>()?;
|
@@ -1328,7 +1340,14 @@ where
|
|
1328
1340
|
TableKind::LTable => {
|
1329
1341
|
let rows = v
|
1330
1342
|
.into_iter()
|
1331
|
-
.
|
1343
|
+
.enumerate()
|
1344
|
+
.map(|(i, v)| {
|
1345
|
+
Ok(FieldValues::from_json(v, &s.row.fields)
|
1346
|
+
.with_context(|| {
|
1347
|
+
format!("while deserializing LTable row #{i}")
|
1348
|
+
})?
|
1349
|
+
.into())
|
1350
|
+
})
|
1332
1351
|
.collect::<Result<Vec<_>>>()?;
|
1333
1352
|
Value::LTable(rows)
|
1334
1353
|
}
|
@@ -20,7 +20,9 @@ impl AnalyzedFlow {
|
|
20
20
|
flow_instance_ctx: Arc<FlowInstanceContext>,
|
21
21
|
) -> Result<Self> {
|
22
22
|
let (data_schema, setup_state, execution_plan_fut) =
|
23
|
-
analyzer::analyze_flow(&flow_instance, flow_instance_ctx.clone())
|
23
|
+
analyzer::analyze_flow(&flow_instance, flow_instance_ctx.clone())
|
24
|
+
.await
|
25
|
+
.with_context(|| format!("analyzing flow `{}`", flow_instance.name))?;
|
24
26
|
let execution_plan = async move {
|
25
27
|
shared_ok(Arc::new(
|
26
28
|
execution_plan_fut.await.map_err(SharedError::new)?,
|
@@ -674,7 +674,9 @@ impl AnalyzerContext {
|
|
674
674
|
let global_concurrency_controller = self.lib_ctx.global_concurrency_controller.clone();
|
675
675
|
let result_fut = async move {
|
676
676
|
trace!("Start building executor for source op `{op_name}`");
|
677
|
-
let executor = executor
|
677
|
+
let executor = executor
|
678
|
+
.await
|
679
|
+
.with_context(|| format!("Preparing for source op: {op_name}"))?;
|
678
680
|
trace!("Finished building executor for source op `{op_name}`");
|
679
681
|
Ok(AnalyzedImportOp {
|
680
682
|
executor,
|
@@ -700,10 +702,7 @@ impl AnalyzerContext {
|
|
700
702
|
ReactiveOpSpec::Transform(op) => {
|
701
703
|
let input_field_schemas =
|
702
704
|
analyze_input_fields(&op.inputs, op_scope).with_context(|| {
|
703
|
-
format!(
|
704
|
-
"Failed to analyze inputs for transform op: {}",
|
705
|
-
reactive_op.name
|
706
|
-
)
|
705
|
+
format!("Preparing inputs for transform op: {}", reactive_op.name)
|
707
706
|
})?;
|
708
707
|
let spec = serde_json::Value::Object(op.op.spec.clone());
|
709
708
|
|
@@ -725,7 +724,7 @@ impl AnalyzerContext {
|
|
725
724
|
async move {
|
726
725
|
trace!("Start building executor for transform op `{op_name}`");
|
727
726
|
let executor = executor.await.with_context(|| {
|
728
|
-
format!("
|
727
|
+
format!("Preparing for transform op: {op_name}")
|
729
728
|
})?;
|
730
729
|
let enable_cache = executor.enable_cache();
|
731
730
|
let behavior_version = executor.behavior_version();
|
@@ -784,7 +783,7 @@ impl AnalyzerContext {
|
|
784
783
|
local_field_ref,
|
785
784
|
op_scope: analyzed_op_scope_fut
|
786
785
|
.await
|
787
|
-
.with_context(|| format!("
|
786
|
+
.with_context(|| format!("Preparing for foreach op: {op_name}"))?,
|
788
787
|
name: op_name,
|
789
788
|
concurrency_controller: concur_control::ConcurrencyController::new(
|
790
789
|
&concur_control_options,
|
@@ -920,7 +919,7 @@ impl AnalyzerContext {
|
|
920
919
|
let export_context = data_coll_output
|
921
920
|
.export_context
|
922
921
|
.await
|
923
|
-
.with_context(|| format!("
|
922
|
+
.with_context(|| format!("Preparing for export op: {op_name}"))?;
|
924
923
|
trace!("Finished building executor for export op `{op_name}`");
|
925
924
|
Ok(AnalyzedExportOp {
|
926
925
|
name: op_name,
|
@@ -1006,7 +1005,8 @@ pub async fn analyze_flow(
|
|
1006
1005
|
import_ops_futs.push(
|
1007
1006
|
analyzer_ctx
|
1008
1007
|
.analyze_import_op(&root_op_scope, import_op.clone())
|
1009
|
-
.await
|
1008
|
+
.await
|
1009
|
+
.with_context(|| format!("Preparing for import op: {}", import_op.name))?,
|
1010
1010
|
);
|
1011
1011
|
}
|
1012
1012
|
let op_scope_fut = analyzer_ctx
|
@@ -1059,7 +1059,8 @@ pub async fn analyze_flow(
|
|
1059
1059
|
&mut targets_analyzed_ss,
|
1060
1060
|
&mut declarations_analyzed_ss,
|
1061
1061
|
)
|
1062
|
-
.await
|
1062
|
+
.await
|
1063
|
+
.with_context(|| format!("Analyzing export ops for target `{target_kind}`"))?,
|
1063
1064
|
);
|
1064
1065
|
analyzed_target_op_groups.push(analyzed_target_op_group);
|
1065
1066
|
}
|
@@ -382,7 +382,8 @@ impl SourceIndexingContext {
|
|
382
382
|
error!(
|
383
383
|
"{:?}",
|
384
384
|
e.context(format!(
|
385
|
-
"Error in processing row from source `{source}` with key: {key}",
|
385
|
+
"Error in processing row from flow `{flow}` source `{source}` with key: {key}",
|
386
|
+
flow = self.flow.flow_instance.name,
|
386
387
|
source = self.flow.flow_instance.import_ops[self.source_idx].name,
|
387
388
|
key = row_input.key,
|
388
389
|
))
|
@@ -250,7 +250,7 @@ impl LibContext {
|
|
250
250
|
pub fn require_persistence_ctx(&self) -> Result<&PersistenceContext> {
|
251
251
|
self.persistence_ctx
|
252
252
|
.as_ref()
|
253
|
-
.ok_or_else(|| anyhow!("Database is required for this operation. Please set COCOINDEX_DATABASE_URL environment variable
|
253
|
+
.ok_or_else(|| anyhow!("Database is required for this operation. Please set COCOINDEX_DATABASE_URL environment variable OR call `cocoindex.init()` with database settings."))
|
254
254
|
}
|
255
255
|
|
256
256
|
pub fn require_builtin_db_pool(&self) -> Result<&PgPool> {
|
@@ -138,7 +138,7 @@ impl LlmGenerationClient for Client {
|
|
138
138
|
match &mut resp_json["content"][0]["text"] {
|
139
139
|
serde_json::Value::String(s) => {
|
140
140
|
// Try strict JSON parsing first
|
141
|
-
match
|
141
|
+
match utils::deser::from_json_str::<serde_json::Value>(s) {
|
142
142
|
Ok(_) => std::mem::take(s),
|
143
143
|
Err(e) => {
|
144
144
|
// Try permissive json5 parsing as fallback
|
@@ -276,7 +276,7 @@ impl LlmGenerationClient for VertexAiClient {
|
|
276
276
|
generation_config = Some(
|
277
277
|
GenerationConfig::new()
|
278
278
|
.set_response_mime_type("application/json".to_string())
|
279
|
-
.set_response_schema(
|
279
|
+
.set_response_schema(utils::deser::from_json_value::<Schema>(schema_json)?),
|
280
280
|
);
|
281
281
|
}
|
282
282
|
|
@@ -358,7 +358,7 @@ impl LlmEmbeddingClient for VertexAiClient {
|
|
358
358
|
.next()
|
359
359
|
.and_then(|mut e| e.get_mut("embeddings").map(|v| v.take()))
|
360
360
|
.ok_or_else(|| anyhow::anyhow!("No embeddings in response"))?;
|
361
|
-
let embedding: ContentEmbedding =
|
361
|
+
let embedding: ContentEmbedding = utils::deser::from_json_value(embeddings)?;
|
362
362
|
Ok(super::LlmEmbeddingResponse {
|
363
363
|
embedding: embedding.values,
|
364
364
|
})
|
@@ -245,7 +245,8 @@ impl<T: SourceFactoryBase> SourceFactory for T {
|
|
245
245
|
EnrichedValueType,
|
246
246
|
BoxFuture<'static, Result<Box<dyn SourceExecutor>>>,
|
247
247
|
)> {
|
248
|
-
let spec: T::Spec =
|
248
|
+
let spec: T::Spec = utils::deser::from_json_value(spec)
|
249
|
+
.with_context(|| format!("Failed in parsing spec for source `{source_name}`"))?;
|
249
250
|
let output_schema = self.get_output_schema(&spec, &context).await?;
|
250
251
|
let source_name = source_name.to_string();
|
251
252
|
let executor = async move { self.build_executor(&source_name, spec, context).await };
|
@@ -323,7 +324,8 @@ impl<T: SimpleFunctionFactoryBase> SimpleFunctionFactory for T {
|
|
323
324
|
EnrichedValueType,
|
324
325
|
BoxFuture<'static, Result<Box<dyn SimpleFunctionExecutor>>>,
|
325
326
|
)> {
|
326
|
-
let spec: T::Spec =
|
327
|
+
let spec: T::Spec = utils::deser::from_json_value(spec)
|
328
|
+
.with_context(|| format!("Failed in parsing spec for function `{}`", self.name()))?;
|
327
329
|
let mut nonnull_args_idx = vec![];
|
328
330
|
let mut may_nullify_output = false;
|
329
331
|
let mut args_resolver = OpArgsResolver::new(
|
@@ -397,7 +399,7 @@ pub trait TargetFactoryBase: TargetFactory + Send + Sync + 'static {
|
|
397
399
|
/// Deserialize the setup key from a JSON value.
|
398
400
|
/// You can override this method to provide a custom deserialization logic, e.g. to perform backward compatible deserialization.
|
399
401
|
fn deserialize_setup_key(key: serde_json::Value) -> Result<Self::SetupKey> {
|
400
|
-
Ok(
|
402
|
+
Ok(utils::deser::from_json_value(key)?)
|
401
403
|
}
|
402
404
|
|
403
405
|
/// Will not be called if it's setup by user.
|
@@ -466,8 +468,10 @@ impl<T: TargetFactoryBase> TargetFactory for T {
|
|
466
468
|
.into_iter()
|
467
469
|
.map(|d| {
|
468
470
|
anyhow::Ok(TypedExportDataCollectionSpec {
|
471
|
+
spec: utils::deser::from_json_value(d.spec).with_context(|| {
|
472
|
+
format!("Failed in parsing spec for target `{}`", d.name)
|
473
|
+
})?,
|
469
474
|
name: d.name,
|
470
|
-
spec: serde_json::from_value(d.spec)?,
|
471
475
|
key_fields_schema: d.key_fields_schema,
|
472
476
|
value_fields_schema: d.value_fields_schema,
|
473
477
|
index_options: d.index_options,
|
@@ -476,7 +480,7 @@ impl<T: TargetFactoryBase> TargetFactory for T {
|
|
476
480
|
.collect::<Result<Vec<_>>>()?,
|
477
481
|
declarations
|
478
482
|
.into_iter()
|
479
|
-
.map(|d| anyhow::Ok(
|
483
|
+
.map(|d| anyhow::Ok(utils::deser::from_json_value(d)?))
|
480
484
|
.collect::<Result<Vec<_>>>()?,
|
481
485
|
context,
|
482
486
|
)
|
@@ -511,7 +515,7 @@ impl<T: TargetFactoryBase> TargetFactory for T {
|
|
511
515
|
) -> Result<Box<dyn setup::ResourceSetupChange>> {
|
512
516
|
let key: T::SetupKey = Self::deserialize_setup_key(key.clone())?;
|
513
517
|
let desired_state: Option<T::SetupState> = desired_state
|
514
|
-
.map(|v|
|
518
|
+
.map(|v| utils::deser::from_json_value(v.clone()))
|
515
519
|
.transpose()?;
|
516
520
|
let existing_states = from_json_combined_state(existing_states)?;
|
517
521
|
let setup_change = TargetFactoryBase::diff_setup_states(
|
@@ -542,8 +546,8 @@ impl<T: TargetFactoryBase> TargetFactory for T {
|
|
542
546
|
) -> Result<SetupStateCompatibility> {
|
543
547
|
let result = TargetFactoryBase::check_state_compatibility(
|
544
548
|
self,
|
545
|
-
&
|
546
|
-
&
|
549
|
+
&utils::deser::from_json_value(desired_state.clone())?,
|
550
|
+
&utils::deser::from_json_value(existing_state.clone())?,
|
547
551
|
)?;
|
548
552
|
Ok(result)
|
549
553
|
}
|
@@ -596,7 +600,7 @@ impl<T: TargetFactoryBase> TargetFactory for T {
|
|
596
600
|
.into_iter()
|
597
601
|
.map(|item| -> anyhow::Result<_> {
|
598
602
|
Ok(TypedResourceSetupChangeItem {
|
599
|
-
key:
|
603
|
+
key: utils::deser::from_json_value(item.key.clone())?,
|
600
604
|
setup_change: (item.setup_change as &dyn Any)
|
601
605
|
.downcast_ref::<T::SetupChange>()
|
602
606
|
.ok_or_else(invariance_violation)?,
|
@@ -614,7 +618,7 @@ fn from_json_combined_state<T: Debug + Clone + Serialize + DeserializeOwned>(
|
|
614
618
|
Ok(setup::CombinedState {
|
615
619
|
current: existing_states
|
616
620
|
.current
|
617
|
-
.map(|v|
|
621
|
+
.map(|v| utils::deser::from_json_value(v))
|
618
622
|
.transpose()?,
|
619
623
|
staging: existing_states
|
620
624
|
.staging
|
@@ -622,7 +626,7 @@ fn from_json_combined_state<T: Debug + Clone + Serialize + DeserializeOwned>(
|
|
622
626
|
.map(|v| {
|
623
627
|
anyhow::Ok(match v {
|
624
628
|
setup::StateChange::Upsert(v) => {
|
625
|
-
setup::StateChange::Upsert(
|
629
|
+
setup::StateChange::Upsert(utils::deser::from_json_value(v)?)
|
626
630
|
}
|
627
631
|
setup::StateChange::Delete => setup::StateChange::Delete,
|
628
632
|
})
|
@@ -113,7 +113,7 @@ impl SimpleFunctionExecutor for Executor {
|
|
113
113
|
}),
|
114
114
|
};
|
115
115
|
let res = self.client.generate(req).await?;
|
116
|
-
let json_value: serde_json::Value =
|
116
|
+
let json_value: serde_json::Value = utils::deser::from_json_str(res.text.as_str())?;
|
117
117
|
let value = self.value_extractor.extract_value(json_value)?;
|
118
118
|
Ok(value)
|
119
119
|
}
|
@@ -29,7 +29,7 @@ fn add_language(
|
|
29
29
|
}
|
30
30
|
|
31
31
|
fn parse_json(text: &str) -> Result<serde_json::Value> {
|
32
|
-
Ok(
|
32
|
+
Ok(utils::deser::from_json_str(text)?)
|
33
33
|
}
|
34
34
|
|
35
35
|
static PARSE_FN_BY_LANG: LazyLock<HashMap<UniCase<&'static str>, Arc<LanguageConfig>>> =
|
@@ -241,7 +241,7 @@ impl Executor {
|
|
241
241
|
let mut change_messages = vec![];
|
242
242
|
for message in messages.into_iter() {
|
243
243
|
if let Some(body) = message.body {
|
244
|
-
let notification: S3EventNotification =
|
244
|
+
let notification: S3EventNotification = utils::deser::from_json_str(&body)?;
|
245
245
|
let mut changes = vec![];
|
246
246
|
for record in notification.records {
|
247
247
|
let s3 = if let Some(s3) = record.s3 {
|
@@ -600,7 +600,7 @@ impl PostgresSourceExecutor {
|
|
600
600
|
}
|
601
601
|
|
602
602
|
fn parse_notification_payload(&self, notification: &PgNotification) -> Result<SourceChange> {
|
603
|
-
let mut payload: serde_json::Value =
|
603
|
+
let mut payload: serde_json::Value = utils::deser::from_json_str(notification.payload())?;
|
604
604
|
let payload = payload
|
605
605
|
.as_object_mut()
|
606
606
|
.ok_or_else(|| anyhow::anyhow!("'fields' field is not an object"))?;
|