fm-weck 1.4.4__py3-none-any.whl → 1.4.6__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.
Files changed (123) hide show
  1. fm_weck/__init__.py +1 -1
  2. fm_weck/__main__.py +1 -0
  3. fm_weck/cache_mgr.py +47 -0
  4. fm_weck/cli.py +120 -11
  5. fm_weck/engine.py +86 -17
  6. fm_weck/exceptions.py +1 -0
  7. fm_weck/resources/{BenchExec-3.25-py3-none-any.whl → BenchExec-3.27-py3-none-any.whl} +0 -0
  8. fm_weck/resources/__init__.py +1 -1
  9. fm_weck/resources/fm_tools/2ls.yml +32 -7
  10. fm_weck/resources/fm_tools/aise.yml +6 -1
  11. fm_weck/resources/fm_tools/aprove.yml +73 -72
  12. fm_weck/resources/fm_tools/blast.yml +58 -0
  13. fm_weck/resources/fm_tools/brick.yml +4 -4
  14. fm_weck/resources/fm_tools/bubaak-split.yml +3 -3
  15. fm_weck/resources/fm_tools/bubaak.yml +4 -4
  16. fm_weck/resources/fm_tools/cadp.yml +95 -0
  17. fm_weck/resources/fm_tools/cbmc.yml +8 -4
  18. fm_weck/resources/fm_tools/cetfuzz.yml +4 -3
  19. fm_weck/resources/fm_tools/coastal.yml +13 -8
  20. fm_weck/resources/fm_tools/concurrentwitness2test.yml +4 -1
  21. fm_weck/resources/fm_tools/cooperace.yml +7 -6
  22. fm_weck/resources/fm_tools/coveriteam-verifier-algo-selection.yml +9 -20
  23. fm_weck/resources/fm_tools/coveriteam-verifier-parallel-portfolio.yml +9 -20
  24. fm_weck/resources/fm_tools/coveritest.yml +27 -6
  25. fm_weck/resources/fm_tools/cpa-bam-bnb.yml +13 -9
  26. fm_weck/resources/fm_tools/cpa-bam-smg.yml +12 -7
  27. fm_weck/resources/fm_tools/cpa-lockator.yml +13 -9
  28. fm_weck/resources/fm_tools/cpa-witness2test.yml +13 -3
  29. fm_weck/resources/fm_tools/cpachecker.yml +6 -3
  30. fm_weck/resources/fm_tools/cpv.yml +2 -0
  31. fm_weck/resources/fm_tools/crux.yml +20 -8
  32. fm_weck/resources/fm_tools/cseq.yml +9 -4
  33. fm_weck/resources/fm_tools/dartagnan.yml +12 -1
  34. fm_weck/resources/fm_tools/deagle.yml +5 -0
  35. fm_weck/resources/fm_tools/divine.yml +20 -11
  36. fm_weck/resources/fm_tools/ebf.yml +8 -5
  37. fm_weck/resources/fm_tools/emergentheta.yml +9 -2
  38. fm_weck/resources/fm_tools/esbmc-incr.yml +13 -10
  39. fm_weck/resources/fm_tools/esbmc-kind.yml +12 -11
  40. fm_weck/resources/fm_tools/fdse.yml +1 -1
  41. fm_weck/resources/fm_tools/fizzer.yml +16 -25
  42. fm_weck/resources/fm_tools/frama-c-sv.yml +3 -2
  43. fm_weck/resources/fm_tools/fshell-witness2test.yml +9 -6
  44. fm_weck/resources/fm_tools/fusebmc-ia.yml +6 -3
  45. fm_weck/resources/fm_tools/fusebmc.yml +26 -6
  46. fm_weck/resources/fm_tools/gazer-theta.yml +10 -7
  47. fm_weck/resources/fm_tools/gdart-llvm.yml +8 -4
  48. fm_weck/resources/fm_tools/gdart.yml +3 -0
  49. fm_weck/resources/fm_tools/goblint.yml +7 -2
  50. fm_weck/resources/fm_tools/graves-par.yml +9 -14
  51. fm_weck/resources/fm_tools/graves.yml +10 -4
  52. fm_weck/resources/fm_tools/gwit.yml +10 -4
  53. fm_weck/resources/fm_tools/hornix.yml +12 -7
  54. fm_weck/resources/fm_tools/hybridtiger.yml +12 -7
  55. fm_weck/resources/fm_tools/infer.yml +12 -7
  56. fm_weck/resources/fm_tools/java-ranger.yml +6 -3
  57. fm_weck/resources/fm_tools/jayhorn.yml +6 -4
  58. fm_weck/resources/fm_tools/jbmc.yml +11 -2
  59. fm_weck/resources/fm_tools/jcwit.yml +9 -5
  60. fm_weck/resources/fm_tools/jdart.yml +12 -7
  61. fm_weck/resources/fm_tools/klee.yml +13 -8
  62. fm_weck/resources/fm_tools/kleef.yml +3 -3
  63. fm_weck/resources/fm_tools/korn.yml +11 -1
  64. fm_weck/resources/fm_tools/lazycseq.yml +10 -7
  65. fm_weck/resources/fm_tools/legion-symcc.yml +6 -12
  66. fm_weck/resources/fm_tools/legion.yml +9 -14
  67. fm_weck/resources/fm_tools/lf-checker.yml +10 -6
  68. fm_weck/resources/fm_tools/liv.yml +19 -4
  69. fm_weck/resources/fm_tools/locksmith.yml +10 -6
  70. fm_weck/resources/fm_tools/metaval++.yml +19 -3
  71. fm_weck/resources/fm_tools/metaval.yml +21 -3
  72. fm_weck/resources/fm_tools/mlb.yml +6 -6
  73. fm_weck/resources/fm_tools/mopsa.yml +9 -7
  74. fm_weck/resources/fm_tools/nacpa.yml +7 -1
  75. fm_weck/resources/fm_tools/nitwit.yml +5 -3
  76. fm_weck/resources/fm_tools/owic.yml +4 -3
  77. fm_weck/resources/fm_tools/pesco.yml +10 -4
  78. fm_weck/resources/fm_tools/pichecker.yml +10 -6
  79. fm_weck/resources/fm_tools/pinaka.yml +13 -8
  80. fm_weck/resources/fm_tools/predatorhp.yml +6 -4
  81. fm_weck/resources/fm_tools/prism.yml +67 -0
  82. fm_weck/resources/fm_tools/proton.yml +6 -6
  83. fm_weck/resources/fm_tools/prtest.yml +22 -6
  84. fm_weck/resources/fm_tools/racerf.yml +14 -5
  85. fm_weck/resources/fm_tools/relay-sv.yml +8 -13
  86. fm_weck/resources/fm_tools/rizzer.yml +8 -12
  87. fm_weck/resources/fm_tools/schema.yml +60 -3
  88. fm_weck/resources/fm_tools/sikraken.yml +3 -3
  89. fm_weck/resources/fm_tools/spf.yml +13 -8
  90. fm_weck/resources/fm_tools/svf-svc.yml +15 -6
  91. fm_weck/resources/fm_tools/symbiotic-witch.yml +9 -5
  92. fm_weck/resources/fm_tools/symbiotic.yml +8 -4
  93. fm_weck/resources/fm_tools/testcov.yml +63 -5
  94. fm_weck/resources/fm_tools/theta.yml +8 -4
  95. fm_weck/resources/fm_tools/thorn.yml +3 -1
  96. fm_weck/resources/fm_tools/tracerx-wp.yml +11 -2
  97. fm_weck/resources/fm_tools/tracerx.yml +5 -1
  98. fm_weck/resources/fm_tools/uautomizer.yml +7 -12
  99. fm_weck/resources/fm_tools/ugemcutter.yml +8 -2
  100. fm_weck/resources/fm_tools/ukojak.yml +5 -2
  101. fm_weck/resources/fm_tools/ureferee.yml +3 -4
  102. fm_weck/resources/fm_tools/utaipan.yml +8 -2
  103. fm_weck/resources/fm_tools/utestgen.yml +11 -3
  104. fm_weck/resources/fm_tools/vercors.yml +94 -0
  105. fm_weck/resources/fm_tools/veriabs.yml +11 -9
  106. fm_weck/resources/fm_tools/veriabsl.yml +10 -8
  107. fm_weck/resources/fm_tools/verifuzz.yml +16 -266
  108. fm_weck/resources/fm_tools/verioover.yml +10 -6
  109. fm_weck/resources/fm_tools/wasp-c.yml +6 -4
  110. fm_weck/resources/fm_tools/wit4java.yml +20 -13
  111. fm_weck/resources/fm_tools/witch.yml +8 -4
  112. fm_weck/resources/fm_tools/witnesslint.yml +37 -9
  113. fm_weck/resources/fm_tools/witnessmap.yml +16 -2
  114. fm_weck/run_result.py +38 -0
  115. fm_weck/runexec_mode.py +7 -2
  116. fm_weck/serve.py +66 -12
  117. fm_weck/version_listing.py +25 -0
  118. {fm_weck-1.4.4.dist-info → fm_weck-1.4.6.dist-info}/METADATA +4 -2
  119. fm_weck-1.4.6.dist-info/RECORD +153 -0
  120. {fm_weck-1.4.4.dist-info → fm_weck-1.4.6.dist-info}/WHEEL +1 -1
  121. fm_weck-1.4.4.dist-info/RECORD +0 -146
  122. /fm_weck/resources/{BenchExec-3.25-py3-none-any.whl.license → BenchExec-3.27-py3-none-any.whl.license} +0 -0
  123. {fm_weck-1.4.4.dist-info → fm_weck-1.4.6.dist-info}/entry_points.txt +0 -0
