Skip to main content

Interface for handling custom formatted files

Project description

cfinterface

tests codecov

Python package that contains a framework for dealing with custom file formats, modulating reading, data formatting and writing in a scalable and modular way.

Summary

cfinterface is a framework for designing low-level interfaces that depends on complex text or binary file parsing. It provides components for modeling lines, registers, blocks and sections in a declarative way and aggregate these blocks as components for defining files.

Suppose that a complex text file needs to be parsed and the contents of lines with a specific identifier must be extracted and validated. For instance, the line follows the format:

DATA_HIGH  ID001   sudo.user  10/20/2025  901.25

If DATA_HIGH is the identifier that specifies the lines to be read, than one can model it with the Register class in the cfinterface framework.

class DATA_HIGH(Register):
    IDENTIFIER = "DATA_HIGH"
    IDENTIFIER_DIGITS = 9
    LINE = Line(
        [
            LiteralField(size=6, starting_position=11),
            LiteralField(size=9, starting_position=19),
            DatetimeField(size=10, starting_position=30, format="%M/$d/%Y"),
            FloatField(size=6, starting_position=42, decimal_digits=2),
        ]
    )

A Register depends on the definition of a Line object, that is composed of Field objects. By modeling these elements on a declarative way, the user gains access to reading / writing functions on the fly, and the Register may be added to a RegisterFile object, so that it can be read / written together with many other registers to files.

Despite the Register model, files can also be composed of Blocks and Sections, and their interfaces can be done to text or binary formats. For more information, the docs are available here.

Install

cfinterface requires python >= 3.7. It this requirement is met, than one may install the framework with

python -m pip install cfinterface

Documentation

Guides, tutorials and references may be found at the package's official site: https://rjmalves.github.io/cfi

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cfinterface-1.7.0.tar.gz (27.7 kB view hashes)

Uploaded Source

Built Distribution

cfinterface-1.7.0-py3-none-any.whl (57.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page