mirror of
https://github.com/RGBCube/GitHubWrapper
synced 2025-05-18 15:05:08 +00:00
Extend parser (idk how it works)
This commit is contained in:
parent
7c9d7d4862
commit
efeec212b9
1 changed files with 30 additions and 10 deletions
|
@ -46,7 +46,7 @@ def generate(
|
||||||
union_items = []
|
union_items = []
|
||||||
|
|
||||||
for item_schema in objects:
|
for item_schema in objects:
|
||||||
generated_text, union_item = generate(item_schema, title=_title)
|
generated_text, union_item = inner_generate(item_schema)
|
||||||
|
|
||||||
text.append(generated_text)
|
text.append(generated_text)
|
||||||
union_items.append(union_item)
|
union_items.append(union_item)
|
||||||
|
@ -63,7 +63,31 @@ def generate(
|
||||||
current = [f'class {_title}(TypedDict):\n """{schema["description"]}"""']
|
current = [f'class {_title}(TypedDict):\n """{schema["description"]}"""']
|
||||||
|
|
||||||
for key, value in schema["properties"].items():
|
for key, value in schema["properties"].items():
|
||||||
if isinstance(value_type := value["type"], str):
|
com = ""
|
||||||
|
if union_list := value.get("anyOf"):
|
||||||
|
union_list.remove({"type": "null"})
|
||||||
|
|
||||||
|
if len(union_list) == 1:
|
||||||
|
text, target = inner_generate(
|
||||||
|
union_list[0], _title=_title, _no_examples=_no_examples, _no_formats=_no_formats
|
||||||
|
)
|
||||||
|
dependencies.append(text)
|
||||||
|
param_type = f"Optional[{target}]"
|
||||||
|
|
||||||
|
else:
|
||||||
|
union_items = []
|
||||||
|
|
||||||
|
for item_schema in union_list:
|
||||||
|
generated_text, union_item = generate(item_schema, title=_title)
|
||||||
|
|
||||||
|
dependencies.append(generated_text)
|
||||||
|
union_items.append(union_item)
|
||||||
|
|
||||||
|
dependencies.append(f"{_title} = Union{mklist(union_items)}")
|
||||||
|
|
||||||
|
param_type = f"Optional[{_title}]"
|
||||||
|
|
||||||
|
elif isinstance(value_type := value["type"], str):
|
||||||
param_type = types[value_type]
|
param_type = types[value_type]
|
||||||
|
|
||||||
elif isinstance(value_type, list):
|
elif isinstance(value_type, list):
|
||||||
|
@ -79,14 +103,12 @@ def generate(
|
||||||
param_type = f"{combiner}{mklist(contents)}"
|
param_type = f"{combiner}{mklist(contents)}"
|
||||||
|
|
||||||
elif isinstance(value_type, dict):
|
elif isinstance(value_type, dict):
|
||||||
text, target = inner_generate(
|
text, param_type = inner_generate(value)
|
||||||
value_type, _title=key, _no_examples=_no_examples, _no_formats=_no_formats
|
|
||||||
)
|
|
||||||
dependencies.append(text)
|
dependencies.append(text)
|
||||||
param_type = target
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
param_type = f"Unknown[{value_type}]"
|
param_type = f"Unknown[{value_type}]"
|
||||||
|
com = "# "
|
||||||
|
|
||||||
if key not in schema["required"]:
|
if key not in schema["required"]:
|
||||||
param_type = f"NotRequired[{param_type}]"
|
param_type = f"NotRequired[{param_type}]"
|
||||||
|
@ -109,8 +131,6 @@ def generate(
|
||||||
|
|
||||||
sep = "\n" if eg or fmt else ""
|
sep = "\n" if eg or fmt else ""
|
||||||
|
|
||||||
com = "# " if param_type.startswith("Unknown") else ""
|
|
||||||
|
|
||||||
current.append(f"{sep}{eg}{fmt} {com}{key}: {param_type}")
|
current.append(f"{sep}{eg}{fmt} {com}{key}: {param_type}")
|
||||||
|
|
||||||
dependencies.append("\n".join(current))
|
dependencies.append("\n".join(current))
|
||||||
|
@ -119,11 +139,11 @@ def generate(
|
||||||
return result, _title
|
return result, _title
|
||||||
|
|
||||||
# GeneratedObject = List[...]
|
# GeneratedObject = List[...]
|
||||||
elif object_type == untypes["list"]:
|
elif isinstance(object_type, list):
|
||||||
generated, target = inner_generate(
|
generated, target = inner_generate(
|
||||||
schema["items"], _title=_title, _no_examples=_no_examples, _no_formats=_no_formats
|
schema["items"], _title=_title, _no_examples=_no_examples, _no_formats=_no_formats
|
||||||
)
|
)
|
||||||
return f"{generated}\n\n\n{_title} = List[{target}]", _title
|
return f"{generated}\n\n{_title} = List[{target}]", _title
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print("Unknown/Unimplemented Object Type:", object_type)
|
print("Unknown/Unimplemented Object Type:", object_type)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue