topologicpy 0.7.66__py3-none-any.whl → 0.7.67__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/Graph.py +33 -152
- topologicpy/Plotly.py +2 -0
- topologicpy/Topology.py +34 -16
- topologicpy/version.py +1 -1
- {topologicpy-0.7.66.dist-info → topologicpy-0.7.67.dist-info}/METADATA +1 -1
- {topologicpy-0.7.66.dist-info → topologicpy-0.7.67.dist-info}/RECORD +9 -9
- {topologicpy-0.7.66.dist-info → topologicpy-0.7.67.dist-info}/LICENSE +0 -0
- {topologicpy-0.7.66.dist-info → topologicpy-0.7.67.dist-info}/WHEEL +0 -0
- {topologicpy-0.7.66.dist-info → topologicpy-0.7.67.dist-info}/top_level.txt +0 -0
topologicpy/Graph.py
CHANGED
@@ -1631,7 +1631,7 @@ class Graph:
|
|
1631
1631
|
edgeValidateMaskHeader="val_mask", edgeTestMaskHeader="test_mask", edgeFeaturesHeader="feat", edgeFeaturesKeys=[],
|
1632
1632
|
nodeIDHeader="node_id", nodeLabelHeader="label", nodeTrainMaskHeader="train_mask",
|
1633
1633
|
nodeValidateMaskHeader="val_mask", nodeTestMaskHeader="test_mask", nodeFeaturesHeader="feat", nodeXHeader="X", nodeYHeader="Y", nodeZHeader="Z",
|
1634
|
-
nodeFeaturesKeys=[], tolerance=0.0001):
|
1634
|
+
nodeFeaturesKeys=[], tolerance=0.0001, silent=False):
|
1635
1635
|
"""
|
1636
1636
|
Returns graphs according to the input folder path. This method assumes the CSV files follow DGL's schema.
|
1637
1637
|
|
@@ -1681,6 +1681,8 @@ class Graph:
|
|
1681
1681
|
The column header string used to specify the Z coordinate of nodes. The default is "Z".
|
1682
1682
|
tolerance : float , optional
|
1683
1683
|
The desired tolerance. The default is 0.0001.
|
1684
|
+
silent : bool , optional
|
1685
|
+
If set to True, no error and warning messages are printed. Otherwise, they are. The default is False.
|
1684
1686
|
|
1685
1687
|
Returns
|
1686
1688
|
-------
|
@@ -1717,15 +1719,18 @@ class Graph:
|
|
1717
1719
|
return graphs_path, edges_path, nodes_path
|
1718
1720
|
|
1719
1721
|
if not exists(path):
|
1720
|
-
|
1722
|
+
if not silent:
|
1723
|
+
print("Graph.ByCSVPath - Error: the input path parameter does not exists. Returning None.")
|
1721
1724
|
return None
|
1722
1725
|
if not isdir(path):
|
1723
|
-
|
1726
|
+
if not silent:
|
1727
|
+
print("Graph.ByCSVPath - Error: the input path parameter is not a folder. Returning None.")
|
1724
1728
|
return None
|
1725
1729
|
|
1726
1730
|
yaml_files = find_yaml_files(path)
|
1727
1731
|
if len(yaml_files) < 1:
|
1728
|
-
|
1732
|
+
if not silent:
|
1733
|
+
print("Graph.ByCSVPath - Error: the input path parameter does not contain any valid YAML files. Returning None.")
|
1729
1734
|
return None
|
1730
1735
|
yaml_file = yaml_files[0]
|
1731
1736
|
yaml_file_path = os.path.join(path, yaml_file)
|
@@ -1734,7 +1739,8 @@ class Graph:
|
|
1734
1739
|
if not graphs_path == None:
|
1735
1740
|
graphs_path = os.path.join(path, graphs_path)
|
1736
1741
|
if graphs_path == None:
|
1737
|
-
|
1742
|
+
if not silent:
|
1743
|
+
print("Graph.ByCSVPath - Warning: a graphs.csv file does not exist inside the folder specified by the input path parameter. Will assume the dataset includes only one graph.")
|
1738
1744
|
graphs_df = pd.DataFrame()
|
1739
1745
|
graph_ids=[0]
|
1740
1746
|
graph_labels=[0]
|
@@ -1748,7 +1754,8 @@ class Graph:
|
|
1748
1754
|
if not edges_path == None:
|
1749
1755
|
edges_path = os.path.join(path, edges_path)
|
1750
1756
|
if not exists(edges_path):
|
1751
|
-
|
1757
|
+
if not silent:
|
1758
|
+
print("Graph.ByCSVPath - Error: an edges.csv file does not exist inside the folder specified by the input path parameter. Returning None.")
|
1752
1759
|
return None
|
1753
1760
|
edges_path = os.path.join(path, edges_path)
|
1754
1761
|
edges_df = pd.read_csv(edges_path)
|
@@ -1756,7 +1763,8 @@ class Graph:
|
|
1756
1763
|
if not nodes_path == None:
|
1757
1764
|
nodes_path = os.path.join(path, nodes_path)
|
1758
1765
|
if not exists(nodes_path):
|
1759
|
-
|
1766
|
+
if not silent:
|
1767
|
+
print("Graph.ByCSVPath - Error: a nodes.csv file does not exist inside the folder specified by the input path parameter. Returning None.")
|
1760
1768
|
return None
|
1761
1769
|
nodes_df = pd.read_csv(nodes_path)
|
1762
1770
|
# Group nodes and nodes by their 'graph_id'
|
@@ -1830,10 +1838,12 @@ class Graph:
|
|
1830
1838
|
if Topology.IsInstance(d, "Dictionary"):
|
1831
1839
|
v = Topology.SetDictionary(v, d)
|
1832
1840
|
else:
|
1833
|
-
|
1841
|
+
if not silent:
|
1842
|
+
print("Graph.ByCSVPath - Warning: Failed to create and add a dictionary to the created vertex.")
|
1834
1843
|
vertices.append(v)
|
1835
1844
|
else:
|
1836
|
-
|
1845
|
+
if not silent:
|
1846
|
+
print("Graph.ByCSVPath - Warning: Failed to create and add a vertex to the list of vertices.")
|
1837
1847
|
vertices_ds.append(vertices)
|
1838
1848
|
edges_ds = [] # A list to hold the vertices data structures until we can build the actual graphs
|
1839
1849
|
# Access specific columns within the grouped DataFrame
|
@@ -1870,21 +1880,25 @@ class Graph:
|
|
1870
1880
|
try:
|
1871
1881
|
edge = Edge.ByVertices([vertices[src_id], vertices[dst_id]], tolerance=tolerance)
|
1872
1882
|
except:
|
1873
|
-
|
1883
|
+
if not silent:
|
1884
|
+
print("Graph.ByCSVPath - Warning: Failed to create and add a edge to the list of edges.")
|
1874
1885
|
edge = None
|
1875
1886
|
if Topology.IsInstance(edge, "Edge"):
|
1876
1887
|
d = Dictionary.ByKeysValues(edge_keys, values)
|
1877
1888
|
if Topology.IsInstance(d, "Dictionary"):
|
1878
1889
|
edge = Topology.SetDictionary(edge, d)
|
1879
1890
|
else:
|
1880
|
-
|
1891
|
+
if not silent:
|
1892
|
+
print("Graph.ByCSVPath - Warning: Failed to create and add a dictionary to the created edge.")
|
1881
1893
|
edges.append(edge)
|
1882
1894
|
else:
|
1883
|
-
|
1895
|
+
if not silent:
|
1896
|
+
print("Graph.ByCSVPath - Warning: Failed to create and add an edge to the list of edges.")
|
1884
1897
|
else:
|
1885
1898
|
duplicate_edges += 1
|
1886
1899
|
if duplicate_edges > 0:
|
1887
|
-
|
1900
|
+
if not silent:
|
1901
|
+
print("Graph.ByCSVPath - Warning: Found", duplicate_edges, "duplicate edges in graph id:", graph_id)
|
1888
1902
|
edges_ds.append(edges)
|
1889
1903
|
|
1890
1904
|
# Build the graphs
|
@@ -1905,16 +1919,19 @@ class Graph:
|
|
1905
1919
|
l1 = len(graph_keys)
|
1906
1920
|
l2 = len(values)
|
1907
1921
|
if not l1 == l2:
|
1908
|
-
|
1922
|
+
if not silent:
|
1923
|
+
print("Graph.ByCSVPath - Error: The length of the keys and values lists do not match. Returning None.")
|
1909
1924
|
return None
|
1910
1925
|
d = Dictionary.ByKeysValues(graph_keys, values)
|
1911
1926
|
if Topology.IsInstance(d, "Dictionary"):
|
1912
1927
|
g = Graph.SetDictionary(g, d)
|
1913
1928
|
else:
|
1914
|
-
|
1929
|
+
if not silent:
|
1930
|
+
print("Graph.ByCSVPath - Warning: Failed to create and add a dictionary to the created graph.")
|
1915
1931
|
graphs.append(g)
|
1916
1932
|
else:
|
1917
|
-
|
1933
|
+
if not silent:
|
1934
|
+
print("Graph.ByCSVPath - Error: Failed to create and add a graph to the list of graphs.")
|
1918
1935
|
return {"graphs": graphs, "labels": graph_labels, "features": graph_features}
|
1919
1936
|
|
1920
1937
|
@staticmethod
|
@@ -3485,142 +3502,6 @@ class Graph:
|
|
3485
3502
|
return [graph_vertices, graph_edges]
|
3486
3503
|
|
3487
3504
|
|
3488
|
-
|
3489
|
-
|
3490
|
-
|
3491
|
-
|
3492
|
-
# def processEdge(item):
|
3493
|
-
# topology, others, outpostsKey, idKey, direct, directApertures, viaSharedTopologies, viaSharedApertures, toExteriorTopologies, toExteriorApertures, toContents, toOutposts, useInternalVertex, storeBREP, tolerance = item
|
3494
|
-
# vertices = []
|
3495
|
-
# edges = []
|
3496
|
-
|
3497
|
-
# if useInternalVertex == True:
|
3498
|
-
# try:
|
3499
|
-
# vEdge = Edge.VertexByParameter(topology, 0.5)
|
3500
|
-
# except:
|
3501
|
-
# vEdge = topology.CenterOfMass()
|
3502
|
-
# else:
|
3503
|
-
# vEdge = topology.CenterOfMass()
|
3504
|
-
|
3505
|
-
# d1 = vEdge.GetDictionary()
|
3506
|
-
# d1 = Dictionary.SetValueAtKey(d1, vertexCategoryKey, 0) # main topology
|
3507
|
-
# if storeBREP:
|
3508
|
-
# d2 = Dictionary.ByKeysValues(["brep", "brepType", "brepTypeString"], [Topology.BREPString(topology), Topology.Type(topology), Topology.TypeAsString(topology)])
|
3509
|
-
# d3 = mergeDictionaries2([d1, d2])
|
3510
|
-
# _ = vEdge.SetDictionary(d3)
|
3511
|
-
# else:
|
3512
|
-
# _ = vEdge.SetDictionary(topology.GetDictionary())
|
3513
|
-
|
3514
|
-
# vertices.append(vEdge)
|
3515
|
-
|
3516
|
-
# if toOutposts and others:
|
3517
|
-
# d = Topology.Dictionary(topology)
|
3518
|
-
# if not d == None:
|
3519
|
-
# keys = Dictionary.Keys(d)
|
3520
|
-
# else:
|
3521
|
-
# keys = []
|
3522
|
-
# k = None
|
3523
|
-
# for key in keys:
|
3524
|
-
# if key.lower() == outpostsKey.lower():
|
3525
|
-
# k = key
|
3526
|
-
# if k:
|
3527
|
-
# ids = Dictionary.ValueAtKey(d, k)
|
3528
|
-
# outposts = outpostsByID(others, ids, idKey)
|
3529
|
-
# else:
|
3530
|
-
# outposts = []
|
3531
|
-
# for outpost in outposts:
|
3532
|
-
# if useInternalVertex == True:
|
3533
|
-
# vop = Topology.InternalVertex(outpost, tolerance)
|
3534
|
-
# else:
|
3535
|
-
# vop = Topology.CenterOfMass(outpost)
|
3536
|
-
# tempe = Edge.ByStartVertexEndVertex(vEdge, vop, tolerance=tolerance)
|
3537
|
-
# tempd = Dictionary.ByKeysValues(["relationship", edgeCategoryKey],["To_Outposts", 6])
|
3538
|
-
# _ = tempe.SetDictionary(tempd)
|
3539
|
-
# edges.append(tempe)
|
3540
|
-
|
3541
|
-
# if (toExteriorTopologies == True) or (toExteriorApertures == True) or (toContents == True):
|
3542
|
-
# eVertices = []
|
3543
|
-
# _ = topology.Vertices(None, eVertices)
|
3544
|
-
# exteriorTopologies = []
|
3545
|
-
# exteriorApertures = []
|
3546
|
-
# for aVertex in eVertices:
|
3547
|
-
# exteriorTopologies.append(aVertex)
|
3548
|
-
# apertures = Topology.Apertures(aVertex)
|
3549
|
-
# for anAperture in apertures:
|
3550
|
-
# exteriorApertures.append(anAperture)
|
3551
|
-
# if toExteriorTopologies:
|
3552
|
-
# for exteriorTopology in exteriorTopologies:
|
3553
|
-
# if useInternalVertex == True:
|
3554
|
-
# vst = Topology.InternalVertex(exteriorTopology, tolerance)
|
3555
|
-
# else:
|
3556
|
-
# vst = exteriorTopology.CenterOfMass()
|
3557
|
-
# d1 = exteriorTopology.GetDictionary()
|
3558
|
-
# d1 = Dictionary.SetValueAtKey(d1, vertexCategoryKey, 3) # exterior topology
|
3559
|
-
# if storeBREP:
|
3560
|
-
# d2 = Dictionary.ByKeysValues(["brep", "brepType", "brepTypeString"], [Topology.BREPString(exteriorTopology), Topology.Type(exteriorTopology), Topology.TypeAsString(exteriorTopology)])
|
3561
|
-
# d3 = mergeDictionaries2([d1, d2])
|
3562
|
-
# _ = vst.SetDictionary(d3)
|
3563
|
-
# else:
|
3564
|
-
# _ = vst.SetDictionary(d1)
|
3565
|
-
# vertices.append(vst)
|
3566
|
-
# tempe = Edge.ByStartVertexEndVertex(vEdge, vst, tolerance=tolerance)
|
3567
|
-
# tempd = Dictionary.ByKeysValues(["relationship", edgeCategoryKey],["To_Exterior_Topologies", 3])
|
3568
|
-
# _ = tempe.SetDictionary(tempd)
|
3569
|
-
# edges.append(tempe)
|
3570
|
-
# if toContents:
|
3571
|
-
# contents = []
|
3572
|
-
# _ = vst.Contents(contents)
|
3573
|
-
# for content in contents:
|
3574
|
-
# if Topology.IsInstance(content, "Aperture"):
|
3575
|
-
# content = Aperture.Topology(content)
|
3576
|
-
# if useInternalVertex == True:
|
3577
|
-
# vst2 = Topology.InternalVertex(content, tolerance)
|
3578
|
-
# else:
|
3579
|
-
# vst2 = content.CenterOfMass()
|
3580
|
-
# vst2 = Vertex.ByCoordinates(Vertex.X(vst2, mantissa=mantissa)+(tolerance*100), Vertex.Y(vst2, mantissa=mantissa)+(tolerance*100), Vertex.Z(vst2, mantissa=mantissa)+(tolerance*100))
|
3581
|
-
# d1 = content.GetDictionary()
|
3582
|
-
# d1 = Dictionary.SetValueAtKey(d1, vertexCategoryKey, 5) # content
|
3583
|
-
# if storeBREP:
|
3584
|
-
# d2 = Dictionary.ByKeysValues(["brep", "brepType", "brepTypeString"], [Topology.BREPString(content), Topology.Type(content), Topology.TypeAsString(content)])
|
3585
|
-
# d3 = mergeDictionaries2([d1, d2])
|
3586
|
-
# _ = vst2.SetDictionary(d3)
|
3587
|
-
# else:
|
3588
|
-
# _ = vst2.SetDictionary(d1)
|
3589
|
-
# vertices.append(vst2)
|
3590
|
-
# tempe = Edge.ByStartVertexEndVertex(vst, vst2, tolerance=tolerance)
|
3591
|
-
# tempd = Dictionary.ByKeysValues(["relationship", edgeCategoryKey],["To_Contents", 5])
|
3592
|
-
# _ = tempe.SetDictionary(tempd)
|
3593
|
-
# edges.append(tempe)
|
3594
|
-
# if toExteriorApertures:
|
3595
|
-
# for exTop in exteriorApertures:
|
3596
|
-
# if useInternalVertex == True:
|
3597
|
-
# vst = Topology.InternalVertex(exTop, tolerance)
|
3598
|
-
# else:
|
3599
|
-
# vst = exTop.CenterOfMass()
|
3600
|
-
# d1 = exTop.GetDictionary()
|
3601
|
-
# d1 = Dictionary.SetValueAtKey(d1, vertexCategoryKey, 4) # exterior aperture
|
3602
|
-
# vst = Vertex.ByCoordinates(Vertex.X(vst, mantissa=mantissa)+(tolerance*100), Vertex.Y(vst, mantissa=mantissa)+(tolerance*100), Vertex.Z(vst, mantissa=mantissa)+(tolerance*100))
|
3603
|
-
# if storeBREP:
|
3604
|
-
# d2 = Dictionary.ByKeysValues(["brep", "brepType", "brepTypeString"], [Topology.BREPString(exTop), Topology.Type(exTop), Topology.TypeAsString(exTop)])
|
3605
|
-
# d3 = mergeDictionaries2([d1, d2])
|
3606
|
-
# _ = vst.SetDictionary(d3)
|
3607
|
-
# else:
|
3608
|
-
# _ = vst.SetDictionary(d1)
|
3609
|
-
# _ = vst.SetDictionary(exTop.GetDictionary())
|
3610
|
-
# vertices.append(vst)
|
3611
|
-
# tempe = Edge.ByStartVertexEndVertex(vEdge, vst, tolerance=tolerance)
|
3612
|
-
# tempd = Dictionary.ByKeysValues(["relationship", edgeCategoryKey],["To_Exterior_Apertures", 4])
|
3613
|
-
# _ = tempe.SetDictionary(tempd)
|
3614
|
-
# edges.append(tempe)
|
3615
|
-
|
3616
|
-
# return [vertices, edges]
|
3617
|
-
|
3618
|
-
|
3619
|
-
|
3620
|
-
|
3621
|
-
|
3622
|
-
|
3623
|
-
|
3624
3505
|
def processVertex(item):
|
3625
3506
|
topology, others, outpostsKey, idKey, direct, directApertures, viaSharedTopologies, viaSharedApertures, toExteriorTopologies, toExteriorApertures, toContents, toOutposts, useInternalVertex, storeBREP, tolerance = item
|
3626
3507
|
vertices = [topology]
|
topologicpy/Plotly.py
CHANGED
topologicpy/Topology.py
CHANGED
@@ -3033,16 +3033,14 @@ class Topology():
|
|
3033
3033
|
Returns
|
3034
3034
|
-------
|
3035
3035
|
list
|
3036
|
-
The list of imported topologies
|
3036
|
+
The list of imported topologies (Warning: the list could contain 0, 1, or many topologies, but this method will always return a list)
|
3037
3037
|
|
3038
3038
|
"""
|
3039
3039
|
if not file:
|
3040
3040
|
print("Topology.ByJSONFile - Error: the input file parameter is not a valid file. Returning None.")
|
3041
3041
|
return None
|
3042
|
-
|
3043
|
-
|
3044
|
-
#jsonString = json.dumps(jsonData)
|
3045
|
-
return Topology.ByJSONString(json_string, tolerance=tolerance)
|
3042
|
+
json_dict = json.load(file)
|
3043
|
+
return Topology.ByJSONDictionary(json_dict, tolerance=tolerance)
|
3046
3044
|
|
3047
3045
|
@staticmethod
|
3048
3046
|
def ByJSONPath(path, tolerance=0.0001):
|
@@ -3067,26 +3065,26 @@ class Topology():
|
|
3067
3065
|
print("Topology.ByJSONPath - Error: the input path parameter is not a valid path. Returning None.")
|
3068
3066
|
return None
|
3069
3067
|
with open(path) as file:
|
3070
|
-
|
3071
|
-
entities = Topology.
|
3068
|
+
json_dict = json.load(file)
|
3069
|
+
entities = Topology.ByJSONDictionary(json_dict, tolerance=tolerance)
|
3072
3070
|
return entities
|
3073
3071
|
|
3074
3072
|
@staticmethod
|
3075
|
-
def
|
3073
|
+
def ByJSONDictionary(jsonDictionary, tolerance=0.0001):
|
3076
3074
|
"""
|
3077
|
-
Imports the topology from a JSON
|
3075
|
+
Imports the topology from a JSON dictionary.
|
3078
3076
|
|
3079
3077
|
Parameters
|
3080
3078
|
----------
|
3081
|
-
|
3082
|
-
The input JSON
|
3079
|
+
jsonDictionary : dict
|
3080
|
+
The input JSON dictionary.
|
3083
3081
|
tolerance : float , optional
|
3084
3082
|
The desired tolerance. The default is 0.0001.
|
3085
3083
|
|
3086
3084
|
Returns
|
3087
3085
|
-------
|
3088
|
-
list
|
3089
|
-
The list of imported topologies
|
3086
|
+
list
|
3087
|
+
The list of imported topologies (Warning: the list could contain 0, 1, or many topologies, but this method will always return a list)
|
3090
3088
|
|
3091
3089
|
"""
|
3092
3090
|
from topologicpy.Vertex import Vertex
|
@@ -3110,9 +3108,7 @@ class Topology():
|
|
3110
3108
|
vertex_apertures = []
|
3111
3109
|
edge_apertures = []
|
3112
3110
|
face_apertures = []
|
3113
|
-
|
3114
|
-
json_dictionary = json.loads(string)
|
3115
|
-
for entity in json_dictionary:
|
3111
|
+
for entity in jsonDictionary:
|
3116
3112
|
entity_type = entity['type']
|
3117
3113
|
entity_dict = Dictionary.ByKeysValues(keys=list(entity['dictionary'].keys()),
|
3118
3114
|
values=list(entity['dictionary'].values()))
|
@@ -3280,6 +3276,28 @@ class Topology():
|
|
3280
3276
|
entity = Topology.AddApertures(entity, vertex_apertures, subTopologyType="Vertex", tolerance=0.001)
|
3281
3277
|
top_level_list.append(entity)
|
3282
3278
|
return top_level_list
|
3279
|
+
|
3280
|
+
@staticmethod
|
3281
|
+
def ByJSONString(string, tolerance=0.0001):
|
3282
|
+
"""
|
3283
|
+
Imports the topology from a JSON string.
|
3284
|
+
|
3285
|
+
Parameters
|
3286
|
+
----------
|
3287
|
+
string : str
|
3288
|
+
The input JSON string.
|
3289
|
+
tolerance : float , optional
|
3290
|
+
The desired tolerance. The default is 0.0001.
|
3291
|
+
|
3292
|
+
Returns
|
3293
|
+
-------
|
3294
|
+
list
|
3295
|
+
The list of imported topologies (Warning: the list could contain 0, 1, or many topologies, but this method will always return a list)
|
3296
|
+
|
3297
|
+
"""
|
3298
|
+
|
3299
|
+
json_dict = json.loads(string)
|
3300
|
+
return Topology.ByJSONDictionary(json_dict, tolerance=tolerance)
|
3283
3301
|
|
3284
3302
|
@staticmethod
|
3285
3303
|
def ByOBJFile(objFile, mtlFile = None,
|
topologicpy/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = '0.7.
|
1
|
+
__version__ = '0.7.67'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: topologicpy
|
3
|
-
Version: 0.7.
|
3
|
+
Version: 0.7.67
|
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
|
@@ -11,26 +11,26 @@ topologicpy/Dictionary.py,sha256=cURg452wwk2WeSxWY46ncgAUo5XD1c2c5EtO6ESZHaY,273
|
|
11
11
|
topologicpy/Edge.py,sha256=FACD8Bm2nL2uTHIeRMVXfRF0cYeqhZ-lCZPHAfjAIPg,66927
|
12
12
|
topologicpy/EnergyModel.py,sha256=NM3_nAdY9_YDtbp9CaEZ0x0xVsetTqVDzm_VSjmq_mI,53746
|
13
13
|
topologicpy/Face.py,sha256=lCjahpvNpaI-yNm_VN1-4HxjPEkpPIbRnyyj7H6DsPc,124354
|
14
|
-
topologicpy/Graph.py,sha256=
|
14
|
+
topologicpy/Graph.py,sha256=IZrWxXnA--e0fmMjkdyj7Xxj945zT4gVMK-Nyieas8o,382597
|
15
15
|
topologicpy/Grid.py,sha256=3-sn7CHWGcXk18XCnHjsUttNJTWwmN63g_Insj__p04,18218
|
16
16
|
topologicpy/Helper.py,sha256=i-AfI29NMsZXBaymjilfvxQbuS3wpYbpPw4RWu1YCHs,16358
|
17
17
|
topologicpy/Honeybee.py,sha256=Oc8mfGBNSjs6wxkPzCKmEw1ZPQPbp9XtiYWaAF62oSk,21893
|
18
18
|
topologicpy/Matrix.py,sha256=umgR7An919-wGInXJ1wpqnoQ2jCPdyMe2rcWTZ16upk,8079
|
19
19
|
topologicpy/Neo4j.py,sha256=t52hgE9cVsqkGc7m7fjRsLnyfRHakVHwdvF4ms7ow78,22342
|
20
|
-
topologicpy/Plotly.py,sha256=
|
20
|
+
topologicpy/Plotly.py,sha256=P6wQ2W9Urm5Rrx5_Bh8hwiFDSFQYzN_hJDUj-y3BO0c,108441
|
21
21
|
topologicpy/Polyskel.py,sha256=EFsuh2EwQJGPLiFUjvtXmAwdX-A4r_DxP5hF7Qd3PaU,19829
|
22
22
|
topologicpy/PyG.py,sha256=LU9LCCzjxGPUM31qbaJXZsTvniTtgugxJY7y612t4A4,109757
|
23
23
|
topologicpy/Shell.py,sha256=iX9jLbpylRqt24jtzEH6kSWvA5JvbhAY_w880PxJXP8,87625
|
24
24
|
topologicpy/Speckle.py,sha256=rUS6PCaxIjEF5_fUruxvMH47FMKg-ohcoU0qAUb-yNM,14267
|
25
25
|
topologicpy/Sun.py,sha256=42tDWMYpwRG7Z2Qjtp94eRgBuqySq7k8TgNUZDK7QxQ,36837
|
26
|
-
topologicpy/Topology.py,sha256=
|
26
|
+
topologicpy/Topology.py,sha256=7HUdFQZ2V-xRHLXzRXaN7pEZHWAv6yv7Zn7ou642mYY,398747
|
27
27
|
topologicpy/Vector.py,sha256=A1g83zDHep58iVPY8WQ8iHNrSOfGWFEzvVeDuMnjDNY,33078
|
28
28
|
topologicpy/Vertex.py,sha256=bLY60YWoMsgCgHk7F7k9F93Sq2FJ6AzUcTfJ83NZfHA,71107
|
29
29
|
topologicpy/Wire.py,sha256=BIWv-NIDd31F1EMdX20rHGr_QPhut7SNyqkZmHpv93Q,172480
|
30
30
|
topologicpy/__init__.py,sha256=vlPCanUbxe5NifC4pHcnhSzkmmYcs_UrZrTlVMsxcFs,928
|
31
|
-
topologicpy/version.py,sha256=
|
32
|
-
topologicpy-0.7.
|
33
|
-
topologicpy-0.7.
|
34
|
-
topologicpy-0.7.
|
35
|
-
topologicpy-0.7.
|
36
|
-
topologicpy-0.7.
|
31
|
+
topologicpy/version.py,sha256=lLx7SH29wIbpawsGm3Hr19wrLnvr39XEY2lKATjP0-M,23
|
32
|
+
topologicpy-0.7.67.dist-info/LICENSE,sha256=FK0vJ73LuE8PYJAn7LutsReWR47-Ooovw2dnRe5yV6Q,681
|
33
|
+
topologicpy-0.7.67.dist-info/METADATA,sha256=UWDuYpsLxboxLOcBpAoqXCaFS0vR2cHrgBnD_ywyCys,10493
|
34
|
+
topologicpy-0.7.67.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
|
35
|
+
topologicpy-0.7.67.dist-info/top_level.txt,sha256=J30bDzW92Ob7hw3zA8V34Jlp-vvsfIkGzkr8sqvb4Uw,12
|
36
|
+
topologicpy-0.7.67.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|