cocoindex 0.2.8__tar.gz → 0.2.10__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.
Files changed (420) hide show
  1. {cocoindex-0.2.8 → cocoindex-0.2.10}/.pre-commit-config.yaml +1 -1
  2. {cocoindex-0.2.8 → cocoindex-0.2.10}/Cargo.lock +13 -1
  3. {cocoindex-0.2.8 → cocoindex-0.2.10}/Cargo.toml +3 -1
  4. {cocoindex-0.2.8 → cocoindex-0.2.10}/PKG-INFO +1 -1
  5. {cocoindex-0.2.8 → cocoindex-0.2.10}/THIRD_PARTY_NOTICES.html +16 -2
  6. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/core/settings.mdx +63 -30
  7. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/ops/functions.md +1 -0
  8. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/amazon_s3_embedding/pyproject.toml +1 -1
  9. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/azure_blob_embedding/pyproject.toml +1 -1
  10. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/code_embedding/pyproject.toml +1 -1
  11. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/custom_output_files/pyproject.toml +1 -1
  12. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/docs_to_knowledge_graph/pyproject.toml +1 -1
  13. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/face_recognition/pyproject.toml +1 -1
  14. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/fastapi_server_docker/requirements.txt +1 -1
  15. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/gdrive_text_embedding/pyproject.toml +1 -1
  16. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/pyproject.toml +1 -1
  17. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/live_updates/pyproject.toml +1 -1
  18. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/manuals_llm_extraction/pyproject.toml +1 -1
  19. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/multi_format_indexing/pyproject.toml +1 -1
  20. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/paper_metadata/pyproject.toml +1 -1
  21. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/patient_intake_extraction/pyproject.toml +1 -1
  22. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/pdf_embedding/pyproject.toml +1 -1
  23. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/postgres_source/pyproject.toml +1 -1
  24. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/pyproject.toml +1 -1
  25. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/text_embedding/pyproject.toml +1 -1
  26. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/text_embedding_qdrant/pyproject.toml +1 -1
  27. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/__init__.py +8 -2
  28. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/cli.py +0 -2
  29. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/flow.py +5 -9
  30. cocoindex-0.2.10/python/cocoindex/lib.py +75 -0
  31. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/setting.py +6 -16
  32. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/base/value.rs +32 -13
  33. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/builder/analyzed_flow.rs +3 -1
  34. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/builder/analyzer.rs +13 -12
  35. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/builder/flow_builder.rs +7 -3
  36. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/execution/db_tracking.rs +5 -1
  37. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/execution/db_tracking_setup.rs +1 -1
  38. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/execution/evaluator.rs +2 -1
  39. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/execution/source_indexer.rs +172 -87
  40. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/lib_context.rs +65 -27
  41. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/llm/anthropic.rs +1 -1
  42. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/llm/gemini.rs +2 -2
  43. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/factory_bases.rs +15 -11
  44. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/functions/extract_by_llm.rs +1 -1
  45. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/functions/parse_json.rs +1 -1
  46. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/functions/split_recursively.rs +7 -0
  47. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/shared/postgres.rs +1 -1
  48. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/sources/amazon_s3.rs +1 -1
  49. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/sources/postgres.rs +1 -1
  50. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/targets/qdrant.rs +1 -1
  51. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/py/convert.rs +1 -1
  52. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/py/mod.rs +67 -19
  53. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/service/error.rs +1 -1
  54. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/service/flows.rs +1 -1
  55. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/setup/auth_registry.rs +1 -1
  56. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/setup/db_metadata.rs +1 -1
  57. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/setup/driver.rs +2 -2
  58. cocoindex-0.2.10/src/utils/deser.rs +25 -0
  59. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/utils/mod.rs +1 -0
  60. cocoindex-0.2.8/python/cocoindex/lib.py +0 -32
  61. {cocoindex-0.2.8 → cocoindex-0.2.10}/.cargo/config.toml +0 -0
  62. {cocoindex-0.2.8 → cocoindex-0.2.10}/.env.lib_debug +0 -0
  63. {cocoindex-0.2.8 → cocoindex-0.2.10}/.github/ISSUE_TEMPLATE//360/237/220/233-bug-report.md" +0 -0
  64. {cocoindex-0.2.8 → cocoindex-0.2.10}/.github/ISSUE_TEMPLATE//360/237/222/241-feature-request.md" +0 -0
  65. {cocoindex-0.2.8 → cocoindex-0.2.10}/.github/scripts/update_version.sh +0 -0
  66. {cocoindex-0.2.8 → cocoindex-0.2.10}/.github/workflows/CI.yml +0 -0
  67. {cocoindex-0.2.8 → cocoindex-0.2.10}/.github/workflows/_docs_release.yml +0 -0
  68. {cocoindex-0.2.8 → cocoindex-0.2.10}/.github/workflows/_test.yml +0 -0
  69. {cocoindex-0.2.8 → cocoindex-0.2.10}/.github/workflows/docs_release.yml +0 -0
  70. {cocoindex-0.2.8 → cocoindex-0.2.10}/.github/workflows/docs_test.yml +0 -0
  71. {cocoindex-0.2.8 → cocoindex-0.2.10}/.github/workflows/format.yml +0 -0
  72. {cocoindex-0.2.8 → cocoindex-0.2.10}/.github/workflows/release.yml +0 -0
  73. {cocoindex-0.2.8 → cocoindex-0.2.10}/.gitignore +0 -0
  74. {cocoindex-0.2.8 → cocoindex-0.2.10}/CODE_OF_CONDUCT.md +0 -0
  75. {cocoindex-0.2.8 → cocoindex-0.2.10}/CONTRIBUTING.md +0 -0
  76. {cocoindex-0.2.8 → cocoindex-0.2.10}/LICENSE +0 -0
  77. {cocoindex-0.2.8 → cocoindex-0.2.10}/README.md +0 -0
  78. {cocoindex-0.2.8 → cocoindex-0.2.10}/about.hbs +0 -0
  79. {cocoindex-0.2.8 → cocoindex-0.2.10}/about.toml +0 -0
  80. {cocoindex-0.2.8 → cocoindex-0.2.10}/dev/neo4j.yaml +0 -0
  81. {cocoindex-0.2.8 → cocoindex-0.2.10}/dev/postgres.yaml +0 -0
  82. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/.gitignore +0 -0
  83. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/README.md +0 -0
  84. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/about/community.md +0 -0
  85. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/ai/llm.mdx +0 -0
  86. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/contributing/guide.md +0 -0
  87. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/contributing/new_built_in_target.mdx +0 -0
  88. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/contributing/setup_dev_environment.md +0 -0
  89. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/core/basics.md +0 -0
  90. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/core/cli.mdx +0 -0
  91. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/core/data_example.svg +0 -0
  92. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/core/data_types.mdx +0 -0
  93. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/core/flow_def.mdx +0 -0
  94. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/core/flow_example.svg +0 -0
  95. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/core/flow_methods.mdx +0 -0
  96. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/custom_ops/custom_functions.mdx +0 -0
  97. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/custom_ops/custom_targets.mdx +0 -0
  98. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/examples/examples/academic_papers_index.md +0 -0
  99. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/examples/examples/codebase_index.md +0 -0
  100. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/examples/examples/custom_targets.md +0 -0
  101. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/examples/examples/docs_to_knowledge_graph.md +0 -0
  102. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/examples/examples/document_ai.md +0 -0
  103. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/examples/examples/image_search.md +0 -0
  104. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/examples/examples/manual_extraction.md +0 -0
  105. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/examples/examples/multi_format_index.md +0 -0
  106. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/examples/examples/patient_form_extraction.md +0 -0
  107. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/examples/examples/photo_search.md +0 -0
  108. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/examples/examples/postgres_source.md +0 -0
  109. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/examples/examples/product_recommendation.md +0 -0
  110. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/examples/examples/simple_vector_index.md +0 -0
  111. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/examples/index.md +0 -0
  112. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/getting_started/installation.md +0 -0
  113. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/getting_started/markdown_files.zip +0 -0
  114. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/getting_started/overview.md +0 -0
  115. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/getting_started/quickstart.md +0 -0
  116. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/ops/sources.md +0 -0
  117. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/ops/targets.md +0 -0
  118. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/query.mdx +0 -0
  119. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/tutorials/live_updates.md +0 -0
  120. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docs/tutorials/manage_flow_dynamically.mdx +0 -0
  121. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/docusaurus.config.ts +0 -0
  122. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/package.json +0 -0
  123. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/sidebars.ts +0 -0
  124. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/src/components/GitHubButton/index.tsx +0 -0
  125. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/src/css/custom.css +0 -0
  126. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/src/theme/DocCard/index.tsx +0 -0
  127. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/src/theme/DocCard/styles.module.css +0 -0
  128. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/src/theme/DocCardList/index.tsx +0 -0
  129. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/src/theme/DocCardList/styles.module.css +0 -0
  130. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/src/theme/Root.js +0 -0
  131. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/.nojekyll +0 -0
  132. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/docusaurus.png +0 -0
  133. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/academic_papers_index/abstract_chunks.png +0 -0
  134. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/academic_papers_index/basic_info.png +0 -0
  135. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/academic_papers_index/chunk_embedding.png +0 -0
  136. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/academic_papers_index/cover.png +0 -0
  137. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/academic_papers_index/first_page.png +0 -0
  138. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/academic_papers_index/flow.png +0 -0
  139. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/academic_papers_index/metadata.png +0 -0
  140. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/codebase_index/chunk.png +0 -0
  141. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/codebase_index/cover.png +0 -0
  142. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/codebase_index/flow.png +0 -0
  143. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/custom_targets/convert.png +0 -0
  144. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/custom_targets/cover.png +0 -0
  145. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/docs_to_knowledge_graph/cover.png +0 -0
  146. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/docs_to_knowledge_graph/dedupe.png +0 -0
  147. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/docs_to_knowledge_graph/export_document.png +0 -0
  148. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/docs_to_knowledge_graph/export_relationship.png +0 -0
  149. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/docs_to_knowledge_graph/extract_relationship.png +0 -0
  150. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/docs_to_knowledge_graph/flow.png +0 -0
  151. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/docs_to_knowledge_graph/relationship.png +0 -0
  152. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/docs_to_knowledge_graph/summary.png +0 -0
  153. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/document_ai/cover.png +0 -0
  154. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/document_ai/document_ai.png +0 -0
  155. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/document_ai/processor.png +0 -0
  156. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/image_search/cover.png +0 -0
  157. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/image_search/embedding.png +0 -0
  158. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/image_search/flow.png +0 -0
  159. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/image_search/multi_modal_architecture.png +0 -0
  160. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/image_search/result.png +0 -0
  161. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/manual_extraction/cover.png +0 -0
  162. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/manual_extraction/extraction.png +0 -0
  163. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/manual_extraction/flow.png +0 -0
  164. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/manual_extraction/summary.png +0 -0
  165. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/multi_format_index/colpali_architecture.png +0 -0
  166. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/multi_format_index/cover.png +0 -0
  167. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/multi_format_index/embed.png +0 -0
  168. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/multi_format_index/flow.png +0 -0
  169. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/multi_format_index/pages.png +0 -0
  170. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/patient_form_extraction/cover.png +0 -0
  171. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/patient_form_extraction/extraction.png +0 -0
  172. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/patient_form_extraction/fields.png +0 -0
  173. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/patient_form_extraction/flow.png +0 -0
  174. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/patient_form_extraction/tomarkdown.png +0 -0
  175. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/photo_search/cover.png +0 -0
  176. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/photo_search/extraction.png +0 -0
  177. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/photo_search/flow.png +0 -0
  178. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/postgres_source/collector.png +0 -0
  179. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/postgres_source/cover.png +0 -0
  180. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/postgres_source/description.png +0 -0
  181. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/postgres_source/embed.png +0 -0
  182. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/postgres_source/flow.png +0 -0
  183. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/postgres_source/lineage.png +0 -0
  184. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/postgres_source/price.png +0 -0
  185. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/postgres_source/source.png +0 -0
  186. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/product_recommendation/cover.png +0 -0
  187. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/product_recommendation/dedupe.png +0 -0
  188. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/product_recommendation/export_all.png +0 -0
  189. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/product_recommendation/export_product.png +0 -0
  190. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/product_recommendation/export_taxonomy.png +0 -0
  191. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/product_recommendation/extract_product.png +0 -0
  192. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/product_recommendation/extract_taxonomy.png +0 -0
  193. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/product_recommendation/neo4j.png +0 -0
  194. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/product_recommendation/parse_json.png +0 -0
  195. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/product_recommendation/taxonomy.png +0 -0
  196. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/simple_vector_index/chunk.png +0 -0
  197. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/simple_vector_index/cover.png +0 -0
  198. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/simple_vector_index/embed.png +0 -0
  199. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/examples/simple_vector_index/flow.png +0 -0
  200. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/favicon.ico +0 -0
  201. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/icon.svg +0 -0
  202. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/img/incremental-etl.gif +0 -0
  203. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/static/robots.txt +0 -0
  204. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/tsconfig.json +0 -0
  205. {cocoindex-0.2.8 → cocoindex-0.2.10}/docs/yarn.lock +0 -0
  206. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/amazon_s3_embedding/.env.example +0 -0
  207. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/amazon_s3_embedding/.gitignore +0 -0
  208. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/amazon_s3_embedding/README.md +0 -0
  209. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/amazon_s3_embedding/main.py +0 -0
  210. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/azure_blob_embedding/.env.example +0 -0
  211. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/azure_blob_embedding/.gitignore +0 -0
  212. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/azure_blob_embedding/README.md +0 -0
  213. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/azure_blob_embedding/main.py +0 -0
  214. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/code_embedding/.env +0 -0
  215. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/code_embedding/README.md +0 -0
  216. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/code_embedding/main.py +0 -0
  217. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/custom_output_files/.env +0 -0
  218. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/custom_output_files/.gitignore +0 -0
  219. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/custom_output_files/README.md +0 -0
  220. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/custom_output_files/data/bizarre_animals.md +0 -0
  221. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/custom_output_files/data/chunk_norris.md +0 -0
  222. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/custom_output_files/main.py +0 -0
  223. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/docs_to_knowledge_graph/.env +0 -0
  224. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/docs_to_knowledge_graph/README.md +0 -0
  225. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/docs_to_knowledge_graph/main.py +0 -0
  226. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/face_recognition/.env +0 -0
  227. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/face_recognition/README.md +0 -0
  228. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/face_recognition/images/Carter_welcomes_Reagan.jpg +0 -0
  229. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/face_recognition/images/Solvay_conference_1927.jpg +0 -0
  230. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/face_recognition/images/Steve_Jobs_and_Bill_Gates_(522695099).jpg +0 -0
  231. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/face_recognition/images/einplanck3.jpg +0 -0
  232. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/face_recognition/main.py +0 -0
  233. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/fastapi_server_docker/.dockerignore +0 -0
  234. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/fastapi_server_docker/.env +0 -0
  235. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/fastapi_server_docker/README.md +0 -0
  236. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/fastapi_server_docker/compose.yaml +0 -0
  237. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/fastapi_server_docker/dockerfile +0 -0
  238. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/fastapi_server_docker/files/1810.04805v2.md +0 -0
  239. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/fastapi_server_docker/main.py +0 -0
  240. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/gdrive_text_embedding/.env.example +0 -0
  241. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/gdrive_text_embedding/.gitignore +0 -0
  242. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/gdrive_text_embedding/README.md +0 -0
  243. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/gdrive_text_embedding/main.py +0 -0
  244. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/.env +0 -0
  245. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/README.md +0 -0
  246. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/colpali_main.py +0 -0
  247. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/frontend/.gitignore +0 -0
  248. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/frontend/index.html +0 -0
  249. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/frontend/package-lock.json +0 -0
  250. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/frontend/package.json +0 -0
  251. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/frontend/src/App.jsx +0 -0
  252. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/frontend/src/main.jsx +0 -0
  253. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/frontend/src/style.css +0 -0
  254. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/frontend/vite.config.js +0 -0
  255. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/img/cat1.jpeg +0 -0
  256. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/img/dog1.jpeg +0 -0
  257. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/img/elephant1.jpg +0 -0
  258. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/img/giraffe.jpg +0 -0
  259. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/image_search/main.py +0 -0
  260. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/live_updates/.env +0 -0
  261. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/live_updates/README.md +0 -0
  262. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/live_updates/data/bizarre_animals.md +0 -0
  263. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/live_updates/data/chunk_norris.md +0 -0
  264. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/live_updates/main.py +0 -0
  265. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/manuals_llm_extraction/.env +0 -0
  266. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/manuals_llm_extraction/README.md +0 -0
  267. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/manuals_llm_extraction/main.py +0 -0
  268. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/manuals_llm_extraction/manuals/array.pdf +0 -0
  269. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/manuals_llm_extraction/manuals/base64.pdf +0 -0
  270. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/manuals_llm_extraction/manuals/copy.pdf +0 -0
  271. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/manuals_llm_extraction/manuals/glob.pdf +0 -0
  272. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/multi_format_indexing/.env +0 -0
  273. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/multi_format_indexing/README.md +0 -0
  274. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/multi_format_indexing/main.py +0 -0
  275. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/multi_format_indexing/source_files/1706.03762v7.pdf +0 -0
  276. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/multi_format_indexing/source_files/1810.04805v2.pdf +0 -0
  277. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/multi_format_indexing/source_files/2502.06786v3.pdf +0 -0
  278. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/multi_format_indexing/source_files/healthcare_industry_test_p101.jpg +0 -0
  279. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/multi_format_indexing/source_files/healthcare_industry_test_p86.jpg +0 -0
  280. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/multi_format_indexing/source_files/healthcare_industry_test_p9.jpg +0 -0
  281. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/multi_format_indexing/source_files/restaurant_brands_international_2023.jpg +0 -0
  282. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/multi_format_indexing/source_files/sweetgreen_2023.jpg +0 -0
  283. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/paper_metadata/.env.example +0 -0
  284. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/paper_metadata/.gitignore +0 -0
  285. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/paper_metadata/README.md +0 -0
  286. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/paper_metadata/main.py +0 -0
  287. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/paper_metadata/papers/1706.03762v7.pdf +0 -0
  288. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/paper_metadata/papers/1810.04805v2.pdf +0 -0
  289. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/paper_metadata/papers/2502.06786v3.pdf +0 -0
  290. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/paper_metadata/papers/2502.20346v1.pdf +0 -0
  291. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/patient_intake_extraction/.env.example +0 -0
  292. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/patient_intake_extraction/README.md +0 -0
  293. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/patient_intake_extraction/data/README.md +0 -0
  294. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_David_Artificial.docx +0 -0
  295. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_Emily_Artificial.pdf +0 -0
  296. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_Joe_Artificial.pdf +0 -0
  297. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_From_Jane_Artificial.docx +0 -0
  298. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/patient_intake_extraction/main.py +0 -0
  299. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/pdf_embedding/.env +0 -0
  300. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/pdf_embedding/README.md +0 -0
  301. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/pdf_embedding/main.py +0 -0
  302. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/pdf_embedding/pdf_files/1706.03762v7.pdf +0 -0
  303. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/pdf_embedding/pdf_files/1810.04805v2.pdf +0 -0
  304. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/pdf_embedding/pdf_files/rfc8259.pdf +0 -0
  305. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/postgres_source/.env +0 -0
  306. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/postgres_source/README.md +0 -0
  307. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/postgres_source/main.py +0 -0
  308. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/postgres_source/prepare_source_data.sql +0 -0
  309. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/.env.example +0 -0
  310. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/.gitignore +0 -0
  311. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/README.md +0 -0
  312. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/img/cocoinsight.png +0 -0
  313. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/img/neo4j.png +0 -0
  314. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/main.py +0 -0
  315. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/products/p1.json +0 -0
  316. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/products/p2.json +0 -0
  317. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/products/p3.json +0 -0
  318. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/products/p4.json +0 -0
  319. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/products/p5.json +0 -0
  320. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/products/p6.json +0 -0
  321. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/products/p7.json +0 -0
  322. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/products/p8.json +0 -0
  323. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/product_recommendation/products/p9.json +0 -0
  324. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/text_embedding/.env +0 -0
  325. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/text_embedding/README.md +0 -0
  326. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/text_embedding/Text_Embedding.ipynb +0 -0
  327. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/text_embedding/main.py +0 -0
  328. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/text_embedding/markdown_files/1706.03762v7.md +0 -0
  329. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/text_embedding/markdown_files/1810.04805v2.md +0 -0
  330. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/text_embedding/markdown_files/rfc8259.md +0 -0
  331. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/text_embedding_qdrant/.env +0 -0
  332. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/text_embedding_qdrant/README.md +0 -0
  333. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/text_embedding_qdrant/main.py +0 -0
  334. {cocoindex-0.2.8 → cocoindex-0.2.10}/examples/text_embedding_qdrant/markdown_files/rfc8259.md +0 -0
  335. {cocoindex-0.2.8 → cocoindex-0.2.10}/pyproject.toml +0 -0
  336. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/auth_registry.py +0 -0
  337. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/convert.py +0 -0
  338. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/functions.py +0 -0
  339. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/index.py +0 -0
  340. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/llm.py +0 -0
  341. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/op.py +0 -0
  342. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/py.typed +0 -0
  343. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/runtime.py +0 -0
  344. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/setup.py +0 -0
  345. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/sources.py +0 -0
  346. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/subprocess_exec.py +0 -0
  347. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/targets.py +0 -0
  348. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/tests/__init__.py +0 -0
  349. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/tests/test_convert.py +0 -0
  350. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/tests/test_optional_database.py +0 -0
  351. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/tests/test_transform_flow.py +0 -0
  352. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/tests/test_typing.py +0 -0
  353. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/tests/test_validation.py +0 -0
  354. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/typing.py +0 -0
  355. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/user_app_loader.py +0 -0
  356. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/utils.py +0 -0
  357. {cocoindex-0.2.8 → cocoindex-0.2.10}/python/cocoindex/validation.py +0 -0
  358. {cocoindex-0.2.8 → cocoindex-0.2.10}/ruff.toml +0 -0
  359. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/base/duration.rs +0 -0
  360. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/base/field_attrs.rs +0 -0
  361. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/base/json_schema.rs +0 -0
  362. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/base/mod.rs +0 -0
  363. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/base/schema.rs +0 -0
  364. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/base/spec.rs +0 -0
  365. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/builder/exec_ctx.rs +0 -0
  366. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/builder/mod.rs +0 -0
  367. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/builder/plan.rs +0 -0
  368. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/execution/dumper.rs +0 -0
  369. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/execution/indexing_status.rs +0 -0
  370. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/execution/live_updater.rs +0 -0
  371. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/execution/memoization.rs +0 -0
  372. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/execution/mod.rs +0 -0
  373. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/execution/row_indexer.rs +0 -0
  374. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/execution/stats.rs +0 -0
  375. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/lib.rs +0 -0
  376. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/llm/litellm.rs +0 -0
  377. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/llm/mod.rs +0 -0
  378. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/llm/ollama.rs +0 -0
  379. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/llm/openai.rs +0 -0
  380. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/llm/openrouter.rs +0 -0
  381. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/llm/vllm.rs +0 -0
  382. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/llm/voyage.rs +0 -0
  383. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/functions/embed_text.rs +0 -0
  384. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/functions/mod.rs +0 -0
  385. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/functions/test_utils.rs +0 -0
  386. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/interface.rs +0 -0
  387. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/mod.rs +0 -0
  388. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/py_factory.rs +0 -0
  389. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/registration.rs +0 -0
  390. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/registry.rs +0 -0
  391. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/sdk.rs +0 -0
  392. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/shared/mod.rs +0 -0
  393. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/sources/azure_blob.rs +0 -0
  394. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/sources/google_drive.rs +0 -0
  395. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/sources/local_file.rs +0 -0
  396. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/sources/mod.rs +0 -0
  397. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/sources/shared/mod.rs +0 -0
  398. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/sources/shared/pattern_matcher.rs +0 -0
  399. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/targets/kuzu.rs +0 -0
  400. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/targets/mod.rs +0 -0
  401. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/targets/neo4j.rs +0 -0
  402. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/targets/postgres.rs +0 -0
  403. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/targets/shared/mod.rs +0 -0
  404. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/targets/shared/property_graph.rs +0 -0
  405. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/ops/targets/shared/table_columns.rs +0 -0
  406. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/prelude.rs +0 -0
  407. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/server.rs +0 -0
  408. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/service/mod.rs +0 -0
  409. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/settings.rs +0 -0
  410. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/setup/components.rs +0 -0
  411. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/setup/flow_features.rs +0 -0
  412. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/setup/mod.rs +0 -0
  413. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/setup/states.rs +0 -0
  414. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/utils/concur_control.rs +0 -0
  415. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/utils/db.rs +0 -0
  416. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/utils/fingerprint.rs +0 -0
  417. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/utils/immutable.rs +0 -0
  418. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/utils/retryable.rs +0 -0
  419. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/utils/str_sanitize.rs +0 -0
  420. {cocoindex-0.2.8 → cocoindex-0.2.10}/src/utils/yaml_ser.rs +0 -0
