Skip to main content

python copybook parser

Project description

Downloads

Copybook

Copybook is a python module for parsing VSAM copybooks.

Features

  • Supports all numeric PIC variations including:
    • integers
    • floats described with dot notation
    • floats described with V notation
    • leading SIGNED
    • trailing SIGNED
  • Character PIC notations
  • Groups
  • OCCURS clauses
  • REDEFINES clauses

In addition, it provides indexes of column locations to help with parsing fixed width files based on positions within each line

Installation

pip install copybook

Usage

Copybook provides two methods for parsing copybooks: parse_file and parse_string. The result is a FieldGroup object that represents the root of the copybook tree.

Examples:

import copybook
text = """
       01  WORK-BOOK.
        10  TAX-RATE        PIC S9(13)V9(2)
                    SIGN LEADING SEPARATE.
"""
root = copybook.parse_string(text)

Using Copybook module to parse a fixed width line

The FieldGroup object provides a flatten method that return a flat list of Field objects.

Example:

import copybook
text = """
       01  WORK-BOOK.
        10  TAX-RATE        PIC S9(13)V9(2)
                    SIGN LEADING SEPARATE.
        10  AMOUNT        PIC S9(4)V9(2).
"""
# copybook also provides a parse_file method that receives a text filename
root = copybook.parse_string(text)

# flatten returns a list of Fields and FieldGroups instead of traversing the tree
list_of_fields = root.flatten()

# dummy sample input
line = "          -13452987654"

# loop over the fields and parse the relevant position in the line
for field in list_of_fields:

  # FieldGroups are Copybook groups and contain Field objects as children
  if type(field)==copybook.Field:

    # each Field has a start_pos and a get_total_length method
    # to identify the position within the raw line input
    str_field = line[field.start_pos:field.start_pos+field.get_total_length()]

    # Field provides a parse method that returns a str, int, or float based on the PIC
    print(f"{field.name}: {field.parse(str_field)}")

Development

PRs are always welcome!

Support

If you encounter an unsupported copybook feature, please paste the copybook example along with whatever logs or error message you have received and open an issue.

Gratitude

Copybook uses the awesome PyParsing library for tokenization

License

MIT

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

copybook-1.0.16.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

copybook-1.0.16-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file copybook-1.0.16.tar.gz.

File metadata

  • Download URL: copybook-1.0.16.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for copybook-1.0.16.tar.gz
Algorithm Hash digest
SHA256 a86ab10a9cebcff5f1de37ba35fa94eb2c1ed19d72b16e3424b40322f72fd10a
MD5 83ab59eaf6908cd6979fb140aaacb9a6
BLAKE2b-256 6dbce1de3f0b0715ea86a3d95c144f84b87d7cad70a4854a42b4f679b5685051

See more details on using hashes here.

File details

Details for the file copybook-1.0.16-py3-none-any.whl.

File metadata

  • Download URL: copybook-1.0.16-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for copybook-1.0.16-py3-none-any.whl
Algorithm Hash digest
SHA256 35c085fb828a4fc25a9f2c3db3b82eda929764c9748f738b139b67d35afcba19
MD5 b694ce7046491fcb08cd29b2952d6254
BLAKE2b-256 d5c1a593f2fe9bf3fc408d5fae081c7a18052a602d8b07c2873f72ddc368eca2

See more details on using hashes here.

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