@@ -1,5 +1,12 @@
1
1
  id: witnesslint
2
2
  name: WitnessLint
3
+ description: |
4
+ WitnessLint is a simple witness validator that
5
+ rejects only witnesses that do not adhere to the witness format specification.
6
+ It does this through syntactic checks of the verification witnesses.
7
+ It is used by the competition SV-COMP to 'desk-reject' witnesses
8
+ that do not adhere to the format specification,
9
+ such that invalid witnesses do not yield points in the competition.
3
10
  input_languages:
4
11
  - C
5
12
  - Java
@@ -14,6 +21,11 @@ fmtools_entry_maintainers:
14
21
  - PhilippWendler
15
22
 
16
23
  maintainers:
24
+ - orcid: 0000-0003-4832-7662
25
+ name: Dirk Beyer
26
+ institution: LMU Munich
27
+ country: Germany
28
+ url: https://www.sosy-lab.org/people/dbeyer/
17
29
  - name: Marian Lingsch-Rosenfeld
18
30
  orcid: 0000-0002-8172-3184
19
31
  institution: LMU Munich
@@ -22,32 +34,32 @@ maintainers:
22
34
 
23
35
  versions:
24
36
  - version: "svcomp25-correctness-graphml"
25
- doi: 10.5281/zenodo.13988752
26
- benchexec_toolinfo_options: ["--expectCorrectnessWitness", "--ignoreSelfLoops", "--expectedWitnessVersion", "1.0"]
37
+ doi: 10.5281/zenodo.15050742
38
+ benchexec_toolinfo_options: ["--witness", "${witness}", "--expectCorrectnessWitness", "--ignoreSelfLoops", "--expectedWitnessVersion", "1.0"]
27
39
  required_ubuntu_packages:
28
40
  - python3-lxml
29
41
  - python3-jsonschema
30
42
  - python3-yaml
31
43
  - python3-pycparser
32
44
  - version: "svcomp25-violation-graphml"
33
- doi: 10.5281/zenodo.13988752
34
- benchexec_toolinfo_options: ["--expectViolationWitness", "--ignoreSelfLoops", "--expectedWitnessVersion", "1.0"]
45
+ doi: 10.5281/zenodo.15050742
46
+ benchexec_toolinfo_options: ["--witness", "${witness}", "--expectViolationWitness", "--ignoreSelfLoops", "--expectedWitnessVersion", "1.0"]
35
47
  required_ubuntu_packages:
36
48
  - python3-lxml
37
49
  - python3-jsonschema
38
50
  - python3-yaml
39
51
  - python3-pycparser
40
52
  - version: "svcomp25-correctness-yaml"
41
- doi: 10.5281/zenodo.13988752
42
- benchexec_toolinfo_options: ["--expectCorrectnessWitness", "--ignoreSelfLoops", "--expectedWitnessVersion", "2.0"]
53
+ doi: 10.5281/zenodo.15050742
54
+ benchexec_toolinfo_options: ["--witness", "${witness}", "--expectCorrectnessWitness", "--ignoreSelfLoops", "--expectedWitnessVersion", "2.0"]
43
55
  required_ubuntu_packages:
44
56
  - python3-lxml
45
57
  - python3-jsonschema
46
58
  - python3-yaml
47
59
  - python3-pycparser
48
60
  - version: "svcomp25-violation-yaml"
49
- doi: 10.5281/zenodo.13988752
50
- benchexec_toolinfo_options: ["--expectViolationWitness", "--ignoreSelfLoops", "--expectedWitnessVersion", "2.0"]
61
+ doi: 10.5281/zenodo.15050742
62
+ benchexec_toolinfo_options: ["--witness", "${witness}", "--expectViolationWitness", "--ignoreSelfLoops", "--expectedWitnessVersion", "2.0"]
51
63
  required_ubuntu_packages:
52
64
  - python3-lxml
53
65
  - python3-jsonschema
@@ -89,6 +101,8 @@ versions:
89
101
  competition_participations:
90
102
  - competition: "SV-COMP 2025"
91
103
  track: "Validation of Correctness Witnesses 1.0"
104
+ label:
105
+ - auxiliary
92
106
  tool_version: "svcomp25-correctness-graphml"
93
107
  jury_member:
94
108
  orcid: 0000-0002-8172-3184
@@ -98,6 +112,8 @@ competition_participations:
98
112
  url: https://www.sosy-lab.org/people/lingsch-rosenfeld/
99
113
  - competition: "SV-COMP 2025"
100
114
  track: "Validation of Correctness Witnesses 2.0"
115
+ label:
116
+ - auxiliary
101
117
  tool_version: "svcomp25-correctness-yaml"
102
118
  jury_member:
103
119
  orcid: 0000-0002-8172-3184
@@ -107,6 +123,8 @@ competition_participations:
107
123
  url: https://www.sosy-lab.org/people/lingsch-rosenfeld/
108
124
  - competition: "SV-COMP 2025"
109
125
  track: "Validation of Violation Witnesses 1.0"
126
+ label:
127
+ - auxiliary
110
128
  tool_version: "svcomp25-violation-graphml"
111
129
  jury_member:
112
130
  orcid: 0000-0002-8172-3184
