fm-weck 1.1.1__py3-none-any.whl → 1.1.3__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.
- fm_weck/__init__.py +1 -1
- fm_weck/cli.py +12 -9
- fm_weck/config.py +36 -4
- fm_weck/engine.py +204 -128
- fm_weck/image_mgr.py +11 -3
- fm_weck/resources/Containerfile +3 -2
- fm_weck/resources/fm_tools/bubaak-split.yml +8 -1
- fm_weck/resources/fm_tools/cbmc.yml +12 -1
- fm_weck/resources/fm_tools/coastal.yml +8 -3
- fm_weck/resources/fm_tools/concurrentwitness2test.yml +8 -1
- fm_weck/resources/fm_tools/coveriteam-verifier-algo-selection.yml +11 -4
- fm_weck/resources/fm_tools/coveriteam-verifier-parallel-portfolio.yml +11 -4
- fm_weck/resources/fm_tools/cpa-witness2test.yml +4 -4
- fm_weck/resources/fm_tools/cpachecker.yml +3 -8
- fm_weck/resources/fm_tools/cpv.yml +18 -7
- fm_weck/resources/fm_tools/key.yml +69 -0
- fm_weck/resources/fm_tools/predatorhp.yml +17 -1
- fm_weck/resources/fm_tools/proton.yml +8 -1
- fm_weck/resources/fm_tools/schema.yml +60 -9
- fm_weck/resources/fm_tools/symbiotic-witch.yml +12 -1
- fm_weck/resources/fm_tools/symbiotic.yml +41 -1
- fm_weck/resources/fm_tools/testcov.yml +1 -1
- fm_weck/resources/fm_tools/witch.yml +8 -1
- fm_weck/resources/run_with_overlay.sh +5 -1
- fm_weck/serve.py +30 -23
- {fm_weck-1.1.1.dist-info → fm_weck-1.1.3.dist-info}/METADATA +3 -2
- {fm_weck-1.1.1.dist-info → fm_weck-1.1.3.dist-info}/RECORD +29 -28
- {fm_weck-1.1.1.dist-info → fm_weck-1.1.3.dist-info}/WHEEL +0 -0
- {fm_weck-1.1.1.dist-info → fm_weck-1.1.3.dist-info}/entry_points.txt +0 -0
fm_weck/serve.py
CHANGED
|
@@ -11,15 +11,16 @@ import os
|
|
|
11
11
|
import shutil
|
|
12
12
|
import sys
|
|
13
13
|
from pathlib import Path
|
|
14
|
-
from typing import Optional, Tuple
|
|
14
|
+
from typing import Optional, Tuple, Union
|
|
15
15
|
|
|
16
16
|
from fm_tools import FmData
|
|
17
17
|
from fm_tools.benchexec_helper import DataModel
|
|
18
18
|
|
|
19
|
-
from
|
|
20
|
-
|
|
19
|
+
from .config import Config, parse_fm_data
|
|
21
20
|
from .engine import Engine
|
|
22
21
|
|
|
22
|
+
logger = logging.getLogger(__name__)
|
|
23
|
+
|
|
23
24
|
|
|
24
25
|
def check_cache_entry(shelve_space: Path, checksum: str, config: Config) -> bool:
|
|
25
26
|
checksum_file = config.get_checksum_db()
|
|
@@ -34,7 +35,7 @@ def check_cache_entry(shelve_space: Path, checksum: str, config: Config) -> bool
|
|
|
34
35
|
# we use utf-8 encoding to ensure consistency
|
|
35
36
|
return db[shelve_space.name] == checksum.encode("utf-8")
|
|
36
37
|
except dbm.error:
|
|
37
|
-
|
|
38
|
+
logger.debug("Checksum file does not exist")
|
|
38
39
|
return False
|
|
39
40
|
|
|
40
41
|
|
|
@@ -46,23 +47,25 @@ def update_checksum(shelve_space: Path, checksum: str, config: Config):
|
|
|
46
47
|
checksum_file = str(checksum_file.resolve())
|
|
47
48
|
|
|
48
49
|
with dbm.open(checksum_file, "c") as db:
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
logger.debug("Updating checksum for %s", shelve_space.name)
|
|
51
|
+
logger.debug("Checksum: %s", checksum)
|
|
51
52
|
# dbm only stores bytes, so we need to encode the checksum
|
|
52
53
|
# we use utf-8 encoding to ensure consistency
|
|
53
54
|
db[shelve_space.name] = checksum.encode("utf-8")
|
|
54
55
|
|
|
55
56
|
|
|
56
57
|
def setup_fm_tool(
|
|
57
|
-
|
|
58
|
+
fm_tool: Union[Path, FmData], version: Optional[str], configuration: Config, skip_download: bool = False
|
|
58
59
|
) -> Tuple[FmData, Path]:
|
|
59
|
-
|
|
60
|
+
# Don't explicitly disallow non-FmData here; Pythonic Users might want to exchange the FmData object
|
|
61
|
+
# by a class with the same interface
|
|
62
|
+
fm_data = parse_fm_data(fm_tool, version) if isinstance(fm_tool, (Path, str)) else fm_tool
|
|
60
63
|
|
|
61
64
|
shelve_space = configuration.get_shelve_space_for(fm_data)
|
|
62
|
-
|
|
65
|
+
logger.debug("Using shelve space %s", shelve_space)
|
|
63
66
|
|
|
64
67
|
if shelve_space.exists() and shelve_space.is_dir():
|
|
65
|
-
|
|
68
|
+
logger.debug("Shelve space already exists, testing checksum")
|
|
66
69
|
checksum = fm_data.archive_location.checksum()
|
|
67
70
|
skip_download = check_cache_entry(shelve_space, checksum, configuration)
|
|
68
71
|
|
|
@@ -77,14 +80,14 @@ def setup_fm_tool(
|
|
|
77
80
|
|
|
78
81
|
|
|
79
82
|
def run_guided(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
83
|
+
fm_tool: Union[Path, FmData],
|
|
84
|
+
version: Optional[str],
|
|
85
|
+
configuration: Config,
|
|
86
|
+
prop: Optional[Path],
|
|
87
|
+
program_files: list[Path],
|
|
88
|
+
additional_args: list[str],
|
|
89
|
+
data_model: Optional[DataModel] = None,
|
|
90
|
+
skip_download: bool = False,
|
|
88
91
|
):
|
|
89
92
|
property_path = None
|
|
90
93
|
if prop is not None:
|
|
@@ -95,7 +98,7 @@ def run_guided(
|
|
|
95
98
|
property_path = configuration.get_shelve_path_for_property(source_property_path)
|
|
96
99
|
shutil.copyfile(source_property_path, property_path)
|
|
97
100
|
except KeyError:
|
|
98
|
-
|
|
101
|
+
logger.error("Unknown property %s", prop)
|
|
99
102
|
return 1
|
|
100
103
|
|
|
101
104
|
configuration.make_script_available()
|
|
@@ -116,18 +119,22 @@ def run_guided(
|
|
|
116
119
|
)
|
|
117
120
|
os.chdir(current_dir)
|
|
118
121
|
|
|
119
|
-
|
|
122
|
+
logger.debug("Assembled command from fm-tools: %s", command)
|
|
120
123
|
|
|
121
124
|
engine.run("/home/weck_cache/.scripts/run_with_overlay.sh", shelve_space.name, *command)
|
|
122
125
|
|
|
123
126
|
|
|
124
127
|
def run_manual(
|
|
125
|
-
|
|
128
|
+
fm_tool: Union[Path, FmData],
|
|
129
|
+
version: Optional[str],
|
|
130
|
+
configuration: Config,
|
|
131
|
+
command: list[str],
|
|
132
|
+
skip_download: bool = False,
|
|
126
133
|
):
|
|
127
134
|
fm_data, shelve_space = setup_fm_tool(fm_tool, version, configuration, skip_download)
|
|
128
135
|
engine = Engine.from_config(fm_data, configuration)
|
|
129
136
|
|
|
130
137
|
executable = fm_data.get_executable_path(shelve_space)
|
|
131
|
-
|
|
132
|
-
|
|
138
|
+
logger.debug("Using executable %s", executable)
|
|
139
|
+
logger.debug("Assembled command %s", [executable, *command])
|
|
133
140
|
engine.run(executable, *command)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: fm-weck
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.3
|
|
4
4
|
Author-email: Henrik Wachowitz <henrik.wachowitz@ifi.lmu.de>
|
|
5
5
|
Maintainer-email: Henrik Wachowitz <henrik.wachowitz@ifi.lmu.de>
|
|
6
6
|
Classifier: Development Status :: 4 - Beta
|
|
@@ -10,9 +10,10 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.11
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.12
|
|
12
12
|
Requires-Python: >=3.10
|
|
13
|
-
Requires-Dist: fm-tools>=0.
|
|
13
|
+
Requires-Dist: fm-tools>=0.3.3
|
|
14
14
|
Requires-Dist: pyyaml>=6.0
|
|
15
15
|
Requires-Dist: tomli>=2.0; python_version <= '3.10'
|
|
16
|
+
Requires-Dist: yaspin>=3.0
|
|
16
17
|
Description-Content-Type: text/markdown
|
|
17
18
|
|
|
18
19
|
<!--
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
fm_weck/__init__.py,sha256=
|
|
1
|
+
fm_weck/__init__.py,sha256=uwLCU8RS2vEMyuRQE53-wbTPXN4-jf50Esc6YbSyoHo,351
|
|
2
2
|
fm_weck/__main__.py,sha256=E7z4-9t6To3hbIPjRPu6iW17YCrtqpDSbFSpd9pX4NA,350
|
|
3
|
-
fm_weck/cli.py,sha256=
|
|
4
|
-
fm_weck/config.py,sha256=
|
|
5
|
-
fm_weck/engine.py,sha256=
|
|
6
|
-
fm_weck/image_mgr.py,sha256=
|
|
7
|
-
fm_weck/serve.py,sha256=
|
|
8
|
-
fm_weck/resources/Containerfile,sha256=
|
|
3
|
+
fm_weck/cli.py,sha256=eeL3GbYO6W5af47ZgIR0mKYug0OrFsJn0Md1aVLDITI,10582
|
|
4
|
+
fm_weck/config.py,sha256=6f4R-iWmWehHghuhoU-UyCpNotYFec_oDelJB4A15BQ,4861
|
|
5
|
+
fm_weck/engine.py,sha256=nstV_H_vhBbBUik95mUotcaPQLsRiTu92YgrWmKJgeM,10102
|
|
6
|
+
fm_weck/image_mgr.py,sha256=kZxcZaMiv5orWO7bLsN7xaQRXjof8uOGud7sb57ZvRo,1655
|
|
7
|
+
fm_weck/serve.py,sha256=spNnhQvGbpUKlpkzwJLDkU50xTVjp9WHl75Ve8sea6Q,4910
|
|
8
|
+
fm_weck/resources/Containerfile,sha256=MltxP1of9klsQFNR8WyngRTJrPwxQTF4C9ennRxVqSo,391
|
|
9
9
|
fm_weck/resources/__init__.py,sha256=ewuOXBraX5Tb8XkWE6xrv0cwrxG4r5Ckj5n_tRjeRf4,946
|
|
10
|
-
fm_weck/resources/run_with_overlay.sh,sha256=
|
|
10
|
+
fm_weck/resources/run_with_overlay.sh,sha256=IOonRSjdoNoMj0tcrdZvqO-x6WZldjpOetvssP6qbSM,872
|
|
11
11
|
fm_weck/resources/properties/coverage-branches.prp,sha256=Gl2r1cgBFoh4M2laa8dVGhteHkL04oiBRLzxz_hbkEU,56
|
|
12
12
|
fm_weck/resources/properties/coverage-branches.prp.license,sha256=KzWZF1bpljIbdvwfzfWoP4DLMq6W1jXNN6WXWF0fxY0,214
|
|
13
13
|
fm_weck/resources/properties/coverage-conditions.prp,sha256=tj307UJBhj-PZqRxjijeNb0foWe2hWIc8CQP54gIUao,57
|
|
@@ -34,21 +34,21 @@ fm_weck/resources/fm_tools/2ls.yml,sha256=NWAbq4tz5M_rvt5gn8gMQNVByKLDv_THyK1OMt
|
|
|
34
34
|
fm_weck/resources/fm_tools/aise.yml,sha256=ZJZuvQwkllQwzoVYoP33ImfkkyRQnClFbL2qdH55xWk,1246
|
|
35
35
|
fm_weck/resources/fm_tools/aprove.yml,sha256=QmwxiB_BC66wt0WIVsDkMCzlEv5Bt0YsYvkMSjVAMUo,1299
|
|
36
36
|
fm_weck/resources/fm_tools/brick.yml,sha256=VJ8TuL2iyIJxjmc-YQyOsrRR6JvNLFuaq4lr9kBV94I,1655
|
|
37
|
-
fm_weck/resources/fm_tools/bubaak-split.yml,sha256=
|
|
37
|
+
fm_weck/resources/fm_tools/bubaak-split.yml,sha256=bjM_mGdHwe0Krnru7Vuv9XEhFrEClZ_dj9ToGMzANvo,1313
|
|
38
38
|
fm_weck/resources/fm_tools/bubaak.yml,sha256=58_Unt_JfnnSltkxesKOPrI3CfsT6fP2gK8GZn13hl4,1725
|
|
39
|
-
fm_weck/resources/fm_tools/cbmc.yml,sha256=
|
|
39
|
+
fm_weck/resources/fm_tools/cbmc.yml,sha256=gT9BjVnIfLkQxhihwy-Bkf3zxiBZoaJhDQGsr1gAzP8,1625
|
|
40
40
|
fm_weck/resources/fm_tools/cetfuzz.yml,sha256=mzA4_W5zqw3RsI-uMa_fkNkIgDvdWHPmP1w8sanjBWk,1481
|
|
41
|
-
fm_weck/resources/fm_tools/coastal.yml,sha256=
|
|
42
|
-
fm_weck/resources/fm_tools/concurrentwitness2test.yml,sha256=
|
|
43
|
-
fm_weck/resources/fm_tools/coveriteam-verifier-algo-selection.yml,sha256=
|
|
44
|
-
fm_weck/resources/fm_tools/coveriteam-verifier-parallel-portfolio.yml,sha256=
|
|
41
|
+
fm_weck/resources/fm_tools/coastal.yml,sha256=h0eihf_EzqF04yaFhmcFn4OAMrkqMEOAr9EHioaxjUg,1271
|
|
42
|
+
fm_weck/resources/fm_tools/concurrentwitness2test.yml,sha256=sJ3hVgyOLH2Cid3MgxSVudVpaHY5z5Yq8GLi0nIU7RU,1276
|
|
43
|
+
fm_weck/resources/fm_tools/coveriteam-verifier-algo-selection.yml,sha256=4dNi6WhHF4Ugla5UmiB5nj58Ur7y5xfAjq7clZoWKPc,1978
|
|
44
|
+
fm_weck/resources/fm_tools/coveriteam-verifier-parallel-portfolio.yml,sha256=2iwa_8dwHznrwzXvJbQhfUWwwIMo2aPzMCRZP9WrRyo,1958
|
|
45
45
|
fm_weck/resources/fm_tools/coveritest.yml,sha256=LPLz32SSrHz6k6vaZtuuUdGutD1lV05erNbks3DQmCg,1617
|
|
46
46
|
fm_weck/resources/fm_tools/cpa-bam-bnb.yml,sha256=_XUF1uv2uWRXJ69TwECWszYqzJ5xtpQeFwO4aoPlcd0,1326
|
|
47
47
|
fm_weck/resources/fm_tools/cpa-bam-smg.yml,sha256=llGQnewPpFEqKPUy-UIYGraiBXPTdpjO9Ii5Ttt3-Ko,1370
|
|
48
48
|
fm_weck/resources/fm_tools/cpa-lockator.yml,sha256=-qmAmhViAA4MItZ5mnT-Fir1Ad--sA0viS4wH_Jj9dE,1353
|
|
49
|
-
fm_weck/resources/fm_tools/cpa-witness2test.yml,sha256=
|
|
50
|
-
fm_weck/resources/fm_tools/cpachecker.yml,sha256=
|
|
51
|
-
fm_weck/resources/fm_tools/cpv.yml,sha256=
|
|
49
|
+
fm_weck/resources/fm_tools/cpa-witness2test.yml,sha256=UQElPJmloFdXxY-naYeX6sOh-cIg-dM19d3TDbPGFDQ,2688
|
|
50
|
+
fm_weck/resources/fm_tools/cpachecker.yml,sha256=TL0zuuwGHP5CJQq3u5L6lWbJlK8xJ_5fjHo9U4WrluE,7184
|
|
51
|
+
fm_weck/resources/fm_tools/cpv.yml,sha256=c8vlC35qt8QcoewcCpy9KGCSenfyzS32pHlRmXb3JEg,1529
|
|
52
52
|
fm_weck/resources/fm_tools/crux.yml,sha256=JG3NI1DWIHDsIdl2Dli8B9GBFhBsWZA7ondMyqVQbEE,1068
|
|
53
53
|
fm_weck/resources/fm_tools/cseq.yml,sha256=l7399biboHfcxJpicQQKr4ZoJEhqerske1ylgbXXtZw,1441
|
|
54
54
|
fm_weck/resources/fm_tools/dartagnan.yml,sha256=6LViNgd06p_jYdaEUWhNEMZusE9tuKO17j__IpCmJwE,2940
|
|
@@ -78,6 +78,7 @@ fm_weck/resources/fm_tools/jayhorn.yml,sha256=0UVLqkMkAbHKUpFvEsWtibVzBHVg_Hk3px
|
|
|
78
78
|
fm_weck/resources/fm_tools/jbmc.yml,sha256=1S6SCndHl2RYYwfFBzaWetz3y3ChOpo3XDYKnynmY4E,1799
|
|
79
79
|
fm_weck/resources/fm_tools/jcwit.yml,sha256=zX9_vN3k1LrDrWfmd74yVQH3a0dDwXR8asRUvGY6E8U,882
|
|
80
80
|
fm_weck/resources/fm_tools/jdart.yml,sha256=KPZQTzpkMJYaqb1V6MPQRGa7cJMuj5Q-EaWw_YHWulU,1149
|
|
81
|
+
fm_weck/resources/fm_tools/key.yml,sha256=iC-fBi-PUdTqa9dGYp3YLPA61WVCMxMKAVO6T-Zp5_k,2154
|
|
81
82
|
fm_weck/resources/fm_tools/klee.yml,sha256=DKysTqhiWXmgrWkrI8KDnGCtz5_8e-74rUYwyp0xElw,1202
|
|
82
83
|
fm_weck/resources/fm_tools/kleef.yml,sha256=ZFQHwMqsDTPLVnkTpCqPtihgI5AOMpepKwMh4ny2ym4,1092
|
|
83
84
|
fm_weck/resources/fm_tools/korn.yml,sha256=ivoGYXZS9q_QdRwZWpwZuOStnZLd56iyP3-TrfPo8iw,1751
|
|
@@ -95,18 +96,18 @@ fm_weck/resources/fm_tools/owic.yml,sha256=iEwN7Gh1AX03rDAwq54gclJIm_cV3jbqArW73
|
|
|
95
96
|
fm_weck/resources/fm_tools/pesco.yml,sha256=Sn6VXt1BAizYQsI87joHZHJeu6w7qHI4oD5AnifwjAs,1899
|
|
96
97
|
fm_weck/resources/fm_tools/pichecker.yml,sha256=8go2GTLyXukkHrth6VEBSbH304CKovAogMotbKSyNpI,1303
|
|
97
98
|
fm_weck/resources/fm_tools/pinaka.yml,sha256=82oADOZpZ_cXn_n-h4u_NAct6CvRr9dNzqqNQjia4rk,1308
|
|
98
|
-
fm_weck/resources/fm_tools/predatorhp.yml,sha256
|
|
99
|
-
fm_weck/resources/fm_tools/proton.yml,sha256=
|
|
99
|
+
fm_weck/resources/fm_tools/predatorhp.yml,sha256=-b6a0kbIG9gqBi3LvpRz976VLc9a4QouWlVk-8dEDYE,2155
|
|
100
|
+
fm_weck/resources/fm_tools/proton.yml,sha256=tov4hwob9ztEoEcooYHLlgV4UdfzYss8aPK3miP05Pk,1115
|
|
100
101
|
fm_weck/resources/fm_tools/prtest.yml,sha256=lBoCUtznXC2CaL4TlBZxid0veSQ7N0L4PLTDBTET6sc,1336
|
|
101
102
|
fm_weck/resources/fm_tools/relay-sv.yml,sha256=XU6m1WwpLwFolP-cVt1Ia_n2biSspvRMsqX2LA6ZTyA,1033
|
|
102
103
|
fm_weck/resources/fm_tools/rizzer.yml,sha256=qRp9hM26LabMFNcMoABHOciaJHao7bBxrvdvHlJJl60,1243
|
|
103
|
-
fm_weck/resources/fm_tools/schema.yml,sha256=
|
|
104
|
+
fm_weck/resources/fm_tools/schema.yml,sha256=7fzmmqBbh-FAD2LffFCEThJh3fLBo6YAYEDYhf4_bto,20470
|
|
104
105
|
fm_weck/resources/fm_tools/spf.yml,sha256=DVWM2iCDg3I0Sft4pnuMfmA8XqbBLd0YGHzcyPy-IW4,1326
|
|
105
106
|
fm_weck/resources/fm_tools/sv-sanitizers.yml,sha256=XsNjhdXK61JZG2S0tve1ChDLGDEbOT_kU1_GamA3Rsc,956
|
|
106
107
|
fm_weck/resources/fm_tools/swat.yml,sha256=S_avjdEaYil90ATqAzsxHDFzOaMhKEj8yiE2Sa7SyEc,1286
|
|
107
|
-
fm_weck/resources/fm_tools/symbiotic-witch.yml,sha256
|
|
108
|
-
fm_weck/resources/fm_tools/symbiotic.yml,sha256=
|
|
109
|
-
fm_weck/resources/fm_tools/testcov.yml,sha256=
|
|
108
|
+
fm_weck/resources/fm_tools/symbiotic-witch.yml,sha256=-JeF8RmxGjDuLrnzR9YtDh4xU9xi129qGIQSNg-eZ9M,1755
|
|
109
|
+
fm_weck/resources/fm_tools/symbiotic.yml,sha256=GGIjnY4oCSr62708bkQ1Rty6wjq9MFCnp5_66YPImxU,4315
|
|
110
|
+
fm_weck/resources/fm_tools/testcov.yml,sha256=bP1gj2Acvwq0z9HpFa8VQCpLsYAzANOnD6s21ewxIB0,2100
|
|
110
111
|
fm_weck/resources/fm_tools/theta.yml,sha256=cXca1VdvXkwaYxlL-lherGCvi6XUjlwWSbZf_EH8xaE,1734
|
|
111
112
|
fm_weck/resources/fm_tools/tracerx-wp.yml,sha256=KHDTtMlO8qgkzkKTTqlXbf6flN-zc_HIZ9KBkVqbAUU,1038
|
|
112
113
|
fm_weck/resources/fm_tools/tracerx.yml,sha256=TlDLEAX_fvqd6RKfsoBRJrbcPrkiaSsWeDJ1F_yACGk,1554
|
|
@@ -121,9 +122,9 @@ fm_weck/resources/fm_tools/verifuzz.yml,sha256=cGB62ku9F_RLkBtJayFBvw-I4oNEf5K6q
|
|
|
121
122
|
fm_weck/resources/fm_tools/verioover.yml,sha256=g1IYUaoUVTUGCvw5LP8Vi3q5PyNMFcrc3HovDJrX7ns,1019
|
|
122
123
|
fm_weck/resources/fm_tools/wasp-c.yml,sha256=NWEb2vpIBu75kZJdEq0am8Mpi2HFu5nhDI1edAMjUzk,1238
|
|
123
124
|
fm_weck/resources/fm_tools/wit4java.yml,sha256=SukwwE46DsDmZouAwHhr_aaOjxIaeOrIS7o7P4eDWX0,1243
|
|
124
|
-
fm_weck/resources/fm_tools/witch.yml,sha256=
|
|
125
|
+
fm_weck/resources/fm_tools/witch.yml,sha256=5d5aYmkrlG78M-RLdDbdi6EJWOfD0CskWtJWGXtwEyI,1152
|
|
125
126
|
fm_weck/resources/fm_tools/witnesslint.yml,sha256=Y6A2TXPyjVxZ9Fhmyd7GOKY7x1_jXjshvmrIM4uW96A,3085
|
|
126
|
-
fm_weck-1.1.
|
|
127
|
-
fm_weck-1.1.
|
|
128
|
-
fm_weck-1.1.
|
|
129
|
-
fm_weck-1.1.
|
|
127
|
+
fm_weck-1.1.3.dist-info/METADATA,sha256=3dgYMCD7Quom9uqw0y5mSRMtmzH_VxSoGg8olrxlnq4,2771
|
|
128
|
+
fm_weck-1.1.3.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
|
129
|
+
fm_weck-1.1.3.dist-info/entry_points.txt,sha256=toWpKCSY1u593MPnI_xW5gnwlnkerP4AvmPQ1s2nPgY,50
|
|
130
|
+
fm_weck-1.1.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|