Example #1
0
def test_optional_schema_to_dataclass():
    schema = [
        SchemaField("string_field", "STRING", "NULLABLE",
                    "This field is a STRING field.", ()),
        SchemaField("bytes_field", "BYTES", "NULLABLE", None, ()),
        SchemaField("int_field", "INT64", "NULLABLE", None, ()),
        SchemaField("float_field", "FLOAT64", "NULLABLE", None, ()),
        SchemaField("numeric_field", "NUMERIC", "NULLABLE", None, ()),
        SchemaField("bool_field", "BOOL", "NULLABLE", None, ()),
        SchemaField("timestamp_field", "TIMESTAMP", "NULLABLE", None, ()),
        SchemaField("date_field", "DATE", "NULLABLE", None, ()),
        SchemaField("time_field", "TIME", "NULLABLE", None, ()),
        SchemaField("datetime_field", "DATETIME", "NULLABLE", None, ()),
        SchemaField(
            "nullable_nested_field",
            "STRUCT",
            "NULLABLE",
            "This field is a STRUCT field.",
            (SchemaField("int_field", "INT64", "NULLABLE",
                         "This field is an INT field.", ()), ),
        ),
    ]
    expected = (f"@dataclass\n{inspect.getsource(NullableNestedField)}\n"
                f"@dataclass\n{inspect.getsource(NullableSchema)}")
    assert schema_to_dataclass("NullableSchema", schema) == expected.strip()
Example #2
0
def test_required_schema_to_dataclass():
    schema = [
        SchemaField(
            "string_field", "STRING", "REQUIRED", "This field is a STRING field.", ()
        ),
        SchemaField("bytes_field", "BYTES", "REQUIRED", None, ()),
        SchemaField("int_field", "INT64", "REQUIRED", None, ()),
        SchemaField("float_field", "FLOAT64", "REQUIRED", None, ()),
        SchemaField("numeric_field", "NUMERIC", "REQUIRED", None, ()),
        SchemaField("bool_field", "BOOL", "REQUIRED", None, ()),
        SchemaField("timestamp_field", "TIMESTAMP", "REQUIRED", None, ()),
        SchemaField("date_field", "DATE", "REQUIRED", None, ()),
        SchemaField("time_field", "TIME", "REQUIRED", None, ()),
        SchemaField("datetime_field", "DATETIME", "REQUIRED", None, ()),
        SchemaField("geography_field", "GEOGRAPHY", "REQUIRED", None, ()),
        SchemaField(
            "required_nested_field",
            "STRUCT",
            "REQUIRED",
            "This field is a STRUCT field.",
            (
                SchemaField(
                    "int_field", "INT64", "REQUIRED", "This field is an INT field.", ()
                ),
            ),
        ),
    ]
    expected = (
        f"@dataclass\n{inspect.getsource(RequiredNestedField)}\n"
        f"@dataclass\n{inspect.getsource(RequiredSchema)}"
    )
    assert schema_to_dataclass("RequiredSchema", schema).strip() == expected.strip()
def main(project: str, dataset: str, table_name: str) -> None:
    client = create_connection()
    table = client.get_table(f"{project}.{dataset}.{table_name}")
    print("from dataclasses import dataclass")
    print(schema_to_dataclass(table_name, table.schema))