cocoindex 0.1.30__tar.gz → 0.1.31__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 (191) hide show
  1. {cocoindex-0.1.30 → cocoindex-0.1.31}/Cargo.lock +1 -1
  2. {cocoindex-0.1.30 → cocoindex-0.1.31}/Cargo.toml +1 -1
  3. {cocoindex-0.1.30 → cocoindex-0.1.31}/PKG-INFO +1 -1
  4. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/code_embedding/README.md +1 -1
  5. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/code_embedding/pyproject.toml +1 -1
  6. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/docs_to_knowledge_graph/README.md +1 -5
  7. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/docs_to_knowledge_graph/pyproject.toml +1 -1
  8. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/gdrive_text_embedding/README.md +2 -2
  9. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/gdrive_text_embedding/pyproject.toml +1 -1
  10. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/manuals_llm_extraction/README.md +1 -1
  11. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/manuals_llm_extraction/pyproject.toml +1 -1
  12. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/pdf_embedding/README.md +1 -1
  13. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/pdf_embedding/pyproject.toml +1 -1
  14. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/text_embedding/README.md +1 -1
  15. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/text_embedding/pyproject.toml +1 -1
  16. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/text_embedding_qdrant/README.md +1 -1
  17. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/text_embedding_qdrant/pyproject.toml +1 -1
  18. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/cli.py +20 -3
  19. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/flow.py +3 -0
  20. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/base/schema.rs +39 -51
  21. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/builder/analyzed_flow.rs +2 -2
  22. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/builder/analyzer.rs +259 -198
  23. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/builder/flow_builder.rs +172 -330
  24. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/builder/plan.rs +2 -0
  25. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/execution/dumper.rs +6 -8
  26. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/execution/evaluator.rs +74 -50
  27. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/execution/row_indexer.rs +22 -16
  28. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/execution/stats.rs +17 -11
  29. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/py/mod.rs +55 -1
  30. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/server.rs +0 -1
  31. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/service/flows.rs +5 -5
  32. {cocoindex-0.1.30 → cocoindex-0.1.31}/.cargo/config.toml +0 -0
  33. {cocoindex-0.1.30 → cocoindex-0.1.31}/.env.lib_debug +0 -0
  34. {cocoindex-0.1.30 → cocoindex-0.1.31}/.github/ISSUE_TEMPLATE//360/237/220/233-bug-report.md" +0 -0
  35. {cocoindex-0.1.30 → cocoindex-0.1.31}/.github/ISSUE_TEMPLATE//360/237/222/241-feature-request.md" +0 -0
  36. {cocoindex-0.1.30 → cocoindex-0.1.31}/.github/scripts/update_version.sh +0 -0
  37. {cocoindex-0.1.30 → cocoindex-0.1.31}/.github/workflows/CI.yml +0 -0
  38. {cocoindex-0.1.30 → cocoindex-0.1.31}/.github/workflows/_test.yml +0 -0
  39. {cocoindex-0.1.30 → cocoindex-0.1.31}/.github/workflows/docs.yml +0 -0
  40. {cocoindex-0.1.30 → cocoindex-0.1.31}/.github/workflows/release.yml +0 -0
  41. {cocoindex-0.1.30 → cocoindex-0.1.31}/.gitignore +0 -0
  42. {cocoindex-0.1.30 → cocoindex-0.1.31}/.vscode/settings.json +0 -0
  43. {cocoindex-0.1.30 → cocoindex-0.1.31}/CODE_OF_CONDUCT.md +0 -0
  44. {cocoindex-0.1.30 → cocoindex-0.1.31}/CONTRIBUTING.md +0 -0
  45. {cocoindex-0.1.30 → cocoindex-0.1.31}/LICENSE +0 -0
  46. {cocoindex-0.1.30 → cocoindex-0.1.31}/README.md +0 -0
  47. {cocoindex-0.1.30 → cocoindex-0.1.31}/dev/neo4j.yaml +0 -0
  48. {cocoindex-0.1.30 → cocoindex-0.1.31}/dev/postgres.yaml +0 -0
  49. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/.gitignore +0 -0
  50. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/README.md +0 -0
  51. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/about/community.md +0 -0
  52. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/about/contributing.md +0 -0
  53. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/ai/llm.mdx +0 -0
  54. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/core/basics.md +0 -0
  55. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/core/cli.mdx +0 -0
  56. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/core/custom_function.mdx +0 -0
  57. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/core/data_example.svg +0 -0
  58. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/core/data_types.mdx +0 -0
  59. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/core/flow_def.mdx +0 -0
  60. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/core/flow_example.svg +0 -0
  61. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/core/flow_methods.mdx +0 -0
  62. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/core/initialization.mdx +0 -0
  63. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/getting_started/installation.md +0 -0
  64. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/getting_started/markdown_files.zip +0 -0
  65. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/getting_started/overview.md +0 -0
  66. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/getting_started/quickstart.md +0 -0
  67. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/ops/functions.md +0 -0
  68. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/ops/sources.md +0 -0
  69. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docs/ops/storages.md +0 -0
  70. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/docusaurus.config.ts +0 -0
  71. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/package.json +0 -0
  72. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/sidebars.ts +0 -0
  73. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/src/components/HomepageFeatures/index.tsx +0 -0
  74. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/src/components/HomepageFeatures/styles.module.css +0 -0
  75. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/src/css/custom.css +0 -0
  76. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/src/theme/Root.js +0 -0
  77. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/static/.nojekyll +0 -0
  78. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/static/img/docusaurus.png +0 -0
  79. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/static/img/favicon.ico +0 -0
  80. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/static/img/icon.svg +0 -0
  81. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/static/robots.txt +0 -0
  82. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/tsconfig.json +0 -0
  83. {cocoindex-0.1.30 → cocoindex-0.1.31}/docs/yarn.lock +0 -0
  84. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/code_embedding/.env +0 -0
  85. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/code_embedding/main.py +0 -0
  86. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/docs_to_knowledge_graph/.env +0 -0
  87. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/docs_to_knowledge_graph/main.py +0 -0
  88. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/docs_to_knowledge_graph/markdown_files/1706.03762v7.md +0 -0
  89. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/docs_to_knowledge_graph/markdown_files/1810.04805v2.md +0 -0
  90. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/docs_to_knowledge_graph/markdown_files/rfc8259.md +0 -0
  91. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/gdrive_text_embedding/.env.example +0 -0
  92. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/gdrive_text_embedding/.gitignore +0 -0
  93. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/gdrive_text_embedding/data/1706.03762v7.docx +0 -0
  94. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/gdrive_text_embedding/data/1810.04805v2.docx +0 -0
  95. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/gdrive_text_embedding/main.py +0 -0
  96. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/manuals_llm_extraction/.env +0 -0
  97. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/manuals_llm_extraction/main.py +0 -0
  98. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/manuals_llm_extraction/manuals/array.pdf +0 -0
  99. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/manuals_llm_extraction/manuals/base64.pdf +0 -0
  100. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/manuals_llm_extraction/manuals/copy.pdf +0 -0
  101. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/manuals_llm_extraction/manuals/glob.pdf +0 -0
  102. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/pdf_embedding/.env +0 -0
  103. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/pdf_embedding/main.py +0 -0
  104. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/pdf_embedding/pdf_files/1706.03762v7.pdf +0 -0
  105. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/pdf_embedding/pdf_files/1810.04805v2.pdf +0 -0
  106. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/pdf_embedding/pdf_files/rfc8259.pdf +0 -0
  107. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/text_embedding/.env +0 -0
  108. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/text_embedding/Text_Embedding.ipynb +0 -0
  109. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/text_embedding/main.py +0 -0
  110. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/text_embedding/markdown_files/1706.03762v7.md +0 -0
  111. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/text_embedding/markdown_files/1810.04805v2.md +0 -0
  112. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/text_embedding/markdown_files/rfc8259.md +0 -0
  113. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/text_embedding_qdrant/.env +0 -0
  114. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/text_embedding_qdrant/main.py +0 -0
  115. {cocoindex-0.1.30 → cocoindex-0.1.31}/examples/text_embedding_qdrant/markdown_files/rfc8259.md +0 -0
  116. {cocoindex-0.1.30 → cocoindex-0.1.31}/pyproject.toml +0 -0
  117. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/__init__.py +0 -0
  118. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/auth_registry.py +0 -0
  119. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/convert.py +0 -0
  120. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/functions.py +0 -0
  121. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/index.py +0 -0
  122. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/lib.py +0 -0
  123. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/llm.py +0 -0
  124. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/op.py +0 -0
  125. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/py.typed +0 -0
  126. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/query.py +0 -0
  127. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/runtime.py +0 -0
  128. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/setting.py +0 -0
  129. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/setup.py +0 -0
  130. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/sources.py +0 -0
  131. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/storages.py +0 -0
  132. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/tests/__init__.py +0 -0
  133. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/tests/test_convert.py +0 -0
  134. {cocoindex-0.1.30 → cocoindex-0.1.31}/python/cocoindex/typing.py +0 -0
  135. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/base/field_attrs.rs +0 -0
  136. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/base/json_schema.rs +0 -0
  137. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/base/mod.rs +0 -0
  138. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/base/spec.rs +0 -0
  139. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/base/value.rs +0 -0
  140. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/builder/mod.rs +0 -0
  141. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/execution/db_tracking.rs +0 -0
  142. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/execution/db_tracking_setup.rs +0 -0
  143. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/execution/live_updater.rs +0 -0
  144. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/execution/memoization.rs +0 -0
  145. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/execution/mod.rs +0 -0
  146. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/execution/query.rs +0 -0
  147. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/execution/source_indexer.rs +0 -0
  148. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/lib.rs +0 -0
  149. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/lib_context.rs +0 -0
  150. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/llm/anthropic.rs +0 -0
  151. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/llm/gemini.rs +0 -0
  152. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/llm/mod.rs +0 -0
  153. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/llm/ollama.rs +0 -0
  154. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/llm/openai.rs +0 -0
  155. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/factory_bases.rs +0 -0
  156. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/functions/extract_by_llm.rs +0 -0
  157. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/functions/mod.rs +0 -0
  158. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/functions/parse_json.rs +0 -0
  159. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/functions/split_recursively.rs +0 -0
  160. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/interface.rs +0 -0
  161. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/mod.rs +0 -0
  162. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/py_factory.rs +0 -0
  163. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/registration.rs +0 -0
  164. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/registry.rs +0 -0
  165. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/sdk.rs +0 -0
  166. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/sources/google_drive.rs +0 -0
  167. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/sources/local_file.rs +0 -0
  168. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/sources/mod.rs +0 -0
  169. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/storages/mod.rs +0 -0
  170. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/storages/neo4j.rs +0 -0
  171. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/storages/postgres.rs +0 -0
  172. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/storages/qdrant.rs +0 -0
  173. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/ops/storages/spec.rs +0 -0
  174. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/prelude.rs +0 -0
  175. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/py/convert.rs +0 -0
  176. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/service/error.rs +0 -0
  177. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/service/mod.rs +0 -0
  178. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/service/search.rs +0 -0
  179. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/settings.rs +0 -0
  180. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/setup/auth_registry.rs +0 -0
  181. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/setup/components.rs +0 -0
  182. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/setup/db_metadata.rs +0 -0
  183. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/setup/driver.rs +0 -0
  184. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/setup/mod.rs +0 -0
  185. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/setup/states.rs +0 -0
  186. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/utils/db.rs +0 -0
  187. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/utils/fingerprint.rs +0 -0
  188. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/utils/immutable.rs +0 -0
  189. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/utils/mod.rs +0 -0
  190. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/utils/retriable.rs +0 -0
  191. {cocoindex-0.1.30 → cocoindex-0.1.31}/src/utils/yaml_ser.rs +0 -0