@@ -116,6 +134,8 @@ competition_participations:
116
134
  url: https://www.sosy-lab.org/people/lingsch-rosenfeld/
117
135
  - competition: "SV-COMP 2025"
118
136
  track: "Validation of Violation Witnesses 2.0"
137
+ label:
138
+ - auxiliary
119
139
  tool_version: "svcomp25-violation-yaml"
120
140
  jury_member:
121
141
  orcid: 0000-0002-8172-3184
@@ -125,6 +145,8 @@ competition_participations:
125
145
  url: https://www.sosy-lab.org/people/lingsch-rosenfeld/
126
146
  - competition: "SV-COMP 2024"
127
147
  track: "Validation of Correctness Witnesses 1.0"
148
+ label:
149
+ - auxiliary
128
150
  tool_version: "svcomp24-correctness-graphml"
129
151
  jury_member:
130
152
  orcid: 0000-0002-8172-3184
@@ -134,6 +156,8 @@ competition_participations:
134
156
  url: https://www.sosy-lab.org/people/lingsch-rosenfeld/
135
157
  - competition: "SV-COMP 2024"
136
158
  track: "Validation of Correctness Witnesses 2.0"
159
+ label:
160
+ - auxiliary
137
161
  tool_version: "svcomp24-correctness-yaml"
138
162
  jury_member:
139
163
  orcid: 0000-0002-8172-3184
@@ -143,6 +167,8 @@ competition_participations:
143
167
  url: https://www.sosy-lab.org/people/lingsch-rosenfeld/
144
168
  - competition: "SV-COMP 2024"
145
169
  track: "Validation of Violation Witnesses 1.0"
170
+ label:
171
+ - auxiliary
146
172
  tool_version: "svcomp24-violation-graphml"
147
173
  jury_member:
148
174
  orcid: 0000-0002-8172-3184
@@ -152,6 +178,8 @@ competition_participations:
152
178
  url: https://www.sosy-lab.org/people/lingsch-rosenfeld/
153
179
  - competition: "SV-COMP 2024"
154
180
  track: "Validation of Violation Witnesses 2.0"
181
+ label:
182
+ - auxiliary
155
183
  tool_version: "svcomp24-violation-yaml"
156
184
  jury_member:
157
185
  orcid: 0000-0002-8172-3184
@@ -166,4 +194,4 @@ frameworks_solvers: []
166
194
 
167
195
  used_actors: []
168
196
 
169
- literature: []
197
+ literature: []
@@ -1,8 +1,15 @@
1
1
  id: witnessmap
2
2
  name: WitnessMap
3
+ description: |
4
+ WitnessMap is a simple tool with the same input and output as a verifier that
5
+ only copies witnesses contained in validation tasks
6
+ to its output folder.
7
+ It is used by SV-COMP to place existing verification witnesses
8
+ at the location where the competition infrastructure expects them
9
+ (this way, the witness is technically 'produced' by a tool
10
+ with the same interface as a verifier).
3
11
  input_languages:
4
12
  - C
5
- - Java
6
13
  project_url: https://gitlab.com/sosy-lab/software/witnessmap
7
14
  repository_url: https://gitlab.com/sosy-lab/software/witnessmap
8
15
  spdx_license_identifier: Apache-2.0
@@ -14,6 +21,11 @@ fmtools_entry_maintainers:
14
21
  - PhilippWendler
15
22
 
16
23
  maintainers:
24
+ - orcid: 0000-0003-4832-7662
25
+ name: Dirk Beyer
26
+ institution: LMU Munich
27
+ country: Germany
28
+ url: https://www.sosy-lab.org/people/dbeyer/
17
29
  - name: Marian Lingsch-Rosenfeld
18
30
  orcid: 0000-0002-8172-3184
19
31
  institution: LMU Munich
@@ -23,13 +35,15 @@ maintainers:
23
35
  versions:
24
36
  - version: "svcomp25"
25
37
  doi: 10.5281/zenodo.14205153
26
- benchexec_toolinfo_options: [ ]
38
+ benchexec_toolinfo_options: []
27
39
  required_ubuntu_packages:
28
40
  - python3-yaml
29
41
 
30
42
  competition_participations:
31
43
  - competition: "SV-COMP 2025"
32
44
  track: "Verification"
45
+ label:
46
+ - auxiliary
33
47
  tool_version: "svcomp25"
34
48
  jury_member:
35
49
  orcid: 0000-0002-8172-3184
fm_weck/run_result.py ADDED
@@ -0,0 +1,38 @@
1
+ # This file is part of fm-weck: executing fm-tools in containerized environments.
2
+ # https://gitlab.com/sosy-lab/software/fm-weck
3
+ #
4
+ # SPDX-FileCopyrightText: 2024 Dirk Beyer <https://www.sosy-lab.org>
5
+ #
6
+ # SPDX-License-Identifier: Apache-2.0
7
+
8
+ from dataclasses import dataclass
9
+ from functools import singledispatchmethod
10
+
11
+ from benchexec.tools.template import BaseTool2
12
+ from benchexec.util import ProcessExitCode
13
+ from fm_tools import FmData
14
+ from fm_tools.run import get_tool_info
15
+
16
+
17
+ @dataclass(frozen=True)
18
+ class RunResult:
19
+ command: tuple[str, ...]
20
+ exit_code: int
21
+ raw_output: str
22
+
23
+ def as_benchexec_run(self):
24
+ return BaseTool2.Run(
25
+ cmdline=self.command,
26
+ exit_code=ProcessExitCode.from_raw(self.exit_code),
27
+ output=BaseTool2.RunOutput(self.raw_output.splitlines(keepends=True)),
28
+ termination_reason=False, # TODO: We do not know about this
29
+ )
30
+
31
+ @singledispatchmethod
32
+ def determine_result(self, tool: BaseTool2) -> str:
33
+ return tool.determine_result(self.as_benchexec_run())
34
+
35
+ @determine_result.register
36
+ def _(self, tool: FmData) -> str:
37
+ tool = get_tool_info(tool)
38
+ return self.determine_result(tool)
fm_weck/runexec_mode.py CHANGED
@@ -8,7 +8,7 @@
8
8
  import logging
9
9
  import shutil
10
10
  from pathlib import Path
11
- from typing import Optional
11
+ from typing import TYPE_CHECKING, Optional
12
12
 
13
13
  from fm_weck.resources import BENCHEXEC_WHL
14
14
  from fm_weck.runexec_util import mountable_absolute_paths_of_command
@@ -18,6 +18,9 @@ from .engine import CACHE_MOUNT_LOCATION, Engine
18
18
 
19
19
  logger = logging.getLogger(__name__)
20
20
 
21
+ if TYPE_CHECKING:
22
+ from fm_weck.run_result import RunResult
23
+
21
24
 
22
25
  def run_runexec(
23
26
  benchexec_package: Optional[Path],
@@ -25,7 +28,7 @@ def run_runexec(
25
28
  configuration: Config,
26
29
  extra_container_args: list[list[str]],
27
30
  command: list[str],
28
- ):
31
+ ) -> "RunResult":
29
32
  if use_image is not None:
30
33
  configuration.set_default_image(use_image)
31
34
 
