spaceforge 1.2.0__py3-none-any.whl → 1.3.0__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.
- spaceforge/_version_scm.py +2 -2
- spaceforge/cls.py +2 -0
- spaceforge/schema.json +16 -0
- spaceforge/test_generator.py +6 -12
- spaceforge/test_generator_core.py +2 -4
- spaceforge/test_runner.py +22 -44
- spaceforge/test_runner_cli.py +2 -4
- spaceforge/test_runner_core.py +2 -4
- spaceforge/test_runner_execution.py +6 -12
- {spaceforge-1.2.0.dist-info → spaceforge-1.3.0.dist-info}/METADATA +3 -4
- {spaceforge-1.2.0.dist-info → spaceforge-1.3.0.dist-info}/RECORD +15 -15
- {spaceforge-1.2.0.dist-info → spaceforge-1.3.0.dist-info}/WHEEL +1 -1
- {spaceforge-1.2.0.dist-info → spaceforge-1.3.0.dist-info}/entry_points.txt +0 -0
- {spaceforge-1.2.0.dist-info → spaceforge-1.3.0.dist-info}/licenses/LICENSE +0 -0
- {spaceforge-1.2.0.dist-info → spaceforge-1.3.0.dist-info}/top_level.txt +0 -0
spaceforge/_version_scm.py
CHANGED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '1.
|
|
32
|
-
__version_tuple__ = version_tuple = (1,
|
|
31
|
+
__version__ = version = '1.3.0'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 3, 0)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
spaceforge/cls.py
CHANGED
|
@@ -180,6 +180,7 @@ class Webhook:
|
|
|
180
180
|
|
|
181
181
|
|
|
182
182
|
PolicyTypes = Literal["PUSH", "PLAN", "TRIGGER", "APPROVAL", "NOTIFICATION"]
|
|
183
|
+
EngineTypes = Literal["REGO_V0", "REGO_V1"]
|
|
183
184
|
|
|
184
185
|
|
|
185
186
|
@pydantic_dataclass
|
|
@@ -197,6 +198,7 @@ class Policy:
|
|
|
197
198
|
name_prefix: str
|
|
198
199
|
type: PolicyTypes
|
|
199
200
|
body: str
|
|
201
|
+
engine_type: Optional[EngineTypes] = "REGO_V1"
|
|
200
202
|
labels: Optional[List[str]] = optional_field
|
|
201
203
|
|
|
202
204
|
|
spaceforge/schema.json
CHANGED
|
@@ -208,6 +208,22 @@
|
|
|
208
208
|
"title": "Body",
|
|
209
209
|
"type": "string"
|
|
210
210
|
},
|
|
211
|
+
"engine_type": {
|
|
212
|
+
"anyOf": [
|
|
213
|
+
{
|
|
214
|
+
"enum": [
|
|
215
|
+
"REGO_V0",
|
|
216
|
+
"REGO_V1"
|
|
217
|
+
],
|
|
218
|
+
"type": "string"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"type": "null"
|
|
222
|
+
}
|
|
223
|
+
],
|
|
224
|
+
"default": "REGO_V1",
|
|
225
|
+
"title": "Engine Type"
|
|
226
|
+
},
|
|
211
227
|
"labels": {
|
|
212
228
|
"anyOf": [
|
|
213
229
|
{
|
spaceforge/test_generator.py
CHANGED
|
@@ -98,8 +98,7 @@ class TestPluginGenerator:
|
|
|
98
98
|
|
|
99
99
|
# Create a test plugin file
|
|
100
100
|
with open(self.test_plugin_path, "w") as f:
|
|
101
|
-
f.write(
|
|
102
|
-
"""
|
|
101
|
+
f.write("""
|
|
103
102
|
from spaceforge import SpaceforgePlugin, Parameter
|
|
104
103
|
|
|
105
104
|
class TestPlugin(SpaceforgePlugin):
|
|
@@ -113,8 +112,7 @@ class TestPlugin(SpaceforgePlugin):
|
|
|
113
112
|
|
|
114
113
|
def after_plan(self) -> None:
|
|
115
114
|
pass
|
|
116
|
-
"""
|
|
117
|
-
)
|
|
115
|
+
""")
|
|
118
116
|
|
|
119
117
|
def teardown_method(self) -> None:
|
|
120
118
|
"""Cleanup test fixtures."""
|
|
@@ -161,12 +159,10 @@ class TestPlugin(SpaceforgePlugin):
|
|
|
161
159
|
"""Test loading plugin with no SpaceforgePlugin subclass."""
|
|
162
160
|
no_plugin_path = os.path.join(self.temp_dir, "no_plugin.py")
|
|
163
161
|
with open(no_plugin_path, "w") as f:
|
|
164
|
-
f.write(
|
|
165
|
-
"""
|
|
162
|
+
f.write("""
|
|
166
163
|
class NotAPlugin:
|
|
167
164
|
pass
|
|
168
|
-
"""
|
|
169
|
-
)
|
|
165
|
+
""")
|
|
170
166
|
|
|
171
167
|
generator = PluginGenerator(no_plugin_path)
|
|
172
168
|
|
|
@@ -606,8 +602,7 @@ class NotAPlugin:
|
|
|
606
602
|
# Create a complete test plugin file
|
|
607
603
|
full_plugin_path = os.path.join(self.temp_dir, "full_plugin.py")
|
|
608
604
|
with open(full_plugin_path, "w") as f:
|
|
609
|
-
f.write(
|
|
610
|
-
'''
|
|
605
|
+
f.write('''
|
|
611
606
|
from spaceforge import SpaceforgePlugin, Parameter
|
|
612
607
|
|
|
613
608
|
class FullTestPlugin(SpaceforgePlugin):
|
|
@@ -630,8 +625,7 @@ class FullTestPlugin(SpaceforgePlugin):
|
|
|
630
625
|
def after_plan(self):
|
|
631
626
|
"""Override after_plan hook."""
|
|
632
627
|
pass
|
|
633
|
-
'''
|
|
634
|
-
)
|
|
628
|
+
''')
|
|
635
629
|
|
|
636
630
|
generator = PluginGenerator(full_plugin_path, self.test_output_path)
|
|
637
631
|
|
|
@@ -68,12 +68,10 @@ class TestPluginGeneratorLoading:
|
|
|
68
68
|
# Arrange
|
|
69
69
|
no_plugin_path = os.path.join(temp_dir, "no_plugin.py")
|
|
70
70
|
with open(no_plugin_path, "w") as f:
|
|
71
|
-
f.write(
|
|
72
|
-
"""
|
|
71
|
+
f.write("""
|
|
73
72
|
class NotAPlugin:
|
|
74
73
|
pass
|
|
75
|
-
"""
|
|
76
|
-
)
|
|
74
|
+
""")
|
|
77
75
|
|
|
78
76
|
generator = PluginGenerator(no_plugin_path)
|
|
79
77
|
|
spaceforge/test_runner.py
CHANGED
|
@@ -48,8 +48,7 @@ class TestPluginRunner:
|
|
|
48
48
|
|
|
49
49
|
# Create a test plugin file
|
|
50
50
|
with open(self.test_plugin_path, "w") as f:
|
|
51
|
-
f.write(
|
|
52
|
-
"""
|
|
51
|
+
f.write("""
|
|
53
52
|
from spaceforge import SpaceforgePlugin
|
|
54
53
|
|
|
55
54
|
class TestRunnerPlugin(SpaceforgePlugin):
|
|
@@ -67,8 +66,7 @@ class TestRunnerPlugin(SpaceforgePlugin):
|
|
|
67
66
|
|
|
68
67
|
def error_hook(self) -> None:
|
|
69
68
|
raise ValueError("Test error from hook")
|
|
70
|
-
"""
|
|
71
|
-
)
|
|
69
|
+
""")
|
|
72
70
|
|
|
73
71
|
def teardown_method(self) -> None:
|
|
74
72
|
"""Cleanup test fixtures."""
|
|
@@ -112,12 +110,10 @@ class TestRunnerPlugin(SpaceforgePlugin):
|
|
|
112
110
|
"""Test loading plugin with no SpaceforgePlugin subclass."""
|
|
113
111
|
no_plugin_path = os.path.join(self.temp_dir, "no_plugin.py")
|
|
114
112
|
with open(no_plugin_path, "w") as f:
|
|
115
|
-
f.write(
|
|
116
|
-
"""
|
|
113
|
+
f.write("""
|
|
117
114
|
class NotAPlugin:
|
|
118
115
|
pass
|
|
119
|
-
"""
|
|
120
|
-
)
|
|
116
|
+
""")
|
|
121
117
|
|
|
122
118
|
runner = PluginRunner(no_plugin_path)
|
|
123
119
|
|
|
@@ -234,8 +230,7 @@ class NotAPlugin:
|
|
|
234
230
|
# Create a complete test plugin file
|
|
235
231
|
full_plugin_path = os.path.join(self.temp_dir, "full_plugin.py")
|
|
236
232
|
with open(full_plugin_path, "w") as f:
|
|
237
|
-
f.write(
|
|
238
|
-
'''
|
|
233
|
+
f.write('''
|
|
239
234
|
from spaceforge import SpaceforgePlugin
|
|
240
235
|
|
|
241
236
|
class FullTestPlugin(SpaceforgePlugin):
|
|
@@ -251,8 +246,7 @@ class FullTestPlugin(SpaceforgePlugin):
|
|
|
251
246
|
"""Integration test hook."""
|
|
252
247
|
self.integration_test_passed = True
|
|
253
248
|
return "success"
|
|
254
|
-
'''
|
|
255
|
-
)
|
|
249
|
+
''')
|
|
256
250
|
|
|
257
251
|
runner = PluginRunner(full_plugin_path)
|
|
258
252
|
|
|
@@ -276,15 +270,13 @@ class TestRunnerCommand:
|
|
|
276
270
|
|
|
277
271
|
# Create a test plugin file
|
|
278
272
|
with open(self.test_plugin_path, "w") as f:
|
|
279
|
-
f.write(
|
|
280
|
-
"""
|
|
273
|
+
f.write("""
|
|
281
274
|
from spaceforge import SpaceforgePlugin
|
|
282
275
|
|
|
283
276
|
class ClickTestPlugin(SpaceforgePlugin):
|
|
284
277
|
def after_plan(self) -> None:
|
|
285
278
|
print("Hook executed via click")
|
|
286
|
-
"""
|
|
287
|
-
)
|
|
279
|
+
""")
|
|
288
280
|
|
|
289
281
|
def teardown_method(self) -> None:
|
|
290
282
|
"""Cleanup test fixtures."""
|
|
@@ -345,15 +337,13 @@ class TestMainFunction:
|
|
|
345
337
|
|
|
346
338
|
# Create a test plugin file
|
|
347
339
|
with open(self.test_plugin_path, "w") as f:
|
|
348
|
-
f.write(
|
|
349
|
-
"""
|
|
340
|
+
f.write("""
|
|
350
341
|
from spaceforge import SpaceforgePlugin
|
|
351
342
|
|
|
352
343
|
class MainTestPlugin(SpaceforgePlugin):
|
|
353
344
|
def after_plan(self) -> None:
|
|
354
345
|
pass
|
|
355
|
-
"""
|
|
356
|
-
)
|
|
346
|
+
""")
|
|
357
347
|
|
|
358
348
|
def teardown_method(self) -> None:
|
|
359
349
|
"""Cleanup test fixtures."""
|
|
@@ -379,8 +369,7 @@ class TestRunnerEdgeCases:
|
|
|
379
369
|
"""Test plugin file with multiple SpaceforgePlugin subclasses."""
|
|
380
370
|
multi_plugin_path = os.path.join(self.temp_dir, "multi_plugin.py")
|
|
381
371
|
with open(multi_plugin_path, "w") as f:
|
|
382
|
-
f.write(
|
|
383
|
-
"""
|
|
372
|
+
f.write("""
|
|
384
373
|
from spaceforge import SpaceforgePlugin
|
|
385
374
|
|
|
386
375
|
class FirstPlugin(SpaceforgePlugin):
|
|
@@ -390,8 +379,7 @@ class FirstPlugin(SpaceforgePlugin):
|
|
|
390
379
|
class SecondPlugin(SpaceforgePlugin):
|
|
391
380
|
def before_apply(self) -> None:
|
|
392
381
|
pass
|
|
393
|
-
"""
|
|
394
|
-
)
|
|
382
|
+
""")
|
|
395
383
|
|
|
396
384
|
runner = PluginRunner(multi_plugin_path)
|
|
397
385
|
runner.load_plugin()
|
|
@@ -407,8 +395,7 @@ class SecondPlugin(SpaceforgePlugin):
|
|
|
407
395
|
"""Test plugin with complex inheritance hierarchy."""
|
|
408
396
|
hierarchy_plugin_path = os.path.join(self.temp_dir, "hierarchy_plugin.py")
|
|
409
397
|
with open(hierarchy_plugin_path, "w") as f:
|
|
410
|
-
f.write(
|
|
411
|
-
"""
|
|
398
|
+
f.write("""
|
|
412
399
|
from spaceforge import SpaceforgePlugin
|
|
413
400
|
|
|
414
401
|
class BaseCustomPlugin(SpaceforgePlugin):
|
|
@@ -418,8 +405,7 @@ class BaseCustomPlugin(SpaceforgePlugin):
|
|
|
418
405
|
class DerivedPlugin(BaseCustomPlugin):
|
|
419
406
|
def after_plan(self) -> None:
|
|
420
407
|
self.base_method()
|
|
421
|
-
"""
|
|
422
|
-
)
|
|
408
|
+
""")
|
|
423
409
|
|
|
424
410
|
runner = PluginRunner(hierarchy_plugin_path)
|
|
425
411
|
runner.load_plugin()
|
|
@@ -441,15 +427,13 @@ class DerivedPlugin(BaseCustomPlugin):
|
|
|
441
427
|
"""Test hook execution that returns a value."""
|
|
442
428
|
return_plugin_path = os.path.join(self.temp_dir, "return_plugin.py")
|
|
443
429
|
with open(return_plugin_path, "w") as f:
|
|
444
|
-
f.write(
|
|
445
|
-
"""
|
|
430
|
+
f.write("""
|
|
446
431
|
from spaceforge import SpaceforgePlugin
|
|
447
432
|
|
|
448
433
|
class ReturnPlugin(SpaceforgePlugin):
|
|
449
434
|
def after_plan(self) -> dict[str, str]:
|
|
450
435
|
return {"status": "success", "data": "test"}
|
|
451
|
-
"""
|
|
452
|
-
)
|
|
436
|
+
""")
|
|
453
437
|
|
|
454
438
|
runner = PluginRunner(return_plugin_path)
|
|
455
439
|
runner.load_plugin()
|
|
@@ -462,15 +446,13 @@ class ReturnPlugin(SpaceforgePlugin):
|
|
|
462
446
|
"""Test hook that expects arguments (should fail gracefully)."""
|
|
463
447
|
args_plugin_path = os.path.join(self.temp_dir, "args_plugin.py")
|
|
464
448
|
with open(args_plugin_path, "w") as f:
|
|
465
|
-
f.write(
|
|
466
|
-
"""
|
|
449
|
+
f.write("""
|
|
467
450
|
from spaceforge import SpaceforgePlugin
|
|
468
451
|
|
|
469
452
|
class ArgsPlugin(SpaceforgePlugin):
|
|
470
453
|
def after_plan(self, required_arg) -> None:
|
|
471
454
|
pass
|
|
472
|
-
"""
|
|
473
|
-
)
|
|
455
|
+
""")
|
|
474
456
|
|
|
475
457
|
runner = PluginRunner(args_plugin_path)
|
|
476
458
|
runner.load_plugin()
|
|
@@ -489,16 +471,14 @@ class ArgsPlugin(SpaceforgePlugin):
|
|
|
489
471
|
"""Test plugin loading when plugin imports fail."""
|
|
490
472
|
import_error_path = os.path.join(self.temp_dir, "import_error_plugin.py")
|
|
491
473
|
with open(import_error_path, "w") as f:
|
|
492
|
-
f.write(
|
|
493
|
-
"""
|
|
474
|
+
f.write("""
|
|
494
475
|
from nonexistent_module import SomeClass
|
|
495
476
|
from spaceforge import SpaceforgePlugin
|
|
496
477
|
|
|
497
478
|
class ImportErrorPlugin(SpaceforgePlugin):
|
|
498
479
|
def after_plan(self) -> None:
|
|
499
480
|
pass
|
|
500
|
-
"""
|
|
501
|
-
)
|
|
481
|
+
""")
|
|
502
482
|
|
|
503
483
|
runner = PluginRunner(import_error_path)
|
|
504
484
|
|
|
@@ -509,8 +489,7 @@ class ImportErrorPlugin(SpaceforgePlugin):
|
|
|
509
489
|
"""Test that running hooks preserves plugin instance state."""
|
|
510
490
|
state_plugin_path = os.path.join(self.temp_dir, "state_plugin.py")
|
|
511
491
|
with open(state_plugin_path, "w") as f:
|
|
512
|
-
f.write(
|
|
513
|
-
"""
|
|
492
|
+
f.write("""
|
|
514
493
|
from spaceforge import SpaceforgePlugin
|
|
515
494
|
|
|
516
495
|
class StatePlugin(SpaceforgePlugin):
|
|
@@ -523,8 +502,7 @@ class StatePlugin(SpaceforgePlugin):
|
|
|
523
502
|
|
|
524
503
|
def get_counter_hook(self) -> int:
|
|
525
504
|
return self.counter
|
|
526
|
-
"""
|
|
527
|
-
)
|
|
505
|
+
""")
|
|
528
506
|
|
|
529
507
|
runner = PluginRunner(state_plugin_path)
|
|
530
508
|
runner.load_plugin()
|
spaceforge/test_runner_cli.py
CHANGED
|
@@ -14,15 +14,13 @@ class TestRunnerClickCommand:
|
|
|
14
14
|
# Arrange
|
|
15
15
|
click_plugin_path = os.path.join(temp_dir, "click_plugin.py")
|
|
16
16
|
with open(click_plugin_path, "w") as f:
|
|
17
|
-
f.write(
|
|
18
|
-
"""
|
|
17
|
+
f.write("""
|
|
19
18
|
from spaceforge import SpaceforgePlugin
|
|
20
19
|
|
|
21
20
|
class ClickTestPlugin(SpaceforgePlugin):
|
|
22
21
|
def after_plan(self):
|
|
23
22
|
print("Hook executed via click")
|
|
24
|
-
"""
|
|
25
|
-
)
|
|
23
|
+
""")
|
|
26
24
|
|
|
27
25
|
# Act
|
|
28
26
|
from click.testing import CliRunner
|
spaceforge/test_runner_core.py
CHANGED
|
@@ -83,12 +83,10 @@ class TestPluginRunnerLoading:
|
|
|
83
83
|
# Arrange
|
|
84
84
|
no_plugin_path = os.path.join(temp_dir, "no_plugin.py")
|
|
85
85
|
with open(no_plugin_path, "w") as f:
|
|
86
|
-
f.write(
|
|
87
|
-
"""
|
|
86
|
+
f.write("""
|
|
88
87
|
class NotAPlugin:
|
|
89
88
|
pass
|
|
90
|
-
"""
|
|
91
|
-
)
|
|
89
|
+
""")
|
|
92
90
|
|
|
93
91
|
runner = PluginRunner(no_plugin_path)
|
|
94
92
|
|
|
@@ -35,8 +35,7 @@ class TestPluginRunnerExecution:
|
|
|
35
35
|
# Arrange
|
|
36
36
|
runner_plugin_path = os.path.join(temp_dir, "runner_plugin.py")
|
|
37
37
|
with open(runner_plugin_path, "w") as f:
|
|
38
|
-
f.write(
|
|
39
|
-
"""
|
|
38
|
+
f.write("""
|
|
40
39
|
from spaceforge import SpaceforgePlugin
|
|
41
40
|
|
|
42
41
|
class TestRunnerPlugin(SpaceforgePlugin):
|
|
@@ -46,8 +45,7 @@ class TestRunnerPlugin(SpaceforgePlugin):
|
|
|
46
45
|
|
|
47
46
|
def after_plan(self):
|
|
48
47
|
self.executed_hooks.append('after_plan')
|
|
49
|
-
"""
|
|
50
|
-
)
|
|
48
|
+
""")
|
|
51
49
|
|
|
52
50
|
runner = PluginRunner(runner_plugin_path)
|
|
53
51
|
runner.load_plugin()
|
|
@@ -106,15 +104,13 @@ class TestRunnerPlugin(SpaceforgePlugin):
|
|
|
106
104
|
# Arrange
|
|
107
105
|
error_plugin_path = os.path.join(temp_dir, "error_plugin.py")
|
|
108
106
|
with open(error_plugin_path, "w") as f:
|
|
109
|
-
f.write(
|
|
110
|
-
"""
|
|
107
|
+
f.write("""
|
|
111
108
|
from spaceforge import SpaceforgePlugin
|
|
112
109
|
|
|
113
110
|
class ErrorPlugin(SpaceforgePlugin):
|
|
114
111
|
def error_hook(self):
|
|
115
112
|
raise ValueError("Test error from hook")
|
|
116
|
-
"""
|
|
117
|
-
)
|
|
113
|
+
""")
|
|
118
114
|
|
|
119
115
|
runner = PluginRunner(error_plugin_path)
|
|
120
116
|
runner.load_plugin()
|
|
@@ -135,8 +131,7 @@ class ErrorPlugin(SpaceforgePlugin):
|
|
|
135
131
|
# Arrange
|
|
136
132
|
multi_hook_path = os.path.join(temp_dir, "multi_hook.py")
|
|
137
133
|
with open(multi_hook_path, "w") as f:
|
|
138
|
-
f.write(
|
|
139
|
-
"""
|
|
134
|
+
f.write("""
|
|
140
135
|
from spaceforge import SpaceforgePlugin
|
|
141
136
|
|
|
142
137
|
class MultiHookPlugin(SpaceforgePlugin):
|
|
@@ -149,8 +144,7 @@ class MultiHookPlugin(SpaceforgePlugin):
|
|
|
149
144
|
|
|
150
145
|
def before_apply(self):
|
|
151
146
|
self.executed_hooks.append('before_apply')
|
|
152
|
-
"""
|
|
153
|
-
)
|
|
147
|
+
""")
|
|
154
148
|
|
|
155
149
|
runner = PluginRunner(multi_hook_path)
|
|
156
150
|
runner.load_plugin()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: spaceforge
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: A Python framework for building Spacelift plugins
|
|
5
5
|
Author-email: Spacelift <support@spacelift.io>
|
|
6
6
|
Maintainer-email: Spacelift <support@spacelift.io>
|
|
@@ -14,13 +14,12 @@ Classifier: Development Status :: 3 - Alpha
|
|
|
14
14
|
Classifier: Intended Audience :: Developers
|
|
15
15
|
Classifier: Operating System :: OS Independent
|
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.10
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.11
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
21
20
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
22
21
|
Classifier: Topic :: System :: Systems Administration
|
|
23
|
-
Requires-Python: >=3.
|
|
22
|
+
Requires-Python: >=3.10
|
|
24
23
|
Description-Content-Type: text/markdown
|
|
25
24
|
License-File: LICENSE
|
|
26
25
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -31,7 +30,7 @@ Requires-Dist: mergedeep>=1.3.4
|
|
|
31
30
|
Provides-Extra: dev
|
|
32
31
|
Requires-Dist: pytest>=6.0; extra == "dev"
|
|
33
32
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
34
|
-
Requires-Dist: black; extra == "dev"
|
|
33
|
+
Requires-Dist: black>=26.1.0; extra == "dev"
|
|
35
34
|
Requires-Dist: isort; extra == "dev"
|
|
36
35
|
Requires-Dist: mypy; extra == "dev"
|
|
37
36
|
Requires-Dist: pylint; extra == "dev"
|
|
@@ -2,32 +2,32 @@ spaceforge/README.md,sha256=gDyCQN0EW4xp8Skvs6J0qHpO9CjVTnRfSnhduAIFQs4,7717
|
|
|
2
2
|
spaceforge/__init__.py,sha256=TU-vvm15dK1ucixNW0V42eTT72x3_hmKSyxP4MC1Occ,589
|
|
3
3
|
spaceforge/__main__.py,sha256=UKbeCuEFgoNlEOX44-kYUAQuUdySdkAKsvbjXEyLeWI,965
|
|
4
4
|
spaceforge/_version.py,sha256=70eCBV_uVCm0U7qrtYRUZM3GJnJRtvZQ_aPFLd8H7CI,1009
|
|
5
|
-
spaceforge/_version_scm.py,sha256
|
|
6
|
-
spaceforge/cls.py,sha256=
|
|
5
|
+
spaceforge/_version_scm.py,sha256=0Oc4EBzGTJOvXX0Vym4evglW1NQPpe8RLn8TdxsKzfs,704
|
|
6
|
+
spaceforge/cls.py,sha256=JujaMYmB8n3LVeZITgAsKbRhnLJQHio9Dc-JHryVFog,7739
|
|
7
7
|
spaceforge/conftest.py,sha256=J2BIqOu0VYpUlxnJf07cW6l2NHSzVvkXw18jKTTR3hE,2168
|
|
8
8
|
spaceforge/generator.py,sha256=qOC9YeP9QmwFZQoe0BbvJb8RHtv3BVupYxvu2ceQMkE,18768
|
|
9
9
|
spaceforge/plugin.py,sha256=Ytm2B7nnJNH231V4gUFY1pBmwVNTpIg3YviUL_Bnf24,14963
|
|
10
10
|
spaceforge/runner.py,sha256=NNddgK_OsnQWx2YFcyTpAOWfFLBDUphufBVfXYEzfzM,3166
|
|
11
|
-
spaceforge/schema.json,sha256=
|
|
11
|
+
spaceforge/schema.json,sha256=iYhx64wL4Qc2kVqKxs10bPTsnfkyWoBw_35j-knH4HA,11674
|
|
12
12
|
spaceforge/test_cls.py,sha256=uDnEmgF7bHzu3FjMk4-boEuJqk_B5AWKMPiKgl83Onc,2777
|
|
13
|
-
spaceforge/test_generator.py,sha256=
|
|
13
|
+
spaceforge/test_generator.py,sha256=a2g9WNP5y__c65T7wwQKKbf8Hqorcf0dxYfHZkmN56s,32701
|
|
14
14
|
spaceforge/test_generator_binaries.py,sha256=X_7pPLGE45eQt-Kv9_ku__LsyLgOvViHc_BvVpSCMp0,7263
|
|
15
|
-
spaceforge/test_generator_core.py,sha256=
|
|
15
|
+
spaceforge/test_generator_core.py,sha256=MYBHqBM4abQ2vqNP6OAmPValbRRo0KmLEDDC7Lc12ts,6223
|
|
16
16
|
spaceforge/test_generator_hooks.py,sha256=2lJs8dYlFb7QehWcYF0O4qg38s5UudEpzJyBi1XiS3k,2542
|
|
17
17
|
spaceforge/test_generator_parameters.py,sha256=aZRNwYcogJqp2NiYrqEkuxDi2Z6Z2S1SVoejUvsHHCE,1948
|
|
18
18
|
spaceforge/test_plugin.py,sha256=rZ4Uv_0lIR0qb1GFHkiosGO3WHTWhO7epz8INDxV8Q0,13018
|
|
19
19
|
spaceforge/test_plugin_file_operations.py,sha256=B0qvIo5EcfKMiHLhBv-hAnpSonn83ojcmJHXasydojA,3782
|
|
20
20
|
spaceforge/test_plugin_hooks.py,sha256=ugaVdzH1-heRJSJN0lu8zoqLcLPC3tg_PzUX98qu9Sw,1038
|
|
21
21
|
spaceforge/test_plugin_inheritance.py,sha256=WHfvU5s-2GtfcI9-1bHXH7bacr77ikq68V3Z3BBQKvQ,3617
|
|
22
|
-
spaceforge/test_runner.py,sha256=
|
|
23
|
-
spaceforge/test_runner_cli.py,sha256=
|
|
24
|
-
spaceforge/test_runner_core.py,sha256=
|
|
25
|
-
spaceforge/test_runner_execution.py,sha256=
|
|
22
|
+
spaceforge/test_runner.py,sha256=JySj0NIF18zOpo-YMxXBxTmuYaSxkp8WHxNPnzZLb7c,17393
|
|
23
|
+
spaceforge/test_runner_cli.py,sha256=c_QM5sA4rl6cWKS6uOY5WI0UfuczfvwkXdBqouefLeY,2260
|
|
24
|
+
spaceforge/test_runner_core.py,sha256=G_4dt59r_AIpn8eCLWp1YNtJUQURfK3zAVyp-1kM8-A,3911
|
|
25
|
+
spaceforge/test_runner_execution.py,sha256=MjhlYQ0D4-o34uVfoblDQC53skdfk6YkS1w01YWjFig,5254
|
|
26
26
|
spaceforge/templates/binary_install.sh.j2,sha256=xyq-ol6z8M4RJ107GAs5cdvudVV45JmhwExHovfCHMI,1544
|
|
27
27
|
spaceforge/templates/ensure_spaceforge_and_run.sh.j2,sha256=OKrpZI-M1VU5rCdu7XMbBto7R-HV9lAImc3x3112vhY,580
|
|
28
|
-
spaceforge-1.
|
|
29
|
-
spaceforge-1.
|
|
30
|
-
spaceforge-1.
|
|
31
|
-
spaceforge-1.
|
|
32
|
-
spaceforge-1.
|
|
33
|
-
spaceforge-1.
|
|
28
|
+
spaceforge-1.3.0.dist-info/licenses/LICENSE,sha256=qtl16T_VToz1-IpjGKSLCHsy_zmCFg2H5SkvJi85C4c,1065
|
|
29
|
+
spaceforge-1.3.0.dist-info/METADATA,sha256=7s6M2M81_r6onHmn_Q4x-cB4tDQfouJNlWo3POeUC0U,2304
|
|
30
|
+
spaceforge-1.3.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
31
|
+
spaceforge-1.3.0.dist-info/entry_points.txt,sha256=qawuuKBSNTGg-njnQnhxxFldFvXYAPej6bF_f3iyQ48,56
|
|
32
|
+
spaceforge-1.3.0.dist-info/top_level.txt,sha256=eVw-Lw4Th0oHM8Gx1Y8YetyNgbNbMBU00yWs-kwGeSs,11
|
|
33
|
+
spaceforge-1.3.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|