summaryrefslogtreecommitdiffstats
path: root/python/fatcat_tools/transforms
diff options
context:
space:
mode:
Diffstat (limited to 'python/fatcat_tools/transforms')
-rw-r--r--python/fatcat_tools/transforms/entities.py26
1 files changed, 19 insertions, 7 deletions
diff --git a/python/fatcat_tools/transforms/entities.py b/python/fatcat_tools/transforms/entities.py
index 3892d54a..799d5d6c 100644
--- a/python/fatcat_tools/transforms/entities.py
+++ b/python/fatcat_tools/transforms/entities.py
@@ -1,10 +1,12 @@
-
+import collections
import json
+from typing import Any, Dict, List, Optional
+
import toml
-import collections
from fatcat_openapi_client import ApiClient
-def entity_to_dict(entity, api_client=None) -> dict:
+
+def entity_to_dict(entity: Any, api_client: Optional[ApiClient] = None) -> Dict[str, Any]:
"""
Hack to take advantage of the code-generated serialization code.
@@ -18,7 +20,10 @@ def entity_to_dict(entity, api_client=None) -> dict:
api_client = ApiClient()
return api_client.sanitize_for_serialization(entity)
-def entity_from_json(json_str: str, entity_type, api_client=None):
+
+def entity_from_json(
+ json_str: str, entity_type: Any, api_client: Optional[ApiClient] = None
+) -> Any:
"""
Hack to take advantage of the code-generated deserialization code
@@ -26,15 +31,19 @@ def entity_from_json(json_str: str, entity_type, api_client=None):
"""
if not api_client:
api_client = ApiClient()
- thing = collections.namedtuple('Thing', ['data'])
+ thing = collections.namedtuple("Thing", ["data"])
thing.data = json_str
return api_client.deserialize(thing, entity_type)
+
def entity_from_dict(obj: dict, entity_type, api_client=None):
json_str = json.dumps(obj)
return entity_from_json(json_str, entity_type, api_client=api_client)
-def entity_to_toml(entity, api_client=None, pop_fields=None) -> str:
+
+def entity_to_toml(
+ entity: Any, api_client: Optional[ApiClient] = None, pop_fields: Optional[List[str]] = None
+) -> str:
"""
pop_fields parameter can be used to strip out some fields from the resulting
TOML. Eg, for fields which should not be edited, like the ident.
@@ -45,6 +54,9 @@ def entity_to_toml(entity, api_client=None, pop_fields=None) -> str:
obj.pop(k, None)
return toml.dumps(obj)
-def entity_from_toml(toml_str: str, entity_type, api_client=None):
+
+def entity_from_toml(
+ toml_str: str, entity_type: Any, api_client: Optional[List[str]] = None
+) -> Any:
obj = toml.loads(toml_str)
return entity_from_dict(obj, entity_type, api_client=api_client)