<p align="center">
<img src="https://cocoindex.io/images/github.svg" alt="CocoIndex">
</p>
<h1 align="center">Data transformation for AI</h1>
<div align="center">
[](https://github.com/cocoindex-io/cocoindex)
[](https://cocoindex.io/docs/getting_started/quickstart)
[](https://opensource.org/licenses/Apache-2.0)
[](https://pypi.org/project/cocoindex/)
<!--[](https://pypistats.org/packages/cocoindex) -->
[](https://pepy.tech/projects/cocoindex)
[](https://github.com/cocoindex-io/cocoindex/actions/workflows/CI.yml)
[](https://github.com/cocoindex-io/cocoindex/actions/workflows/release.yml)
[](https://discord.com/invite/zpA9S2DR7s)
</div>
<div align="center">
<a href="https://trendshift.io/repositories/13939" target="_blank"><img src="https://trendshift.io/api/badge/repositories/13939" alt="cocoindex-io%2Fcocoindex | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
</div>
Ultra performant data transformation framework for AI, with core engine written in Rust. Support incremental processing and data lineage out-of-box. Exceptional developer velocity. Production-ready at day 0.
⭐ Drop a star to help us grow!
<div align="center">
<!-- Keep these links. Translations will automatically update with the README. -->
[Deutsch](https://readme-i18n.com/cocoindex-io/cocoindex?lang=de) |
[English](https://readme-i18n.com/cocoindex-io/cocoindex?lang=en) |
[Español](https://readme-i18n.com/cocoindex-io/cocoindex?lang=es) |
[français](https://readme-i18n.com/cocoindex-io/cocoindex?lang=fr) |
[日本語](https://readme-i18n.com/cocoindex-io/cocoindex?lang=ja) |
[한국어](https://readme-i18n.com/cocoindex-io/cocoindex?lang=ko) |
[Português](https://readme-i18n.com/cocoindex-io/cocoindex?lang=pt) |
[Русский](https://readme-i18n.com/cocoindex-io/cocoindex?lang=ru) |
[中文](https://readme-i18n.com/cocoindex-io/cocoindex?lang=zh)
</div>
</br>
<p align="center">
<img src="https://cocoindex.io/images/transformation.svg" alt="CocoIndex Transformation">
</p>
</br>
CocoIndex makes it effortless to transform data with AI, and keep source data and target in sync. Whether you’re building a vector index for RAG, creating knowledge graphs, or performing any custom data transformations — goes beyond SQL.
</br>
<p align="center">
<img alt="CocoIndex Features" src="https://cocoindex.io/images/venn2.svg" />
</p>
</br>
## Exceptional velocity
Just declare transformation in dataflow with ~100 lines of python
```python
# import
data['content'] = flow_builder.add_source(...)
# transform
data['out'] = data['content']
.transform(...)
.transform(...)
# collect data
collector.collect(...)
# export to db, vector db, graph db ...
collector.export(...)
```
CocoIndex follows the idea of [Dataflow](https://en.wikipedia.org/wiki/Dataflow_programming) programming model. Each transformation creates a new field solely based on input fields, without hidden states and value mutation. All data before/after each transformation is observable, with lineage out of the box.
**Particularly**, developers don't explicitly mutate data by creating, updating and deleting. They just need to define transformation/formula for a set of source data.
## Plug-and-Play Building Blocks
Native builtins for different source, targets and transformations. Standardize interface, make it 1-line code switch between different components - as easy as assembling building blocks.
<p align="center">
<img src="https://cocoindex.io/images/components.svg" alt="CocoIndex Features">
</p>
## Data Freshness
CocoIndex keep source data and target in sync effortlessly.
<p align="center">
<img src="https://github.com/user-attachments/assets/f4eb29b3-84ee-4fa0-a1e2-80eedeeabde6" alt="Incremental Processing" width="700">
</p>
It has out-of-box support for incremental indexing:
- minimal recomputation on source or logic change.
- (re-)processing necessary portions; reuse cache when possible
## Quick Start
If you're new to CocoIndex, we recommend checking out
- 📖 [Documentation](https://cocoindex.io/docs)
- ⚡ [Quick Start Guide](https://cocoindex.io/docs/getting_started/quickstart)
- 🎬 [Quick Start Video Tutorial](https://youtu.be/gv5R8nOXsWU?si=9ioeKYkMEnYevTXT)
### Setup
1. Install CocoIndex Python library
```bash
pip install -U cocoindex
```
2. [Install Postgres](https://cocoindex.io/docs/getting_started/installation#-install-postgres) if you don't have one. CocoIndex uses it for incremental processing.
3. (Optional) Install Claude Code skill for enhanced development experience. Run these commands in [Claude Code](https://claude.com/claude-code):
```
/plugin marketplace add cocoindex-io/cocoindex-claude
/plugin install cocoindex-skills@cocoindex
```
## Define data flow
Follow [Quick Start Guide](https://cocoindex.io/docs/getting_started/quickstart) to define your first indexing flow. An example flow looks like:
```python
@cocoindex.flow_def(name="TextEmbedding")
def text_embedding_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.DataScope):
# Add a data source to read files from a directory
data_scope["documents"] = flow_builder.add_source(cocoindex.sources.LocalFile(path="markdown_files"))
# Add a collector for data to be exported to the vector index
doc_embeddings = data_scope.add_collector()
# Transform data of each document
with data_scope["documents"].row() as doc:
# Split the document into chunks, put into `chunks` field
doc["chunks"] = doc["content"].transform(
cocoindex.functions.SplitRecursively(),
language="markdown", chunk_size=2000, chunk_overlap=500)
# Transform data of each chunk
with doc["chunks"].row() as chunk:
# Embed the chunk, put into `embedding` field
chunk["embedding"] = chunk["text"].transform(
cocoindex.functions.SentenceTransformerEmbed(
model="sentence-transformers/all-MiniLM-L6-v2"))
# Collect the chunk into the collector.
doc_embeddings.collect(filename=doc["filename"], location=chunk["location"],
text=chunk["text"], embedding=chunk["embedding"])
# Export collected data to a vector index.
doc_embeddings.export(
"doc_embeddings",
cocoindex.targets.Postgres(),
primary_key_fields=["filename", "location"],
vector_indexes=[
cocoindex.VectorIndexDef(
field_name="embedding",
metric=cocoindex.VectorSimilarityMetric.COSINE_SIMILARITY)])
```
It defines an index flow like this:
<p align="center">
<img width="400" alt="Data Flow" src="https://github.com/user-attachments/assets/2ea7be6d-3d94-42b1-b2bd-22515577e463" />
</p>
## 🚀 Examples and demo
| Example | Description |
|---------|-------------|
| [Text Embedding](examples/text_embedding) | Index text documents with embeddings for semantic search |
| [Code Embedding](examples/code_embedding) | Index code embeddings for semantic search |
| [PDF Embedding](examples/pdf_embedding) | Parse PDF and index text embeddings for semantic search |
| [PDF Elements Embedding](examples/pdf_elements_embedding) | Extract text and images from PDFs; embed text with SentenceTransformers and images with CLIP; store in Qdrant for multimodal search |
| [Manuals LLM Extraction](examples/manuals_llm_extraction) | Extract structured information from a manual using LLM |
| [Amazon S3 Embedding](examples/amazon_s3_embedding) | Index text documents from Amazon S3 |
| [Azure Blob Storage Embedding](examples/azure_blob_embedding) | Index text documents from Azure Blob Storage |
| [Google Drive Text Embedding](examples/gdrive_text_embedding) | Index text documents from Google Drive |
| [Docs to Knowledge Graph](examples/docs_to_knowledge_graph) | Extract relationships from Markdown documents and build a knowledge graph |
| [Embeddings to Qdrant](examples/text_embedding_qdrant) | Index documents in a Qdrant collection for semantic search |
| [Embeddings to LanceDB](examples/text_embedding_lancedb) | Index documents in a LanceDB collection for semantic search |
| [FastAPI Server with Docker](examples/fastapi_server_docker) | Run the semantic search server in a Dockerized FastAPI setup |
| [Product Recommendation](examples/product_recommendation) | Build real-time product recommendations with LLM and graph database|
| [Image Search with Vision API](examples/image_search) | Generates detailed captions for images using a vision model, embeds them, enables live-updating semantic search via FastAPI and served on a React frontend|
| [Face Recognition](examples/face_recognition) | Recognize faces in images and build embedding index |
| [Paper Metadata](examples/paper_metadata) | Index papers in PDF files, and build metadata tables for each paper |
| [Multi Format Indexing](examples/multi_format_indexing) | Build visual document index from PDFs and images with ColPali for semantic search |
| [Custom Source HackerNews](examples/custom_source_hn) | Index HackerNews threads and comments, using *CocoIndex Custom Source* |
| [Custom Output Files](examples/custom_output_files) | Convert markdown files to HTML files and save them to a local directory, using *CocoIndex Custom Targets* |
| [Patient intake form extraction](examples/patient_intake_extraction) | Use LLM to extract structured data from patient intake forms with different formats |
| [HackerNews Trending Topics](examples/hn_trending_topics) | Extract trending topics from HackerNews threads and comments, using *CocoIndex Custom Source* and LLM |
More coming and stay tuned 👀!
## 📖 Documentation
For detailed documentation, visit [CocoIndex Documentation](https://cocoindex.io/docs), including a [Quickstart guide](https://cocoindex.io/docs/getting_started/quickstart).
## 🤝 Contributing
We love contributions from our community ❤️. For details on contributing or running the project for development, check out our [contributing guide](https://cocoindex.io/docs/about/contributing).
## 👥 Community
Welcome with a huge coconut hug 🥥⋆。˚🤗. We are super excited for community contributions of all kinds - whether it's code improvements, documentation updates, issue reports, feature requests, and discussions in our Discord.
Join our community here:
- 🌟 [Star us on GitHub](https://github.com/cocoindex-io/cocoindex)
- 👋 [Join our Discord community](https://discord.com/invite/zpA9S2DR7s)
- ▶️ [Subscribe to our YouTube channel](https://www.youtube.com/@cocoindex-io)
- 📜 [Read our blog posts](https://cocoindex.io/blogs/)
## Support us
We are constantly improving, and more features and examples are coming soon. If you love this project, please drop us a star ⭐ at GitHub repo [](https://github.com/cocoindex-io/cocoindex) to stay tuned and help us grow.
## License
CocoIndex is Apache 2.0 licensed.
Raw data
{
"_id": null,
"home_page": null,
"name": "cocoindex",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "indexing, real-time, incremental, pipeline, search, ai, etl, rag, dataflow, context-engineering",
"author": null,
"author_email": "CocoIndex <cocoindex.io@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/1a/93/d0ae36df4f241c05dcfa9183ac6bd29690acaf0c8b9ddf3daae85c029b9e/cocoindex-0.2.23.tar.gz",
"platform": null,
"description": "<p align=\"center\">\n <img src=\"https://cocoindex.io/images/github.svg\" alt=\"CocoIndex\">\n</p>\n\n<h1 align=\"center\">Data transformation for AI</h1>\n\n<div align=\"center\">\n\n[](https://github.com/cocoindex-io/cocoindex)\n[](https://cocoindex.io/docs/getting_started/quickstart)\n[](https://opensource.org/licenses/Apache-2.0)\n[](https://pypi.org/project/cocoindex/)\n<!--[](https://pypistats.org/packages/cocoindex) -->\n[](https://pepy.tech/projects/cocoindex)\n[](https://github.com/cocoindex-io/cocoindex/actions/workflows/CI.yml)\n[](https://github.com/cocoindex-io/cocoindex/actions/workflows/release.yml)\n[](https://discord.com/invite/zpA9S2DR7s)\n\n</div>\n\n<div align=\"center\">\n <a href=\"https://trendshift.io/repositories/13939\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/13939\" alt=\"cocoindex-io%2Fcocoindex | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n</div>\n\nUltra performant data transformation framework for AI, with core engine written in Rust. Support incremental processing and data lineage out-of-box. Exceptional developer velocity. Production-ready at day 0.\n\n\u2b50 Drop a star to help us grow!\n\n<div align=\"center\">\n\n<!-- Keep these links. Translations will automatically update with the README. -->\n[Deutsch](https://readme-i18n.com/cocoindex-io/cocoindex?lang=de) |\n[English](https://readme-i18n.com/cocoindex-io/cocoindex?lang=en) |\n[Espa\u00f1ol](https://readme-i18n.com/cocoindex-io/cocoindex?lang=es) |\n[fran\u00e7ais](https://readme-i18n.com/cocoindex-io/cocoindex?lang=fr) |\n[\u65e5\u672c\u8a9e](https://readme-i18n.com/cocoindex-io/cocoindex?lang=ja) |\n[\ud55c\uad6d\uc5b4](https://readme-i18n.com/cocoindex-io/cocoindex?lang=ko) |\n[Portugu\u00eas](https://readme-i18n.com/cocoindex-io/cocoindex?lang=pt) |\n[\u0420\u0443\u0441\u0441\u043a\u0438\u0439](https://readme-i18n.com/cocoindex-io/cocoindex?lang=ru) |\n[\u4e2d\u6587](https://readme-i18n.com/cocoindex-io/cocoindex?lang=zh)\n\n</div>\n\n</br>\n\n<p align=\"center\">\n <img src=\"https://cocoindex.io/images/transformation.svg\" alt=\"CocoIndex Transformation\">\n</p>\n\n</br>\n\nCocoIndex makes it effortless to transform data with AI, and keep source data and target in sync. Whether you\u2019re building a vector index for RAG, creating knowledge graphs, or performing any custom data transformations \u2014 goes beyond SQL.\n\n</br>\n\n<p align=\"center\">\n<img alt=\"CocoIndex Features\" src=\"https://cocoindex.io/images/venn2.svg\" />\n</p>\n\n</br>\n\n## Exceptional velocity\n\nJust declare transformation in dataflow with ~100 lines of python\n\n```python\n# import\ndata['content'] = flow_builder.add_source(...)\n\n# transform\ndata['out'] = data['content']\n .transform(...)\n .transform(...)\n\n# collect data\ncollector.collect(...)\n\n# export to db, vector db, graph db ...\ncollector.export(...)\n```\n\nCocoIndex follows the idea of [Dataflow](https://en.wikipedia.org/wiki/Dataflow_programming) programming model. Each transformation creates a new field solely based on input fields, without hidden states and value mutation. All data before/after each transformation is observable, with lineage out of the box.\n\n**Particularly**, developers don't explicitly mutate data by creating, updating and deleting. They just need to define transformation/formula for a set of source data.\n\n## Plug-and-Play Building Blocks\n\nNative builtins for different source, targets and transformations. Standardize interface, make it 1-line code switch between different components - as easy as assembling building blocks.\n\n<p align=\"center\">\n <img src=\"https://cocoindex.io/images/components.svg\" alt=\"CocoIndex Features\">\n</p>\n\n## Data Freshness\n\nCocoIndex keep source data and target in sync effortlessly.\n\n<p align=\"center\">\n <img src=\"https://github.com/user-attachments/assets/f4eb29b3-84ee-4fa0-a1e2-80eedeeabde6\" alt=\"Incremental Processing\" width=\"700\">\n</p>\n\nIt has out-of-box support for incremental indexing:\n\n- minimal recomputation on source or logic change.\n- (re-)processing necessary portions; reuse cache when possible\n\n## Quick Start\n\nIf you're new to CocoIndex, we recommend checking out\n\n- \ud83d\udcd6 [Documentation](https://cocoindex.io/docs)\n- \u26a1 [Quick Start Guide](https://cocoindex.io/docs/getting_started/quickstart)\n- \ud83c\udfac [Quick Start Video Tutorial](https://youtu.be/gv5R8nOXsWU?si=9ioeKYkMEnYevTXT)\n\n### Setup\n\n1. Install CocoIndex Python library\n\n```bash\npip install -U cocoindex\n```\n\n2. [Install Postgres](https://cocoindex.io/docs/getting_started/installation#-install-postgres) if you don't have one. CocoIndex uses it for incremental processing.\n\n3. (Optional) Install Claude Code skill for enhanced development experience. Run these commands in [Claude Code](https://claude.com/claude-code):\n\n```\n/plugin marketplace add cocoindex-io/cocoindex-claude\n/plugin install cocoindex-skills@cocoindex\n```\n\n## Define data flow\n\nFollow [Quick Start Guide](https://cocoindex.io/docs/getting_started/quickstart) to define your first indexing flow. An example flow looks like:\n\n```python\n@cocoindex.flow_def(name=\"TextEmbedding\")\ndef text_embedding_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.DataScope):\n # Add a data source to read files from a directory\n data_scope[\"documents\"] = flow_builder.add_source(cocoindex.sources.LocalFile(path=\"markdown_files\"))\n\n # Add a collector for data to be exported to the vector index\n doc_embeddings = data_scope.add_collector()\n\n # Transform data of each document\n with data_scope[\"documents\"].row() as doc:\n # Split the document into chunks, put into `chunks` field\n doc[\"chunks\"] = doc[\"content\"].transform(\n cocoindex.functions.SplitRecursively(),\n language=\"markdown\", chunk_size=2000, chunk_overlap=500)\n\n # Transform data of each chunk\n with doc[\"chunks\"].row() as chunk:\n # Embed the chunk, put into `embedding` field\n chunk[\"embedding\"] = chunk[\"text\"].transform(\n cocoindex.functions.SentenceTransformerEmbed(\n model=\"sentence-transformers/all-MiniLM-L6-v2\"))\n\n # Collect the chunk into the collector.\n doc_embeddings.collect(filename=doc[\"filename\"], location=chunk[\"location\"],\n text=chunk[\"text\"], embedding=chunk[\"embedding\"])\n\n # Export collected data to a vector index.\n doc_embeddings.export(\n \"doc_embeddings\",\n cocoindex.targets.Postgres(),\n primary_key_fields=[\"filename\", \"location\"],\n vector_indexes=[\n cocoindex.VectorIndexDef(\n field_name=\"embedding\",\n metric=cocoindex.VectorSimilarityMetric.COSINE_SIMILARITY)])\n```\n\nIt defines an index flow like this:\n\n<p align=\"center\">\n <img width=\"400\" alt=\"Data Flow\" src=\"https://github.com/user-attachments/assets/2ea7be6d-3d94-42b1-b2bd-22515577e463\" />\n</p>\n\n## \ud83d\ude80 Examples and demo\n\n| Example | Description |\n|---------|-------------|\n| [Text Embedding](examples/text_embedding) | Index text documents with embeddings for semantic search |\n| [Code Embedding](examples/code_embedding) | Index code embeddings for semantic search |\n| [PDF Embedding](examples/pdf_embedding) | Parse PDF and index text embeddings for semantic search |\n| [PDF Elements Embedding](examples/pdf_elements_embedding) | Extract text and images from PDFs; embed text with SentenceTransformers and images with CLIP; store in Qdrant for multimodal search |\n| [Manuals LLM Extraction](examples/manuals_llm_extraction) | Extract structured information from a manual using LLM |\n| [Amazon S3 Embedding](examples/amazon_s3_embedding) | Index text documents from Amazon S3 |\n| [Azure Blob Storage Embedding](examples/azure_blob_embedding) | Index text documents from Azure Blob Storage |\n| [Google Drive Text Embedding](examples/gdrive_text_embedding) | Index text documents from Google Drive |\n| [Docs to Knowledge Graph](examples/docs_to_knowledge_graph) | Extract relationships from Markdown documents and build a knowledge graph |\n| [Embeddings to Qdrant](examples/text_embedding_qdrant) | Index documents in a Qdrant collection for semantic search |\n| [Embeddings to LanceDB](examples/text_embedding_lancedb) | Index documents in a LanceDB collection for semantic search |\n| [FastAPI Server with Docker](examples/fastapi_server_docker) | Run the semantic search server in a Dockerized FastAPI setup |\n| [Product Recommendation](examples/product_recommendation) | Build real-time product recommendations with LLM and graph database|\n| [Image Search with Vision API](examples/image_search) | Generates detailed captions for images using a vision model, embeds them, enables live-updating semantic search via FastAPI and served on a React frontend|\n| [Face Recognition](examples/face_recognition) | Recognize faces in images and build embedding index |\n| [Paper Metadata](examples/paper_metadata) | Index papers in PDF files, and build metadata tables for each paper |\n| [Multi Format Indexing](examples/multi_format_indexing) | Build visual document index from PDFs and images with ColPali for semantic search |\n| [Custom Source HackerNews](examples/custom_source_hn) | Index HackerNews threads and comments, using *CocoIndex Custom Source* |\n| [Custom Output Files](examples/custom_output_files) | Convert markdown files to HTML files and save them to a local directory, using *CocoIndex Custom Targets* |\n| [Patient intake form extraction](examples/patient_intake_extraction) | Use LLM to extract structured data from patient intake forms with different formats |\n| [HackerNews Trending Topics](examples/hn_trending_topics) | Extract trending topics from HackerNews threads and comments, using *CocoIndex Custom Source* and LLM |\n\nMore coming and stay tuned \ud83d\udc40!\n\n## \ud83d\udcd6 Documentation\n\nFor detailed documentation, visit [CocoIndex Documentation](https://cocoindex.io/docs), including a [Quickstart guide](https://cocoindex.io/docs/getting_started/quickstart).\n\n## \ud83e\udd1d Contributing\n\nWe love contributions from our community \u2764\ufe0f. For details on contributing or running the project for development, check out our [contributing guide](https://cocoindex.io/docs/about/contributing).\n\n## \ud83d\udc65 Community\n\nWelcome with a huge coconut hug \ud83e\udd65\u22c6\uff61\u02da\ud83e\udd17. We are super excited for community contributions of all kinds - whether it's code improvements, documentation updates, issue reports, feature requests, and discussions in our Discord.\n\nJoin our community here:\n\n- \ud83c\udf1f [Star us on GitHub](https://github.com/cocoindex-io/cocoindex)\n- \ud83d\udc4b [Join our Discord community](https://discord.com/invite/zpA9S2DR7s)\n- \u25b6\ufe0f [Subscribe to our YouTube channel](https://www.youtube.com/@cocoindex-io)\n- \ud83d\udcdc [Read our blog posts](https://cocoindex.io/blogs/)\n\n## Support us\n\nWe are constantly improving, and more features and examples are coming soon. If you love this project, please drop us a star \u2b50 at GitHub repo [](https://github.com/cocoindex-io/cocoindex) to stay tuned and help us grow.\n\n## License\n\nCocoIndex is Apache 2.0 licensed.\n\n",
"bugtrack_url": null,
"license": null,
"summary": "With CocoIndex, users declare the transformation, CocoIndex creates & maintains an index, and keeps the derived index up to date based on source update, with minimal computation and changes.",
"version": "0.2.23",
"project_urls": {
"Homepage": "https://cocoindex.io/"
},
"split_keywords": [
"indexing",
" real-time",
" incremental",
" pipeline",
" search",
" ai",
" etl",
" rag",
" dataflow",
" context-engineering"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "3ca4545465a96909184aa7c4b386efc1a93bb3d87f8cd47e0091476a1f403d6e",
"md5": "d5c11b5d6a7c08982c3cd1de19cdc94e",
"sha256": "1fe290b135497a3d4328ba9a3f1b2560e378eaf4eda340af8c0c1d79a3119cb6"
},
"downloads": -1,
"filename": "cocoindex-0.2.23-cp311-abi3-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "d5c11b5d6a7c08982c3cd1de19cdc94e",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 16367954,
"upload_time": "2025-10-28T06:29:54",
"upload_time_iso_8601": "2025-10-28T06:29:54.032064Z",
"url": "https://files.pythonhosted.org/packages/3c/a4/545465a96909184aa7c4b386efc1a93bb3d87f8cd47e0091476a1f403d6e/cocoindex-0.2.23-cp311-abi3-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d0430be7931c6cc7548ed80c345aeaefdb4163743b327a3b698b3de0a555524c",
"md5": "6594a3d783d4beb04007cfa9604c67ec",
"sha256": "756cf7a2f9d300e3434151b7be7940f981d47a32a815f5fa46d6376a4eff14f7"
},
"downloads": -1,
"filename": "cocoindex-0.2.23-cp311-abi3-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "6594a3d783d4beb04007cfa9604c67ec",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 15753523,
"upload_time": "2025-10-28T06:29:51",
"upload_time_iso_8601": "2025-10-28T06:29:51.462510Z",
"url": "https://files.pythonhosted.org/packages/d0/43/0be7931c6cc7548ed80c345aeaefdb4163743b327a3b698b3de0a555524c/cocoindex-0.2.23-cp311-abi3-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c6a0b961607ad924b981f924fe00412fa2dc0c78f379fc916a76d8e4f1d07920",
"md5": "589a172289d5fa77298d0b41215e3a77",
"sha256": "48a915ab2081463dda6fe8a48873469cca1166780b7446665d7291561b634698"
},
"downloads": -1,
"filename": "cocoindex-0.2.23-cp311-abi3-manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "589a172289d5fa77298d0b41215e3a77",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 15858561,
"upload_time": "2025-10-28T06:29:44",
"upload_time_iso_8601": "2025-10-28T06:29:44.928473Z",
"url": "https://files.pythonhosted.org/packages/c6/a0/b961607ad924b981f924fe00412fa2dc0c78f379fc916a76d8e4f1d07920/cocoindex-0.2.23-cp311-abi3-manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a2c1b245a72918f09b3ff73c46c7638daaba7cb6d6991933105ec825f13fb2f1",
"md5": "a14111de632243422cd2fe5a0ab9d2c3",
"sha256": "f059deafb180c6551ce610a7f74280da8ac0af0fa9406dcbe38b5733096b1f6f"
},
"downloads": -1,
"filename": "cocoindex-0.2.23-cp311-abi3-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "a14111de632243422cd2fe5a0ab9d2c3",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 16763269,
"upload_time": "2025-10-28T06:29:48",
"upload_time_iso_8601": "2025-10-28T06:29:48.510686Z",
"url": "https://files.pythonhosted.org/packages/a2/c1/b245a72918f09b3ff73c46c7638daaba7cb6d6991933105ec825f13fb2f1/cocoindex-0.2.23-cp311-abi3-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "92665b28efa1ccdc54b4a37c18682ee2f2aaf2a2bc3fa87d909c860547e33720",
"md5": "e0fec75426e1f4c58f264c6ceac5a084",
"sha256": "64f82c25b3ce3e74216b6e6e783519f6fde7cd753eae1e5c7679d0e42d075bf3"
},
"downloads": -1,
"filename": "cocoindex-0.2.23-cp311-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "e0fec75426e1f4c58f264c6ceac5a084",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.11",
"size": 17048290,
"upload_time": "2025-10-28T06:30:00",
"upload_time_iso_8601": "2025-10-28T06:30:00.476392Z",
"url": "https://files.pythonhosted.org/packages/92/66/5b28efa1ccdc54b4a37c18682ee2f2aaf2a2bc3fa87d909c860547e33720/cocoindex-0.2.23-cp311-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1a93d0ae36df4f241c05dcfa9183ac6bd29690acaf0c8b9ddf3daae85c029b9e",
"md5": "cc2652229d387fec76950107f2506dd3",
"sha256": "c1d8f733e2a17341bca9675e659ba5512371b0f3f47cfbbea31c0bc6a095c73f"
},
"downloads": -1,
"filename": "cocoindex-0.2.23.tar.gz",
"has_sig": false,
"md5_digest": "cc2652229d387fec76950107f2506dd3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 30151785,
"upload_time": "2025-10-28T06:29:57",
"upload_time_iso_8601": "2025-10-28T06:29:57.747050Z",
"url": "https://files.pythonhosted.org/packages/1a/93/d0ae36df4f241c05dcfa9183ac6bd29690acaf0c8b9ddf3daae85c029b9e/cocoindex-0.2.23.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-28 06:29:57",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "cocoindex"
}