Metadata-Version: 2.3
Name: letsql
Version: 0.1.5
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.0.0 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: dask >=2023.12.1, <2025.0.0 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: attrs >=23.2.0, <25 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: connectorx >=0.3.2, <0.4.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, <18 ; python_version >= '3.10' and python_version < '4.0'
Requires-Dist: structlog >=24.2.0, <25 ; 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: duckdb >=0.10.3, <2 ; (python_version >= '3.10' and python_version < '4.0') and extra == 'duckb'
Requires-Dist: datafusion >=34.0.0, <40 ; (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: fsspec >=2024.6.1, <2024.6.2 ; (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'
Provides-Extra: duckb
Provides-Extra: datafusion
Provides-Extra: snowflake
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.7
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[extras]'
```

## 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)

