A library for validating and transforming flat files
Project description
FlatForge
A generic, modular, and extensible library to validate flat files of fixed length or delimited format.
Features
- Validate flat files against predefined schemas
- Transform flat files from one format to another
- Support for fixed-length and delimited file formats
- Extensible rule system for validation and transformation
- Global rules for cross-record validation
- CLI interface for easy integration into workflows
- Support for multi-section files (header, body, footer)
- Comprehensive error reporting
- Efficient processing of large files (>1GB) with chunked processing and progress reporting
Installation
pip install flatforge
Quick Start
Command Line Interface
# Validate a file against a schema
flatforge validate --config schema.yaml --input data.csv --output valid.csv --errors errors.csv
# Convert a file from one format to another
flatforge convert --config mapping.yaml --input data.csv --output converted.txt
# Process a large file with chunked processing and progress reporting
flatforge validate --config schema.yaml --input large_data.csv --output valid.csv --errors errors.csv --chunk-size 10000 --show-progress
Programmatic Usage
from flatforge.processors import ValidationProcessor
from flatforge.parsers import ConfigParser
# Parse the configuration
config_parser = ConfigParser.from_file("schema.yaml")
config = config_parser.parse()
# Create a processor
processor = ValidationProcessor(config)
# Process the file
result = processor.process("data.csv", "valid.csv", "errors.csv")
print(f"Processed {result.total_records} records with {result.error_count} errors")
# Process a large file in chunks with progress reporting
def update_progress(processed, total):
print(f"Progress: {processed}/{total} records ({int(100 * processed / total)}%)")
result = processor.process_chunked(
"large_data.csv",
"valid.csv",
"errors.csv",
chunk_size=10000,
progress_callback=update_progress
)
print(f"Processed {result.total_records} records with {result.error_count} errors")
Documentation
For detailed documentation, please refer to:
- User Guide: How to use FlatForge
- Developer Guide: How to extend FlatForge
- Architecture: Design and architecture of FlatForge
- Testing Guide: How to test FlatForge and write new tests
- Rules Guide: Comprehensive guide to all validation rules
Changelog
See the CHANGELOG.md file for details on the changes made in each release.
Contributing
Contributions are welcome! Please see the CONTRIBUTING.md file for guidelines on how to contribute to this project.
Author
- Akram Zaki (azpythonprojects@gmail.com)
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file flatforge-0.3.2.tar.gz.
File metadata
- Download URL: flatforge-0.3.2.tar.gz
- Upload date:
- Size: 171.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
736a5739d5e014548b7562aec3740a52d81de8a0bcc6447f4cf863efdea8202d
|
|
| MD5 |
b1719ab011762e57f31dcfaab612bd06
|
|
| BLAKE2b-256 |
3bc1f2522c2481b87776c1da92514625985361ecf253837593ad381ba2e2ccf4
|
File details
Details for the file flatforge-0.3.2-py3-none-any.whl.
File metadata
- Download URL: flatforge-0.3.2-py3-none-any.whl
- Upload date:
- Size: 86.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3607b9f01b1a825c4c406115fa3901105a141debacd85fb401094890833bb0c
|
|
| MD5 |
aed84f4b1efe1a86027e2aad8688e5cd
|
|
| BLAKE2b-256 |
6c21ed618721873705bc4ac55149a32eedb9cbe15ccfc92ca12314183574e920
|