@@ -49,7 +49,7 @@ repos:
49
49
 
50
50
  - id: mypy-check
51
51
  name: mypy type check
52
- entry: mypy
52
+ entry: mypy --cache-fine-grain
53
53
  language: system
54
54
  types: [python]
55
55
  pass_filenames: false
@@ -1283,7 +1283,7 @@ dependencies = [
1283
1283
 
1284
1284
  [[package]]
1285
1285
  name = "cocoindex"
1286
- version = "0.2.8"
1286
+ version = "0.2.10"
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",
@@ -1366,6 +1367,7 @@ dependencies = [
1366
1367
  "tree-sitter-rust",
1367
1368
  "tree-sitter-scala",
1368
1369
  "tree-sitter-sequel",
1370
+ "tree-sitter-solidity",
1369
1371
  "tree-sitter-swift",
1370
1372
  "tree-sitter-toml-ng",
1371
1373
  "tree-sitter-typescript",
@@ -5903,6 +5905,16 @@ dependencies = [
5903
5905
  "tree-sitter-language",
5904
5906
  ]
5905
5907
 
5908
+ [[package]]
5909
+ name = "tree-sitter-solidity"
5910
+ version = "1.2.13"
5911
+ source = "registry+https://github.com/rust-lang/crates.io-index"
5912
+ checksum = "4eacf8875b70879f0cb670c60b233ad0b68752d9e1474e6c3ef168eea8a90b25"
5913
+ dependencies = [
5914
+ "cc",
5915
+ "tree-sitter-language",
5916
+ ]
5917
+
5906
5918
  [[package]]
5907
5919
  name = "tree-sitter-swift"
5908
5920
  version = "0.7.1"
@@ -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.8"
5
+ version = "0.2.10"
6
6
  edition = "2024"
7
7
  rust-version = "1.88"
8
8
  license = "Apache-2.0"
@@ -101,6 +101,7 @@ tree-sitter-toml-ng = "0.7.0"
101
101
  tree-sitter-typescript = "0.23.2"
102
102
  tree-sitter-xml = "0.7.0"
103
103
  tree-sitter-yaml = "0.7.1"
104
+ tree-sitter-solidity = "1.2.13"
104
105
 
105
106
  globset = "0.4.16"
106
107
  unicase = "2.8.1"
@@ -145,3 +146,4 @@ azure_storage_blobs = { version = "0.21.0", default-features = false, features =
145
146
  "enable_reqwest_rustls",
146
147
  "hmac_rust",
147
148
  ] }
149
+ serde_path_to_error = "0.1.17"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cocoindex
3
- Version: 0.2.8
3
+ Version: 0.2.10
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: License :: OSI Approved :: Apache Software License
6
6
  Classifier: Operating System :: OS Independent
@@ -45,7 +45,7 @@
45
45
  <h2>Overview of licenses:</h2>
46
46
  <ul class="licenses-overview">
47
47
  <li><a href="#Apache-2.0">Apache License 2.0</a> (412)</li>
48
- <li><a href="#MIT">MIT License</a> (124)</li>
48
+ <li><a href="#MIT">MIT License</a> (125)</li>
49
49
  <li><a href="#Unicode-3.0">Unicode License v3</a> (19)</li>
50
50
  <li><a href="#ISC">ISC License</a> (8)</li>
51
51
  <li><a href="#BSD-3-Clause">BSD 3-Clause &quot;New&quot; or &quot;Revised&quot; License</a> (6)</li>
@@ -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.8</a></li>
2431
+ <li><a href=" https://crates.io/crates/cocoindex ">cocoindex 0.2.10</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>
@@ -11376,6 +11376,20 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
11376
11376
  IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
11377
11377
  DEALINGS IN THE SOFTWARE.
11378
11378
  </pre>
11379
+ </li>
11380
+ <li class="license">
11381
+ <h3 id="MIT">MIT License</h3>
11382
+ <h4>Used by:</h4>
11383
+ <ul class="license-used-by">
11384
+ <li><a href=" https://github.com/JoranHonig/tree-sitter-solidity ">tree-sitter-solidity 1.2.13</a></li>
11385
+ </ul>
11386
+ <pre class="license-text">Copyright (c) 2020 Joran Honig
11387
+
11388
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the &quot;Software&quot;), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
11389
+
11390
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
11391
+
11392
+ THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</pre>
11379
11393
  </li>
