It's a universal class that created to be a middleware, universal mapping for data from different parsers - simple-ddl-parser and py-models-parser.
Based on this middleware 2 libraries are worked - omymodels & fakeme.
It's allow create 1 adapter for different inputs and produce output only on one standard - easy to maintain ad add different output variants.
All classes - Pydantic classes, so you can do with them anything that you can with Pydantic classes.
Library contains 2 different classes - TableMeta - main class to convert input relative to models or tables. Second - Type, for Enum types data.
pip install table-meta
from table_meta import TableMeta
data = {your_table_definition}
table_data = TableMeta(**data)
Simple-ddl-parser: https://github.com/xnuinside/simple-ddl-parser
Pay attention that TableMeta expected data from simple-ddl-parser , that created with flag 'group_by_type=True' Example: result = DDLParser(ddl).run(group_by_type=True, output_mode="bigquery")
To convert simple-ddl-parser output to TableMeta - use method: ddl_to_meta()
Usage example:
from simple_ddl_parser import DDLParser
from table_meta import ddl_to_meta
ddl = "your ddl"
parser_result = DDLParser(ddl).run(group_by_type=True, output_mode="bigquery")
data = ddl_to_meta(parser_result)
# ddl_to_meta returns Dict with 2 keys {"tables": [], "types": []} inside lists you will have Table Meta a models
print(data)
Py-models-parser: https://github.com/xnuinside/py-models-parser
Usage example:
from py_models_parser import parse
from table_meta import models_to_meta
model_from = "your python models, supported by parser"
result = parse(model_from)
data = models_to_meta(result)
# models_to_meta returns Dict with 2 keys {"tables": [], "types": []} inside lists you will have a Table Meta models
print(data)
v0.3.2
- Added 'comment' attr to the Column
v0.3.0
- Added search for type in columns with foreign keys from models
- Fixed issue with popylating Column details like unique or primary key from py-models-parser
v0.2.2
- Added if_not_exists to table properties
v0.2.1
- Added support for parsing 'dataset' from data as 'table_schema' also added fields like 'project' (to support BigQuery metadata)
- Depencencies updated
- Added HQL Table Properties
v0.1.5
- field 'attrs' added to Type to store values from py-models-parser output
v0.1.3
- 'parents' added to Type and to Table
v0.1.1
- Fix dependencies for python 3.6
v0.1.0
- Table Meta moved from O!MyModels to separate library. To make it re-usebale in fakeme library.