Skip to content

Repository files navigation

pyx12-lib


Quick Example

Rendering

  • Define the grammar for the segment.
frompyx12lib.core.grammarimportElement, BaseSegment, segment, elementclassStSegment(BaseSegment):
segment_id='ST'usage=segment.USAGE_MANDATORYmax_use=1elements= (
Element(
reference_designator='ST01',
name='Transaction Set Identifier Code',
usage=element.USAGE_MANDATORY,
element_type=element.ELEMENT_TYPE_ID,
minimum=3,
maximum=3,
),
Element(
reference_designator='ST02',
name='Transaction Set Control Number',
usage=element.USAGE_MANDATORY,
element_type=element.ELEMENT_TYPE_STRING,
minimum=4,
maximum=9,
),
)
  • Render the segment from its grammar.
frompyx12lib.common.envelope.grammarimportStSegmentfrompyx12lib.core.rendererimportSegmentRendererclassStRenderer(SegmentRenderer):
grammar=StSegmentelement_value_getters= {
'ST01': lambdaele, data, stat: '997',
'ST02': lambdaele, data, stat: '{:04d}'.format(data.transaction_set_no),
}
  • Advanced definition for element value getters
frompyx12lib.common.envelope.grammarimportStSegmentfrompyx12lib.core.rendererimportSegmentRendererclassStRenderer(SegmentRenderer):
grammar=StSegment@propertydefelement_value_getters(self):
return {
'ST01': lambdaele, data, stat: '997',
'ST02': self.st02,
}
@staticmethoddefst02(ele, data, stat):
asserteleisStSegment.elements[1] # the grammar for the element.assertstat['ST01'] is'997'# stat consists of rendered data so far.return'{:04d}'.format(data.transaction_set_no) # return value should always be strings

Test

python -m unittest discover

About

A library that generates ASC X12 EDI format.

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages