sm-blueprint-lib 0.0.12__py3-none-any.whl → 0.0.13__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.
- sm_blueprint_lib/__init__.py +7 -0
- sm_blueprint_lib/bases/__init__.py +3 -0
- sm_blueprint_lib/bases/controllers/__init__.py +5 -0
- sm_blueprint_lib/bases/controllers/sensorcontroller.py +2 -2
- sm_blueprint_lib/bases/joints/__init__.py +6 -0
- sm_blueprint_lib/bases/joints/pistonjoint.py +2 -1
- sm_blueprint_lib/bases/joints/suspensionjoint.py +2 -1
- sm_blueprint_lib/bases/parts/__init__.py +4 -0
- sm_blueprint_lib/bases/parts/baseboundablepart.py +1 -4
- sm_blueprint_lib/bases/parts/baseinteractablepart.py +3 -0
- sm_blueprint_lib/bases/parts/baselogicpart.py +1 -3
- sm_blueprint_lib/bases/parts/basepart.py +22 -3
- sm_blueprint_lib/blueprint.py +12 -2
- sm_blueprint_lib/body.py +4 -0
- sm_blueprint_lib/constants.py +1064 -17
- sm_blueprint_lib/id.py +3 -0
- sm_blueprint_lib/parts/__init__.py +4 -0
- sm_blueprint_lib/parts/barrierblock.py +3 -1
- sm_blueprint_lib/parts/bearing.py +3 -1
- sm_blueprint_lib/parts/block.py +12 -0
- sm_blueprint_lib/parts/button.py +3 -1
- sm_blueprint_lib/parts/logicgate.py +3 -1
- sm_blueprint_lib/parts/piston.py +31 -1
- sm_blueprint_lib/parts/sensor.py +38 -2
- sm_blueprint_lib/parts/suspension.py +62 -2
- sm_blueprint_lib/parts/switch.py +3 -1
- sm_blueprint_lib/parts/timer.py +3 -1
- sm_blueprint_lib/rot.py +17 -0
- sm_blueprint_lib/utils.py +192 -0
- {sm_blueprint_lib-0.0.12.dist-info → sm_blueprint_lib-0.0.13.dist-info}/METADATA +3 -2
- sm_blueprint_lib-0.0.13.dist-info/RECORD +56 -0
- sm_blueprint_lib-0.0.12.dist-info/RECORD +0 -50
- {sm_blueprint_lib-0.0.12.dist-info → sm_blueprint_lib-0.0.13.dist-info}/WHEEL +0 -0
- {sm_blueprint_lib-0.0.12.dist-info → sm_blueprint_lib-0.0.13.dist-info}/licenses/LICENSE +0 -0
sm_blueprint_lib/id.py
CHANGED
@@ -6,4 +6,6 @@ from ..constants import SHAPEID
|
|
6
6
|
|
7
7
|
@dataclass
|
8
8
|
class BarrierBlock(BaseBoundablePart):
|
9
|
-
|
9
|
+
"""Class that represents a Barrier Block.
|
10
|
+
"""
|
11
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Barrier_Block)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
from dataclasses import dataclass, field
|
2
|
+
|
3
|
+
from ..bases.parts.baseboundablepart import BaseBoundablePart
|
4
|
+
from ..constants import COLOR, SHAPEID
|
5
|
+
from ..pos import Pos
|
6
|
+
|
7
|
+
@dataclass
|
8
|
+
class Block(BaseBoundablePart):
|
9
|
+
"""Class that represents a Barrier Block.
|
10
|
+
"""
|
11
|
+
shapeId: field(kw_only=True, default=SHAPEID.Barrier_Block)
|
12
|
+
color: field(kw_only=True, default=COLOR.Barrier_Block)
|
sm_blueprint_lib/parts/button.py
CHANGED
@@ -7,9 +7,11 @@ from ..constants import SHAPEID
|
|
7
7
|
|
8
8
|
@dataclass
|
9
9
|
class LogicGate(BaseLogicPart):
|
10
|
+
"""Class that represents a Logic Gate part.
|
11
|
+
"""
|
10
12
|
controller: LogicGateController = field(
|
11
13
|
default_factory=LogicGateController)
|
12
|
-
shapeId: str = field(kw_only=True, default=SHAPEID.
|
14
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Logic_Gate)
|
13
15
|
|
14
16
|
def __post_init__(self):
|
15
17
|
super().__post_init__()
|
sm_blueprint_lib/parts/piston.py
CHANGED
@@ -4,6 +4,36 @@ from ..bases.joints.pistonjoint import PistonJoint
|
|
4
4
|
from ..constants import SHAPEID
|
5
5
|
|
6
6
|
|
7
|
+
@dataclass
|
8
|
+
class Piston1(PistonJoint):
|
9
|
+
"""Class that represents a Piston 1 part.
|
10
|
+
"""
|
11
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Piston_1)
|
12
|
+
|
13
|
+
|
14
|
+
@dataclass
|
15
|
+
class Piston2(PistonJoint):
|
16
|
+
"""Class that represents a Piston 2 part.
|
17
|
+
"""
|
18
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Piston_2)
|
19
|
+
|
20
|
+
|
21
|
+
@dataclass
|
22
|
+
class Piston3(PistonJoint):
|
23
|
+
"""Class that represents a Piston 3 part.
|
24
|
+
"""
|
25
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Piston_3)
|
26
|
+
|
27
|
+
|
28
|
+
@dataclass
|
29
|
+
class Piston4(PistonJoint):
|
30
|
+
"""Class that represents a Piston 4 part.
|
31
|
+
"""
|
32
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Piston_4)
|
33
|
+
|
34
|
+
|
7
35
|
@dataclass
|
8
36
|
class Piston5(PistonJoint):
|
9
|
-
|
37
|
+
"""Class that represents a Piston 5 part.
|
38
|
+
"""
|
39
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Piston_5)
|
sm_blueprint_lib/parts/sensor.py
CHANGED
@@ -6,10 +6,11 @@ from ..constants import SHAPEID
|
|
6
6
|
|
7
7
|
|
8
8
|
@dataclass
|
9
|
-
class
|
9
|
+
class BaseSensor(BaseInteractablePart):
|
10
|
+
"""Base class for Sensors.
|
11
|
+
"""
|
10
12
|
controller: SensorController = field(
|
11
13
|
default_factory=SensorController)
|
12
|
-
shapeId: str = field(kw_only=True, default=SHAPEID.SENSOR5)
|
13
14
|
|
14
15
|
def __post_init__(self):
|
15
16
|
super().__post_init__()
|
@@ -22,3 +23,38 @@ class Sensor5(BaseInteractablePart):
|
|
22
23
|
self.controller = SensorController(*self.controller)
|
23
24
|
except TypeError:
|
24
25
|
self.controller = SensorController(self.controller)
|
26
|
+
|
27
|
+
|
28
|
+
@dataclass
|
29
|
+
class Sensor1(BaseSensor):
|
30
|
+
"""Class that represents a Sensor 5 part.
|
31
|
+
"""
|
32
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Sensor_1)
|
33
|
+
|
34
|
+
|
35
|
+
@dataclass
|
36
|
+
class Sensor2(BaseSensor):
|
37
|
+
"""Class that represents a Sensor 5 part.
|
38
|
+
"""
|
39
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Sensor_2)
|
40
|
+
|
41
|
+
|
42
|
+
@dataclass
|
43
|
+
class Sensor3(BaseSensor):
|
44
|
+
"""Class that represents a Sensor 5 part.
|
45
|
+
"""
|
46
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Sensor_3)
|
47
|
+
|
48
|
+
|
49
|
+
@dataclass
|
50
|
+
class Sensor4(BaseSensor):
|
51
|
+
"""Class that represents a Sensor 5 part.
|
52
|
+
"""
|
53
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Sensor_4)
|
54
|
+
|
55
|
+
|
56
|
+
@dataclass
|
57
|
+
class Sensor5(BaseSensor):
|
58
|
+
"""Class that represents a Sensor 5 part.
|
59
|
+
"""
|
60
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Sensor_5)
|
@@ -4,11 +4,71 @@ from ..bases.joints.suspensionjoint import SuspensionJoin
|
|
4
4
|
from ..constants import SHAPEID
|
5
5
|
|
6
6
|
|
7
|
+
@dataclass
|
8
|
+
class SportSuspension1(SuspensionJoin):
|
9
|
+
"""Class that represents a Sport Suspension 1 part.
|
10
|
+
"""
|
11
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Sport_Suspension_1)
|
12
|
+
|
13
|
+
|
14
|
+
@dataclass
|
15
|
+
class SportSuspension2(SuspensionJoin):
|
16
|
+
"""Class that represents a Sport Suspension 2 part.
|
17
|
+
"""
|
18
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Sport_Suspension_2)
|
19
|
+
|
20
|
+
|
21
|
+
@dataclass
|
22
|
+
class SportSuspension3(SuspensionJoin):
|
23
|
+
"""Class that represents a Sport Suspension 3 part.
|
24
|
+
"""
|
25
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Sport_Suspension_3)
|
26
|
+
|
27
|
+
|
28
|
+
@dataclass
|
29
|
+
class SportSuspension4(SuspensionJoin):
|
30
|
+
"""Class that represents a Sport Suspension 4 part.
|
31
|
+
"""
|
32
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Sport_Suspension_4)
|
33
|
+
|
34
|
+
|
7
35
|
@dataclass
|
8
36
|
class SportSuspension5(SuspensionJoin):
|
9
|
-
|
37
|
+
"""Class that represents a Sport Suspension 5 part.
|
38
|
+
"""
|
39
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Sport_Suspension_5)
|
40
|
+
|
41
|
+
|
42
|
+
@dataclass
|
43
|
+
class OffRoadSuspension1(SuspensionJoin):
|
44
|
+
"""Class that represents a Off-Road Suspension 1 part.
|
45
|
+
"""
|
46
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Off_Road_Suspension_1)
|
47
|
+
|
48
|
+
|
49
|
+
@dataclass
|
50
|
+
class OffRoadSuspension2(SuspensionJoin):
|
51
|
+
"""Class that represents a Off-Road Suspension 2 part.
|
52
|
+
"""
|
53
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Off_Road_Suspension_2)
|
54
|
+
|
55
|
+
|
56
|
+
@dataclass
|
57
|
+
class OffRoadSuspension3(SuspensionJoin):
|
58
|
+
"""Class that represents a Off-Road Suspension 3 part.
|
59
|
+
"""
|
60
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Off_Road_Suspension_3)
|
61
|
+
|
62
|
+
|
63
|
+
@dataclass
|
64
|
+
class OffRoadSuspension4(SuspensionJoin):
|
65
|
+
"""Class that represents a Off-Road Suspension 4 part.
|
66
|
+
"""
|
67
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Off_Road_Suspension_4)
|
10
68
|
|
11
69
|
|
12
70
|
@dataclass
|
13
71
|
class OffRoadSuspension5(SuspensionJoin):
|
14
|
-
|
72
|
+
"""Class that represents an Off-Road Suspension 5 part.
|
73
|
+
"""
|
74
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Off_Road_Suspension_5)
|
sm_blueprint_lib/parts/switch.py
CHANGED
sm_blueprint_lib/parts/timer.py
CHANGED
@@ -7,8 +7,10 @@ from ..constants import SHAPEID
|
|
7
7
|
|
8
8
|
@dataclass
|
9
9
|
class Timer(BaseLogicPart):
|
10
|
+
"""Class that represents a Timer logic part.
|
11
|
+
"""
|
10
12
|
controller: TimerController = field(default_factory=TimerController)
|
11
|
-
shapeId: str = field(kw_only=True, default=SHAPEID.
|
13
|
+
shapeId: str = field(kw_only=True, default=SHAPEID.Timer)
|
12
14
|
|
13
15
|
def __post_init__(self):
|
14
16
|
super().__post_init__()
|
sm_blueprint_lib/rot.py
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
from .constants import ROTATION
|
2
|
+
from .pos import Pos
|
3
|
+
from .bases.parts.basepart import BasePart
|
4
|
+
|
5
|
+
|
6
|
+
def rotate(gates: list, center: Pos):
|
7
|
+
"""Rotates a list of gate
|
8
|
+
|
9
|
+
Args:
|
10
|
+
gates (list): list of gates to rotate.
|
11
|
+
center (Pos): Center point to rotate gates.
|
12
|
+
|
13
|
+
"""
|
14
|
+
for gate in gates:
|
15
|
+
temp = gate.pos
|
16
|
+
# todo everything :)
|
17
|
+
pass
|
sm_blueprint_lib/utils.py
CHANGED
@@ -1,7 +1,12 @@
|
|
1
|
+
"""
|
2
|
+
Utility functions for basic uses.
|
3
|
+
"""
|
4
|
+
|
1
5
|
from dataclasses import asdict
|
2
6
|
from json import load, dump, loads, dumps
|
3
7
|
from math import ceil, log2
|
4
8
|
from typing import Sequence
|
9
|
+
import PIL
|
5
10
|
|
6
11
|
from numpy import ndarray
|
7
12
|
|
@@ -135,3 +140,190 @@ def num_to_bit_list(number: int, bit_length: int):
|
|
135
140
|
for b in range(bit_length):
|
136
141
|
output[b] = bool((number >> b) & 1)
|
137
142
|
return output
|
143
|
+
|
144
|
+
|
145
|
+
"""
|
146
|
+
|
147
|
+
def fill_void(object,x,y,z,block, color = "000000" ,offSet = None):
|
148
|
+
def show_fill_block():
|
149
|
+
def logic_gate(image,pos,size, color):
|
150
|
+
for x in range(16):
|
151
|
+
for y in range(16):
|
152
|
+
if x <= 1 or y <= 1 or x >= 14 or y >= 14 :
|
153
|
+
image.putpixel((pos[0]+x, pos[1]+y), color)
|
154
|
+
if 1 < y < 14 and 1 < x < 14 :
|
155
|
+
image.putpixel((pos[0]+x, pos[1]+y), (128,128,128))
|
156
|
+
|
157
|
+
image.putpixel((pos[0]+4, pos[1]+4), (32, 32, 32)) # I dont even know why this is the way it its -steve
|
158
|
+
image.putpixel((pos[0]+4, pos[1]+5), (32, 32, 32))
|
159
|
+
image.putpixel((pos[0]+4, pos[1]+6), (32, 32, 32))
|
160
|
+
image.putpixel((pos[0]+4, pos[1]+7), (32, 32, 32))
|
161
|
+
image.putpixel((pos[0]+4, pos[1]+8), (32, 32, 32))
|
162
|
+
image.putpixel((pos[0]+4, pos[1]+9), (32, 32, 32))
|
163
|
+
image.putpixel((pos[0]+4, pos[1]+10), (32, 32, 32))
|
164
|
+
image.putpixel((pos[0]+4, pos[1]+11), (32, 32, 32))
|
165
|
+
image.putpixel((pos[0]+5, pos[1]+4), (32, 32, 32))
|
166
|
+
image.putpixel((pos[0]+5, pos[1]+5), (32, 32, 32))
|
167
|
+
image.putpixel((pos[0]+5, pos[1]+6), (32, 32, 32))
|
168
|
+
image.putpixel((pos[0]+5, pos[1]+7), (32, 32, 32))
|
169
|
+
image.putpixel((pos[0]+5, pos[1]+8), (32, 32, 32))
|
170
|
+
image.putpixel((pos[0]+5, pos[1]+9), (32, 32, 32))
|
171
|
+
image.putpixel((pos[0]+5, pos[1]+10), (32, 32, 32))
|
172
|
+
image.putpixel((pos[0]+5, pos[1]+11), (32, 32, 32))
|
173
|
+
|
174
|
+
image.putpixel((pos[0]+6, pos[1]+10), (32, 32, 32))
|
175
|
+
image.putpixel((pos[0]+6, pos[1]+11), (32, 32, 32))
|
176
|
+
image.putpixel((pos[0]+7, pos[1]+10), (32, 32, 32))
|
177
|
+
image.putpixel((pos[0]+7, pos[1]+11), (32, 32, 32))
|
178
|
+
image.putpixel((pos[0]+8, pos[1]+10), (32, 32, 32))
|
179
|
+
image.putpixel((pos[0]+8, pos[1]+11), (32, 32, 32))
|
180
|
+
image.putpixel((pos[0]+9, pos[1]+9), (32, 32, 32))
|
181
|
+
image.putpixel((pos[0]+9, pos[1]+10), (32, 32, 32))
|
182
|
+
image.putpixel((pos[0]+9, pos[1]+11), (32, 32, 32))
|
183
|
+
image.putpixel((pos[0]+10, pos[1]+10), (32, 32, 32))
|
184
|
+
|
185
|
+
image.putpixel((pos[0]+6, pos[1]+4), (32, 32, 32))
|
186
|
+
image.putpixel((pos[0]+6, pos[1]+5), (32, 32, 32))
|
187
|
+
image.putpixel((pos[0]+7, pos[1]+4), (32, 32, 32))
|
188
|
+
image.putpixel((pos[0]+7, pos[1]+5), (32, 32, 32))
|
189
|
+
image.putpixel((pos[0]+8, pos[1]+4), (32, 32, 32))
|
190
|
+
image.putpixel((pos[0]+8, pos[1]+5), (32, 32, 32))
|
191
|
+
image.putpixel((pos[0]+9, pos[1]+4), (32, 32, 32))
|
192
|
+
image.putpixel((pos[0]+9, pos[1]+5), (32, 32, 32))
|
193
|
+
image.putpixel((pos[0]+9, pos[1]+6), (32, 32, 32))
|
194
|
+
image.putpixel((pos[0]+10, pos[1]+5), (32, 32, 32))
|
195
|
+
|
196
|
+
image.putpixel((pos[0]+10, pos[1]+6), (32, 32, 32))
|
197
|
+
image.putpixel((pos[0]+10, pos[1]+7), (32, 32, 32))
|
198
|
+
image.putpixel((pos[0]+10, pos[1]+8), (32, 32, 32))
|
199
|
+
image.putpixel((pos[0]+10, pos[1]+9), (32, 32, 32))
|
200
|
+
image.putpixel((pos[0]+11, pos[1]+6), (32, 32, 32))
|
201
|
+
image.putpixel((pos[0]+11, pos[1]+7), (32, 32, 32))
|
202
|
+
image.putpixel((pos[0]+11, pos[1]+8), (32, 32, 32))
|
203
|
+
image.putpixel((pos[0]+11, pos[1]+9), (32, 32, 32))
|
204
|
+
|
205
|
+
def Noblock(image,pos,size):
|
206
|
+
for x in range(size[0]):
|
207
|
+
for y in range(size[1]):
|
208
|
+
if x == y or x+1 == y or x == size[1]-y or x+1 == size[1]-y or x == 0 or y == 0 or x == size[0]-1 or y == size[1]-1 :
|
209
|
+
image.putpixel((pos[0]+x, pos[1]+y), (255,0,0))
|
210
|
+
else:
|
211
|
+
image.putpixel((pos[0] + x, pos[1] + y), (0, 0, 0))
|
212
|
+
|
213
|
+
size = 16
|
214
|
+
new_image = Image.new("RGB", (int(len(filled_blocks)*size), int(len(filled_blocks[0])*size)), color=0)
|
215
|
+
for z in range(len(filled_blocks[0][0])):
|
216
|
+
for x in range(len(filled_blocks)):
|
217
|
+
for y in range(len(filled_blocks[x])):
|
218
|
+
if filled_blocks[x][y][z] is not None:
|
219
|
+
logic_gate(new_image,(x*size,-y*size),(size,size),hex_rgb(filled_blocks[x][y][z]))
|
220
|
+
|
221
|
+
else:
|
222
|
+
Noblock(new_image,(x*size,-y*size),(size,size))
|
223
|
+
new_image.show()
|
224
|
+
|
225
|
+
def fill_block(member):
|
226
|
+
if hasattr(member, "timer_pos"):
|
227
|
+
posx, posy, posz = member.timer_pos
|
228
|
+
posx -= offx
|
229
|
+
posy -= offy
|
230
|
+
posz -= offz
|
231
|
+
filled_blocks[posx][posy][posz] = member
|
232
|
+
|
233
|
+
posx, posy, posz = member.pos
|
234
|
+
posx -= offx
|
235
|
+
posy -= offy
|
236
|
+
posz -= offz
|
237
|
+
filled_blocks[posx][posy][posz] = member
|
238
|
+
|
239
|
+
def fill():
|
240
|
+
isblock = False
|
241
|
+
blocks_members = [attr for attr in dir(blocks) if not callable(getattr(blocks, attr)) and not attr.startswith("__")]
|
242
|
+
for each in blocks_members:
|
243
|
+
if block["uuid"] == blocks.__getattribute__(each)["uuid"]:
|
244
|
+
isblock = True
|
245
|
+
break
|
246
|
+
|
247
|
+
|
248
|
+
for x in range(len(filled_blocks)):
|
249
|
+
for y in range(len(filled_blocks[x])):
|
250
|
+
if filled_blocks[x][y][0] is None:
|
251
|
+
if isblock:
|
252
|
+
object.fill_block(block, (x+offx,y+offy-1,offz), (1,1,1), color)
|
253
|
+
else:
|
254
|
+
object.place_object(block,(x+offx,y+offy-1,offz),"up","up", color)
|
255
|
+
|
256
|
+
filled_blocks = [[[None for _ in range(z)] for _ in range(y)] for _ in range(x)]
|
257
|
+
|
258
|
+
if offSet is not None:
|
259
|
+
offx, offy, offz = offSet
|
260
|
+
elif hasattr(object, "pos"):
|
261
|
+
offx,offy,offz = object.pos
|
262
|
+
else:
|
263
|
+
offx, offy, offz = 0,0,0
|
264
|
+
|
265
|
+
members = [attr for attr in dir(object) if not callable(getattr(object, attr)) and not attr.startswith("__")]
|
266
|
+
|
267
|
+
for each in members:
|
268
|
+
member = object.__getattribute__(each)
|
269
|
+
if type(member) == type([]):
|
270
|
+
for each in member:
|
271
|
+
if hasattr(each, "pos"):
|
272
|
+
fill_block(each)
|
273
|
+
|
274
|
+
elif hasattr(member,"pos"):
|
275
|
+
fill_block(member)
|
276
|
+
|
277
|
+
#show_fill_block()
|
278
|
+
fill()
|
279
|
+
|
280
|
+
def border(blueprint,posx,posy,offx,offy):
|
281
|
+
offx-=1
|
282
|
+
offy-=1
|
283
|
+
posx+=1
|
284
|
+
|
285
|
+
for y in range(posy):
|
286
|
+
blueprint.place_object(objects.Small_Pipe_Tee,(offx,y + offy,0),"up","up","000000")
|
287
|
+
blueprint.place_object(objects.Duct_End,(offx,y + offy,0),"south","right","000000")
|
288
|
+
blueprint.place_object(objects.Duct_End,(offx,y + offy,0),"north","left","000000")
|
289
|
+
blueprint.place_object(objects.Duct_End,(offx,y + offy,0),"south","left","000000")
|
290
|
+
|
291
|
+
blueprint.place_object(objects.Small_Pipe_Tee,(offx+posx,y + offy,0),"up","down","000000")
|
292
|
+
blueprint.place_object(objects.Duct_End,(offx+posx,y + offy,0),"west","down","000000")
|
293
|
+
blueprint.place_object(objects.Duct_End,(offx+posx,y + offy,0),"south","right","000000")
|
294
|
+
blueprint.place_object(objects.Duct_End,(offx+posx,y + offy,0),"south","left","000000")
|
295
|
+
|
296
|
+
for x in range(posx-1):
|
297
|
+
blueprint.place_object(objects.Small_Pipe_Tee,(1+x+offx,offy-1,0),"up","left","000000")
|
298
|
+
blueprint.place_object(objects.Duct_End,(1+x+offx,offy-1,0),"west","down","000000")
|
299
|
+
blueprint.place_object(objects.Duct_End,(1+x+offx,offy-1,0),"east","left","000000")
|
300
|
+
blueprint.place_object(objects.Duct_End,(1+x+offx,offy-1,0),"west","left","000000")
|
301
|
+
|
302
|
+
blueprint.place_object(objects.Small_Pipe_Tee,(1+x+offx,offy+posy,0),"up","right","000000")
|
303
|
+
blueprint.place_object(objects.Duct_End,(1+x+offx,offy+posy,0),"west","up","000000")
|
304
|
+
blueprint.place_object(objects.Duct_End,(1+x+offx,offy+posy,0),"east","left","000000")
|
305
|
+
blueprint.place_object(objects.Duct_End,(1+x+offx,offy+posy,0),"west","left","000000")
|
306
|
+
offy-=1
|
307
|
+
blueprint.place_object(objects.Small_Pipe_Bend, (offx, offy, 0), "west", "left", "000000")
|
308
|
+
blueprint.place_object(objects.Duct_End, (offx, offy, 0), "west", "right", "000000")
|
309
|
+
blueprint.place_object(objects.Duct_End, (offx, offy, 0), "south", "left", "000000")
|
310
|
+
blueprint.place_object(objects.Duct_End, (offx, offy, 0), "west", "down", "000000")
|
311
|
+
blueprint.place_object(objects.Duct_End, (offx, offy, 0), "south", "up", "000000")
|
312
|
+
blueprint.place_object(objects.Small_Pipe_Bend, (offx, posy+offy+1, 0), "west", "right", "000000")
|
313
|
+
blueprint.place_object(objects.Duct_End, (offx, posy+offy+1, 0), "west", "right", "000000")
|
314
|
+
blueprint.place_object(objects.Duct_End, (offx, posy+offy+1, 0), "north", "left", "000000")
|
315
|
+
blueprint.place_object(objects.Duct_End, (offx, posy+offy+1, 0), "west", "up", "000000")
|
316
|
+
blueprint.place_object(objects.Duct_End, (offx, posy+offy+1, 0), "north", "right", "000000")
|
317
|
+
blueprint.place_object(objects.Small_Pipe_Bend, (posx+offx, offy, 0), "east", "left", "000000")
|
318
|
+
blueprint.place_object(objects.Duct_End, (posx+offx, offy, 0), "south", "left", "000000")
|
319
|
+
blueprint.place_object(objects.Duct_End, (posx+offx, offy, 0), "east", "left", "000000")
|
320
|
+
blueprint.place_object(objects.Duct_End, (posx+offx, offy, 0), "south", "down", "000000")
|
321
|
+
blueprint.place_object(objects.Duct_End, (posx+offx, offy, 0), "east", "up", "000000")
|
322
|
+
blueprint.place_object(objects.Small_Pipe_Bend, (posx+offx, posy+offy+1, 0), "east", "right", "000000")
|
323
|
+
blueprint.place_object(objects.Duct_End, (posx+offx, posy+offy+1, 0), "east", "down", "000000")
|
324
|
+
blueprint.place_object(objects.Duct_End, (posx+offx, posy+offy+1, 0), "north", "up", "000000")
|
325
|
+
blueprint.place_object(objects.Duct_End, (posx+offx, posy+offy+1, 0), "east", "left", "000000")
|
326
|
+
blueprint.place_object(objects.Duct_End, (posx+offx, posy+offy+1, 0), "north", "right", "000000")
|
327
|
+
|
328
|
+
"""
|
329
|
+
|
@@ -1,10 +1,11 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: sm_blueprint_lib
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.13
|
4
4
|
Summary: Scrap Mechanic Library for Blueprint manipulation.
|
5
5
|
Project-URL: Homepage, https://github.com/MauriceTZ/sm_blueprint_lib
|
6
6
|
Project-URL: Issues, https://github.com/MauriceTZ/sm_blueprint_lib/issues
|
7
|
-
Author
|
7
|
+
Author: niknal357
|
8
|
+
Author-email: Maurice <mauriciotorrez00@gmail.com>, lnventorsteve <dylanv60431@gmail.com>
|
8
9
|
License-Expression: MIT
|
9
10
|
License-File: LICENSE
|
10
11
|
Classifier: Operating System :: OS Independent
|
@@ -0,0 +1,56 @@
|
|
1
|
+
sm_blueprint_lib/__init__.py,sha256=1i8x-XgrGJ7BzJxMNI-JDm-M0H5x8Bhjhibx8fCVYEc,296
|
2
|
+
sm_blueprint_lib/blueprint.py,sha256=C1RaOZaW5pQkLhN5jkC1KxCDieEN9LtChcqzxOy1gOk,1685
|
3
|
+
sm_blueprint_lib/body.py,sha256=FnLz27peBBlEqQ_n4wdF3GEnaP-_HkgMyceUnN7B7xU,556
|
4
|
+
sm_blueprint_lib/bounds.py,sha256=fH-i8PdlZVg8qlEd3FmIf5mbx4RKhdBOFRAe5cSWWiI,183
|
5
|
+
sm_blueprint_lib/constants.py,sha256=POtImdICEKzcB-mJIus-nYCjRBNKO1tRaDvflMDVO74,70488
|
6
|
+
sm_blueprint_lib/id.py,sha256=Xe06TaVk86J81pEB2UOZzaDmoaNS1Eu-ROsn-lnN-s0,197
|
7
|
+
sm_blueprint_lib/pos.py,sha256=5JhV4jyHZOnolo0Ecj107auLIXXnFqL7uCzPDyikI64,845
|
8
|
+
sm_blueprint_lib/rot.py,sha256=byNNO3o20CSzPXrva5bhgeKC8uBhUo0V_poeBWncfwo,387
|
9
|
+
sm_blueprint_lib/utils.py,sha256=avDho6MouYtrrF93lno_oI4GKEjbIgfAS-R22CAN63Y,14776
|
10
|
+
sm_blueprint_lib/bases/__init__.py,sha256=BxJWbYNYefugj8PLAICZVly0bNw0sOMixzvxFzLTi9c,73
|
11
|
+
sm_blueprint_lib/bases/controllers/__init__.py,sha256=EncVYYlOdfnc_igGsXYsjVoDGwrY1yAqJNkTGmtf9Fc,168
|
12
|
+
sm_blueprint_lib/bases/controllers/basecontroller.py,sha256=VFS5J7kGQ8vfWBFjiTPVfXXjyMwJ1VqA3mYuh7Z_8ak,624
|
13
|
+
sm_blueprint_lib/bases/controllers/baselogiccontroller.py,sha256=lDoDt9NKFu01CqyJE09_bq9oDeYK7T-fERO54kd-sFA,290
|
14
|
+
sm_blueprint_lib/bases/controllers/logicgatecontroller.py,sha256=wzw8kdt65Zg6ucNNy47V3-okYod_ea2NH8erfjRu7uw,223
|
15
|
+
sm_blueprint_lib/bases/controllers/sensorcontroller.py,sha256=QRiNYezoR2SDmVGBoETmM2BUF2jc8pFiiJkz5v9Uow8,713
|
16
|
+
sm_blueprint_lib/bases/controllers/timercontroller.py,sha256=GcGzSicm0oGMP3gsuOA5t6PqEhRAsUVHWaCjhClbfMI,229
|
17
|
+
sm_blueprint_lib/bases/joints/__init__.py,sha256=MPMy8D7B-9tVxpUovzveM-vnm57q3t_rvxMmK3-0R9U,202
|
18
|
+
sm_blueprint_lib/bases/joints/basejoint.py,sha256=C4IkY7yzGkEomVCf-g2mKqioqAAV5jHaSdlKsXdKnmU,628
|
19
|
+
sm_blueprint_lib/bases/joints/basejointcontroller.py,sha256=a3w_VPVp9pZuYdeaY8-fHxGYZdJhR1enCULS2SBxJ9o,133
|
20
|
+
sm_blueprint_lib/bases/joints/pistonjoint.py,sha256=0B6jSoK2Y24glpN9n6xko_5NSi9IQEmKRTeE7cJLl9E,420
|
21
|
+
sm_blueprint_lib/bases/joints/pistonjointcontroller.py,sha256=NqffDkRzcPrqZXDDPjVFls0d1vAj6pFxJhbqxLx83f4,198
|
22
|
+
sm_blueprint_lib/bases/joints/suspensionjoint.py,sha256=_uix5HpJzjqZz2ni8CKRcz5VEKGX4ktY64i7JNY3_Kw,450
|
23
|
+
sm_blueprint_lib/bases/joints/suspensionjointcontroller.py,sha256=0bS6s6rjFivz83AYfFeiBybjULHVrF-7kknoP7SJUR0,194
|
24
|
+
sm_blueprint_lib/bases/parts/__init__.py,sha256=oybBoF6JgRrInA6ac-oxC9Dv2_xKWIv2bsWYS4VYdwo,126
|
25
|
+
sm_blueprint_lib/bases/parts/baseboundablepart.py,sha256=O16iMQgcffjAiU8e1V1Y55gCK_oAP2mH7yGGmdzFvC8,620
|
26
|
+
sm_blueprint_lib/bases/parts/baseinteractablepart.py,sha256=R-4Y1r9pTfQfIkQbjChwoJQm2VXIwWJHep43hfZpr_o,763
|
27
|
+
sm_blueprint_lib/bases/parts/baselogicpart.py,sha256=2MhJJF-vOHHSdJrhmI_soU9oeAuJOfCLI1pezWmwvI0,399
|
28
|
+
sm_blueprint_lib/bases/parts/basepart.py,sha256=72eedTMCodFWRGjb7Ff-LtKYG0Kb4GU891zF8tuAWYs,2067
|
29
|
+
sm_blueprint_lib/parts/__init__.py,sha256=yEAsWyilDdeY2E1PQco2btuUgI-O3sehXZgt6lT-VlA,283
|
30
|
+
sm_blueprint_lib/parts/barrierblock.py,sha256=fCiUam_EABn81gCRZ_w0veHKmWA57bLX85lCYgJqUQE,321
|
31
|
+
sm_blueprint_lib/parts/bearing.py,sha256=sMsuA3SqBQsXJSBLX8xuFW9RQADEZ7TgvgD4CZGFtPI,288
|
32
|
+
sm_blueprint_lib/parts/block.py,sha256=-od_ijKwQQEuqfG3V9U-i_niGMIJJDDSbOdgMNVhJ58,399
|
33
|
+
sm_blueprint_lib/parts/button.py,sha256=XBDTVTkOu0zudDSKPZXq9ANA3uSSo3MLoF6DmqLnte4,317
|
34
|
+
sm_blueprint_lib/parts/logicgate.py,sha256=IBFrFIPH4lSzkU-7e8Nf3Dxn_Yh0BEN-Pf2oKeNIA5Y,1018
|
35
|
+
sm_blueprint_lib/parts/piston.py,sha256=Kuki_7eLMwDCIhOE69ICokRm69l4b3TRmUkoRRiiu3U,964
|
36
|
+
sm_blueprint_lib/parts/sensor.py,sha256=l13FJgJx8jJ0Uzyrra_5hMnpcV2OLbQk5LqzRSAov7Y,1817
|
37
|
+
sm_blueprint_lib/parts/suspension.py,sha256=60vNDV16vYQ8E439OSZ5tvDvdBjB0r8AX0IrRCVzJo0,2167
|
38
|
+
sm_blueprint_lib/parts/switch.py,sha256=hG5US41pXAUpfAxl9ZJnFQgDtEA1moThtR3dS7gFkM8,296
|
39
|
+
sm_blueprint_lib/parts/timer.py,sha256=NtKCsFMc7De5gC_fj9qpeoNcE6wyv-pIOnWcFkBvX-4,865
|
40
|
+
sm_blueprint_lib/prebuilds/__init__.py,sha256=iPrsPMiuoluIDvdLGuQmEJ-I11D5qk563ANKr3md1GM,337
|
41
|
+
sm_blueprint_lib/prebuilds/adder.py,sha256=qO1ulOBkXwZ7egJu1dmvvPDsD_DlIJP59LfwlkYbpTI,1737
|
42
|
+
sm_blueprint_lib/prebuilds/barrel_shifter.py,sha256=i2Yv5E7-saafb3GxGgIMFSDuKSiTdAykBBRP4Zb2hKE,3543
|
43
|
+
sm_blueprint_lib/prebuilds/clock40hz.py,sha256=PrAxTZHX-TiMs8BfgotPoU_0RFVMhi9SiD4cw6HorQ4,831
|
44
|
+
sm_blueprint_lib/prebuilds/comparator.py,sha256=Fp5xOqJVTz-yb7M0cczMoyOPQc1TjiSaROvSuKxrffU,2192
|
45
|
+
sm_blueprint_lib/prebuilds/counter.py,sha256=d2z9_2zeGmpAQR0V74mZnNVLtjg-FI8UGWvQM7oObXE,2535
|
46
|
+
sm_blueprint_lib/prebuilds/decoder.py,sha256=YKQVoWsrm0vF3z6piiI2FWYm-S09_WoNW2-3mJR5oaU,2064
|
47
|
+
sm_blueprint_lib/prebuilds/distance_sensor.py,sha256=8g3lZu391Kh8dpKG4Y8Tm2O6mWdwA_1Gssftxw-vDC4,1724
|
48
|
+
sm_blueprint_lib/prebuilds/ram.py,sha256=9F9sWZ-BP8F3414dD_z6WD4k073_NflH6yYoKVSu6Cc,4199
|
49
|
+
sm_blueprint_lib/prebuilds/register.py,sha256=BMU5ZG92opP4eAklI0qV4B_3CdkpI8mTv3IhCS4fyrU,2642
|
50
|
+
sm_blueprint_lib/prebuilds/rom.py,sha256=ed5WOiwt5n5A_RlLsrc9sfOmlu_tzDp-N4R6jslRZoM,3687
|
51
|
+
sm_blueprint_lib/prebuilds/timer_ram_cached.py,sha256=RSgoWsT1yogplwbOPx6qvA5eEgHpAKKwO7AgJPaUavo,19044
|
52
|
+
sm_blueprint_lib/prebuilds/timer_ram_multiclient.py,sha256=D_yuI09l0Gm5Ye1xKFnQMIrPoV4BzDBkRTVR7zSbWZY,4187
|
53
|
+
sm_blueprint_lib-0.0.13.dist-info/METADATA,sha256=F1cCWTnSv4roJhS982gbGxK7CdDLfyCphHylijX_GyQ,3505
|
54
|
+
sm_blueprint_lib-0.0.13.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
55
|
+
sm_blueprint_lib-0.0.13.dist-info/licenses/LICENSE,sha256=DWhaodryTSEv07KdWbanCMaEujOXYxnj-IEhmgTkOq0,1084
|
56
|
+
sm_blueprint_lib-0.0.13.dist-info/RECORD,,
|
@@ -1,50 +0,0 @@
|
|
1
|
-
sm_blueprint_lib/__init__.py,sha256=tKJFVT4WCnexRUoVCgG59mT5FSK_eb6WjX6fDs3S09c,207
|
2
|
-
sm_blueprint_lib/blueprint.py,sha256=gdupv6pNygwmoOHpZW8J16kZ3N26rdLkAc7Xq48QbvI,1261
|
3
|
-
sm_blueprint_lib/body.py,sha256=sjnS0e1V0bZEhODA6XOxPH2oCt3xrFLQZ47PGhKjD_w,365
|
4
|
-
sm_blueprint_lib/bounds.py,sha256=fH-i8PdlZVg8qlEd3FmIf5mbx4RKhdBOFRAe5cSWWiI,183
|
5
|
-
sm_blueprint_lib/constants.py,sha256=esKPtnHBUjyMvpKhpH-VC8cCvCT_Qm0U409MrzDqYYg,1243
|
6
|
-
sm_blueprint_lib/id.py,sha256=5sBHC8qZJnCaizSBs4KGS1dnZHOSdoq5wkuIpuYNRnw,71
|
7
|
-
sm_blueprint_lib/pos.py,sha256=5JhV4jyHZOnolo0Ecj107auLIXXnFqL7uCzPDyikI64,845
|
8
|
-
sm_blueprint_lib/utils.py,sha256=KCU9CvTYM5TN7c9ks-8scsHXr-zcwcuXDuO7ESHX4E4,4801
|
9
|
-
sm_blueprint_lib/bases/controllers/basecontroller.py,sha256=VFS5J7kGQ8vfWBFjiTPVfXXjyMwJ1VqA3mYuh7Z_8ak,624
|
10
|
-
sm_blueprint_lib/bases/controllers/baselogiccontroller.py,sha256=lDoDt9NKFu01CqyJE09_bq9oDeYK7T-fERO54kd-sFA,290
|
11
|
-
sm_blueprint_lib/bases/controllers/logicgatecontroller.py,sha256=wzw8kdt65Zg6ucNNy47V3-okYod_ea2NH8erfjRu7uw,223
|
12
|
-
sm_blueprint_lib/bases/controllers/sensorcontroller.py,sha256=Do8TJbnm7EhAMqGPprO9lTxAuNQMOFsSo-FslZZWnqk,710
|
13
|
-
sm_blueprint_lib/bases/controllers/timercontroller.py,sha256=GcGzSicm0oGMP3gsuOA5t6PqEhRAsUVHWaCjhClbfMI,229
|
14
|
-
sm_blueprint_lib/bases/joints/basejoint.py,sha256=C4IkY7yzGkEomVCf-g2mKqioqAAV5jHaSdlKsXdKnmU,628
|
15
|
-
sm_blueprint_lib/bases/joints/basejointcontroller.py,sha256=a3w_VPVp9pZuYdeaY8-fHxGYZdJhR1enCULS2SBxJ9o,133
|
16
|
-
sm_blueprint_lib/bases/joints/pistonjoint.py,sha256=2Avstib8kHuFjv2uFI5gkWsn-lWv7Lk4g1jd-pF2sgY,348
|
17
|
-
sm_blueprint_lib/bases/joints/pistonjointcontroller.py,sha256=NqffDkRzcPrqZXDDPjVFls0d1vAj6pFxJhbqxLx83f4,198
|
18
|
-
sm_blueprint_lib/bases/joints/suspensionjoint.py,sha256=w3ChZvaB75y2cnfdV24ib3hcD49RgJHJIcTUIMGN7rw,374
|
19
|
-
sm_blueprint_lib/bases/joints/suspensionjointcontroller.py,sha256=0bS6s6rjFivz83AYfFeiBybjULHVrF-7kknoP7SJUR0,194
|
20
|
-
sm_blueprint_lib/bases/parts/baseboundablepart.py,sha256=jNx_btmkCTksT6FcpHQxEVJXzN1a3DwwHS-2GdTy2CE,744
|
21
|
-
sm_blueprint_lib/bases/parts/baseinteractablepart.py,sha256=VXINrObIr6Y2tFIOI59cB_-625rPwtKZdGDmaa3EgQ8,574
|
22
|
-
sm_blueprint_lib/bases/parts/baselogicpart.py,sha256=al9nLCg8YiLKWd_c_ZQmq9f6sazjF6RNbuGGbYROOps,498
|
23
|
-
sm_blueprint_lib/bases/parts/basepart.py,sha256=R_ZbW6MURsxH-UT-Z9DboGiBCRIWeJuBwWjleKUdBmg,1330
|
24
|
-
sm_blueprint_lib/parts/__init__.py,sha256=KviKNh2cwQz39xX-tqk73t4C1RqS9eVrE3lwpch2MEc,220
|
25
|
-
sm_blueprint_lib/parts/barrierblock.py,sha256=GPI8ArKKvzO6wnHfBfgmU4Ezcrw9SmtKR0p4mWczYiw,267
|
26
|
-
sm_blueprint_lib/parts/bearing.py,sha256=g54yQEOLGqlFIFx_MN2RhMe9QymottLsYjMU9o2A0xc,233
|
27
|
-
sm_blueprint_lib/parts/button.py,sha256=CtAFyjqXndJq3eNWMRyAC-tVALKVaFVQfDbipILtNnw,263
|
28
|
-
sm_blueprint_lib/parts/logicgate.py,sha256=In7-d-lCx1zJIT-7S0Mh7s32lj7xZ6wxObJMnKJKQQ4,960
|
29
|
-
sm_blueprint_lib/parts/piston.py,sha256=spKPDZ5n1qMK0NhDw1QKlfBWjYxjFwZCUQkiHXy1_Qo,239
|
30
|
-
sm_blueprint_lib/parts/sensor.py,sha256=ZJY5xo0NB6wAwgzS7EO-xgsukXYbwV7ptbGOqLfeBKQ,1008
|
31
|
-
sm_blueprint_lib/parts/suspension.py,sha256=GneMZcv4QCVbBOOpp400xffmbaHaWrCbOBvAoahv8cg,404
|
32
|
-
sm_blueprint_lib/parts/switch.py,sha256=VkPfvux1TeLTZawmYEHMLGnXxk-lqgB6qb2hwpICjms,242
|
33
|
-
sm_blueprint_lib/parts/timer.py,sha256=gw9XaWvP2yW3egT72BGowMu-CZFUY-Hke-Dwg0lsxjM,806
|
34
|
-
sm_blueprint_lib/prebuilds/__init__.py,sha256=iPrsPMiuoluIDvdLGuQmEJ-I11D5qk563ANKr3md1GM,337
|
35
|
-
sm_blueprint_lib/prebuilds/adder.py,sha256=qO1ulOBkXwZ7egJu1dmvvPDsD_DlIJP59LfwlkYbpTI,1737
|
36
|
-
sm_blueprint_lib/prebuilds/barrel_shifter.py,sha256=i2Yv5E7-saafb3GxGgIMFSDuKSiTdAykBBRP4Zb2hKE,3543
|
37
|
-
sm_blueprint_lib/prebuilds/clock40hz.py,sha256=PrAxTZHX-TiMs8BfgotPoU_0RFVMhi9SiD4cw6HorQ4,831
|
38
|
-
sm_blueprint_lib/prebuilds/comparator.py,sha256=Fp5xOqJVTz-yb7M0cczMoyOPQc1TjiSaROvSuKxrffU,2192
|
39
|
-
sm_blueprint_lib/prebuilds/counter.py,sha256=d2z9_2zeGmpAQR0V74mZnNVLtjg-FI8UGWvQM7oObXE,2535
|
40
|
-
sm_blueprint_lib/prebuilds/decoder.py,sha256=YKQVoWsrm0vF3z6piiI2FWYm-S09_WoNW2-3mJR5oaU,2064
|
41
|
-
sm_blueprint_lib/prebuilds/distance_sensor.py,sha256=8g3lZu391Kh8dpKG4Y8Tm2O6mWdwA_1Gssftxw-vDC4,1724
|
42
|
-
sm_blueprint_lib/prebuilds/ram.py,sha256=9F9sWZ-BP8F3414dD_z6WD4k073_NflH6yYoKVSu6Cc,4199
|
43
|
-
sm_blueprint_lib/prebuilds/register.py,sha256=BMU5ZG92opP4eAklI0qV4B_3CdkpI8mTv3IhCS4fyrU,2642
|
44
|
-
sm_blueprint_lib/prebuilds/rom.py,sha256=ed5WOiwt5n5A_RlLsrc9sfOmlu_tzDp-N4R6jslRZoM,3687
|
45
|
-
sm_blueprint_lib/prebuilds/timer_ram_cached.py,sha256=RSgoWsT1yogplwbOPx6qvA5eEgHpAKKwO7AgJPaUavo,19044
|
46
|
-
sm_blueprint_lib/prebuilds/timer_ram_multiclient.py,sha256=D_yuI09l0Gm5Ye1xKFnQMIrPoV4BzDBkRTVR7zSbWZY,4187
|
47
|
-
sm_blueprint_lib-0.0.12.dist-info/METADATA,sha256=243a-t-5QP2zURS7L-GloQQP1pRMHA3vUaZWdLlJh0o,3448
|
48
|
-
sm_blueprint_lib-0.0.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
49
|
-
sm_blueprint_lib-0.0.12.dist-info/licenses/LICENSE,sha256=DWhaodryTSEv07KdWbanCMaEujOXYxnj-IEhmgTkOq0,1084
|
50
|
-
sm_blueprint_lib-0.0.12.dist-info/RECORD,,
|
File without changes
|
File without changes
|