Skip to content

Commit 57522db

Browse files
authored
Merge pull request #35 from Mathics3/edges-as-operators
Redo DirectedEdge and UndirectedEdge as operators
2 parents 5a07c1b + f482ed8 commit 57522db

File tree

3 files changed

+23
-17
lines changed

3 files changed

+23
-17
lines changed

.github/workflows/ubuntu.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ jobs:
2323
python -m pip install --upgrade pip
2424
python -m pip install pytest
2525
# Can comment out when next Mathics core and Mathics-scanner are released
26-
# python -m pip install -e git+https://github.com/Mathics3/mathics-scanner#egg=Mathics-Scanner[full]
26+
python -m pip install -e git+https://github.com/Mathics3/mathics-scanner#egg=Mathics-Scanner[full]
2727
python -m pip install -e git+https://github.com/Mathics3/mathics-core#egg=Mathics3[full]
2828
python -m pip install -e .
29-
# (cd src/mathics3 && bash ./admin-tools/make-op-tables.sh)
29+
(cd src/mathics3 && bash ./admin-tools/make-op-tables.sh)
3030
- name: install pymathics graph
3131
run: |
3232
make develop

pymathics/graph/base.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@
1010
from inspect import isgenerator
1111
from typing import Callable, Optional, Union
1212

13+
from mathics.builtin.no_meaning import (
14+
DirectedEdge as GenericDirectedEdge,
15+
UndirectedEdge as GenericUndirectedEdge,
16+
)
17+
from mathics.core.attributes import A_PROTECTED, A_READ_PROTECTED
1318
from mathics.core.builtin import AtomBuiltin, Builtin
1419
from mathics.core.atoms import Atom, Integer, Integer0, Integer1, Integer2, String
1520
from mathics.core.convert.expression import ListExpression, from_python, to_mathics_list
@@ -893,8 +898,8 @@ def neighbors(v):
893898
return self._retrieve(graph, what, neighbors, expression, evaluation)
894899

895900

896-
class DirectedEdge(Builtin):
897-
"""
901+
class DirectedEdge(GenericDirectedEdge):
902+
r"""
898903
Edge of a <url>
899904
:Directed graph:
900905
https://en.wikipedia.org/wiki/Directed_graph</url> (<url>
@@ -908,9 +913,15 @@ class DirectedEdge(Builtin):
908913
<dt>'DirectedEdge[$u$, $v$]'
909914
<dd>create a directed edge from $u$ to $v$.
910915
</dl>
916+
917+
>> DirectedEdge[x, y, z]
918+
= x → y → z
919+
920+
>> a \[DirectedEdge] b
921+
= a → b
911922
"""
912923

913-
summary_text = "make a directed graph edge"
924+
attributes = A_PROTECTED | A_READ_PROTECTED
914925

915926

916927
class EdgeConnectivity(_NetworkXBuiltin):
@@ -1494,7 +1505,7 @@ def _items(self, graph):
14941505
return graph.vertices
14951506

14961507

1497-
class UndirectedEdge(Builtin):
1508+
class UndirectedEdge(GenericUndirectedEdge):
14981509
"""
14991510
<url>
15001511
:WMA link:
@@ -1506,17 +1517,10 @@ class UndirectedEdge(Builtin):
15061517
</dl>
15071518
15081519
>> a <-> b
1509-
= UndirectedEdge[a, b]
1510-
1511-
>> (a <-> b) <-> c
1512-
= UndirectedEdge[UndirectedEdge[a, b], c]
1513-
1514-
>> a <-> (b <-> c)
1515-
= UndirectedEdge[a, UndirectedEdge[b, c]]
1520+
= ...
15161521
"""
15171522

1518-
summary_text = "undirected graph edge"
1519-
pass
1523+
attributes = A_PROTECTED | A_READ_PROTECTED
15201524

15211525

15221526
# class EdgeAdd(_NetworkXBuiltin):

pymathics/graph/parametric.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,7 @@ class RandomTree(_NetworkXBuiltin):
579579
"""
580580
<url>:NetworkX:
581581
https://networkx.org/documentation/networkx-2.8.8/reference\
582-
/generated/networkx.generators.trees.random_tree.html</url>, <url>
582+
/generated/networkx.generators.trees.random_labeled_tree.html</url>, <url>
583583
:WMA:
584584
https://reference.wolfram.com/language/ref/RandomTree.html</url>
585585
@@ -610,7 +610,9 @@ def eval(
610610
return
611611

612612
args = (py_n,)
613-
g = graph_helper(nx.random_tree, options, False, "tree", evaluation, 0, *args)
613+
g = graph_helper(
614+
nx.random_labeled_tree, options, False, "tree", evaluation, 0, *args
615+
)
614616
if not g:
615617
return None
616618
g.G.n = n

0 commit comments

Comments
 (0)