@@ -50,4 +53,6 @@ def run_runexec(
50
53
 
51
54
  configuration.make_runexec_script_available()
52
55
 
56
+ engine.handle_io = False
57
+
53
58
  return engine.run(f"{CACHE_MOUNT_LOCATION}/.scripts/runexec", *command)
fm_weck/serve.py CHANGED
@@ -16,6 +16,8 @@ from typing import Optional, Tuple, Union
16
16
  from fm_tools import FmData
17
17
  from fm_tools.benchexec_helper import DataModel
18
18
 
19
+ from fm_weck.run_result import RunResult
20
+
19
21
  from .config import Config, parse_fm_data
20
22
  from .engine import CACHE_MOUNT_LOCATION, Engine
21
23
 
@@ -58,7 +60,10 @@ def update_checksum(shelve_space: Path, checksum: str, config: Config):
58
60
 
59
61
 
60
62
  def setup_fm_tool(
61
- fm_tool: Union[Path, FmData], version: Optional[str], configuration: Config, skip_download: bool = False
63
+ fm_tool: Union[Path, FmData],
64
+ version: Optional[str],
65
+ configuration: Config,
66
+ offline_mode: bool = False,
62
67
  ) -> Tuple[FmData, Path]:
63
68
  # Don't explicitly disallow non-FmData here; Pythonic Users might want to exchange the FmData object
64
69
  # by a class with the same interface
@@ -66,8 +71,9 @@ def setup_fm_tool(
66
71
 
67
72
  shelve_space = configuration.get_shelve_space_for(fm_data)
68
73
  logger.debug("Using shelve space %s", shelve_space)
74
+ skip_download = offline_mode
69
75
 
70
- if (not skip_download) and shelve_space.exists() and shelve_space.is_dir():
76
+ if (not offline_mode) and shelve_space.exists() and shelve_space.is_dir():
71
77
  logger.debug("Shelve space already exists, testing checksum")
72
78
  checksum = fm_data.archive_location.checksum()
73
79
  skip_download = check_cache_entry(shelve_space, checksum, configuration)
@@ -77,7 +83,17 @@ def setup_fm_tool(
77
83
  checksum = fm_data.archive_location.checksum()
78
84
  update_checksum(shelve_space, checksum, configuration)
79
85
 
80
- fm_data.get_toolinfo_module().make_available()
86
+ tool_info_module = fm_data.get_toolinfo_module()
87
+
88
+ if (not offline_mode) or tool_info_module._trivially_resolved():
89
+ tool_info_module.resolve(target_dir=shelve_space)
90
+ else:
91
+ file_name = tool_info_module.raw.rpartition("/")[-1]
92
+ tool_info_module._target_location = target = shelve_space / file_name
93
+ tool_info_module.resolved = "." + target.stem
94
+
95
+ if tool_info_module._target_location:
96
+ sys.path.insert(0, str(tool_info_module._target_location.parent))
81
97
 
82
98
  return fm_data, shelve_space
83
99
 
@@ -89,11 +105,14 @@ def run_guided(
89
105
  prop: Optional[Path],
90
106
  program_files: list[Path],
91
107
  additional_args: list[str],
108
+ witness: Optional[Path] = None,
92
109
  data_model: Optional[DataModel] = None,
93
- skip_download: bool = False,
110
+ offline_mode: bool = False,
94
111
  log_output_to: Optional[Path] = None,
95
112
  output_files_to: Optional[Path] = None,
96
- ) -> int:
113
+ timeout_sec: Optional[float] = None,
114
+ print_tool_output_to_console: bool = True,
115
+ ) -> RunResult:
97
116
  property_path = None
98
117
  if prop is not None:
99
118
  try:
@@ -104,11 +123,11 @@ def run_guided(
104
123
  shutil.copyfile(source_property_path, property_path)
105
124
  except KeyError:
106
125
  logger.error("Unknown property %s", prop)
107
- return 1
126
+ return 1, None
108
127
 
109
128
  configuration.make_script_available()
110
129
 
111
- fm_data, shelve_space = setup_fm_tool(fm_tool, version, configuration, skip_download)
130
+ fm_data, shelve_space = setup_fm_tool(fm_tool, version, configuration, offline_mode)
112
131
  engine = Engine.from_config(fm_data, configuration)
113
132
 
114
133
  if log_output_to is not None:
@@ -116,6 +135,7 @@ def run_guided(
116
135
 
117
136
  if output_files_to is not None:
118
137
  engine.set_output_files_dir(output_files_to)
138
+ engine.print_output_to_stdout = print_tool_output_to_console
119
139
 
120
140
  current_dir = Path.cwd().resolve()
121
141
  os.chdir(shelve_space)
@@ -130,9 +150,22 @@ def run_guided(
130
150
  )
131
151
  os.chdir(current_dir)
132
152
 
153
+ # There are two ways to pass the witness
154
+ # 1. Through the task options in BenchExec using {"witness": filename} and adding the witness to the input files
155
+ # 2. Replacing the placeholder in FM-Data "${witness}" with the correct path
156
+ #
157
+ # We are using the second approach here, in order to avoid modifying FM-Data
158
+ if witness is not None:
159
+ assert any(c == "${witness}" for c in command), "The version given does not support witness files"
160
+ command = [witness if c == "${witness}" else c for c in command]
161
+
133
162
  logger.debug("Assembled command from fm-tools: %s", command)
134
163
 
135
- return engine.run(f"{CACHE_MOUNT_LOCATION}/.scripts/run_with_overlay.sh", shelve_space.name, *command)
164
+ execution_result = engine.run(
165
+ f"{CACHE_MOUNT_LOCATION}/.scripts/run_with_overlay.sh", shelve_space.name, *command, timeout_sec=timeout_sec
166
+ )
167
+
168
+ return execution_result
136
169
 
137
170
 
138
171
  def run_manual(
@@ -140,12 +173,33 @@ def run_manual(
140
173
  version: Optional[str],
141
174
  configuration: Config,
142
175
  command: list[str],
143
- skip_download: bool = False,
144
- ) -> int:
145
- fm_data, shelve_space = setup_fm_tool(fm_tool, version, configuration, skip_download)
176
+ offline_mode: bool = False,
177
+ log_output_to: Optional[Path] = None,
178
+ output_files_to: Optional[Path] = None,
179
+ timeout_sec: Optional[float] = None,
180
+ print_tool_output_to_console: bool = True,
181
+ ) -> RunResult:
182
+ fm_data, shelve_space = setup_fm_tool(fm_tool, version, configuration, offline_mode)
146
183
  engine = Engine.from_config(fm_data, configuration)
147
184
 
185
+ if log_output_to is not None:
186
+ engine.set_output_log(log_output_to)
187
+
188
+ if output_files_to is not None:
189
+ engine.set_output_files_dir(output_files_to)
190
+
148
191
  executable = fm_data.get_executable_path(shelve_space)
149
192
  logger.debug("Using executable %s", executable)
150
193
  logger.debug("Assembled command %s", [executable, *command])
151
- return engine.run(executable, *command)
194
+
195
+ if log_output_to is not None:
196
+ engine.set_output_log(log_output_to)
197
+
198
+ if output_files_to is not None:
199
+ engine.set_output_files_dir(output_files_to)
200
+
201
+ engine.print_output_to_stdout = print_tool_output_to_console
202
+
203
+ execution_result = engine.run(executable, *command, timeout_sec=timeout_sec)
204
+
205
+ return execution_result
@@ -0,0 +1,25 @@
1
+ # This file is part of fm-weck: executing fm-tools in containerized environments.
2
+ # https://gitlab.com/sosy-lab/software/fm-weck
3
+ #
4
+ # SPDX-FileCopyrightText: 2024 Dirk Beyer <https://www.sosy-lab.org>
5
+ #
6
+ # SPDX-License-Identifier: Apache-2.0
7
+
8
+ import yaml
9
+ from tabulate import tabulate
10
+
11
+
12
+ class VersionListing:
13
+ tool_and_version: dict[str, list] = {}
14
+
15
+ def __init__(self, tool_paths: list):
16
+ for tool_path in tool_paths:
17
+ with open(tool_path) as stream:
18
+ tool_data = yaml.safe_load(stream)
19
+
20
+ versions = [version_data["version"] for version_data in tool_data["versions"]]
21
+ self.tool_and_version[tool_data["name"]] = versions
22
+
23
+ def print_versions(self):
24
+ data_list = list(self.tool_and_version.items())
25
+ print(tabulate(data_list, headers=["TOOL", "VERSIONS"], tablefmt="fancy_grid"))
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: fm-weck
3
- Version: 1.4.4
3
+ Version: 1.4.6
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,8 +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: argcomplete
13
14
  Requires-Dist: fm-tools>=0.3.3
14
15
  Requires-Dist: pyyaml>=6.0
16
+ Requires-Dist: tabulate
15
17
  Requires-Dist: tomli>=2.0; python_version <= '3.10'
16
18
  Requires-Dist: yaspin>=3.0
17
19
  Description-Content-Type: text/markdown
@@ -0,0 +1,153 @@
1
+ fm_weck/__init__.py,sha256=DV5C4Bm7M37AnsKAzMOPeyxn9kt_BMFQM69KKWhiOos,351
2
+ fm_weck/__main__.py,sha256=IfNDAqM6MK6P7KsQoW3wOHPOscB8evdVlS9C7R4wd_0,391
3
+ fm_weck/cache_mgr.py,sha256=3-OQFmCeswazXmX08ND4oEHFOR07ZDCwWzjmFTDkOSE,1373
4
+ fm_weck/cli.py,sha256=3XfzaMqh2Bl_Es3n_7Kv80LScJmQdI6et0tcEI_Z2W4,17069
5
+ fm_weck/config.py,sha256=AAp5qPZfx2Gh-43jySzfHzHOEmbduHJalA7guV9SIzI,7340
6
+ fm_weck/engine.py,sha256=PfcjtN-szlpinSFtv1uE0zs_w__GvR8BSlqbz0u6lII,16742
7
+ fm_weck/exceptions.py,sha256=xXxbYK-FZW6YksBtaN79KaA4fGnFCBO-wc0QMqtq3Og,282
8
+ fm_weck/image_mgr.py,sha256=f1RlmQPBiMrsqPyH1Rtfb8WMp2YBq-7z-Rto_kCfS7U,1861
9
+ fm_weck/run_result.py,sha256=b7t_g6qN2GFGPW6cCoLX_BWMSQ_Q-1cca3Fw3lmIB9M,1207
10
+ fm_weck/runexec_mode.py,sha256=vV90CfxwvoR1ApwL4BXq2q_7f8wjSFsS5XQyugDFWMQ,1909
11
+ fm_weck/runexec_util.py,sha256=YBvVIPpmEousZVxbZ5NS8jzpKPLyws31kIFE2z3Ki2E,1370
12
+ fm_weck/serve.py,sha256=JaaOi2ipJbPiATHVcpjXOoE8XyuoWXSFlrKtdfkqjU8,7342
13
+ fm_weck/version_listing.py,sha256=caaoC3n9R-Ao2sEQ_ngOVO3bnKr7cNVeH6EiA8jO5Sc,864
14
+ fm_weck/resources/BenchExec-3.27-py3-none-any.whl,sha256=g-db8LM8HfqLhbnl7n5lvUbMnF2tZ4MHAVOxTGxqO8w,732849
15
+ fm_weck/resources/BenchExec-3.27-py3-none-any.whl.license,sha256=Nq2Mwgn_pyr6ZZrTT095QPtFP3hr15ZeIRIaY0B7eC8,201
16
+ fm_weck/resources/Containerfile,sha256=MltxP1of9klsQFNR8WyngRTJrPwxQTF4C9ennRxVqSo,391
17
+ fm_weck/resources/__init__.py,sha256=XRQiBOncbVvTqZkJ6vSuvu5SUYd3zEV-dGHZTmmLsEM,1023
18
+ fm_weck/resources/run_with_overlay.sh,sha256=v1gV_6kMQ0v9BQ3chgDqI1MAOLHbPWeeTC52aCqVpEM,1162
19
+ fm_weck/resources/runexec,sha256=ogIBO38HLu9C9kDTTANBgAqVnH-UIF1bSJ9d3DSjyF4,462
20
+ fm_weck/resources/properties/coverage-branches.prp,sha256=Gl2r1cgBFoh4M2laa8dVGhteHkL04oiBRLzxz_hbkEU,56
21
+ fm_weck/resources/properties/coverage-branches.prp.license,sha256=KzWZF1bpljIbdvwfzfWoP4DLMq6W1jXNN6WXWF0fxY0,214
22
+ fm_weck/resources/properties/coverage-conditions.prp,sha256=tj307UJBhj-PZqRxjijeNb0foWe2hWIc8CQP54gIUao,57
23
+ fm_weck/resources/properties/coverage-conditions.prp.license,sha256=KzWZF1bpljIbdvwfzfWoP4DLMq6W1jXNN6WXWF0fxY0,214
24
+ fm_weck/resources/properties/coverage-error-call.prp,sha256=ZHzqgYPHix1PINIcpvq2X0QGEKeB9C0fitoV_OPy9IE,61
25
+ fm_weck/resources/properties/coverage-error-call.prp.license,sha256=KzWZF1bpljIbdvwfzfWoP4DLMq6W1jXNN6WXWF0fxY0,214
26
+ fm_weck/resources/properties/coverage-statements.prp,sha256=drb8JyyDwwZ-cxbOyuzzapYIkl3r7sTlooBCavarYl4,59
27
+ fm_weck/resources/properties/coverage-statements.prp.license,sha256=KzWZF1bpljIbdvwfzfWoP4DLMq6W1jXNN6WXWF0fxY0,214
28
+ fm_weck/resources/properties/def-behavior.prp,sha256=MpuBzFOzJA2OpwJFS8HFuSo7E199LOKJNTTwr64Bis0,44
29
+ fm_weck/resources/properties/def-behavior.prp.license,sha256=KzWZF1bpljIbdvwfzfWoP4DLMq6W1jXNN6WXWF0fxY0,214
30
+ fm_weck/resources/properties/no-data-race.prp,sha256=Md-Kd2iEOHeJ00f7w4mpjK7qL8_wdV8jKmoi2gncjLs,43
31
+ fm_weck/resources/properties/no-data-race.prp.license,sha256=KzWZF1bpljIbdvwfzfWoP4DLMq6W1jXNN6WXWF0fxY0,214
32
+ fm_weck/resources/properties/no-overflow.prp,sha256=6C9SIsRmR2zEVWX8OecxGdhRLeYlhDkOsMMFHz1O5gI,42
33
+ fm_weck/resources/properties/no-overflow.prp.license,sha256=KzWZF1bpljIbdvwfzfWoP4DLMq6W1jXNN6WXWF0fxY0,214
34
+ fm_weck/resources/properties/termination.prp,sha256=Hp7ZRB6fd2hRaVeot25TyU6nF7ROZS7e_Gz0tT5ZMfk,35
35
+ fm_weck/resources/properties/termination.prp.license,sha256=KzWZF1bpljIbdvwfzfWoP4DLMq6W1jXNN6WXWF0fxY0,214
36
+ fm_weck/resources/properties/unreach-call.prp,sha256=DGqQz8OtRUUiWgU33cN7ihHqWje5BsBTuymLdI-BAVA,53
37
+ fm_weck/resources/properties/unreach-call.prp.license,sha256=KzWZF1bpljIbdvwfzfWoP4DLMq6W1jXNN6WXWF0fxY0,214
38
+ fm_weck/resources/properties/valid-memcleanup.prp,sha256=2oOe4eCP56QonUGOAeTQ0BCetbT4V31epndKobRxg54,48
39
+ fm_weck/resources/properties/valid-memcleanup.prp.license,sha256=KzWZF1bpljIbdvwfzfWoP4DLMq6W1jXNN6WXWF0fxY0,214
40
+ fm_weck/resources/properties/valid-memsafety.prp,sha256=TUbXRp2ksBzMYK8uZb5mXukRBluuyak3YjwYzWAKc_4,129
41
+ fm_weck/resources/properties/valid-memsafety.prp.license,sha256=KzWZF1bpljIbdvwfzfWoP4DLMq6W1jXNN6WXWF0fxY0,214
42
+ fm_weck/resources/fm_tools/2ls.yml,sha256=39BtjMhYN5wQbGGqJ1Ds1tYISLvTD_r7RYxMtDN-7dA,3916
43
+ fm_weck/resources/fm_tools/aise.yml,sha256=zuzzrM-XuRt1RlsjWeupqN2ydYSiR7PJQSF7Hhfw4Y0,1888
44
+ fm_weck/resources/fm_tools/aprove.yml,sha256=vbYUUb_YCHayyiS1oPCZAwMQyB0RVNzlupbBT1Segas,2431
45
+ fm_weck/resources/fm_tools/blast.yml,sha256=zwPhJN0PfNJo_ZM4a5DNTxKCqc_b0CDaADRf8RlmrVw,1689
46
+ fm_weck/resources/fm_tools/brick.yml,sha256=7mWXlRdc-XiFR2c2wohhuoWHCznmEcnr1i1aLCtcZTk,2007
47
+ fm_weck/resources/fm_tools/bubaak-split.yml,sha256=7hmY5CYgIdQJAXYrpcGwR-3tqDFnQNTemFUforrDojQ,1886
48
+ fm_weck/resources/fm_tools/bubaak.yml,sha256=pcJCljIHYmgEMOdeMp8YQxAURO0WlLQ-FpYlYktQHLw,2171
49
+ fm_weck/resources/fm_tools/cadp.yml,sha256=nJsmaBl4qwLsP_ZKujCY7Gbjc0qWV6FbmErpPPw1f2c,3352
50
+ fm_weck/resources/fm_tools/cbmc.yml,sha256=QfgJxq7aBhRcuQpR1_26wKvumM0H4JH7u3SQ_oXYyBM,2095
51
+ fm_weck/resources/fm_tools/cetfuzz.yml,sha256=4JULcR2E0rM_RhgaFv9x8J34loMwB1uiluIKKcQninw,1808
52
+ fm_weck/resources/fm_tools/coastal.yml,sha256=ebKhmUoTdlCTw6W4jIllpAJ-CSoFfGvaB004fDg17nY,1650
53
+ fm_weck/resources/fm_tools/concurrentwitness2test.yml,sha256=5BwfhoWUjB73W0VBgm56C7chj4jo4QoXhZmRHO59tYQ,2263
54
+ fm_weck/resources/fm_tools/cooperace.yml,sha256=oI5G2GeEHZjAZnkg2rJH0NP4NvV5fLioz2KPd1K7YHo,1136
55
+ fm_weck/resources/fm_tools/coveriteam-verifier-algo-selection.yml,sha256=iTEZlnzfVtDUg-cfDgnebIF9VaJ03m188WIbUt_VcAQ,2159
56
+ fm_weck/resources/fm_tools/coveriteam-verifier-parallel-portfolio.yml,sha256=YaO7dPlUV-ctpHm0jHag39_rWySfQQVUAlqKAUuVUuQ,2143
57
+ fm_weck/resources/fm_tools/coveritest.yml,sha256=BJMeWvHQ1RddlPyaUGnXib7-NzhjQUKvnQcD4naGqbk,3223
58
+ fm_weck/resources/fm_tools/cpa-bam-bnb.yml,sha256=oN3noRPVE68xYeDN1LnvyROypuBEO0ex-GghPp9uMh8,1693
59
+ fm_weck/resources/fm_tools/cpa-bam-smg.yml,sha256=0b-5s1W6jzlVx9b2WXbqhW0yPuYVV5SLpLIi4vFRAk8,1743
60
+ fm_weck/resources/fm_tools/cpa-lockator.yml,sha256=y3PSzB0aQZKB8tID1dxif-EtWNE5s8I3Rmmd-wONjmE,1721
61
+ fm_weck/resources/fm_tools/cpa-witness2test.yml,sha256=5YyhBtMH_-3W9jCOJRpSKM4m-jyXb90XWPVtcP5UqY0,3626
62
+ fm_weck/resources/fm_tools/cpachecker.yml,sha256=RUJKnLrEbmKpWNx8PFqvsbMhHFBQ7myChdYoMiQY0Xk,10708
63
+ fm_weck/resources/fm_tools/cpv.yml,sha256=Q0wlS5l3CYRhNfsZNZDMAgBGZ3bTmdwKc8BhDU5ZZcQ,2481
64
+ fm_weck/resources/fm_tools/crux.yml,sha256=pSWP_AK7E5VZGrq02Unpt_1OCVY8Sf7g4XFPajqubLE,1640
65
+ fm_weck/resources/fm_tools/cseq.yml,sha256=IjAo-HFz-ME7CcY6BtrBeUwHcEY05OQWZzPmqmbnE5U,2025
66
+ fm_weck/resources/fm_tools/dartagnan.yml,sha256=ahDvBL9hUYeo6NCabqL4xAiqUmG4kprftutDhEVV3Oo,4022
67
+ fm_weck/resources/fm_tools/deagle.yml,sha256=f_uEhcm1OOp3ySnbc_KBCKve_3HpAwra9vYVl_s3xNs,2673
68
+ fm_weck/resources/fm_tools/divine.yml,sha256=R_KPU3biFnNzqV6U9GhWMFGQ0FwUCIYB-7ucp-JggE4,1549
69
+ fm_weck/resources/fm_tools/ebf.yml,sha256=nC2YfE6wveiWzaxIb1F_QXnJprKKDJIycZbZ7yogoB4,1661
70
+ fm_weck/resources/fm_tools/emergentheta.yml,sha256=l9iDthVia5XGa7lr51pw7LQyarnzVKgUVaxFWNn9X0I,2360
71
+ fm_weck/resources/fm_tools/esbmc-incr.yml,sha256=ZQzJSvdzVOTsE-ACtfS1bb2OpTSo4pkmoUJz9UorVf0,2326
72
+ fm_weck/resources/fm_tools/esbmc-kind.yml,sha256=3il2Cl3MePUYItGcrS3lEvPHxbVjwRPe4vs-QPUxaUc,3008
73
+ fm_weck/resources/fm_tools/fdse.yml,sha256=VPm7Uu-3JGdo5vCmpFBVH9oIuNktOoss3csZNygteN4,1694
74
+ fm_weck/resources/fm_tools/fizzer.yml,sha256=0T_NLV9cQ_H8aDjRFDHsDWNSAqbKEAQ7zoe5tQke58E,2433
75
+ fm_weck/resources/fm_tools/frama-c-sv.yml,sha256=riDGXuM161kkDKEGXW4EpEpvJ6jD4PLOFClsUg_tk-U,1941
76
+ fm_weck/resources/fm_tools/fshell-witness2test.yml,sha256=evJ_9oCIB4Vzt3Az7jynL7BADaV9U1fKHDKutLyn6EQ,1719
77
+ fm_weck/resources/fm_tools/fusebmc-ia.yml,sha256=lHfdXOdab6QbViEoZVCOpDWmnDmCVruA7QFhByypD2M,2375
78
+ fm_weck/resources/fm_tools/fusebmc.yml,sha256=nZf4dydFZ9rcgg5NUPHxN5QbpzehcTzFd8rywTDWIJk,3502
79
+ fm_weck/resources/fm_tools/gazer-theta.yml,sha256=zsDpcQCTkAbptL_GPsoom95BruxPj7X5LILJgKPM11c,1879
80
+ fm_weck/resources/fm_tools/gdart-llvm.yml,sha256=A1Pn8G0jbGmMRhiGVfpQIe179HJlrV3YGBWSOT8Zjk0,1442
81
+ fm_weck/resources/fm_tools/gdart.yml,sha256=UuZmWONU5kMJtYmq2qgIE4RxnYZwUW62Ym1fW2DqO2E,2656
82
+ fm_weck/resources/fm_tools/goblint.yml,sha256=B5Q43v6nyLodx88XiOgSenKzperRZYeb1nZ97KT37sQ,4182
83
+ fm_weck/resources/fm_tools/graves-par.yml,sha256=GLoBUwv16gQBzrtg5dota5-wbls8Dd_JQWCHKeqsLlE,1462
84
+ fm_weck/resources/fm_tools/graves.yml,sha256=adyp-k_7moQ9pgSeCtEauPOGFIufWoRlQydIRjn0yi0,2269
85
+ fm_weck/resources/fm_tools/gwit.yml,sha256=31k4Js4d3nCqW2uJDQnnfuqJcqfK77C0PuGBhdKMC98,1848
86
+ fm_weck/resources/fm_tools/hornix.yml,sha256=zfJZg09qiueTtyDcZLpWEQDK8GhwfvjfbLI1G_tzUUM,1532
87
+ fm_weck/resources/fm_tools/hybridtiger.yml,sha256=Zh9z-CQwB0tjF94_s4Yw9wnTblYAvumiwPk30-qfe_I,1833
88
+ fm_weck/resources/fm_tools/infer.yml,sha256=sRIzRShUOhY_Y624Oiwdk5MR-c1ligXJdAgLdt-20qk,1884
89
+ fm_weck/resources/fm_tools/java-ranger.yml,sha256=3T1Vq3v_7dBZl3oIgjZjoZVkPK-OGeFzoaxzpn8h4sE,1989
90
+ fm_weck/resources/fm_tools/jayhorn.yml,sha256=4-R_2eBD_RvbY2f6Wsrp0ObssHdEsJT29aYCngYnozY,1994
91
+ fm_weck/resources/fm_tools/jbmc.yml,sha256=4TiAVbUPbccoChPBLmpXxRE1H6NBxqqGUTFt0kMbE_8,2735
92
+ fm_weck/resources/fm_tools/jcwit.yml,sha256=eJ4w5yGTIb_T-n4g5vki8L9Q_OeKHPYE-T4NLm0QZ7k,1297
93
+ fm_weck/resources/fm_tools/jdart.yml,sha256=sxH0f_FOF7xAVOosFvRcaiRwQ6qnELRUo_czqw1Jons,1516
94
+ fm_weck/resources/fm_tools/key.yml,sha256=wse7rCv33m2z8nbm9Dk-jAipkMaF8S0LINGCzfNfpfE,2478
95
+ fm_weck/resources/fm_tools/klee.yml,sha256=XCNXsPLH-AQPw-iDoJBY2QvByUV3QEf4ZipGwBCMu_o,1576
96
+ fm_weck/resources/fm_tools/kleef.yml,sha256=wheoFgTUTk6HzSPKOqHx8mWeVN9HnWupaP9QtPSKyOQ,1634
97
+ fm_weck/resources/fm_tools/korn.yml,sha256=Y4DyRuUJyoMbacDey22GxbTNWuoOonRmiegtFRp3iPw,2829
98
+ fm_weck/resources/fm_tools/lazycseq.yml,sha256=cS3fe0Pmu73iIx7TTs22l3oeH898WvKoDCrP4y0dQXE,1492
99
+ fm_weck/resources/fm_tools/legion-symcc.yml,sha256=mtobhu1AAXXXIGD0ebl9iD96VTauCkdL_ZFJEWrnaY8,1483
100
+ fm_weck/resources/fm_tools/legion.yml,sha256=ClD8_UEJq8wHIEp9_ifhTNKJuNmzvekaQx1BFOj4vlA,1675
101
+ fm_weck/resources/fm_tools/lf-checker.yml,sha256=lV4-GzzNvzWW505FFtYAUHlSG4gxOn-LL4xT8Tpyvq0,1386
102
+ fm_weck/resources/fm_tools/liv.yml,sha256=t0-Rfs0Ot3VPn7DD_pt3VAbyfpUOP8kdYV3E7uN3qGI,3260
103
+ fm_weck/resources/fm_tools/locksmith.yml,sha256=c3wNvIzQ_PZaYv6Mm15QH-Rm4oTuNzILNJs1fssESYQ,1397
104
+ fm_weck/resources/fm_tools/metaval++.yml,sha256=KAOcvftDNLvuHzIKaUoebekeOxBE6DVS2Acq2VbL1Dg,2006
105
+ fm_weck/resources/fm_tools/metaval.yml,sha256=aclr5cfGDuCduSrlk9kLOcK8GaUQAzPtDAxIJHgHs44,4668
106
+ fm_weck/resources/fm_tools/mlb.yml,sha256=S_ykc9ThLHBbMSXOgYIvk81r96cEwXbAXI5lPRDxJ4s,1907
107
+ fm_weck/resources/fm_tools/mopsa.yml,sha256=lOVxyLPoxsyeLhgFGm9X3D4cGrhC6X2jTO4MmyCBHbE,4172
108
+ fm_weck/resources/fm_tools/nacpa.yml,sha256=b59jqHyQGffRCTzGhyEL4zNUGz_Ss-eRw_s7W7MefaY,1417
109
+ fm_weck/resources/fm_tools/nitwit.yml,sha256=pAJXUtI35HqocZhseTqwkYOVis9Iv16C-UstDId4Juo,2097
110
+ fm_weck/resources/fm_tools/owic.yml,sha256=m0fcxyLurCLVFNmfiI0M6giSmsSEOHBdcyYyGbswiG0,1562
111
+ fm_weck/resources/fm_tools/pesco.yml,sha256=s5OOJUMTpoZEAgodj1q5kPrNcgGhQY5Tsk0Vw-4aAyo,2317
112
+ fm_weck/resources/fm_tools/pichecker.yml,sha256=ZNVlm230PlcbYttxwzE0oUUkxSFj_DLlpd7hLZZHr90,1646
113
+ fm_weck/resources/fm_tools/pinaka.yml,sha256=M-2Up2dKb3IJChpjsd1uWbX69bmEN_T4lM5NF0t77t4,1677
114
+ fm_weck/resources/fm_tools/predatorhp.yml,sha256=JjUWrV1u-XSw8bKJ5t371HG4yeAhuXPmZrtjpD3z5Yw,2513
115
+ fm_weck/resources/fm_tools/prism.yml,sha256=ruAG7Yvb_x6BlHzmadNX8M5DsL8ObsOz493g0kKCwL4,2320
116
+ fm_weck/resources/fm_tools/proton.yml,sha256=2iigAhBelOxN8we6NPPBuoGXPIllv6tzNQm1qqG5iM4,1629
117
+ fm_weck/resources/fm_tools/prtest.yml,sha256=ro1WPEA-FjumAOzGqN-5v6qOpx732x2Og4DerD04yEg,2250
118
+ fm_weck/resources/fm_tools/racerf.yml,sha256=6ck8P7i7QC_9Quq-nJxXeP_12ACKJzgV7CJfDT_hfdg,1747
119
+ fm_weck/resources/fm_tools/relay-sv.yml,sha256=rN4kf0EO_xVqzpPlFtWqdNjICjOjU4Uo7_YX9E6OPlo,1237
120
+ fm_weck/resources/fm_tools/rizzer.yml,sha256=ZmVL72-mBTzmMY29I3x5HmSCtQTMbJ0vw2Ucx_xSfnM,1523
121
+ fm_weck/resources/fm_tools/schema.yml,sha256=_SqJzwFGxM0EuuLgcMF-S_hUtoGxaFKraGTfQDUyILY,22945
122
+ fm_weck/resources/fm_tools/sikraken.yml,sha256=WnLxKyl-4zZ8rvXWqLuuqaC8b9GGQDg-jB3798SeK6M,1067
123
+ fm_weck/resources/fm_tools/spf.yml,sha256=6-7306izjPHKcLZ1veQRmGWOVQcsFJbNyL_55JYVQXA,1692
124
+ fm_weck/resources/fm_tools/sv-sanitizers.yml,sha256=tisvbuYRXutJuk-rsqzRJ-3NSMBL29hHjym3eqE4MAI,1431
125
+ fm_weck/resources/fm_tools/svf-svc.yml,sha256=gQ12F7_7uis7fVgsTiNdleKBgydi-BOgS4ne-dRyHvk,1591
126
+ fm_weck/resources/fm_tools/swat.yml,sha256=gsvsFBeItbspzdXVVQ8TFWulbdYHzIHSmcKlWkWxGk0,1684
127
+ fm_weck/resources/fm_tools/symbiotic-witch.yml,sha256=6ND-WISFvJEeyEB3Q-Xu71dZrc_ayr1kAnEzfV3TA84,2421
128
+ fm_weck/resources/fm_tools/symbiotic.yml,sha256=cM7x0UIziMazq355CyZ9qBF0pEOuy4wjE9rmb_QSYE4,5796
129
+ fm_weck/resources/fm_tools/testcov.yml,sha256=UqI_uR1kYckBqiRArFP7sU_HLfu7jUq-GEsJOWgLu0s,5147
130
+ fm_weck/resources/fm_tools/theta.yml,sha256=nZFzCtxfCEATlctK4CAyj_zRnzqlqO_HfsC94df_Lt0,2894
131
+ fm_weck/resources/fm_tools/thorn.yml,sha256=2UuyPi1dKRjXObOVxj7x0joYxPmqDa-e3DZYjfKyweE,1326
132
+ fm_weck/resources/fm_tools/tracerx-wp.yml,sha256=LAfAd3f1u-6ZQ00fNvruqrlmvFVpK_rJV4HWYz7G4DE,2016
133
+ fm_weck/resources/fm_tools/tracerx.yml,sha256=I3r02dWrMEbcXyH2Nvn4skf5cKXjKESrA9boPaSw3ok,2370
134
+ fm_weck/resources/fm_tools/uautomizer.yml,sha256=CwwbVbtbKr5ri4PZ-g1WwUIsDWcnOyeYvRfVNSgrZi0,7604
135
+ fm_weck/resources/fm_tools/ugemcutter.yml,sha256=0APiSLnEt3_kfVHulAker97m4VvFMVFbb7o-fuObBpk,3318
136
+ fm_weck/resources/fm_tools/ukojak.yml,sha256=SRA0xSCBKdDeRDFhhWUDht6FK3MXMQyVzd-dtduHvi8,3041
137
+ fm_weck/resources/fm_tools/ureferee.yml,sha256=eNk0m1x36WSG9Y9-EtobRNoDmdFkAizEACfGAWFv2YY,2391
138
+ fm_weck/resources/fm_tools/utaipan.yml,sha256=oxAUMHHXRv4TWcGoOqkzyKtzKkPhJDBQAdmn1sLW_Gs,3565
139
+ fm_weck/resources/fm_tools/utestgen.yml,sha256=_mefwNOoW2Foa5IytA2fUpIg4gmqbmaXxUgFdiLmOkQ,2457
140
+ fm_weck/resources/fm_tools/vercors.yml,sha256=b7vEyzW61lQ6Dp9od65sUVYRbrQWtosN5p3-MjTXEvg,3190
141
+ fm_weck/resources/fm_tools/veriabs.yml,sha256=N4zCdZnrV8duOjcw1wzavp5oZtz21WShP_Z38tnIsTs,2490
142
+ fm_weck/resources/fm_tools/veriabsl.yml,sha256=4mj2IxMnTFNO7vQzSp5XBT7p32HhRW67Ip1BgZpCzAk,3581
143
+ fm_weck/resources/fm_tools/verifuzz.yml,sha256=1HHtZMkMhUyXxd20R7yXVEqyqOVo_O3G_j3zdSx3z9k,1845
144
+ fm_weck/resources/fm_tools/verioover.yml,sha256=Gjnxl3GYXDmes_nA_J1Jucc6DjfOX8Uz3DjTXiHeerg,1362
145
+ fm_weck/resources/fm_tools/wasp-c.yml,sha256=e2rureVEfS1wClCVknRg1MlatrL3x0fUhYV8A_eUAM8,1595
146
+ fm_weck/resources/fm_tools/wit4java.yml,sha256=ylfze2XbV4zKkVUH57Veqn7G49gW0Byxd5qFRnzs_bw,1861
147
+ fm_weck/resources/fm_tools/witch.yml,sha256=wwe6lrI2sxGKVZbLeipa38rPhB2pcSUFi9uVngtXGUQ,1795
148
+ fm_weck/resources/fm_tools/witnesslint.yml,sha256=EvMBcm5fx6lgSLRmHSKXSxXIJKZ-BrxLwTXI4GQ6FMs,6812
149
+ fm_weck/resources/fm_tools/witnessmap.yml,sha256=FyZtEloxpWBBjLn9kyqoen2kPjOkH2r4fxAj5gfV8Bg,1692
150
+ fm_weck-1.4.6.dist-info/METADATA,sha256=lZPOGSSc4OeZvJ0m5VGGbo25DdX0twG-9rCEfYGE2A0,2822
151
+ fm_weck-1.4.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
152
+ fm_weck-1.4.6.dist-info/entry_points.txt,sha256=toWpKCSY1u593MPnI_xW5gnwlnkerP4AvmPQ1s2nPgY,50
153
+ fm_weck-1.4.6.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.26.3
2
+ Generator: hatchling 1.27.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any