@@ -533,7 +533,7 @@ dependencies = [
533
533
 
534
534
  [[package]]
535
535
  name = "cocoindex"
536
- version = "0.1.30"
536
+ version = "0.1.31"
537
537
  dependencies = [
538
538
  "anyhow",
539
539
  "async-openai",
@@ -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.1.30"
5
+ version = "0.1.31"
6
6
  edition = "2021"
7
7
 
8
8
  # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cocoindex
3
- Version: 0.1.30
3
+ Version: 0.1.31
4
4
  Requires-Dist: sentence-transformers>=3.3.1
5
5
  Requires-Dist: click>=8.1.8
6
6
  Requires-Dist: rich>=14.0.0
@@ -46,7 +46,7 @@ CocoInsight is in Early Access now (Free) 😊 You found us! A quick 3 minute vi
46
46
  Run CocoInsight to understand your RAG data pipeline:
47
47
 
48
48
  ```
49
- python main.py cocoindex server -c https://cocoindex.io
49
+ python main.py cocoindex server -ci
50
50
  ```
51
51
 
52
52
  Then open the CocoInsight UI at [https://cocoindex.io/cocoinsight](https://cocoindex.io/cocoinsight).
@@ -3,4 +3,4 @@ name = "code-embedding"
3
3
  version = "0.1.0"
4
4
  description = "Simple example for cocoindex: build embedding index based on source code."
5
5
  requires-python = ">=3.10"
6
- dependencies = ["cocoindex>=0.1.26", "python-dotenv>=1.0.1"]
6
+ dependencies = ["cocoindex>=0.1.30", "python-dotenv>=1.0.1"]
@@ -66,15 +66,11 @@ I used CocoInsight (Free beta now) to troubleshoot the index generation and unde
66
66
  It just connects to your local CocoIndex server, with Zero pipeline data retention. Run following command to start CocoInsight:
67
67
 
68
68
  ```bash
69
- python3 main.py cocoindex server -c https://cocoindex.io
69
+ python main.py cocoindex server -ci
70
70
  ```
71
71
 
72
72
  And then open the url https://cocoindex.io/cocoinsight.
73
73
 
74
- ```
75
- python main.py cocoindex server -c https://cocoindex.io
76
- ```
77
-
78
74
  <img width="1430" alt="cocoinsight" src="https://github.com/user-attachments/assets/d5ada581-cceb-42bf-a949-132df674f3dd" />
79
75
 
80
76
 
@@ -3,4 +3,4 @@ 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.10"
6
- dependencies = ["cocoindex>=0.1.26", "python-dotenv>=1.0.1"]
6
+ dependencies = ["cocoindex>=0.1.30", "python-dotenv>=1.0.1"]
@@ -53,13 +53,13 @@ CocoInsight is in Early Access now (Free) 😊 You found us! A quick 3 minute vi
53
53
  Run CocoInsight to understand your RAG data pipeline:
54
54
 
55
55
  ```sh
56
- python main.py cocoindex server -c https://cocoindex.io
56
+ python main.py cocoindex server -ci
57
57
  ```
58
58
 
59
59
  You can also add a `-L` flag to make the server keep updating the index to reflect source changes at the same time:
60
60
 
61
61
  ```sh
62
- python main.py cocoindex server -c https://cocoindex.io -L
62
+ python main.py cocoindex server -ci -L
63
63
  ```
64
64
 
65
65
  Then open the CocoInsight UI at [https://cocoindex.io/cocoinsight](https://cocoindex.io/cocoinsight).
@@ -3,4 +3,4 @@ name = "gdrive-text-embedding"
3
3
  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
- dependencies = ["cocoindex>=0.1.26", "python-dotenv>=1.0.1"]
6
+ dependencies = ["cocoindex>=0.1.30", "python-dotenv>=1.0.1"]
@@ -65,7 +65,7 @@ CocoInsight is a tool to help you understand your data pipeline and data index.
65
65
  Run CocoInsight to understand your RAG data pipeline:
66
66
 
67
67
  ```
68
- python main.py cocoindex server -c https://cocoindex.io
68
+ python main.py cocoindex server -ci
69
69
  ```
70
70
 
71
71
  Then open the CocoInsight UI at [https://cocoindex.io/cocoinsight](https://cocoindex.io/cocoinsight). It connects to your local CocoIndex server with zero data retention.
@@ -4,7 +4,7 @@ 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.10"
6
6
  dependencies = [
7
- "cocoindex>=0.1.26",
7
+ "cocoindex>=0.1.30",
8
8
  "python-dotenv>=1.0.1",
9
9
  "marker-pdf>=1.5.2",
10
10
  ]
@@ -35,7 +35,7 @@ CocoInsight is in Early Access now (Free) 😊 You found us! A quick 3 minute vi
35
35
  Run CocoInsight to understand your RAG data pipeline:
36
36
 
37
37
  ```
38
- python main.py cocoindex server -c https://cocoindex.io
38
+ python main.py cocoindex server -ci
39
39
  ```
40
40
 
41
41
  Then open the CocoInsight UI at [https://cocoindex.io/cocoinsight](https://cocoindex.io/cocoinsight).
@@ -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.10"
6
6
  dependencies = [
7
- "cocoindex>=0.1.26",
7
+ "cocoindex>=0.1.30",
8
8
  "python-dotenv>=1.0.1",
9
9
  "marker-pdf>=1.5.2",
10
10
  ]
@@ -39,7 +39,7 @@ CocoInsight is in Early Access now (Free) 😊 You found us! A quick 3 minute vi
39
39
  Run CocoInsight to understand your RAG data pipeline:
40
40
 
41
41
  ```
42
- python main.py cocoindex server -c https://cocoindex.io
42
+ python main.py cocoindex server -ci
43
43
  ```
44
44
 
45
45
  Then open the CocoInsight UI at [https://cocoindex.io/cocoinsight](https://cocoindex.io/cocoinsight).
@@ -3,4 +3,4 @@ name = "text-embedding"
3
3
  version = "0.1.0"
4
4
  description = "Simple example for cocoindex: build embedding index based on local text files."
5
5
  requires-python = ">=3.10"
6
- dependencies = ["cocoindex>=0.1.26", "python-dotenv>=1.0.1"]
6
+ dependencies = ["cocoindex>=0.1.30", "python-dotenv>=1.0.1"]
@@ -63,7 +63,7 @@ CocoInsight is in Early Access now (Free) 😊 You found us! A quick 3 minute vi
63
63
  Run CocoInsight to understand your RAG data pipeline:
64
64
 
65
65
  ```bash
66
- python main.py cocoindex server -c https://cocoindex.io
66
+ python main.py cocoindex server -ci
67
67
  ```
68
68
 
69
69
  Then open the CocoInsight UI at [https://cocoindex.io/cocoinsight](https://cocoindex.io/cocoinsight).
@@ -3,4 +3,4 @@ name = "text-embedding-qdrant"
3
3
  version = "0.1.0"
4
4
  description = "Simple example for cocoindex: build embedding index based on local text files."
5
5
  requires-python = ">=3.10"
6
- dependencies = ["cocoindex>=0.1.26", "python-dotenv>=1.0.1"]
6
+ dependencies = ["cocoindex>=0.1.30", "python-dotenv>=1.0.1"]
@@ -1,7 +1,9 @@
1
+ import asyncio
1
2
  import click
2
3
  import datetime
3
4
 
4
5
  from rich.console import Console
6
+ from rich.table import Table
5
7
 
6
8
  from . import flow, lib, setting
7
9
  from .setup import sync_setup, drop_setup, flow_names_with_setup, apply_setup_changes
@@ -56,11 +58,26 @@ def ls(show_all: bool):
56
58
  @click.option("--color/--no-color", default=True)
57
59
  def show(flow_name: str | None, color: bool):
58
60
  """
59
- Show the flow spec in a readable format with colored output.
61
+ Show the flow spec in a readable format with colored output,
62
+ including the schema.
60
63
  """
61
- fl = _flow_by_name(flow_name)
64
+ flow = _flow_by_name(flow_name)
62
65
  console = Console(no_color=not color)
63
- console.print(fl._render_text())
66
+ console.print(flow._render_text())
67
+
68
+ table = Table(
69
+ title=f"Schema for Flow: {flow.name}",
70
+ show_header=True,
71
+ header_style="bold magenta"
72
+ )
73
+ table.add_column("Field", style="cyan")
74
+ table.add_column("Type", style="green")
75
+ table.add_column("Attributes", style="yellow")
76
+
77
+ for field_name, field_type, attr_str in flow._render_schema():
78
+ table.add_row(field_name, field_type, attr_str)
79
+
80
+ console.print(table)
64
81
 
65
82
  @cli.command()
66
83
  def setup():
@@ -503,6 +503,9 @@ class Flow:
503
503
  return self._format_flow(flow_dict)
504
504
  except json.JSONDecodeError:
505
505
  return Text(flow_spec_str)
506
+
507
+ def _render_schema(self) -> list[tuple[str, str, str]]:
508
+ return self._lazy_engine_flow().get_schema()
506
509
 
507
510
  def __str__(self):
508
511
  return str(self._render_text())
@@ -1,9 +1,7 @@
1
- use crate::builder::plan::AnalyzedValueMapping;
1
+ use crate::prelude::*;
2
2
 
3
3
  use super::spec::*;
4
- use anyhow::Result;
5
- use serde::{Deserialize, Serialize};
6
- use std::{collections::BTreeMap, ops::Deref, sync::Arc};
4
+ use crate::builder::plan::AnalyzedValueMapping;
7
5
 
8
6
  #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9
7
  pub struct VectorTypeSchema {
@@ -60,27 +58,26 @@ pub enum BasicValueType {
60
58
  impl std::fmt::Display for BasicValueType {
61
59
  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
62
60
  match self {
63
- BasicValueType::Bytes => write!(f, "bytes"),
64
- BasicValueType::Str => write!(f, "str"),
65
- BasicValueType::Bool => write!(f, "bool"),
66
- BasicValueType::Int64 => write!(f, "int64"),
67
- BasicValueType::Float32 => write!(f, "float32"),
68
- BasicValueType::Float64 => write!(f, "float64"),
69
- BasicValueType::Range => write!(f, "range"),
70
- BasicValueType::Uuid => write!(f, "uuid"),
71
- BasicValueType::Date => write!(f, "date"),
72
- BasicValueType::Time => write!(f, "time"),
73
- BasicValueType::LocalDateTime => write!(f, "local_datetime"),
74
- BasicValueType::OffsetDateTime => write!(f, "offset_datetime"),
75
- BasicValueType::Json => write!(f, "json"),
76
- BasicValueType::Vector(s) => write!(
77
- f,
78
- "vector({}, {})",
79
- s.dimension
80
- .map(|d| d.to_string())
81
- .unwrap_or_else(|| "*".to_string()),
82
- s.element_type
83
- ),
61
+ BasicValueType::Bytes => write!(f, "Bytes"),
62
+ BasicValueType::Str => write!(f, "Str"),
63
+ BasicValueType::Bool => write!(f, "Bool"),
64
+ BasicValueType::Int64 => write!(f, "Int64"),
65
+ BasicValueType::Float32 => write!(f, "Float32"),
66
+ BasicValueType::Float64 => write!(f, "Float64"),
67
+ BasicValueType::Range => write!(f, "Range"),
68
+ BasicValueType::Uuid => write!(f, "Uuid"),
69
+ BasicValueType::Date => write!(f, "Date"),
70
+ BasicValueType::Time => write!(f, "Time"),
71
+ BasicValueType::LocalDateTime => write!(f, "LocalDateTime"),
72
+ BasicValueType::OffsetDateTime => write!(f, "OffsetDateTime"),
73
+ BasicValueType::Json => write!(f, "Json"),
74
+ BasicValueType::Vector(s) => {
75
+ write!(f, "Vector[{}", s.element_type)?;
76
+ if let Some(dimension) = s.dimension {
77
+ write!(f, ", {}", dimension)?;
78
+ }
79
+ write!(f, "]")
80
+ }
84
81
  }
85
82
  }
86
83
  }
@@ -141,9 +138,6 @@ impl std::fmt::Display for TableKind {
141
138
  pub struct TableSchema {
142
139
  pub kind: TableKind,
143
140
  pub row: StructSchema,
144
-
145
- #[serde(default = "Vec::new", skip_serializing_if = "Vec::is_empty")]
146
- pub collectors: Vec<NamedSpec<Arc<CollectorSchema>>>,
147
141
  }
148
142
 
149
143
  impl TableSchema {
@@ -170,36 +164,19 @@ impl TableSchema {
170
164
  Self {
171
165
  kind: self.kind,
172
166
  row: self.row.without_attrs(),
173
- collectors: self
174
- .collectors
175
- .iter()
176
- .map(|c| NamedSpec {
177
- name: c.name.clone(),
178
- spec: Arc::from(c.spec.without_attrs()),
179
- })
180
- .collect(),
181
167
  }
182
168
  }
183
169
  }
184
170
 
185
171
  impl std::fmt::Display for TableSchema {
186
172
  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
187
- write!(f, "{}({}", self.kind, self.row)?;
188
- for collector in self.collectors.iter() {
189
- write!(f, "; COLLECTOR {} ({})", collector.name, collector.spec)?;
190
- }
191
- write!(f, ")")?;
192
- Ok(())
173
+ write!(f, "{}({})", self.kind, self.row)
193
174
  }
194
175
  }
195
176
 
196
177
  impl TableSchema {
197
178
  pub fn new(kind: TableKind, row: StructSchema) -> Self {
198
- Self {
199
- kind,
200
- row,
201
- collectors: Default::default(),
202
- }
179
+ Self { kind, row }
203
180
  }
204
181
 
205
182
  pub fn key_field(&self) -> Option<&FieldSchema> {
@@ -409,16 +386,27 @@ impl CollectorSchema {
409
386
  }
410
387
  }
411
388
 
389
+ #[derive(Debug, Clone, Serialize, Deserialize, Default)]
390
+ pub struct OpScopeSchema {
391
+ /// Output schema for transform ops.
392
+ pub op_output_types: HashMap<FieldName, EnrichedValueType>,
393
+
394
+ /// Child op scope for foreach ops.
395
+ pub op_scopes: HashMap<String, Arc<OpScopeSchema>>,
396
+
397
+ /// Collectors for the current scope.
398
+ pub collectors: Vec<NamedSpec<Arc<CollectorSchema>>>,
399
+ }
400
+
412
401
  /// Top-level schema for a flow instance.
413
402
  #[derive(Debug, Clone, Serialize, Deserialize)]
414
- pub struct DataSchema {
403
+ pub struct FlowSchema {
415
404
  pub schema: StructSchema,
416
405
 
417
- #[serde(default = "Vec::new", skip_serializing_if = "Vec::is_empty")]
418
- pub collectors: Vec<NamedSpec<Arc<CollectorSchema>>>,
406
+ pub root_op_scope: OpScopeSchema,
419
407
  }
420
408
 
421
- impl Deref for DataSchema {
409
+ impl std::ops::Deref for FlowSchema {
422
410
  type Target = StructSchema;
423
411
 
424
412
  fn deref(&self) -> &Self::Target {
@@ -9,7 +9,7 @@ use crate::{
9
9
 
10
10
  pub struct AnalyzedFlow {
11
11
  pub flow_instance: spec::FlowInstanceSpec,
12
- pub data_schema: schema::DataSchema,
12
+ pub data_schema: schema::FlowSchema,
13
13
  pub desired_state: setup::FlowSetupState<setup::DesiredMode>,
14
14
  /// It's None if the flow is not up to date
15
15
  pub execution_plan:
@@ -67,7 +67,7 @@ impl AnalyzedFlow {
67
67
 
68
68
  pub struct AnalyzedTransientFlow {
69
69
  pub transient_flow_instance: spec::TransientFlowSpec,
70
- pub data_schema: schema::DataSchema,
70
+ pub data_schema: schema::FlowSchema,
71
71
  pub execution_plan: plan::TransientExecutionPlan,
72
72
  pub output_type: schema::EnrichedValueType,
73
73
  }