11380
11394
  <li class="license">
11381
11395
  <h3 id="MIT">MIT License</h3>
@@ -10,49 +10,82 @@ import TabItem from '@theme/TabItem';
10
10
 
11
11
  Certain settings need to be provided for CocoIndex to work, e.g. database connections, app namespace, etc.
12
12
 
13
- ## Launch CocoIndex
13
+ ## Configure CocoIndex Settings
14
14
 
15
- You have two ways to launch CocoIndex:
15
+ Note that in general, you have two ways to launch CocoIndex:
16
16
 
17
+ * Call CocoIndex APIs from your own Python application or library.
17
18
  * Use [Cocoindex CLI](cli). It's handy for most routine indexing building and management tasks.
18
- It will load settings from environment variables, either already set in your environment, or specified in `.env` file.
19
- See [CLI](cli#environment-variables) for more details.
20
19
 
21
- * Call CocoIndex functionality from your own Python application or library.
22
- It's needed when you want to leverage CocoIndex support for query, or have your custom logic to trigger indexing, etc.
23
20
 
24
- <Tabs>
25
- <TabItem value="python" label="Python" default>
21
+ CocoIndex exposes process-level settings specified by `cocoindex.Settings` dataclass.
22
+ Settings can be configured in three different ways.
23
+ In the following sections, the later ones will override the earlier ones.
26
24
 
27
- You need to explicitly call `cocoindex.init()` before doing anything with CocoIndex, and settings will be loaded during the call.
25
+ ### Environment Variables
28
26
 
29
- * If it's called without any argument, it will load settings from environment variables.
30
- Only existing environment variables already set in your environment will be used.
31
- If you want to load environment variables from a specific `.env` file, consider call `load_dotenv()` provided by the [`python-dotenv`](https://github.com/theskumar/python-dotenv) package.
27
+ The simplest approach is to set corresponding environment variables.
28
+ See [List of Environment Variables](#list-of-environment-variables) for specific environment variables.
32
29
 
33
- ```py
34
- from dotenv import load_dotenv
35
- import cocoindex
30
+ :::tip
36
31
 
37
- load_dotenv()
38
- cocoindex.init()
39
- ```
32
+ You can consider place a `.env` file in your directory.
33
+ The [CLI](cli#environment-variables) will load environment variables from the `.env` file (see [CLI](cli#environment-variables) for more details).
34
+ From your own main module, you can also load environment variables with a package like [`python-dotenv`](https://github.com/theskumar/python-dotenv).
40
35
 
41
- * It takes an optional `cocoindex.Settings` dataclass object as argument, so you can also construct settings explicitly and pass to it:
36
+ :::
37
+
38
+ ### Setting Function
39
+
40
+ A more flexible approach is to provide a setting function that returns a `cocoindex.Settings` dataclass object.
41
+ The setting function can have any name, and needs to be decorated with the `@cocoindex.settings` decorator, for example:
42
+
43
+ ```py
44
+ @cocoindex.settings
45
+ def cocoindex_settings() -> cocoindex.Settings:
46
+ return cocoindex.Settings(
47
+ database=cocoindex.DatabaseConnectionSpec(
48
+ url="postgres://cocoindex:cocoindex@localhost/cocoindex"
49
+ )
50
+ )
51
+ ```
52
+
53
+ This setting function will be called once when CocoIndex is initialized.
54
+ Once the settings function is provided, environment variables will be ignored.
42
55
 
43
- ```py
44
- import cocoindex
56
+ ### `cocoindex.init()` function
45
57
 
46
- cocoindex.init(
47
- cocoindex.Settings(
48
- database=cocoindex.DatabaseConnectionSpec(
49
- url="postgres://cocoindex:cocoindex@localhost/cocoindex"
50
- )
51
- )
58
+ You can also call `cocoindex.init()` with a `cocoindex.Settings` dataclass object as argument, for example:
59
+
60
+ ```py
61
+ cocoindex.init(
62
+ cocoindex.Settings(
63
+ database=cocoindex.DatabaseConnectionSpec(
64
+ url="postgres://cocoindex:cocoindex@localhost/cocoindex"
52
65
  )
53
- ```
54
- </TabItem>
55
- </Tabs>
66
+ )
67
+ )
68
+ ```
69
+
70
+ For example, you can call it in the main function of your application.
71
+ Once the `cocoindex.init()` is called with a `cocoindex.Settings` dataclass object as argument, the `@cocoindex.settings` function and environment variables will be ignored.
72
+
73
+ This is more flexible, as you can more easily construct `cocoindex.Settings` based on other stuffs you loaded earlier.
74
+ But be careful that if you call `cocoindex.init()` only under the path of main (e.g. within `if __name__ == "__main__":` guard), it won't be executed when you're using CocoIndex CLI, as it won't execute your main logic.
75
+
76
+ :::info
77
+
78
+ `cocoindex.init()` is optional:
79
+
80
+ - You can call `cocoindex.init()` with a `cocoindex.Settings` dataclass object as argument, or without any argument.
81
+ When without argument, the settings will be loaded from the `@cocoindex.settings` function or environment variables.
82
+
83
+ - You don't have to explicitly call `cocoindex.init()`.
84
+ CocoIndex will be automatically initialized when needed, e.g. when any method of any flow is called the first time.
85
+ But calling `cocoindex.init()` explicitly (usually at startup time, e.g. in the main function of your application) has the benefit of making sure CocoIndex library is initialized and any potential exceptions are raised earlier before proceeding with the application.
86
+ If you need this clarity, you can call it explicitly even if you don't want to provide settings by the `cocoindex.init()` call.
87
+
88
+ :::
56
89
 
57
90
  ## List of Settings
58
91
 
@@ -102,6 +102,7 @@ Currently, `SplitRecursively` supports the following languages:
102
102
  | Ruby | | `.rb` |
103
103
  | Rust | RS | `.rs` |
104
104
  | Scala | | `.scala` |
105
+ | Solidity | | `.sol` |
105
106
  | SQL | | `.sql` |
106
107
  | Swift | | `.swift` |
107
108
  | TOML | | `.toml` |
@@ -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.4",
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.4",
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.4",
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.4", "markdown-it-py[linkify,plugins]"]
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.4"]
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 = "Build index for papers with both metadata and content embeddings"
5
5
  requires-python = ">=3.11"
6
6
  dependencies = [
7
- "cocoindex>=0.2.4",
7
+ "cocoindex>=0.2.8",
8
8
  "face-recognition>=1.3.0",
9
9
  "pillow>=10.0.0",
10
10
  "numpy>=1.26.0",
@@ -1,4 +1,4 @@
1
- cocoindex[embeddings]>=0.2.4
1
+ cocoindex[embeddings]>=0.2.8
2
2
  python-dotenv>=1.0.1
3
3
  fastapi==0.115.12
4
4
  fastapi-cli==0.0.7
@@ -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.4",
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.4",
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.4", "python-dotenv>=1.1.0"]
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.4", "marker-pdf>=1.8.5"]
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.4",
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 = "Build index for papers with both metadata and content embeddings"
5
5
  requires-python = ">=3.11"
6
6
  dependencies = [
7
- "cocoindex[embeddings]>=0.2.4",
7
+ "cocoindex[embeddings]>=0.2.8",
8
8
  "pypdf>=5.7.0",
9
9
  "marker-pdf>=1.8.5",
10
10
  ]
@@ -4,7 +4,7 @@ version = "0.1.0"
4
4
  description = "Extract structured information from patient intake forms using LLM."
5
5
  requires-python = ">=3.10"
6
6
  dependencies = [
7
- "cocoindex>=0.2.4",
7
+ "cocoindex>=0.2.8",
8
8
  "python-dotenv>=1.0.1",
9
9
  "markitdown>=0.1.2",
10
10
  "openai>=1.68.2",
@@ -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.4",
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.4",
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.4", "jinja2>=3.1.6"]
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.4",
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.4",
7
+ "cocoindex[embeddings]>=0.2.8",
8
8
  "python-dotenv>=1.0.1",
9
9
  "qdrant-client>=1.6.0",
10
10
  ]
@@ -6,7 +6,12 @@ from . import functions, sources, targets, cli, utils
6
6
 
7
7
  from . import targets as storages # Deprecated: Use targets instead
8
8
 
9
- from .auth_registry import AuthEntryReference, add_auth_entry, add_transient_auth_entry
9
+ from .auth_registry import (
10
+ AuthEntryReference,
11
+ add_auth_entry,
12
+ add_transient_auth_entry,
13
+ ref_auth_entry,
14
+ )
10
15
  from .flow import FlowBuilder, DataScope, DataSlice, Flow, transform_flow
11
16
  from .flow import flow_def
12
17
  from .flow import EvaluateAndDumpOptions, GeneratedField
@@ -14,7 +19,7 @@ from .flow import FlowLiveUpdater, FlowLiveUpdaterOptions, FlowUpdaterStatusUpda
14
19
  from .flow import open_flow
15
20
  from .flow import add_flow_def, remove_flow # DEPRECATED
16
21
  from .flow import update_all_flows_async, setup_all_flows, drop_all_flows
17
- from .lib import init, start_server, stop
22
+ from .lib import settings, init, start_server, stop
18
23
  from .llm import LlmSpec, LlmApiType
19
24
  from .index import VectorSimilarityMetric, VectorIndexDef, IndexOptions
20
25
  from .setting import DatabaseConnectionSpec, Settings, ServerSettings
@@ -65,6 +70,7 @@ __all__ = [
65
70
  "setup_all_flows",
66
71
  "drop_all_flows",
67
72
  # Lib
73
+ "settings",
68
74
  "init",
69
75
  "start_server",
70
76
  "stop",
@@ -91,8 +91,6 @@ def _load_user_app(app_target: str) -> None:
91
91
 
92
92
 
93
93
  def _initialize_cocoindex_in_process() -> None:
94
- settings = setting.Settings.from_env()
95
- lib.init(settings)
96
94
  atexit.register(lib.stop)
97
95
 
98
96
 
@@ -694,16 +694,11 @@ class Flow:
694
694
  """
695
695
 
696
696
  _name: str
697
- _full_name: str
698
697
  _lazy_engine_flow: Callable[[], _engine.Flow] | None
699
698
 
700
- def __init__(
701
- self, name: str, full_name: str, engine_flow_creator: Callable[[], _engine.Flow]
702
- ):
699
+ def __init__(self, name: str, engine_flow_creator: Callable[[], _engine.Flow]):
703
700
  validate_flow_name(name)
704
- validate_full_flow_name(full_name)
705
701
  self._name = name
706
- self._full_name = full_name
707
702
  engine_flow = None
708
703
  lock = Lock()
709
704
 
@@ -762,7 +757,7 @@ class Flow:
762
757
  """
763
758
  Get the full name of the flow.
764
759
  """
765
- return self._full_name
760
+ return get_flow_full_name(self._name)
766
761
 
767
762
  def update(self, /, *, reexport_targets: bool = False) -> _engine.IndexUpdateInfo:
768
763
  """
@@ -861,9 +856,10 @@ def _create_lazy_flow(
861
856
  The flow will be built the first time when it's really needed.
862
857
  """
863
858
  flow_name = _flow_name_builder.build_name(name, prefix="_flow_")
864
- flow_full_name = get_flow_full_name(flow_name)
865
859
 
866
860
  def _create_engine_flow() -> _engine.Flow:
861
+ flow_full_name = get_flow_full_name(flow_name)
862
+ validate_full_flow_name(flow_full_name)
867
863
  flow_builder_state = _FlowBuilderState(flow_full_name)
868
864
  root_scope = DataScope(
869
865
  flow_builder_state, flow_builder_state.engine_flow_builder.root_scope()
@@ -873,7 +869,7 @@ def _create_lazy_flow(
873
869
  execution_context.event_loop
874
870
  )
875
871
 
876
- return Flow(flow_name, flow_full_name, _create_engine_flow)
872
+ return Flow(flow_name, _create_engine_flow)
877
873
 
878
874
 
879
875
  _flows_lock = Lock()
@@ -0,0 +1,75 @@
1
+ """
2
+ Library level functions and states.
3
+ """
4
+
5
+ import threading
6
+ import warnings
7
+
8
+ from . import _engine # type: ignore
9
+ from . import flow, setting
10
+ from .convert import dump_engine_object
11
+ from .validation import validate_app_namespace_name
12
+ from typing import Any, Callable, overload
13
+
14
+
15
+ def prepare_settings(settings: setting.Settings) -> Any:
16
+ """Prepare the settings for the engine."""
17
+ if settings.app_namespace:
18
+ validate_app_namespace_name(settings.app_namespace)
19
+ return dump_engine_object(settings)
20
+
21
+
22
+ _engine.set_settings_fn(lambda: prepare_settings(setting.Settings.from_env()))
23
+
24
+
25
+ _prev_settings_fn: Callable[[], setting.Settings] | None = None
26
+ _prev_settings_fn_lock: threading.Lock = threading.Lock()
27
+
28
+
29
+ @overload
30
+ def settings(fn: Callable[[], setting.Settings]) -> Callable[[], setting.Settings]: ...
31
+ @overload
32
+ def settings(
33
+ fn: None,
34
+ ) -> Callable[[Callable[[], setting.Settings]], Callable[[], setting.Settings]]: ...
35
+ def settings(fn: Callable[[], setting.Settings] | None = None) -> Any:
36
+ """
37
+ Decorate a function that returns a settings.Settings object.
38
+ It registers the function as a settings provider.
39
+ """
40
+
41
+ def _inner(fn: Callable[[], setting.Settings]) -> Callable[[], setting.Settings]:
42
+ global _prev_settings_fn # pylint: disable=global-statement
43
+ with _prev_settings_fn_lock:
44
+ if _prev_settings_fn is not None:
45
+ warnings.warn(
46
+ f"Setting a new settings function will override the previous one {_prev_settings_fn}."
47
+ )
48
+ _prev_settings_fn = fn
49
+ _engine.set_settings_fn(lambda: prepare_settings(fn()))
50
+ return fn
51
+
52
+ if fn is not None:
53
+ return _inner(fn)
54
+ else:
55
+ return _inner
56
+
57
+
58
+ def init(settings: setting.Settings | None = None) -> None:
59
+ """
60
+ Initialize the cocoindex library.
61
+
62
+ If the settings are not provided, they are loaded from the environment variables.
63
+ """
64
+ _engine.init(prepare_settings(settings) if settings is not None else None)
65
+
66
+
67
+ def start_server(settings: setting.ServerSettings) -> None:
68
+ """Start the cocoindex server."""
69
+ flow.ensure_all_flows_built()
70
+ _engine.start_server(settings.__dict__)
71
+
72
+
73
+ def stop() -> None:
74
+ """Stop the cocoindex library."""
75
+ _engine.stop()
@@ -6,16 +6,15 @@ import os
6
6
 
7
7
  from typing import Callable, Self, Any, overload
8
8
  from dataclasses import dataclass
9
- from .validation import validate_app_namespace_name
10
-
11
- _app_namespace: str = ""
9
+ from . import _engine # type: ignore
12
10
 
13
11
 
14
12
  def get_app_namespace(*, trailing_delimiter: str | None = None) -> str:
15
13
  """Get the application namespace. Append the `trailing_delimiter` if not empty."""
16
- if _app_namespace == "" or trailing_delimiter is None:
17
- return _app_namespace
18
- return f"{_app_namespace}{trailing_delimiter}"
14
+ app_namespace: str = _engine.get_app_namespace()
15
+ if app_namespace == "" or trailing_delimiter is None:
16
+ return app_namespace
17
+ return f"{app_namespace}{trailing_delimiter}"
19
18
 
20
19
 
21
20
  def split_app_namespace(full_name: str, delimiter: str) -> tuple[str, str]:
@@ -26,14 +25,6 @@ def split_app_namespace(full_name: str, delimiter: str) -> tuple[str, str]:
26
25
  return (parts[0], parts[1])
27
26
 
28
27
 
29
- def set_app_namespace(app_namespace: str) -> None:
30
- """Set the application namespace."""
31
- if app_namespace:
32
- validate_app_namespace_name(app_namespace)
33
- global _app_namespace # pylint: disable=global-statement
34
- _app_namespace = app_namespace
35
-
36
-
37
28
  @dataclass
38
29
  class DatabaseConnectionSpec:
39
30
  """
@@ -94,8 +85,7 @@ class Settings:
94
85
 
95
86
  database_url = os.getenv("COCOINDEX_DATABASE_URL")
96
87
  if database_url is not None:
97
- db_kwargs: dict[str, Any] = dict()
98
- _load_field(db_kwargs, "url", "COCOINDEX_DATABASE_URL", required=True)
88
+ db_kwargs: dict[str, Any] = {"url": database_url}
99
89
  _load_field(db_kwargs, "user", "COCOINDEX_DATABASE_USER")
100
90
  _load_field(db_kwargs, "password", "COCOINDEX_DATABASE_PASSWORD")
101
91
  _load_field(