66"""
77
88from mathics .builtin .numbers .randomnumbers import RandomEnv
9- from mathics .core .expression import String
109
1110from pymathics .graph .__main__ import (
1211 Graph ,
13- WL_MARKER_TO_NETWORKX ,
1412 _NetworkXBuiltin ,
1513 _convert_networkx_graph ,
1614 _graph_from_list ,
@@ -32,6 +30,7 @@ def graph_helper(
3230 options : dict ,
3331 can_digraph : bool ,
3432 graph_layout : str ,
33+ evaluation ,
3534 root : Optional [int ] = None ,
3635 * args ,
3736 ** kwargs
@@ -94,7 +93,7 @@ def apply(self, r, h, expression, evaluation, options):
9493 return None
9594
9695 args = (py_r , py_h )
97- g = graph_helper (nx .balanced_tree , options , True , "tree" , 0 , * args )
96+ g = graph_helper (nx .balanced_tree , options , True , "tree" , evaluation , 0 , * args )
9897 if not g :
9998 return None
10099 g .G .r = r
@@ -133,7 +132,7 @@ def apply(self, m1, m2, expression, evaluation, options):
133132 return
134133
135134 args = (py_m1 , py_m2 )
136- g = graph_helper (nx .barbell_graph , options , False , "spring" , None , * args )
135+ g = graph_helper (nx .barbell_graph , options , False , "spring" , evaluation , None , * args )
137136 if not g :
138137 return None
139138
@@ -205,7 +204,7 @@ def apply(self, n, expression, evaluation, options):
205204 return
206205
207206 args = (py_n ,)
208- g = graph_helper (binomial_tree , options , True , "tree" , 0 , * args )
207+ g = graph_helper (binomial_tree , options , True , "tree" , evaluation , 0 , * args )
209208 if not g :
210209 return None
211210 g .G .n = n
@@ -220,7 +219,7 @@ def complete_graph_apply(self, n, expression, evaluation, options):
220219 return
221220
222221 args = (py_n ,)
223- g = graph_helper (nx .complete_graph , options , False , "circular" , None , * args )
222+ g = graph_helper (nx .complete_graph , options , False , "circular" , evaluation , None , * args )
224223 if not g :
225224 return None
226225
@@ -333,7 +332,7 @@ def f_r_t_apply(self, r, n, expression, evaluation, options):
333332 return
334333
335334 args = (py_r , py_n )
336- g = graph_helper (nx .full_rary_tree , options , True , "tree" , 0 , * args )
335+ g = graph_helper (nx .full_rary_tree , options , True , "tree" , evaluation , 0 , * args )
337336 if not g :
338337 return None
339338
@@ -395,7 +394,7 @@ def apply(self, n, expression, evaluation, options):
395394 return
396395
397396 args = (py_n ,)
398- g = graph_helper (nx .graph_atlas , options , False , "spring" , None , * args )
397+ g = graph_helper (nx .graph_atlas , options , False , "spring" , evaluation , None , * args )
399398 if not g :
400399 return None
401400 g .n = n
@@ -417,7 +416,7 @@ def hkn_harary_apply(self, k, n, expression, evaluation, options):
417416 from pymathics .graph .harary import hkn_harary_graph
418417
419418 args = (py_k , py_n )
420- g = graph_helper (hkn_harary_graph , options , False , "circular" , None , * args )
419+ g = graph_helper (hkn_harary_graph , options , False , "circular" , evaluation , None , * args )
421420 if not g :
422421 return None
423422 g .k = py_k
@@ -490,7 +489,7 @@ def apply(self, n, m, expression, evaluation, options):
490489 from pymathics .graph .harary import hnm_harary_graph
491490
492491 args = (py_n , py_m )
493- g = graph_helper (hmn_harary_graph , options , False , "circular" , None , * args )
492+ g = graph_helper (hnm_harary_graph , options , False , "circular" , evaluation , None , * args )
494493 if not g :
495494 return None
496495 g .n = py_n
@@ -557,12 +556,13 @@ def apply(self, n, expression, evaluation, options):
557556 return
558557
559558 args = (py_n ,)
560- g = graph_helper (nx .ladder_graph , options , False , "spring" , 0 , * args )
559+ g = graph_helper (nx .ladder_graph , options , False , "spring" , evaluation , 0 , * args )
561560 if not g :
562561 return None
563562 g .G .n = n
564563 return g
565564
565+
566566class PathGraph (_NetworkXBuiltin ):
567567 """
568568 <dl>
@@ -582,7 +582,9 @@ def edges():
582582 yield Expression ("UndirectedEdge" , u , v )
583583
584584 g = _graph_from_list (edges (), options )
585- g .G .graph_layout = options ["System`GraphLayout" ].get_string_value () or "spiral_equidistant"
585+ g .G .graph_layout = (
586+ options ["System`GraphLayout" ].get_string_value () or "spiral_equidistant"
587+ )
586588 return g
587589
588590
@@ -645,7 +647,7 @@ def apply(self, n, expression, evaluation, options):
645647 return
646648
647649 args = (py_n ,)
648- g = graph_helper (nx .random_tree , options , False , "tree" , 0 , * args )
650+ g = graph_helper (nx .random_tree , options , False , "tree" , evaluation , 0 , * args )
649651 if not g :
650652 return None
651653 g .G .n = n
@@ -676,12 +678,13 @@ def apply(self, n, expression, evaluation, options):
676678 return
677679
678680 args = (py_n ,)
679- g = graph_helper (nx .star_graph , options , False , "spring" , 0 , * args )
681+ g = graph_helper (nx .star_graph , options , False , "spring" , evaluation , 0 , * args )
680682 if not g :
681683 return None
682684 g .G .n = n
683685 return g
684686
687+
685688WL_TO_NETWORKX_FN = {
686689 "DodecahedralGraph" : (nx .dodecahedral_graph , None ),
687690 "DiamondGraph" : (nx .diamond_graph , "spring" ),
@@ -690,6 +693,7 @@ def apply(self, n, expression, evaluation, options):
690693 "PetersenGraph" : (nx .petersen_graph , None ),
691694}
692695
696+
693697class GraphData (_NetworkXBuiltin ):
694698 """
695699 <dl>
@@ -699,6 +703,7 @@ class GraphData(_NetworkXBuiltin):
699703
700704 >> GraphData["PappusGraph"]
701705 """
706+
702707 def apply (self , name , expression , evaluation , options ):
703708 "%(name)s[name_String, OptionsPattern[%(name)s]]"
704709 py_name = name .get_string_value ()
@@ -710,11 +715,12 @@ def apply(self, name, expression, evaluation, options):
710715 # These graphs require parameters
711716 return
712717 import inspect
718+
713719 fn = dict (inspect .getmembers (nx , inspect .isfunction )).get (py_name , None )
714720 # parameters = inspect.signature(nx.diamond_graph).parameters.values()
715721 # if len([p for p in list(parameters) if p.kind in [inspect.Parameter.POSITIONAL_ONLY, inspect.Parameter.POSITIONAL_OR_KEYWORD]]) != 0:
716722 # return
717723 if fn :
718- g = graph_helper (fn , options , False , layout )
724+ g = graph_helper (fn , options , False , evaluation , layout )
719725 g .G .name = py_name
720726 return g
0 commit comments