Easy two-way conversion between Python dictionaries and fixed-width files. The FixedWidth class has been used in production without modification for several years.
This module has also proven useful for "debugging" a fixed-width spec -- an invalid configuration reports an error that may not be obvious from reading the spec document.
Requires a 'config' dictonary. See unit tests for full example.
Small example:
SAMPLE_CONFIG = {
'first_name': {
'required': True,
'type': 'string',
'start_pos': 1,
'end_pos': 10,
'alignment': 'left',
'padding': ' '
},
'last_name': {
'required': True,
'type': 'string',
'start_pos': 11,
'end_pos': 30,
'alignment': 'left',
'padding': ' '
},
}
Notes:
- A field must have a start_pos and either an end_pos or a length. If both an end_pos and a length are provided, they must not conflict.
- A field may not have a default value if it is required.
- Supported types are string, integer, and decimal.
- Alignment and padding are required.