11import os
22import logging
3- import shutil
43from docutils import nodes
54from docutils .parsers .rst import directives , Directive
65import sphinx
@@ -102,10 +101,7 @@ class GDotDirective(Directive):
102101 "process" : directives .unchanged ,
103102 }
104103
105- _default_url = (
106- "https://github.com/sdpython/jyquickhelper/raw/master/src/"
107- "jyquickhelper/js/vizjs/viz.js"
108- )
104+ _default_url = "https://cdnjs.cloudflare.com/ajax/libs/viz.js/1.8.0/viz-lite.js"
109105
110106 def run (self ):
111107 """
@@ -120,19 +116,7 @@ def run(self):
120116 bool_set_ = (True , 1 , "True" , "1" , "true" , "" )
121117 process = "process" in self .options and self .options ["process" ] in bool_set_
122118 if url == "local" :
123- try :
124- import jyquickhelper
125-
126- path = os .path .join (
127- os .path .dirname (jyquickhelper .__file__ ), "js" , "vizjs" , "viz.js"
128- )
129- if not os .path .exists (path ):
130- raise ImportError ("jyquickelper needs to be updated to get viz.js." )
131- url = "local"
132- except ImportError :
133- url = GDotDirective ._default_url
134- logger = logging .getLogger ("gdot" )
135- logger .warning ("[gdot] use %r" , url )
119+ url = GDotDirective ._default_url
136120
137121 info = get_env_state_info (self )
138122 docname = info ["docname" ]
@@ -165,11 +149,13 @@ def run(self):
165149 if script or script == "" :
166150 stdout , stderr , _ = run_python_script (content , process = process )
167151 if stderr :
152+ logger = logging .getLogger ("gdot" )
168153 logger .warning ("[gdot] a dot graph cannot be draw due to %s" , stderr )
169154 content = stdout
170155 if script :
171156 spl = content .split (script )
172157 if len (spl ) > 2 :
158+ logger = logging .getLogger ("gdot" )
173159 logger .warning ("[gdot] too many output lines %s" , content )
174160 content = spl [- 1 ]
175161
@@ -300,13 +286,6 @@ def depart_gdot_node_html(self, node):
300286
301287
302288def copy_js_files (app ):
303- try :
304- import jyquickhelper
305-
306- local = True
307- except ImportError :
308- local = False
309-
310289 logger = logging .getLogger ("gdot" )
311290 dest = app .config .html_static_path
312291 if isinstance (dest , list ) and len (dest ) > 0 :
@@ -333,63 +312,41 @@ def copy_js_files(app):
333312
334313 # viz.js
335314 file_dest = os .path .join (destf , "viz.js" )
336- if os .path .exists (file_dest ):
337- logger .info ("[gdot] %r already installed." , file_dest )
338- else :
339- if local :
340- path = os .path .join (
341- os .path .dirname (jyquickhelper .__file__ ), "js" , "vizjs" , "viz.js"
315+ if not os .path .exists (file_dest ):
316+ logger .info ("[gdot] viz.js, use %r" , GDotDirective ._default_url )
317+
318+ try :
319+ content = get_url_content_timeout (
320+ GDotDirective ._default_url , output = file_dest , raise_exception = False
321+ )
322+ except Exception as e :
323+ logger .warning ("[gdot] download failed due to %r" , e )
324+ content = None
325+
326+ if content is None :
327+ logger .warning (
328+ "[gdot] unable to download %r to %r" ,
329+ GDotDirective ._default_url ,
330+ file_dest ,
342331 )
343- if os .path .exists (path ):
344- # We copy the file to static path.
345- try :
346- shutil .copy (path , file_dest )
347- logger .info ("[gdot] copy %r to %r." , path , file_dest )
348- except PermissionError as e :
349- logger .warning (
350- "[gdot] permission error (%r), unable to use local viz.js" , e
351- )
352- else :
353- logger .warning ("[gdot] unable to find %r" , path )
354332 else :
355- logger .info ("[gdot] viz.js, use %r" , GDotDirective ._default_url )
356-
357- file_dest = os .path .join (destf , "require.js" )
358- try :
359- content = get_url_content_timeout (
360- GDotDirective ._default_url , output = file_dest , raise_exception = False
361- )
362- except Exception as e :
363- logger .warning ("[gdot] download failed due to %r" , e )
364- content = None
365-
366- if content is None :
367- logger .warning (
368- "[gdot] unable to download %r to %r" ,
369- GDotDirective ._default_url ,
370- file_dest ,
371- )
372- else :
373- logger .info (
374- "[gdot] download %r to %r" , GDotDirective ._default_url , file_dest
375- )
333+ logger .info (
334+ "[gdot] download %r to %r" , GDotDirective ._default_url , file_dest
335+ )
376336
377337 # require.js
378338 file_dest = os .path .join (destf , "require.js" )
379- if os .path .exists (file_dest ):
380- logger .info ("[gdot] %r already installed." , file_dest )
381- else :
339+ if not os .path .exists (file_dest ):
340+ logger .info ("[gdot] download %r" , file_dest )
382341 try :
383342 download_requirejs (destf )
384343 except Exception as e :
385344 logger .warning ("[gdot] download_requirejs failed due to %r" , e )
386345
387- if os .path .exists (file_dest ):
346+ if not os .path .exists (file_dest ):
388347 # It adds <script async="defer" src="_static/require.js"></script>
389348 # at the bottom of the file. It needs to be at the beginning.
390349 # app.add_js_file("require.js", priority=200)
391- logger .info ("[gdot] %r installed." , file_dest )
392- else :
393350 logger .warning ("[gdot] %r not installed." , file_dest )
394351
395352
0 commit comments