EDI 830 parser/converter
Project description
pyedi830
Pyedi830 uses JSON format definitions to make it easy to parse and convert from EDI830 file to JSON and CSV file/data.
TODOs
- Finish 830 definition
- Implement colorful exceptions
EDI Format Definitions
EDI830 parser messages consist of a set of Segments (usually lines) comprised of Elements. Some segments can be part of a Loop. These formats are defined in JSON. See the provided format(s) for examples.
A loop has certain expected properties:
id
(Loop ID)repeat
(Max times the loop can repeat)
Each segment has certain expected properties:
id
(Segment ID)name
(Human-readable segment name)req
(Whether segment is required: [M]andatory, [O]ptional)max_uses
(Some segments can be included more than once)notes
(Optional details for hinting documentation)syntax
(An optional list of syntax rules, defined below)elements
(List of included elements)
Each element has certain expected features:
id
(Element ID)name
(Human-readable element name)req
(Whether segment is required: [M]andatory, [O]ptional)data_type
(Type of segment data, defined below)data_type_ids
(Ifdata_type
isID
, this is a dict of valid IDs with descriptions)length
(Dict specifying field length)min
(Min length of field)max
(Max length of field)
Valid data types include:
AN
(Any data type)DT
(Date, must be provided as Python DATE or DATETIME object)ID
(Alphanumeric ID. List of valid IDs provided as dict with descriptions)R
(Percentage)Nx
(Number withx
decimal points)TM
(Time, must be provided as Python TIME or DATETIME object)
Syntax rules are specified as a dict with a rule
and a list of criteria
. Valid syntax rules include:
ATLEASTONE
(where at least one of the element IDs in thecriteria
list is included and is not empty)ALLORNONE
(where either all of the element IDs in thecriteria
list are included, or none are)IFATLEASTONE
(if the first element incriteria
is included, then at least one of the other elements must be included)
Code Examples
from pyedi830 import EDIParser
from pyedi830 import EDIParserDF
edi_file_path = "test/test_edi_830_forecast.edi"
# Convert to json file
json_file_path = "test_edi_830_forecast.json"
edi_parser = EDIParser(
edi_format="830_Forecast",
element_delimiter="*",
segment_delimiter="~\n",
use_parent_key_detail=True,
use_parent_detail=True,
parent_headers=['symbol', 'name', 'type', 'notes'],
use_child_key_detail=True,
use_child_detail=False,
use_debug=True
)
edi_parser.to_json(edi_file_path, json_file_path)
# Parse to json data
json_data = edi_parser.parse(edi_file_path)
# Convert to csv file.
csv_file_path = "test_edi_830_forecast.csv"
edi_parser_df = EDIParserDF(use_debug=True)
edi_parser_df.to_csv(edi_file_path, csv_file_path)
# Parse to dataframe
df = edi_parser_df.parse(edi_file_path)
Install
Install system-wide
pip install pyedi830
Or install in a virtual environment
virtualenv my_env
pip -E my_env install pyedi830
Licensing
pyedi830 has a BSD license. The full license text is included with the source code for the package.
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
File details
Details for the file pyedi830-1.1.2.tar.gz
.
File metadata
- Download URL: pyedi830-1.1.2.tar.gz
- Upload date:
- Size: 39.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c0cfc1b2955fcdc69b929490712168b17889f2dca64060c4a311b15e8677a6a0 |
|
MD5 | a45a8389c287658287332326d6c1968a |
|
BLAKE2b-256 | 9b26764fc80e6d409d8ea381e2a5057e091b3463c840425e9e56dcda0c402c03 |
File details
Details for the file pyedi830-1.1.2-py3-none-any.whl
.
File metadata
- Download URL: pyedi830-1.1.2-py3-none-any.whl
- Upload date:
- Size: 41.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.17
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 302acd1110e96769f7905117bed136bac1f54f0dce132cb16f77bb89c38138c0 |
|
MD5 | 69222132c32f6250a2fce39cd9458e91 |
|
BLAKE2b-256 | cc633ce156441c22acfca283fec2e59cff773bb40bde53050f53ef5aa74f49e3 |