blob: 44d6099c6cfcf4ca586356f68c46f87a8e10509d [file] [log] [blame] [view]
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you under the Apache License, Version 2.0 (the
~ "License"); you may not use this file except in compliance
~ with the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
# Apache Fluss™ Python Bindings
Python bindings for Fluss using PyO3 and Maturin.
## API Overview
### Basic Usage
TODO: Add basic usage examples here
### Core Classes
#### `Config`
Configuration for Fluss connection parameters
#### `FlussConnection`
Main interface for connecting to Fluss cluster
#### `FlussAdmin`
Administrative operations for managing tables (create, delete, etc.)
#### `FlussTable`
Represents a Fluss table, providing read and write operations
#### `TableWriter`
Used for writing data to tables, supports PyArrow and Pandas
#### `LogScanner`
Used for scanning table log data
## Development
## Requirements
- Python 3.9+
- Rust 1.70+
- [uv](https://docs.astral.sh/uv/) package manager
- Linux or MacOS
> **⚠️ Before you start:**
> Please make sure you can successfully build and run the [Fluss Rust client](../../crates/fluss/README.md) on your machine.
> The Python bindings require a working Fluss Rust backend and compatible environment.
### Install Development Dependencies
```bash
cd bindings/python
uv sync --all-extras
```
### Build Development Version
```bash
source .venv/bin/activate
uv run maturin develop
```
### Build Release Version
```bash
uv run maturin build --release
```
### Code Formatting and Linting
```bash
uv run ruff format python/
uv run ruff check python/
```
### Type Checking
```bash
uv run mypy python/
```
### Run Examples
```bash
uv run python example/example.py
```
### Build API docs:
```bash
uv run pdoc fluss
```
### Release
```bash
# Build wheel
uv run maturin build --release
# Publish to PyPI
uv run maturin publish
```
## Project Structure
```
bindings/python/
├── Cargo.toml # Rust dependency configuration
├── pyproject.toml # Python project configuration
├── README.md # This file
├── src/ # Rust source code
│ ├── lib.rs # Main entry module
│ ├── config.rs # Configuration related
│ ├── connection.rs # Connection management
│ ├── admin.rs # Admin operations
│ ├── table.rs # Table operations
│ ├── types.rs # Data types
│ └── error.rs # Error handling
├── fluss/ # Python package source
│ ├── __init__.py # Python package entry
│ ├── __init__.pyi # Stub file
│ └── py.typed # Type declarations
└── example/ # Example code
└── example.py
```
## License
Apache 2.0 License