# This code parses date/times, so please
#
# pip install python-dateutil
#
# To use this code, make sure you
#
# import json
#
# and then, to convert JSON from a string, do
#
# result = metadata_change_event_from_dict(json.loads(json_string))
from enum import Enum
from dataclasses import dataclass
from typing import Optional, Any, List, TypeVar, Type, cast, Callable
from datetime import datetime
import dateutil.parser
T = TypeVar("T")
EnumT = TypeVar("EnumT", bound=Enum)
def from_str(x: Any) -> str:
assert isinstance(x, str)
return x
def from_none(x: Any) -> Any:
assert x is None
return x
def from_union(fs, x):
for f in fs:
try:
return f(x)
except:
pass
assert False
def from_datetime(x: Any) -> datetime:
return dateutil.parser.parse(x)
def from_float(x: Any) -> float:
assert isinstance(x, (float, int)) and not isinstance(x, bool)
return float(x)
def to_float(x: Any) -> float:
assert isinstance(x, float)
return x
def from_bool(x: Any) -> bool:
assert isinstance(x, bool)
return x
def to_class(c: Type[T], x: Any) -> dict:
assert isinstance(x, c)
return cast(Any, x).to_dict()
def to_enum(c: Type[EnumT], x: Any) -> EnumT:
assert isinstance(x, c)
return x.value
def from_list(f: Callable[[Any], T], x: Any) -> List[T]:
assert isinstance(x, list)
return [f(y) for y in x]
class AspectType(Enum):
DATASET_COMMENT = "DATASET_COMMENT"
DATASET_DOCUMENTATION = "DATASET_DOCUMENTATION"
DATASET_DOWNSTREAM = "DATASET_DOWNSTREAM"
DATASET_SCHEMA = "DATASET_SCHEMA"
DATASET_STATISTICS = "DATASET_STATISTICS"
DATASET_UPSTREAM = "DATASET_UPSTREAM"
GROUP_INFO = "GROUP_INFO"
OWNERSHIP = "OWNERSHIP"
PERSON_EDITABLE_INFO = "PERSON_EDITABLE_INFO"
PROPERTIES = "PROPERTIES"
@dataclass
class AuditStamp:
actor: Optional[str] = None
time: Optional[datetime] = None
@staticmethod
def from_dict(obj: Any) -> 'AuditStamp':
assert isinstance(obj, dict)
actor = from_union([from_str, from_none], obj.get("actor"))
time = from_union([from_datetime, from_none], obj.get("time"))
return AuditStamp(actor, time)
def to_dict(self) -> dict:
result: dict = {}
result["actor"] = from_union([from_str, from_none], self.actor)
result["time"] = from_union([lambda x: x.isoformat(), from_none], self.time)
return result
@dataclass
class ObjectID:
"""A class representation of the BSON ObjectId type."""
"""The generation time of this ObjectId instance"""
generation_time: Optional[float] = None
@staticmethod
def from_dict(obj: Any) -> 'ObjectID':
assert isinstance(obj, dict)
generation_time = from_union([from_float, from_none], obj.get("generationTime"))
return ObjectID(generation_time)
def to_dict(self) -> dict:
result: dict = {}
result["generationTime"] = from_union([to_float, from_none], self.generation_time)
return result
@dataclass
class DatasetComment:
id: Optional[ObjectID] = None
aspect_type: Optional[AspectType] = None
content: Optional[str] = None
created: Optional[AuditStamp] = None
created_at: Optional[datetime] = None
deleted: Optional[AuditStamp] = None
entity_id: Optional[str] = None
field: Optional[str] = None
dataset_comment_id: Optional[str] = None
latest: Optional[bool] = None
parent: Optional[str] = None
@staticmethod
def from_dict(obj: Any) -> 'DatasetComment':
assert isinstance(obj, dict)
id = from_union([ObjectID.from_dict, from_none], obj.get("_id"))
aspect_type = from_union([AspectType, from_none], obj.get("aspectType"))
content = from_union([from_str, from_none], obj.get("content"))
created = from_union([AuditStamp.from_dict, from_none], obj.get("created"))
created_at = from_union([from_datetime, from_none], obj.get("createdAt"))
deleted = from_union([AuditStamp.from_dict, from_none], obj.get("deleted"))
entity_id = from_union([from_str, from_none], obj.get("entityId"))
field = from_union([from_str, from_none], obj.get("field"))
dataset_comment_id = from_union([from_str, from_none], obj.get("id"))
latest = from_union([from_bool, from_none], obj.get("latest"))
parent = from_union([from_str, from_none], obj.get("parent"))
return DatasetComment(id, aspect_type, content, created, created_at, deleted, entity_id, field, dataset_comment_id, latest, parent)
def to_dict(self) -> dict:
result: dict = {}
result["_id"] = from_union([lambda x: to_class(ObjectID, x), from_none], self.id)
result["aspectType"] = from_union([lambda x: to_enum(AspectType, x), from_none], self.aspect_type)
result["content"] = from_union([from_str, from_none], self.content)
result["created"] = from_union([lambda x: to_class(AuditStamp, x), from_none], self.created)
result["createdAt"] = from_union([lambda x: x.isoformat(), from_none], self.created_at)
result["deleted"] = from_union([lambda x: to_class(AuditStamp, x), from_none], self.deleted)
result["entityId"] = from_union([from_str, from_none], self.entity_id)
result["field"] = from_union([from_str, from_none], self.field)
result["id"] = from_union([from_str, from_none], self.dataset_comment_id)
result["latest"] = from_union([from_bool, from_none], self.latest)
result["parent"] = from_union([from_str, from_none], self.parent)
return result
@dataclass
class FieldDocumentation:
documentation: Optional[str] = None
field_path: Optional[str] = None
tests: Optional[List[str]] = None
@staticmethod
def from_dict(obj: Any) -> 'FieldDocumentation':
assert isinstance(obj, dict)
documentation = from_union([from_str, from_none], obj.get("documentation"))
field_path = from_union([from_str, from_none], obj.get("fieldPath"))
tests = from_union([lambda x: from_list(from_str, x), from_none], obj.get("tests"))
return FieldDocumentation(documentation, field_path, tests)
def to_dict(self) -> dict:
result: dict = {}
result["documentation"] = from_union([from_str, from_none], self.documentation)
result["fieldPath"] = from_union([from_str, from_none], self.field_path)
result["tests"] = from_union([lambda x: from_list(from_str, x), from_none], self.tests)
return result
@dataclass
class DatasetDocumentation:
id: Optional[ObjectID] = None
aspect_type: Optional[AspectType] = None
created_at: Optional[datetime] = None
dataset_documentations: Optional[List[str]] = None
entity_id: Optional[str] = None
field_documentations: Optional[List[FieldDocumentation]] = None
dataset_documentation_id: Optional[str] = None
latest: Optional[bool] = None
@staticmethod
def from_dict(obj: Any) -> 'DatasetDocumentation':
assert isinstance(obj, dict)
id = from_union([ObjectID.from_dict, from_none], obj.get("_id"))
aspect_type = from_union([AspectType, from_none], obj.get("aspectType"))
created_at = from_union([from_datetime, from_none], obj.get("createdAt"))
dataset_documentations = from_union([lambda x: from_list(from_str, x), from_none], obj.get("datasetDocumentations"))
entity_id = from_union([from_str, from_none], obj.get("entityId"))
field_documentations = from_union([lambda x: from_list(FieldDocumentation.from_dict, x), from_none], obj.get("fieldDocumentations"))
dataset_documentation_id = from_union([from_str, from_none], obj.get("id"))
latest = from_union([from_bool, from_none], obj.get("latest"))
return DatasetDocumentation(id, aspect_type, created_at, dataset_documentations, entity_id, field_documentations, dataset_documentation_id, latest)
def to_dict(self) -> dict:
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
共32个文件
py:28个
json:1个
gitignore:1个
资源分类:Python库 所属语言:Python 资源全名:metaphor-connectors-0.1.5.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源推荐
资源详情
资源评论
收起资源包目录
metaphor-connectors-0.1.5.tar.gz (32个子文件)
metaphor-connectors-0.1.5
PKG-INFO 1KB
metaphor
dbt_extractor
extractor.py 10KB
__main__.py 187B
__init__.py 0B
handler.py 294B
__init__.py 0B
common
sink.py 845B
extractor.py 2KB
cli.py 575B
metadata_change_event.json 29KB
__init__.py 0B
event_util.py 3KB
kinesis.py 2KB
api.py 1KB
metadata_change_event.py 47KB
handler.py 1017B
google_directory
extractor.py 4KB
__main__.py 253B
__init__.py 0B
.gitignore 28B
authenticate.py 2KB
handler.py 335B
postgresql
extractor.py 9KB
__main__.py 222B
__init__.py 0B
handler.py 319B
snowflake_extractor
extractor.py 5KB
__main__.py 217B
__init__.py 0B
handler.py 337B
pyproject.toml 2KB
setup.py 1KB
共 32 条
- 1
资源评论
挣扎的蓝藻
- 粉丝: 13w+
- 资源: 15万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功