API Reference
Welcome to the flowerpower-io API reference documentation. This section provides detailed information about all public classes, functions, and methods available in the library.
Overview
The flowerpower-io library provides a unified interface for reading and writing data from various sources and formats. The API is organized into several modules:
- Base Classes - Core classes for file and database operations
- Metadata Functions - Functions for extracting metadata from data sources
- Loader Classes - Classes for reading data from various sources
- Saver Classes - Classes for writing data to various destinations
Quick Navigation
Base Classes
The base classes form the foundation of the library and provide common functionality for all I/O operations.
- BaseFileIO - Base class for file I/O operations
- BaseFileReader - Base class for file reading operations
- BaseDatasetReader - Base class for dataset reading operations
- BaseFileWriter - Base class for file writing operations
- BaseDatasetWriter - Base class for dataset writing operations
- BaseDatabaseIO - Base class for database operations
- BaseDatabaseReader - Base class for database reading operations
- BaseDatabaseWriter - Base class for database writing operations
Metadata Functions
Metadata functions help you understand the structure and properties of your data before processing it.
- get_serializable_schema - JSON-serializable schema extraction
- get_dataframe_metadata - Extract metadata from DataFrames
- get_duckdb_metadata - Extract metadata from DuckDB relations
- get_pyarrow_dataset_metadata - Extract metadata from PyArrow Datasets
- get_delta_metadata - Extract metadata from Delta Lake tables
- get_mqtt_metadata - Extract metadata from MQTT payloads
Loader Classes
Loader classes provide specialized functionality for reading data from various sources.
File Loaders
- CSVFileReader - Load data from CSV files
- ParquetFileReader - Load data from Parquet files
- JsonFileReader - Load data from JSON files
- DeltaTableReader - Load data from Delta Lake tables
- PayloadReader - Load data from MQTT messages
Database Loaders
- SQLiteReader - Load data from SQLite databases
- DuckDBReader - Load data from DuckDB databases
- PostgreSQLReader - Load data from PostgreSQL databases
- MySQLReader - Load data from MySQL databases
- MSSQLReader - Load data from Microsoft SQL Server databases
- OracleDBReader - Load data from Oracle databases
Saver Classes
Saver classes provide specialized functionality for writing data to various destinations.
File Savers
- CSVFileWriter - Save data to CSV files
- ParquetFileWriter - Save data to Parquet files
- JsonFileWriter - Save data to JSON files
- DeltaTableWriter - Save data to Delta Lake tables
Database Savers
- SQLiteWriter - Save data to SQLite databases
- DuckDBWriter - Save data to DuckDB databases
- PostgreSQLWriter - Save data to PostgreSQL databases
- MySQLWriter - Save data to MySQL databases
- MSSQLWriter - Save data to Microsoft SQL Server databases
- OracleDBWriter - Save data to Oracle databases
Usage Examples
Basic File Operations
from flowerpower_io import CSVFileReader, ParquetFileWriter
# Load data from CSV
loader = CSVFileReader("data.csv")
df = loader.to_polars()
# Save data to Parquet
saver = ParquetFileWriter("output/data.parquet")
saver.write(df)
Database Operations
from flowerpower_io import PostgreSQLReader, SQLiteWriter
# Load from PostgreSQL
loader = PostgreSQLReader(
server="localhost",
port=5432,
username="user",
password="password",
database="mydb",
table_name="users"
)
df = loader.to_polars()
# Save to SQLite
saver = SQLiteWriter(
path="database.db",
table_name="users"
)
saver.write(df)
Metadata Extraction
from flowerpower_io.metadata import get_dataframe_metadata
# Get metadata from DataFrame
metadata = get_dataframe_metadata(df)
print(metadata)
Common Patterns
Reading Multiple Files
from flowerpower_io import ParquetFileReader
# Load multiple Parquet files (glob or directory)
loader = ParquetFileReader("data/")
df = loader.to_polars()
Writing with Partitioning
from flowerpower_io import ParquetDatasetWriter
# Save with partitioning (construction config)
saver = ParquetDatasetWriter(
path="output/",
partition_by="category",
compression="zstd"
)
saver.write(df)
Database Connection Management
from flowerpower_io import PostgreSQLReader
# Connections are managed internally; execute raw SQL via execute()
loader = PostgreSQLReader(
server="localhost",
port=5432,
username="user",
password="password",
database="mydb",
table_name="users"
)
df = loader.to_polars("SELECT * FROM users WHERE active")
Error Handling
The library provides comprehensive error handling for various scenarios:
from flowerpower_io import CSVFileReader
try:
loader = CSVFileReader("nonexistent.csv")
df = loader.to_polars()
except FileNotFoundError:
print("File not found")
except Exception as e:
print(f"Error: {e}")
Performance Tips
- Use
opt_dtypes=Trueat construction for better memory efficiency - Use
batch_sizeat construction for large datasets - Use
concat=Falseat construction when working with multiple files separately - Use appropriate compression for your data format
- Use partitioning for large datasets