mirror of
				https://github.com/RGBCube/GitHubWrapper
				synced 2025-10-31 05:52:45 +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 = [] | ||||
| 
 | ||||
|             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) | ||||
|                 union_items.append(union_item) | ||||
|  | @ -63,7 +63,31 @@ def generate( | |||
|             current = [f'class {_title}(TypedDict):\n    """{schema["description"]}"""'] | ||||
| 
 | ||||
|             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] | ||||
| 
 | ||||
|                 elif isinstance(value_type, list): | ||||
|  | @ -79,14 +103,12 @@ def generate( | |||
|                     param_type = f"{combiner}{mklist(contents)}" | ||||
| 
 | ||||
|                 elif isinstance(value_type, dict): | ||||
|                     text, target = inner_generate( | ||||
|                         value_type, _title=key, _no_examples=_no_examples, _no_formats=_no_formats | ||||
|                     ) | ||||
|                     text, param_type = inner_generate(value) | ||||
|                     dependencies.append(text) | ||||
|                     param_type = target | ||||
| 
 | ||||
|                 else: | ||||
|                     param_type = f"Unknown[{value_type}]" | ||||
|                     com = "# " | ||||
| 
 | ||||
|                 if key not in schema["required"]: | ||||
|                     param_type = f"NotRequired[{param_type}]" | ||||
|  | @ -109,8 +131,6 @@ def generate( | |||
| 
 | ||||
|                 sep = "\n" if eg or fmt else "" | ||||
| 
 | ||||
|                 com = "# " if param_type.startswith("Unknown") else "" | ||||
| 
 | ||||
|                 current.append(f"{sep}{eg}{fmt}    {com}{key}: {param_type}") | ||||
| 
 | ||||
|             dependencies.append("\n".join(current)) | ||||
|  | @ -119,11 +139,11 @@ def generate( | |||
|             return result, _title | ||||
| 
 | ||||
|         # GeneratedObject = List[...] | ||||
|         elif object_type == untypes["list"]: | ||||
|         elif isinstance(object_type, list): | ||||
|             generated, target = inner_generate( | ||||
|                 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: | ||||
|             print("Unknown/Unimplemented Object Type:", object_type) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 RGBCube
						RGBCube