99import json
1010import os
1111import os .path
12+
1213from docopt import docopt
1314from jsonpath_rw import parse
1415
1516
16- def generate_resource_example (schema_dict , path = None ):
17+ def generate_resource_example (schema_dict , path = None ): # noqa: C901 - complexity 11 instead of 10.
1718 """
1819 Generates resource examples from an OAS schema
1920
@@ -29,50 +30,34 @@ def generate_resource_example(schema_dict, path=None):
2930 if property_value ["type" ] == "array" :
3031 if "oneOf" in property_value ["items" ]:
3132 example [property_name ] = [
32- generate_resource_example (t ["properties" ], path + [ property_name ])
33+ generate_resource_example (t ["properties" ], [ * path , property_name ])
3334 for t in property_value ["items" ]["oneOf" ]
3435 ]
3536 elif "anyOf" in property_value ["items" ]:
3637 example [property_name ] = [
37- generate_resource_example (t ["properties" ], path + [ property_name ])
38+ generate_resource_example (t ["properties" ], [ * path , property_name ])
3839 for t in property_value ["items" ]["anyOf" ]
3940 ]
4041 elif property_value ["items" ]["type" ] == "object" :
4142 example [property_name ] = [
42- generate_resource_example (
43- property_value ["items" ]["properties" ], path + [property_name ]
44- )
43+ generate_resource_example (property_value ["items" ]["properties" ], [* path , property_name ])
4544 ]
4645 else :
4746 if {"example" , "default" } & set (property_value .get ("items" , {}).keys ()):
4847 items = property_value ["items" ]
49- example [property_name ] = [
50- items .get ("example" , items .get ("default" ))
51- ]
52- elif ("example" not in property_value ) and (
53- "default" not in property_value
54- ):
48+ example [property_name ] = [items .get ("example" , items .get ("default" ))]
49+ elif ("example" not in property_value ) and ("default" not in property_value ):
5550 property_path = "." .join (path )
56- raise RuntimeError (
57- f"{ property_path } .{ property_name } has no example or default!"
58- )
51+ raise RuntimeError (f"{ property_path } .{ property_name } has no example or default!" )
5952 else :
60- example [property_name ] = property_value .get (
61- "example" , property_value .get ("default" )
62- )
53+ example [property_name ] = property_value .get ("example" , property_value .get ("default" ))
6354 elif property_value ["type" ] == "object" :
64- example [property_name ] = generate_resource_example (
65- property_value ["properties" ], path + [property_name ]
66- )
55+ example [property_name ] = generate_resource_example (property_value ["properties" ], [* path , property_name ])
6756 else :
6857 if ("example" not in property_value ) and ("default" not in property_value ):
6958 property_path = "." .join (path )
70- raise RuntimeError (
71- f"{ property_path } .{ property_name } has no example or default!"
72- )
73- example [property_name ] = property_value .get (
74- "example" , property_value .get ("default" )
75- )
59+ raise RuntimeError (f"{ property_path } .{ property_name } has no example or default!" )
60+ example [property_name ] = property_value .get ("example" , property_value .get ("default" ))
7661
7762 return example
7863
@@ -82,7 +67,7 @@ def main(arguments):
8267 arguments = docopt (__doc__ , version = "0" )
8368
8469 # Load spec from file
85- with open (arguments ["SPEC_FILE" ], "r" ) as spec_file :
70+ with open (arguments ["SPEC_FILE" ]) as spec_file :
8671 spec = json .loads (spec_file .read ())
8772
8873 # Create default dir structure
@@ -95,18 +80,10 @@ def main(arguments):
9580 os .path .join (arguments ["OUT_DIR" ], "resources" , component_name + ".json" ),
9681 "w" ,
9782 ) as out_file :
98- out_file .write (
99- json .dumps (
100- generate_resource_example (
101- component_spec ["properties" ], [component_name ]
102- )
103- )
104- )
83+ out_file .write (json .dumps (generate_resource_example (component_spec ["properties" ], [component_name ])))
10584
10685 # Pull out responses
107- match_expr = parse (
108- "paths.*.*.(response|(responses.*)).content.*.(example|(examples.*.value))"
109- )
86+ match_expr = parse ("paths.*.*.(response|(responses.*)).content.*.(example|(examples.*.value))" )
11087
11188 for match in match_expr .find (spec ):
11289 if "patch" in str (match .full_path ):
0 commit comments