[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81786":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},81786,"ducklake-sdk","borchero\u002Fducklake-sdk","borchero","Native SDKs for DuckLake.","https:\u002F\u002Fducklake-sdk.readthedocs.io",null,"Rust",49,1,16,0,4,43.3,"MIT License",false,"main",[22,23,24],"duckdb","ducklake","polars","2026-06-12 04:01:35","\u003Cdiv align=\"center\">\n\n  \u003Ch3 align=\"center\">\n  \u003Ccode>ducklake-sdk\u003C\u002Fcode> — Native SDKs for \u003Ca href=\"https:\u002F\u002Fducklake.select\">DuckLake\u003C\u002Fa>\n  \u003C\u002Fh3>\n\n  \u003Cp align=\"center\">\n    Read and write DuckLake tables from Rust and Python - no DuckDB required.\n  \u003C\u002Fp>\n\n[![CI](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fborchero\u002Fducklake-sdk\u002Fci.yml?style=flat-square&branch=main&label=CI)](https:\u002F\u002Fgithub.com\u002Fborchero\u002Fducklake-sdk\u002Factions\u002Fworkflows\u002Fci.yml)\n[![Build](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fborchero\u002Fducklake-sdk\u002Fbuild.yml?style=flat-square&branch=main&label=Build)](https:\u002F\u002Fgithub.com\u002Fborchero\u002Fducklake-sdk\u002Factions\u002Fworkflows\u002Fbuild.yml)\n[![GitHub Release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fborchero\u002Fducklake-sdk?style=flat-square&label=Release)](https:\u002F\u002Fgithub.com\u002Fborchero\u002Fducklake-sdk\u002Freleases)\n\n\u003C\u002Fdiv>\n\n---\n\nDuckLake is an integrated data lake and catalog format that stores metadata in a SQL catalog database and writes data\nas Parquet files. This repository provides standalone Rust and Python SDKs that talk to DuckLakes directly, with no\ndependency on DuckDB or its DuckLake extension.\n\nAll language SDKs are built on the same Rust core, which bundles the implementation of the DuckLake specification.\n\n**Python ([`ducklake-sdk`](https:\u002F\u002Fpypi.org\u002Fproject\u002Fducklake-sdk))**\n\n[![pypi-version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fducklake-sdk.svg?logoColor=white&logo=pypi&style=flat-square&label=pypi)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fducklake-sdk)\n[![conda-forge](https:\u002F\u002Fimg.shields.io\u002Fconda\u002Fvn\u002Fconda-forge\u002Fducklake-sdk?logoColor=white&logo=conda-forge&style=flat-square)](https:\u002F\u002Fprefix.dev\u002Fchannels\u002Fconda-forge\u002Fpackages\u002Fducklake-sdk)\n[![python-version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fducklake-sdk?logoColor=white&logo=python&style=flat-square)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fducklake-sdk)\n[![readthedocs](https:\u002F\u002Fimg.shields.io\u002Freadthedocs\u002Fducklake-sdk?logo=readthedocs&logoColor=white&style=flat-square&label=docs)](https:\u002F\u002Fducklake-sdk.readthedocs.io)\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fborchero\u002Fducklake-sdk\u002Fgraph\u002Fbadge.svg?component=python&token=A2h8NFb4Bx)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fborchero\u002Fducklake-sdk\u002Ftree\u002Fmain?components%5B0%5D=Python)\n\n**Rust ([`ducklake`](https:\u002F\u002Fcrates.io\u002Fcrates\u002Fducklake))**\n\n[![crates.io](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fv\u002Fducklake.svg?logo=rust&logoColor=white&style=flat-square&label=crates.io)](https:\u002F\u002Fcrates.io\u002Fcrates\u002Fducklake)\n[![docs.rs](https:\u002F\u002Fimg.shields.io\u002Fdocsrs\u002Fducklake?logo=docsdotrs&logoColor=white&style=flat-square&label=docs.rs)](https:\u002F\u002Fdocs.rs\u002Fducklake)\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fborchero\u002Fducklake-sdk\u002Fgraph\u002Fbadge.svg?component=rust&token=A2h8NFb4Bx)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fborchero\u002Fducklake-sdk\u002Ftree\u002Fmain?components%5B0%5D=Rust)\n\n\u003C!-- prettier-ignore -->\n> [!WARNING]\n> This is _not_ an official SDK released by the DuckDB Foundation.\n\n## Getting Started\n\n**Python**\n\n```bash\npip install ducklake-sdk            # core\npip install \"ducklake-sdk[polars]\"  # Polars integration\npip install \"ducklake-sdk[arrow]\"   # Arrow + DuckDB integration\n```\n\n**Rust**\n\n```bash\ncargo add ducklake\n```\n\n### Quick Example\n\n```python\nimport ducklake as dl\nimport polars as pl\n\n# Create a new DuckLake backed by SQLite metadata and local Parquet storage\nducklake = dl.create(\"sqlite:\u002F\u002F\u002Fmetadata.sqlite\", data_path=\"data_files\u002F\")\n\n# Define a table.\ntable = ducklake.create_table(\n    \"events\",\n    schema={\"id\": dl.Int64(), \"message\": dl.Varchar()},\n)\n\n# Write data using Polars\nlf = pl.LazyFrame({\"id\": [1, 2, 3], \"message\": [\"hello\", \"ducklake\", \"sdk\"]})\ntable.sink_polars(lf)\n\n# Read it back as a Polars LazyFrame\ndf = table.scan_polars().collect()\n```\n\nFor the full API, see the [Python documentation](https:\u002F\u002Fducklake-sdk.readthedocs.io) or the\n[Rust API docs](https:\u002F\u002Fdocs.rs\u002Fducklake).\n\n## Features\n\nThe Rust core — and therefore every SDK built on top of it — supports:\n\n- **Metadata operations** — schemas, tables,\n  [schema evolution](https:\u002F\u002Fducklake.select\u002Fdocs\u002Fstable\u002Fduckdb\u002Fusage\u002Fschema_evolution),\n  [partitioning](https:\u002F\u002Fducklake.select\u002Fdocs\u002Fstable\u002Fduckdb\u002Fadvanced_features\u002Fpartitioning),\n  [constraints](https:\u002F\u002Fducklake.select\u002Fdocs\u002Fstable\u002Fduckdb\u002Fadvanced_features\u002Fconstraints), and\n  [table\u002Fcolumn tags](https:\u002F\u002Fducklake.select\u002Fdocs\u002Fstable\u002Fduckdb\u002Fadvanced_features\u002Fcomments)\n- **[Transactions](https:\u002F\u002Fducklake.select\u002Fdocs\u002Fstable\u002Fduckdb\u002Fadvanced_features\u002Ftransactions)** with\n  [conflict resolution](https:\u002F\u002Fducklake.select\u002Fdocs\u002Fstable\u002Fduckdb\u002Fadvanced_features\u002Fconflict_resolution)\n- **[Data inlining](https:\u002F\u002Fducklake.select\u002Fdocs\u002Fstable\u002Fduckdb\u002Fadvanced_features\u002Fdata_inlining)** for small writes\n- **[Metadata configuration](https:\u002F\u002Fducklake.select\u002Fdocs\u002Fstable\u002Fduckdb\u002Fusage\u002Fconfiguration)**\n- **[Time travel](https:\u002F\u002Fducklake.select\u002Fdocs\u002Fstable\u002Fduckdb\u002Fusage\u002Ftime_travel)** queries\n\nThe Python SDK additionally provides:\n\n- Reading and writing data through [Polars](https:\u002F\u002Fgithub.com\u002Fpola-rs\u002Fpolars)\n- Reading, writing, and deleting data through [DuckDB](https:\u002F\u002Fgithub.com\u002Fduckdb\u002Fduckdb)\n- [Maintenance operations](https:\u002F\u002Fducklake.select\u002Fdocs\u002Fstable\u002Fduckdb\u002Fmaintenance\u002Frecommended_maintenance) —\n  compaction, snapshot expiration, and more — via DuckDB\n\n### Compatibility Matrix\n\n**Catalog Databases**\n\n| Database | Status                  |\n| -------- | ----------------------- |\n| SQLite   | ✅                      |\n| Postgres | ✅                      |\n| MySQL    | 🟧 (no data inlining\\*) |\n\n\u003Csub>\\*Data inlining for MySQL is not defined in the DuckLake specification.\u003C\u002Fsub>\n\n**Storage Backends**\n\n| Backend              | Status |\n| -------------------- | ------ |\n| Local \u002F NFS          | ✅     |\n| AWS S3-compatible    | ✅     |\n| Google Cloud Storage | ❌     |\n| Azure Blob Storage   | ❌     |\n\n**DuckLake Specification Versions**\n\n| Version | Status                  |\n| ------- | ----------------------- |\n| 1.0     | ✅ (actively supported) |\n| 0.4     | ⬆️ (requires migration) |\n| 0.3     | ⬆️ (requires migration) |\n| 0.2     | ⬆️ (requires migration) |\n| 0.1     | ⬆️ (requires migration) |\n\nSee the DuckLake [release calendar](https:\u002F\u002Fducklake.select\u002Frelease_calendar) for upcoming versions.\n\n## Project Status\n\n\u003C!-- prettier-ignore -->\n> [!NOTE]\n> This project is in **alpha**. It will move to beta once the full specification is implemented, and to stable once\n> all relevant limitations have been addressed. Expect occasional breaking changes until then.\n\n### Not yet implemented from the specification\n\n- [ ] `GEOMETRY` and `VARIANT` data types\n- [ ] Mapping columns by name (Parquet files must currently carry field IDs)\n- [ ] Views, macros, sort info, and encrypted files\n\n### Known limitations\n\n**Rust SDK** (may impact efficiency):\n\n- [ ] Tables partitioned with a non-identity transform do not benefit from file pruning yet.\n- [ ] Filters are not pushed down into the metadata query. Statistics are still loaded eagerly and used by readers to\n      prune files, but the metadata query may transmit more data than necessary.\n- [ ] Not tested on Windows.\n\n**Python SDK**:\n\n- [ ] Maintenance operations (compaction, snapshot expiration, ...) are dispatched to DuckDB rather than implemented\n      natively.\n- [ ] Performance of polars reads and writes can be optimized further:\n  - Writes currently require reading the file footer after the file has already been written (see also\n    https:\u002F\u002Fgithub.com\u002Fpola-rs\u002Fpolars\u002Fissues\u002F27226)\n  - Reads currently suffer from suboptimal footer reads (see also https:\u002F\u002Fgithub.com\u002Fpola-rs\u002Fpolars\u002Fissues\u002F27227)\n\n## Contributing\n\nContributions, bug reports, and feature requests are very welcome. See the\n[contribution guidelines](.github\u002FCONTRIBUTING.md) to get started.\n\n## License\n\nLicensed under the [MIT License](LICENSE).\n","DuckLake-SDK 是为 DuckLake 提供的原生 SDK，支持从 Rust 和 Python 读写数据表，无需依赖 DuckDB。其核心功能包括直接与 DuckLake 进行交互，并且所有语言版本的 SDK 都基于相同的 Rust 核心实现，确保了跨语言的一致性和性能。该项目特别适用于需要高效处理大规模数据集的应用场景，尤其是在数据湖和数据仓库领域。通过使用 DuckLake-SDK，开发者可以轻松地在 Rust 或 Python 环境中集成对 DuckLake 的支持，从而简化数据访问逻辑并提高开发效率。",2,"2026-06-11 04:06:43","CREATED_QUERY"]