1+ """Utility command runner.""" 
2+ 
3+ import  argparse 
14from  distutils  import  log 
25import  json 
36import  os 
47import  platform 
8+ import  requests 
59import  shutil 
610from  subprocess  import  check_call 
711import  sys 
812import  time 
913
10- USAGE  =  "usage: python commands.py [updateplotlyjsdev | updateplotlyjs | codegen]" 
14+ from  codegen  import  perform_codegen 
15+ 
16+ 
1117PROJECT_ROOT  =  os .path .dirname (os .path .abspath (__file__ ))
1218NODE_ROOT  =  os .path .join (PROJECT_ROOT , "js" )
1319NODE_MODULES  =  os .path .join (NODE_ROOT , "node_modules" )
@@ -89,24 +95,12 @@ def install_js_deps(local):
8995            raise  ValueError (msg )
9096
9197
92- # Generate class hierarchy from Plotly JSON schema 
93- def  run_codegen ():
94-     if  sys .version_info  <  (3 , 8 ):
95-         raise  ImportError ("Code generation must be executed with Python >= 3.8" )
96- 
97-     from  codegen  import  perform_codegen 
98- 
99-     perform_codegen ()
100- 
101- 
10298def  overwrite_schema_local (uri ):
10399    path  =  os .path .join (PROJECT_ROOT , "codegen" , "resources" , "plot-schema.json" )
104100    shutil .copyfile (uri , path )
105101
106102
107103def  overwrite_schema (url ):
108-     import  requests 
109- 
110104    req  =  requests .get (url )
111105    assert  req .status_code  ==  200 
112106    path  =  os .path .join (PROJECT_ROOT , "codegen" , "resources" , "plot-schema.json" )
@@ -120,8 +114,6 @@ def overwrite_bundle_local(uri):
120114
121115
122116def  overwrite_bundle (url ):
123-     import  requests 
124- 
125117    req  =  requests .get (url )
126118    print ("url:" , url )
127119    assert  req .status_code  ==  200 
@@ -145,8 +137,6 @@ def overwrite_plotlyjs_version_file(plotlyjs_version):
145137
146138
147139def  request_json (url ):
148-     import  requests 
149- 
150140    req  =  requests .get (url )
151141    return  json .loads (req .content .decode ("utf-8" ))
152142
@@ -228,7 +218,7 @@ def update_bundle(plotly_js_version):
228218def  update_plotlyjs (plotly_js_version ):
229219    update_bundle (plotly_js_version )
230220    update_schema (plotly_js_version )
231-     run_codegen ()
221+     perform_codegen ()
232222
233223
234224# Update the plotly.js schema and bundle from master 
@@ -296,20 +286,43 @@ def update_schema_bundle_from_master():
296286# Update project to a new development version of plotly.js 
297287def  update_plotlyjs_dev ():
298288    update_schema_bundle_from_master ()
299-     run_codegen ()
289+     perform_codegen ()
290+ 
291+ 
292+ def  parse_args ():
293+     """Parse command-line arguments.""" 
294+     parser  =  argparse .ArgumentParser ()
295+     subparsers  =  parser .add_subparsers (dest = "cmd" , help = "Available subcommands" )
296+ 
297+     p_codegen  =  subparsers .add_parser ("codegen" , help = "generate code" )
298+     p_codegen .add_argument ("--noformat" , action = "store_true" , help = "prevent reformatting" )
299+ 
300+     p_updateplotlyjsdev  =  subparsers .add_parser ("updateplotlyjsdev" , help = "update plotly.js for development" )
301+ 
302+     p_updateplotlyjs  =  subparsers .add_parser ("updateplotlyjs" , help = "update plotly.js" )
303+ 
304+     return  parser .parse_args ()
300305
301306
302307def  main ():
303-     if  len (sys .argv ) !=  2 :
304-         print (USAGE , file = sys .stderr )
305-         sys .exit (1 )
306-     elif  sys .argv [1 ] ==  "codegen" :
307-         run_codegen ()
308-     elif  sys .argv [1 ] ==  "updateplotlyjsdev" :
308+     """Main driver.""" 
309+ 
310+     args  =  parse_args ()
311+ 
312+     if  args .cmd  ==  "codegen" :
313+         perform_codegen (noformat = args .noformat )
314+ 
315+     elif  args .cmd  ==  "updateplotlyjsdev" :
309316        update_plotlyjs_dev ()
310-     elif  sys .argv [1 ] ==  "updateplotlyjs" :
311-         print (plotly_js_version ())
312-         update_plotlyjs (plotly_js_version ())
317+ 
318+     elif  args .cmd  ==  "updateplotlyjs" :
319+         version  =  plotly_js_version ()
320+         print (version )
321+         update_plotlyjs (version )
322+ 
323+     else :
324+         print (f"unknown command { args .cmd }  , file = sys .stderr )
325+         sys .exit (1 )
313326
314327
315328if  __name__  ==  "__main__" :
0 commit comments