Metadata-Version: 2.4
Name: letsql
Version: 0.1.13
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Software Development :: User Interfaces
Classifier: Topic :: Database :: Database Engines/Servers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: Implementation :: CPython
Requires-Dist: ibis-framework >=9.4.0, <10 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: dask ==2025.1.0 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: attrs >=24.0.0, <26 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: connectorx >=0.3.2, <0.5.0 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: psycopg2-binary >=2.9.9, <3 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: sqlalchemy >=2.0.29, <3 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: pyarrow >=13.0.0, <20 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: structlog >=24.2.0, <26 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: pytest-mock >=3.14.0, <4 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: cityhash >=0.4.7, <1 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: adbc-driver-postgresql >=1.2.0, <2 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: pandas >=1.5.3, <3 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: pyarrow-hotfix >=0.4, <1 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: geoarrow-types >=0.2, <1 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: pythran >=0.17.0 ; sys_platform == 'darwin'
Requires-Dist: duckdb >=1.1.3 ; extra == 'duckdb'
Requires-Dist: datafusion >=0.6, <44 ; (python_version >= '3.10' and python_version < '4.0') and extra == 'datafusion'
Requires-Dist: snowflake-connector-python >=3.10.1, <4 ; (python_version >= '3.10' and python_version < '4.0') and extra == 'snowflake'
Requires-Dist: quickgrove >=0.1.2 ; extra == 'quickgrove'
Requires-Dist: fsspec >=2024.6.1, <2025.2.1 ; (python_version >= '3.10' and python_version < '4.0') and extra == 'examples'
Requires-Dist: pins[gcs] >=0.8.3, <1 ; (python_version >= '3.10' and python_version < '4.0') and extra == 'examples'
Requires-Dist: xgboost >=1.6.1 ; (python_version >= '3.10' and python_version < '4.0') and extra == 'examples'
Requires-Dist: duckdb >=0.10.3, <2 ; (python_version >= '3.10' and python_version < '4.0') and extra == 'examples'
Requires-Dist: quickgrove >=0.1.2 ; extra == 'examples'
Provides-Extra: duckdb
Provides-Extra: datafusion
Provides-Extra: snowflake
Provides-Extra: quickgrove
Provides-Extra: examples
License-File: LICENSE
Summary: Data processing library built on top of Ibis and DataFusion to write multi-engine data workflows.
Author-email: Hussain Sultan <hussain@letsql.com>
Maintainer-email: Dan Lovell <dan@letsql.com>, Daniel Mesejo <mesejo@letsql.com>
Requires-Python: >=3.10
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Homepage, https://www.letsql.com/
Project-URL: Repository, https://github.com/letsql/letsql.git
Project-URL: Issues, https://github.com/letsql/letsql/issues
Project-URL: Changelog, https://github.com/letsql/letsql/blob/main/CHANGELOG.md

# LETSQL

[![Downloads](https://static.pepy.tech/badge/letsql)](https://pepy.tech/project/letsql)
![PyPI - Version](https://img.shields.io/pypi/v/letsql)
![GitHub License](https://img.shields.io/github/license/letsql/letsql)
![PyPI - Status](https://img.shields.io/pypi/status/letsql)
![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/letsql/letsql/ci-test.yml)
![Codecov](https://img.shields.io/codecov/c/github/letsql/letsql)

Data processing library built on top of **Ibis** and **DataFusion** to write multi-engine data workflows.

> [!CAUTION]
> This library does not currently have a stable release. Both the API and implementation are subject to change, and future updates may not be backward compatible.

## Getting Started

### Installation

LETSQL is available as [`letsql`](https://pypi.org/project/letsql/) on PyPI:

```shell
pip install letsql
```

### Usage

```python
import urllib.request

import letsql as ls

urllib.request.urlretrieve("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv", "iris.csv")

con = ls.connect()
iris_table = con.read_csv("iris.csv", table_name="iris")

res = (
    iris_table.filter([iris_table.sepal_length > 5])
    .group_by("species")
    .agg(iris_table.sepal_width.sum())
    .execute()
)
```

for more examples on how to use letsql, check the [examples](https://github.com/letsql/letsql/tree/main/examples) directory, 
note that in order to run some of the scripts in there, you need to install the library with `examples` extra:

```shell
pip install 'letsql[examples]'
```

## Contributing

Contributions are welcome and highly appreciated. To get started, check out the [contributing guidelines](https://github.com/letsql/letsql/blob/main/CONTRIBUTING.md).

## Support

If you have any issues with this repository, please don't hesitate to [raise them](https://github.com/letsql/letsql/issues/new).
It is actively maintained, and we will do our best to help you.

## Acknowledgements

This project heavily relies on [Ibis](https://github.com/ibis-project/ibis) and [DataFusion](https://github.com/apache/datafusion).   

## Liked the work?

If you've found this repository helpful, why not give it a star? It's an easy way to show your appreciation and support for the project.
Plus, it helps others discover it too!

## License

This repository is licensed under the [Apache License](https://github.com/letsql/letsql/blob/main/LICENSE)

