topologicpy 0.8.38__py3-none-any.whl → 0.8.39__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- topologicpy/Dictionary.py +1 -0
- topologicpy/Graph.py +343 -2
- topologicpy/Plotly.py +1 -1
- topologicpy/version.py +1 -1
- {topologicpy-0.8.38.dist-info → topologicpy-0.8.39.dist-info}/METADATA +1 -1
- {topologicpy-0.8.38.dist-info → topologicpy-0.8.39.dist-info}/RECORD +9 -9
- {topologicpy-0.8.38.dist-info → topologicpy-0.8.39.dist-info}/WHEEL +0 -0
- {topologicpy-0.8.38.dist-info → topologicpy-0.8.39.dist-info}/licenses/LICENSE +0 -0
- {topologicpy-0.8.38.dist-info → topologicpy-0.8.39.dist-info}/top_level.txt +0 -0
topologicpy/Dictionary.py
CHANGED
topologicpy/Graph.py
CHANGED
@@ -6295,7 +6295,9 @@ class Graph:
|
|
6295
6295
|
if not vertices:
|
6296
6296
|
edges = []
|
6297
6297
|
_ = graph.Edges(edges, tolerance) # Hook to Core
|
6298
|
-
|
6298
|
+
if not edges:
|
6299
|
+
return []
|
6300
|
+
return list(dict.fromkeys(edges)) # remove duplicates
|
6299
6301
|
else:
|
6300
6302
|
vertices = [v for v in vertices if Topology.IsInstance(v, "Vertex")]
|
6301
6303
|
if len(vertices) < 1:
|
@@ -12909,4 +12911,343 @@ class Graph:
|
|
12909
12911
|
numerator = sum(min(weights1.get(k, 0), weights2.get(k, 0)) for k in keys)
|
12910
12912
|
denominator = sum(max(weights1.get(k, 0), weights2.get(k, 0)) for k in keys)
|
12911
12913
|
|
12912
|
-
return round(numerator / denominator, mantissa) if denominator != 0 else 0.0
|
12914
|
+
return round(numerator / denominator, mantissa) if denominator != 0 else 0.0
|
12915
|
+
|
12916
|
+
@staticmethod
|
12917
|
+
def _vertex_is_same(v1, v2, key=None):
|
12918
|
+
from topologicpy.Topology import Topology
|
12919
|
+
from topologicpy.Dictionary import Dictionary
|
12920
|
+
d1 = Topology.Dictionary(v1)
|
12921
|
+
d2 = Topology.Dictionary(v2)
|
12922
|
+
a = Dictionary.ValueAtKey(d1, key, "0")
|
12923
|
+
b = Dictionary.ValueAtKey(d2, key, "1")
|
12924
|
+
return a == b
|
12925
|
+
|
12926
|
+
@staticmethod
|
12927
|
+
def _vertex_in_list(vertex, vertex_list, key=None):
|
12928
|
+
for i, v1 in enumerate(vertex_list):
|
12929
|
+
if Graph._vertex_is_same(vertex, v1, key=key):
|
12930
|
+
return i+1
|
12931
|
+
return False
|
12932
|
+
|
12933
|
+
@staticmethod
|
12934
|
+
def _edge_in_list(edge, edge_list, vertices_a, vertices_b, key=None):
|
12935
|
+
sv1 = vertices_a[edge[0]]
|
12936
|
+
ev1 = vertices_a[edge[1]]
|
12937
|
+
for i, e in enumerate(edge_list):
|
12938
|
+
sv2 = vertices_b[e[0]]
|
12939
|
+
ev2 = vertices_b[e[1]]
|
12940
|
+
if (Graph._vertex_is_same(sv1, sv2, key=key) and Graph._vertex_is_same(ev1, ev2, key=key)) or \
|
12941
|
+
(Graph._vertex_is_same(sv1, ev2, key=key) and Graph._vertex_is_same(ev1, sv2, key=key)):
|
12942
|
+
return i+1
|
12943
|
+
return False
|
12944
|
+
|
12945
|
+
@staticmethod
|
12946
|
+
def Union(graphA, graphB, vertexKey: str, silent: bool = False):
|
12947
|
+
"""
|
12948
|
+
Union the two input graphs based on an input vertex key. See https://en.wikipedia.org/wiki/Boolean_operation.
|
12949
|
+
|
12950
|
+
Parameters
|
12951
|
+
----------
|
12952
|
+
graphA : topologic_core.Graph
|
12953
|
+
The first input graph.
|
12954
|
+
graphB : topologic_core.Graph
|
12955
|
+
The second input graph.
|
12956
|
+
vertexKey : str
|
12957
|
+
The vertex dictionary key to use to determine if two vertices are the same.
|
12958
|
+
silent : bool , optional
|
12959
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
12960
|
+
|
12961
|
+
Returns
|
12962
|
+
-------
|
12963
|
+
topologic_core.Graph
|
12964
|
+
the resultant graph. Vertex and edge dictionaries are merged.
|
12965
|
+
|
12966
|
+
"""
|
12967
|
+
from topologicpy.Vertex import Vertex
|
12968
|
+
from topologicpy.Edge import Edge
|
12969
|
+
from topologicpy.Topology import Topology
|
12970
|
+
from topologicpy.Dictionary import Dictionary
|
12971
|
+
|
12972
|
+
if not Topology.IsInstance(graphA, "graph"):
|
12973
|
+
if not silent:
|
12974
|
+
print("Graph.Union - Error: The graphA input parameter is not a valid graph. Returning None.")
|
12975
|
+
return None
|
12976
|
+
if not Topology.IsInstance(graphB, "graph"):
|
12977
|
+
if not silent:
|
12978
|
+
print("Graph.Union - Error: The graphB input parameter is not a valid graph. Returning None.")
|
12979
|
+
return None
|
12980
|
+
if not isinstance(vertexKey, str):
|
12981
|
+
if not silent:
|
12982
|
+
print("Graph.Union - Error: The vertexKey input parameter is not a valid string. Returning None.")
|
12983
|
+
return None
|
12984
|
+
vertices_a = Graph.Vertices(graphA)
|
12985
|
+
vertices_a_new = []
|
12986
|
+
for v in vertices_a:
|
12987
|
+
d = Topology.Dictionary(v)
|
12988
|
+
v_new = Vertex.ByCoordinates(Vertex.Coordinates(v))
|
12989
|
+
v_new = Topology.SetDictionary(v_new, d)
|
12990
|
+
vertices_a_new.append(v_new)
|
12991
|
+
vertices_a = vertices_a_new
|
12992
|
+
vertices_b = Graph.Vertices(graphB)
|
12993
|
+
vertices_b_new = []
|
12994
|
+
for v in vertices_b:
|
12995
|
+
d = Topology.Dictionary(v)
|
12996
|
+
v_new = Vertex.ByCoordinates(Vertex.Coordinates(v))
|
12997
|
+
v_new = Topology.SetDictionary(v_new, d)
|
12998
|
+
vertices_b_new.append(v_new)
|
12999
|
+
vertices_b = vertices_b_new
|
13000
|
+
mesh_data_a = Graph.MeshData(graphA)
|
13001
|
+
mesh_data_b = Graph.MeshData(graphB)
|
13002
|
+
edges_a = mesh_data_a['edges']
|
13003
|
+
edges_b = mesh_data_b['edges']
|
13004
|
+
edges_a_dicts = mesh_data_a['edgeDictionaries']
|
13005
|
+
edges_b_dicts = mesh_data_b['edgeDictionaries']
|
13006
|
+
|
13007
|
+
union_vertices = []
|
13008
|
+
|
13009
|
+
def _add_vertex(v):
|
13010
|
+
for i, uv in enumerate(union_vertices):
|
13011
|
+
if Graph._vertex_is_same(v, uv, key=vertexKey):
|
13012
|
+
d_a = Topology.Dictionary(v)
|
13013
|
+
d_b = Topology.Dictionary(uv)
|
13014
|
+
d_c = Dictionary.ByMergedDictionaries(d_a, d_b)
|
13015
|
+
uv = Topology.SetDictionary(uv, d_c)
|
13016
|
+
return i
|
13017
|
+
union_vertices.append(v)
|
13018
|
+
return len(union_vertices) - 1
|
13019
|
+
|
13020
|
+
# Map original vertices to indices in union list
|
13021
|
+
index_map_a = [_add_vertex(v) for v in vertices_a]
|
13022
|
+
index_map_b = [_add_vertex(v) for v in vertices_b]
|
13023
|
+
|
13024
|
+
union_edges = []
|
13025
|
+
|
13026
|
+
def _add_edge(i, j, dictionary):
|
13027
|
+
vi = union_vertices[i]
|
13028
|
+
vj = union_vertices[j]
|
13029
|
+
for k, e in enumerate(union_edges):
|
13030
|
+
svi = Edge.StartVertex(e)
|
13031
|
+
evi = Edge.EndVertex(e)
|
13032
|
+
if (Graph._vertex_is_same(svi, vi, key=vertexKey) and Graph._vertex_is_same(evi, vj, key=vertexKey)) or \
|
13033
|
+
(Graph._vertex_is_same(svi, vj, key=vertexKey) and Graph._vertex_is_same(evi, vi, key=vertexKey)):
|
13034
|
+
# Merge dictionaries
|
13035
|
+
d_a = Topology.Dictionary(e)
|
13036
|
+
d_c = Dictionary.ByMergedDictionaries([d_a, dictionary], silent=True)
|
13037
|
+
new_edge = Edge.ByVertices(vi, vj)
|
13038
|
+
new_edge = Topology.SetDictionary(new_edge, d_c, silent=True)
|
13039
|
+
union_edges[k] = new_edge
|
13040
|
+
return
|
13041
|
+
# If not found, add new edge
|
13042
|
+
edge = Edge.ByVertices(vi, vj)
|
13043
|
+
edge = Topology.SetDictionary(edge, dictionary)
|
13044
|
+
union_edges.append(edge)
|
13045
|
+
|
13046
|
+
# Add edges from A
|
13047
|
+
for idx, e in enumerate(edges_a):
|
13048
|
+
i = index_map_a[e[0]]
|
13049
|
+
j = index_map_a[e[1]]
|
13050
|
+
_add_edge(i, j, Dictionary.ByPythonDictionary(edges_a_dicts[idx]))
|
13051
|
+
|
13052
|
+
# Add edges from B, merging duplicates
|
13053
|
+
for idx, e in enumerate(edges_b):
|
13054
|
+
i = index_map_b[e[0]]
|
13055
|
+
j = index_map_b[e[1]]
|
13056
|
+
_add_edge(i, j, Dictionary.ByPythonDictionary(edges_b_dicts[idx]))
|
13057
|
+
|
13058
|
+
return Graph.ByVerticesEdges(union_vertices, union_edges)
|
13059
|
+
|
13060
|
+
@staticmethod
|
13061
|
+
def Intersect(graphA, graphB, vertexKey: str, silent: bool = False):
|
13062
|
+
"""
|
13063
|
+
Intersect the two input graphs based on an input vertex key. See https://en.wikipedia.org/wiki/Boolean_operation.
|
13064
|
+
|
13065
|
+
Parameters
|
13066
|
+
----------
|
13067
|
+
graphA : topologic_core.Graph
|
13068
|
+
The first input graph.
|
13069
|
+
graphB : topologic_core.Graph
|
13070
|
+
The second input graph.
|
13071
|
+
vertexKey : str
|
13072
|
+
The vertex dictionary key to use to determine if two vertices are the same.
|
13073
|
+
silent : bool , optional
|
13074
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
13075
|
+
|
13076
|
+
Returns
|
13077
|
+
-------
|
13078
|
+
topologic_core.Graph
|
13079
|
+
the resultant graph. Vertex and edge dictionaries are merged.
|
13080
|
+
|
13081
|
+
"""
|
13082
|
+
from topologicpy.Vertex import Vertex
|
13083
|
+
from topologicpy.Edge import Edge
|
13084
|
+
from topologicpy.Topology import Topology
|
13085
|
+
from topologicpy.Dictionary import Dictionary
|
13086
|
+
|
13087
|
+
if not Topology.IsInstance(graphA, "graph"):
|
13088
|
+
if not silent:
|
13089
|
+
print("Graph.Intersect - Error: The graphA input parameter is not a valid graph. Returning None.")
|
13090
|
+
return None
|
13091
|
+
if not Topology.IsInstance(graphB, "graph"):
|
13092
|
+
if not silent:
|
13093
|
+
print("Graph.Intersect - Error: The graphB input parameter is not a valid graph. Returning None.")
|
13094
|
+
return None
|
13095
|
+
if not isinstance(vertexKey, str):
|
13096
|
+
if not silent:
|
13097
|
+
print("Graph.Intersect - Error: The vertexKey input parameter is not a valid string. Returning None.")
|
13098
|
+
return None
|
13099
|
+
|
13100
|
+
vertices_a = Graph.Vertices(graphA)
|
13101
|
+
vertices_a_new = []
|
13102
|
+
for v in vertices_a:
|
13103
|
+
d = Topology.Dictionary(v)
|
13104
|
+
v_new = Vertex.ByCoordinates(Vertex.Coordinates(v))
|
13105
|
+
v_new = Topology.SetDictionary(v_new, d)
|
13106
|
+
vertices_a_new.append(v_new)
|
13107
|
+
vertices_a = vertices_a_new
|
13108
|
+
vertices_b = Graph.Vertices(graphB)
|
13109
|
+
vertices_b_new = []
|
13110
|
+
for v in vertices_b:
|
13111
|
+
d = Topology.Dictionary(v)
|
13112
|
+
v_new = Vertex.ByCoordinates(Vertex.Coordinates(v))
|
13113
|
+
v_new = Topology.SetDictionary(v_new, d)
|
13114
|
+
vertices_b_new.append(v_new)
|
13115
|
+
vertices_b = vertices_b_new
|
13116
|
+
mesh_data_a = Graph.MeshData(graphA)
|
13117
|
+
mesh_data_b = Graph.MeshData(graphB)
|
13118
|
+
edges_a = mesh_data_a['edges']
|
13119
|
+
edges_b = mesh_data_b['edges']
|
13120
|
+
edges_a_dicts = mesh_data_a['edgeDictionaries']
|
13121
|
+
edges_b_dicts = mesh_data_b['edgeDictionaries']
|
13122
|
+
|
13123
|
+
common_vertices = []
|
13124
|
+
for i, v in enumerate(vertices_a):
|
13125
|
+
j = Graph._vertex_in_list(v, vertices_b, key=vertexKey)
|
13126
|
+
if j:
|
13127
|
+
d_a = Topology.Dictionary(v)
|
13128
|
+
d_b = Topology.Dictionary(vertices_b[j-1])
|
13129
|
+
d_c = Dictionary.ByMergedDictionaries([d_a, d_b], silent=True)
|
13130
|
+
v = Topology.SetDictionary(v, d_c, silent=True)
|
13131
|
+
common_vertices.append(v)
|
13132
|
+
common_edges = []
|
13133
|
+
|
13134
|
+
for i, e in enumerate(edges_a):
|
13135
|
+
j = Graph._edge_in_list(e, edges_b, vertices_a, vertices_b, key=vertexKey)
|
13136
|
+
if j:
|
13137
|
+
# Merge the dictionaries
|
13138
|
+
d_a = Dictionary.ByPythonDictionary(edges_a_dicts[i])
|
13139
|
+
d_b = Dictionary.ByPythonDictionary(edges_b_dicts[j-1]) # We added 1 to j to avoid 0 which can be interpreted as False.
|
13140
|
+
d_c = Dictionary.ByMergedDictionaries([d_a, d_b], silent=True)
|
13141
|
+
print("Intersect - d_c:", d_c)
|
13142
|
+
print(Dictionary.Keys(d_c), Dictionary.Values(d_c))
|
13143
|
+
# Create the edge
|
13144
|
+
final_edge = Edge.ByVertices(vertices_a[e[0]], vertices_a[e[1]])
|
13145
|
+
# Set the edge's dictionary
|
13146
|
+
final_edge = Topology.SetDictionary(final_edge, d_c, silent=True)
|
13147
|
+
# Add the final edge to the list
|
13148
|
+
common_edges.append(final_edge)
|
13149
|
+
|
13150
|
+
return Graph.ByVerticesEdges(common_vertices, common_edges)
|
13151
|
+
|
13152
|
+
@staticmethod
|
13153
|
+
def Difference(graphA, graphB, vertexKey: str, silent: bool = False):
|
13154
|
+
"""
|
13155
|
+
Intersect the two input graphs based on an input vertex key. See https://en.wikipedia.org/wiki/Boolean_operation.
|
13156
|
+
|
13157
|
+
Parameters
|
13158
|
+
----------
|
13159
|
+
graphA : topologic_core.Graph
|
13160
|
+
The first input graph.
|
13161
|
+
graphB : topologic_core.Graph
|
13162
|
+
The second input graph.
|
13163
|
+
vertexKey : str
|
13164
|
+
The vertex dictionary key to use to determine if two vertices are the same.
|
13165
|
+
silent : bool , optional
|
13166
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
13167
|
+
|
13168
|
+
Returns
|
13169
|
+
-------
|
13170
|
+
topologic_core.Graph
|
13171
|
+
the resultant graph. Vertex and edge dictionaries are not merged.
|
13172
|
+
|
13173
|
+
"""
|
13174
|
+
from topologicpy.Vertex import Vertex
|
13175
|
+
from topologicpy.Edge import Edge
|
13176
|
+
from topologicpy.Topology import Topology
|
13177
|
+
from topologicpy.Dictionary import Dictionary
|
13178
|
+
|
13179
|
+
if not Topology.IsInstance(graphA, "graph"):
|
13180
|
+
if not silent:
|
13181
|
+
print("Graph.Difference - Error: The graphA input parameter is not a valid graph. Returning None.")
|
13182
|
+
return None
|
13183
|
+
if not Topology.IsInstance(graphB, "graph"):
|
13184
|
+
if not silent:
|
13185
|
+
print("Graph.Difference - Error: The graphB input parameter is not a valid graph. Returning None.")
|
13186
|
+
return None
|
13187
|
+
if not isinstance(vertexKey, str):
|
13188
|
+
if not silent:
|
13189
|
+
print("Graph.Difference - Error: The vertexKey input parameter is not a valid string. Returning None.")
|
13190
|
+
return None
|
13191
|
+
vertices_a = Graph.Vertices(graphA)
|
13192
|
+
vertices_b = Graph.Vertices(graphB)
|
13193
|
+
mesh_data_a = Graph.MeshData(graphA)
|
13194
|
+
mesh_data_b = Graph.MeshData(graphB)
|
13195
|
+
edges_a = mesh_data_a['edges']
|
13196
|
+
edges_b = mesh_data_b['edges']
|
13197
|
+
edges_a_dicts = mesh_data_a['edgeDictionaries']
|
13198
|
+
|
13199
|
+
diff_vertices = [v for v in vertices_a if not Graph._vertex_in_list(v, vertices_b, key=vertexKey)]
|
13200
|
+
diff_edges = []
|
13201
|
+
|
13202
|
+
for i, e in enumerate(edges_a):
|
13203
|
+
if not Graph._edge_in_list(e, edges_b, vertices_a, vertices_b, key=vertexKey):
|
13204
|
+
# Create the edge
|
13205
|
+
if Graph._vertex_in_list(vertices_a[e[0]], diff_vertices, key=vertexKey) and Graph._vertex_in_list(vertices_a[e[1]], diff_vertices, key=vertexKey):
|
13206
|
+
final_edge = Edge.ByVertices(vertices_a[e[0]], vertices_a[e[1]])
|
13207
|
+
# Set the edge's dictionary
|
13208
|
+
final_edge = Topology.SetDictionary(final_edge, Dictionary.ByPythonDictionary(edges_a_dicts[i]), silent=True)
|
13209
|
+
# Add the final edge to the list
|
13210
|
+
diff_edges.append(final_edge)
|
13211
|
+
|
13212
|
+
return Graph.ByVerticesEdges(diff_vertices, diff_edges)
|
13213
|
+
|
13214
|
+
@staticmethod
|
13215
|
+
def SymmetricDifference(graphA, graphB, vertexKey: str, silent: bool = False):
|
13216
|
+
"""
|
13217
|
+
Find the symmetric difference pf the two input graphs based on an input vertex key. See https://en.wikipedia.org/wiki/Boolean_operation.
|
13218
|
+
|
13219
|
+
Parameters
|
13220
|
+
----------
|
13221
|
+
graphA : topologic_core.Graph
|
13222
|
+
The first input graph.
|
13223
|
+
graphB : topologic_core.Graph
|
13224
|
+
The second input graph.
|
13225
|
+
vertexKey : str
|
13226
|
+
The vertex dictionary key to use to determine if two vertices are the same.
|
13227
|
+
silent : bool , optional
|
13228
|
+
If set to True, error and warning messages are suppressed. The default is False.
|
13229
|
+
|
13230
|
+
Returns
|
13231
|
+
-------
|
13232
|
+
topologic_core.Graph
|
13233
|
+
the resultant graph. Vertex and edge dictionaries are not merged.
|
13234
|
+
|
13235
|
+
"""
|
13236
|
+
|
13237
|
+
from topologicpy.Topology import Topology
|
13238
|
+
|
13239
|
+
if not Topology.IsInstance(graphA, "graph"):
|
13240
|
+
if not silent:
|
13241
|
+
print("Graph.SymmetricDifference - Error: The graphA input parameter is not a valid graph. Returning None.")
|
13242
|
+
return None
|
13243
|
+
if not Topology.IsInstance(graphB, "graph"):
|
13244
|
+
if not silent:
|
13245
|
+
print("Graph.SymmetricDifference - Error: The graphB input parameter is not a valid graph. Returning None.")
|
13246
|
+
return None
|
13247
|
+
if not isinstance(vertexKey, str):
|
13248
|
+
if not silent:
|
13249
|
+
print("Graph.SymmetricDifference - Error: The vertexKey input parameter is not a valid string. Returning None.")
|
13250
|
+
return None
|
13251
|
+
diffAB = Graph.Difference(graphA, graphB, vertexKey=vertexKey, silent=True)
|
13252
|
+
diffBA = Graph.Difference(graphB, graphA, vertexKey=vertexKey, silent=True)
|
13253
|
+
return Graph.Union(diffAB, diffBA, vertexKey=vertexKey, silent=True)
|
topologicpy/Plotly.py
CHANGED
@@ -551,7 +551,7 @@ class Plotly:
|
|
551
551
|
if not labelKey == None:
|
552
552
|
labels[m] = Dictionary.ValueAtKey(d, key=labelKey, defaultValue=" ")
|
553
553
|
if not sizeKey == None:
|
554
|
-
sizes[m] = float(Dictionary.ValueAtKey(d, key=sizeKey))
|
554
|
+
sizes[m] = float(Dictionary.ValueAtKey(d, key=sizeKey, defaultValue=sizes[m]))
|
555
555
|
if sizes[m] == None:
|
556
556
|
sizes[m] = size
|
557
557
|
if float(sizes[m]) <= 0:
|
topologicpy/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = '0.8.
|
1
|
+
__version__ = '0.8.39'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: topologicpy
|
3
|
-
Version: 0.8.
|
3
|
+
Version: 0.8.39
|
4
4
|
Summary: An AI-Powered Spatial Modelling and Analysis Software Library for Architecture, Engineering, and Construction.
|
5
5
|
Author-email: Wassim Jabi <wassim.jabi@gmail.com>
|
6
6
|
License: AGPL v3 License
|
@@ -8,17 +8,17 @@ topologicpy/Cluster.py,sha256=wvfMAx6aPrSAt5nQ4--KnqD4EK9MGjch6Dg985WF7JQ,58748
|
|
8
8
|
topologicpy/Color.py,sha256=ZVVQRKGjebY9aOU1gpN_AbssdRRiVKlZV3f8TrsTNgg,20307
|
9
9
|
topologicpy/Context.py,sha256=G3CwMvN8Jw2rnQRwB-n4MaQq_wLS0vPimbXKwsdMJ80,3055
|
10
10
|
topologicpy/DGL.py,sha256=HQXy9iDnrvWGDxaBfe5pRbweQ2zLBvAf6UdjfhKkQYI,139041
|
11
|
-
topologicpy/Dictionary.py,sha256=
|
11
|
+
topologicpy/Dictionary.py,sha256=2Sxm8twR1W4ksZho0YXQB_EltK2qbZWK4UHskP3jvFQ,40846
|
12
12
|
topologicpy/Edge.py,sha256=CPdQKaE7ft6zgh0vxekkfGRRUY_yEqkEJ14NvjSgJOA,73190
|
13
13
|
topologicpy/EnergyModel.py,sha256=Pyb28gDDwhzlQIH0xqAygqS0P3SJxWyyV7OWS_AAfRs,53856
|
14
14
|
topologicpy/Face.py,sha256=BT_5ymb7-s-Wb1tuaBtkopJpeNg-RbooTUk_-KInQ6c,201618
|
15
|
-
topologicpy/Graph.py,sha256=
|
15
|
+
topologicpy/Graph.py,sha256=YLigYjWAAhMMtUurYngjK9NUMLkDM08BmYWYjxYwMcs,620455
|
16
16
|
topologicpy/Grid.py,sha256=EbI2NcYhQDpD5mItd7A1Lpr8Puuf87vZPWuoh7_gChQ,18483
|
17
17
|
topologicpy/Helper.py,sha256=qEsE4yaboEGW94q9lFCff0I_JwwTTQnDAFXw006yHaQ,31203
|
18
18
|
topologicpy/Honeybee.py,sha256=yctkwfdupKnp7bAOjP1Z4YaYpRrWoMEb4gz9Z5zaWwE,21751
|
19
19
|
topologicpy/Matrix.py,sha256=LqVckk2qTwKwEo79eyNsOrHVSHdO82JCREcfy6WIk4I,22716
|
20
20
|
topologicpy/Neo4j.py,sha256=ELKmON7R16j1kQD8xRHDGGCvzjIM2HGHNekdaXDUw6w,22371
|
21
|
-
topologicpy/Plotly.py,sha256=
|
21
|
+
topologicpy/Plotly.py,sha256=Dmy9i9puSfvB42mrBUip3v0TCXIzHpAETWDUCDxfqNA,120556
|
22
22
|
topologicpy/Polyskel.py,sha256=oVfM4lqSMPTjnkHfsRU9VI8Blt6Vf0LVPkD9ebz7Wmw,27082
|
23
23
|
topologicpy/PyG.py,sha256=zvV6jtnol_aFiN6JRoMpYwBVfOU2aFs9gdWSdEo6mtU,109757
|
24
24
|
topologicpy/ShapeGrammar.py,sha256=UVb8VPwVKd6V3zDTNzpBecQPgYo1EjSsS10XJ8k5YcI,23364
|
@@ -30,9 +30,9 @@ topologicpy/Vector.py,sha256=X12eqskn28bdB7sLY1EZhq3noPYzPbNEgHPb4a959ss,42302
|
|
30
30
|
topologicpy/Vertex.py,sha256=epBfbD7fm87T-TZ0WuwrioXdYqg9NgRlHn_qUFtVbkc,84562
|
31
31
|
topologicpy/Wire.py,sha256=vE6IoObVucOZVTFMPiHuNN4DDezRHHyFbwhF5WRBm3s,231547
|
32
32
|
topologicpy/__init__.py,sha256=RMftibjgAnHB1vdL-muo71RwMS4972JCxHuRHOlU428,928
|
33
|
-
topologicpy/version.py,sha256=
|
34
|
-
topologicpy-0.8.
|
35
|
-
topologicpy-0.8.
|
36
|
-
topologicpy-0.8.
|
37
|
-
topologicpy-0.8.
|
38
|
-
topologicpy-0.8.
|
33
|
+
topologicpy/version.py,sha256=krvNarxqLr-1e4M5aYKlWbcRZoZxDYVlZehTgEbpBTg,23
|
34
|
+
topologicpy-0.8.39.dist-info/licenses/LICENSE,sha256=FK0vJ73LuE8PYJAn7LutsReWR47-Ooovw2dnRe5yV6Q,681
|
35
|
+
topologicpy-0.8.39.dist-info/METADATA,sha256=l1XGyTl1wZZ-G4PgjDEzyZ_kitEAFGAGhcgW8wV1Jos,10535
|
36
|
+
topologicpy-0.8.39.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
37
|
+
topologicpy-0.8.39.dist-info/top_level.txt,sha256=J30bDzW92Ob7hw3zA8V34Jlp-vvsfIkGzkr8sqvb4Uw,12
|
38
|
+
topologicpy-0.8.39.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|