Define the shape and validate data
Project description
transform-data-schema: simple transform and validate schema
transform-data-schema is a library for converting complex datatypes, such as objects, to and from native Python datatypes.
from transform_data_schema import (
BaseSchemaTransform,
EXCLUDE,
fields,
transform_fields,
ValidationError
)
class EventJBTransformSchema(BaseSchemaTransform):
class Meta:
unknown = EXCLUDE
ID = fields.Str()
PROFILE_ID = transform_fields.NestedValueField(
nested_key='data_event.profile_id',
type_class=fields.Str,
required=True
)
JOURNEY_ID = transform_fields.NestedValueField(
nested_key='data_event.journey_id',
type_class=fields.Str,
required=True
)
MC_ID = transform_fields.NestedValueField(
nested_key='data_event.master_campaign_id',
type_class=fields.Str,
required=True
)
MERCHANT_ID = transform_fields.NestedValueField(
nested_key='data_event.merchant_id',
type_class=fields.Str,
required=True
)
DATA_TYPE = fields.Str(data_key='event_type')
ACTION_TIME = transform_fields.NestedValueField(
nested_key='data_event.action_time',
type_class=transform_fields.DatetimeFromTimeStamp,
required=True
)
NODE_CODE = transform_fields.NestedValueField(
nested_key='data_event.node_code',
type_class=fields.Str,
)
NODE_ID = transform_fields.NestedValueField(
nested_key='data_event.node_id',
type_class=fields.Str
)
if __name__ == '__main__':
raw_data = {
"message_id": "19db4e86-0cef-11ed-9d73-aea73dddcfef",
"data_event": {
"action_time": 1658845656.471722,
"journey_id": "1a596c15-3ccb-4d51-8d75-03223c5bce8e",
"merchant_id": "1b99bdcf-d582-4f49-9715-1b61dfff3924",
"node_id": "64690a9e-e807-4b2a-8da2-f2d28d085fd2",
"node_code": "WEB_PUSH",
"event_type": "IN_NODE",
"profile_id": "ff5d808c-5a28-415f-b60d-9070519e7f1a",
"master_campaign_id": "a065a9fd-2341-468b-8580-dba1cc4b3459",
"event_id": "061dbe38-b5db-4470-a1e5-8e2ce2e14851"
},
"event_type": "profile_in_node"
}
result = EventJBTransformSchema.transform(raw_data)
pprint(result, indent=2)
"""
{
'ACTION_TIME': datetime.datetime(2022, 7, 26, 14, 27, 36, 471722, tzinfo=datetime.timezone.utc),
'DATA_TYPE': 'profile_in_node',
'JOURNEY_ID': '1a596c15-3ccb-4d51-8d75-03223c5bce8e',
'MC_ID': 'a065a9fd-2341-468b-8580-dba1cc4b3459',
'MERCHANT_ID': '1b99bdcf-d582-4f49-9715-1b61dfff3924',
'NODE_CODE': 'WEB_PUSH',
'NODE_ID': '64690a9e-e807-4b2a-8da2-f2d28d085fd2',
'PROFILE_ID': 'ff5d808c-5a28-415f-b60d-9070519e7f1a'
}
"""
In short, transform-data-schema can be used to:
- Validate input data.
- Deserialize input data to app-level objects.
Get It Now
$ pip install -U transform-data-schema
Requirements
- Python >= 3.7
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
Built Distribution
Close
Hashes for transform-data-schema-1.2.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4f95935e0141339c7e0c59487deffbb92f24e3084edcda24d76bfe6183bb082 |
|
MD5 | db6b1ea343eb8891f8558c967cfb1985 |
|
BLAKE2b-256 | 778c3a60ee06fc7f9d9ffbe5e31bf787bbc4ebe674cd7ec3b340b03c170ca4c2 |
Close
Hashes for transform_data_schema-1.2.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ff81be03db7f736274b19ef885b2f205ce87640bf5881b5bf0b44713d39dcb0 |
|
MD5 | 04ffa0e0454b1528fefa665ea96f82b4 |
|
BLAKE2b-256 | 80333d18db392cafd852f38f3a77bf6b1786de4078d2395d2564e39b2848ab7d |