certora-cli-beta-mirror 7.28.0__py3-none-any.whl → 7.29.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.
- certora_cli/CertoraProver/Compiler/CompilerCollectorVy.py +48 -13
- certora_cli/CertoraProver/certoraBuild.py +61 -30
- certora_cli/CertoraProver/certoraBuildDataClasses.py +5 -2
- certora_cli/CertoraProver/certoraBuildRust.py +77 -41
- certora_cli/CertoraProver/certoraCloudIO.py +29 -64
- certora_cli/CertoraProver/certoraCollectConfigurationLayout.py +205 -70
- certora_cli/CertoraProver/certoraCollectRunMetadata.py +3 -1
- certora_cli/CertoraProver/certoraConfigIO.py +14 -15
- certora_cli/CertoraProver/certoraContext.py +13 -5
- certora_cli/CertoraProver/certoraContextAttributes.py +95 -26
- certora_cli/CertoraProver/certoraContextValidator.py +39 -5
- certora_cli/CertoraProver/certoraParseBuildScript.py +7 -10
- certora_cli/CertoraProver/certoraVerifyGenerator.py +12 -0
- certora_cli/CertoraProver/splitRules.py +3 -1
- certora_cli/Mutate/mutateApp.py +3 -3
- certora_cli/Shared/certoraAttrUtil.py +10 -0
- certora_cli/Shared/certoraUtils.py +9 -1
- certora_cli/Shared/certoraValidateFuncs.py +7 -0
- certora_cli/certoraRanger.py +71 -0
- certora_cli/certoraRun.py +11 -13
- certora_cli/certoraSolanaProver.py +7 -0
- certora_cli/certoraSorobanProver.py +253 -4
- certora_cli_beta_mirror-7.29.0.dist-info/LICENSE +15 -0
- {certora_cli_beta_mirror-7.28.0.dist-info → certora_cli_beta_mirror-7.29.0.dist-info}/METADATA +18 -4
- {certora_cli_beta_mirror-7.28.0.dist-info → certora_cli_beta_mirror-7.29.0.dist-info}/RECORD +30 -29
- {certora_cli_beta_mirror-7.28.0.dist-info → certora_cli_beta_mirror-7.29.0.dist-info}/WHEEL +1 -1
- {certora_cli_beta_mirror-7.28.0.dist-info → certora_cli_beta_mirror-7.29.0.dist-info}/entry_points.txt +1 -0
- certora_jars/CERTORA-CLI-VERSION-METADATA.json +1 -1
- certora_jars/Typechecker.jar +0 -0
- certora_cli_beta_mirror-7.28.0.dist-info/LICENSE +0 -22
- {certora_cli_beta_mirror-7.28.0.dist-info → certora_cli_beta_mirror-7.29.0.dist-info}/top_level.txt +0 -0
certora_cli/certoraRun.py
CHANGED
|
@@ -61,13 +61,6 @@ class CertoraFoundViolations(Exception):
|
|
|
61
61
|
super().__init__(message)
|
|
62
62
|
self.results = results
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
class ExitException(Exception):
|
|
66
|
-
def __init__(self, message: str, exit_code: int):
|
|
67
|
-
super().__init__(message)
|
|
68
|
-
self.exit_code = exit_code # Store the integer data
|
|
69
|
-
|
|
70
|
-
|
|
71
64
|
def run_certora(args: List[str], attrs_class: Optional[Type[AttrUtil.Attributes]] = None,
|
|
72
65
|
prover_cmd: Optional[str] = None) -> Optional[CertoraRunResult]:
|
|
73
66
|
"""
|
|
@@ -133,14 +126,18 @@ def run_certora(args: List[str], attrs_class: Optional[Type[AttrUtil.Attributes]
|
|
|
133
126
|
rule_handler = splitRules.SplitRulesHandler(context)
|
|
134
127
|
exit_code = rule_handler.generate_runs()
|
|
135
128
|
CloudVerification(context).print_group_id_url()
|
|
136
|
-
|
|
129
|
+
if exit_code == 0:
|
|
130
|
+
print("Split rules succeeded")
|
|
131
|
+
else:
|
|
132
|
+
raise Util.ExitException("Split rules failed", exit_code)
|
|
137
133
|
|
|
138
134
|
if Attrs.is_rust_app():
|
|
139
135
|
build_rust_app(context)
|
|
140
136
|
|
|
141
137
|
if context.local:
|
|
142
138
|
check_cmd = Ctx.get_local_run_cmd(context)
|
|
143
|
-
|
|
139
|
+
check_cmd_string = " ".join(check_cmd)
|
|
140
|
+
print(f"Verifier run command:\n {check_cmd_string}", flush=True)
|
|
144
141
|
|
|
145
142
|
compare_with_tool_output = False
|
|
146
143
|
run_result = Util.run_jar_cmd(check_cmd, compare_with_tool_output, logger_topic="verification",
|
|
@@ -151,7 +148,7 @@ def run_certora(args: List[str], attrs_class: Optional[Type[AttrUtil.Attributes]
|
|
|
151
148
|
exit_code = 1
|
|
152
149
|
else:
|
|
153
150
|
Util.print_completion_message("Finished running verifier:")
|
|
154
|
-
print(f"\t{
|
|
151
|
+
print(f"\t{check_cmd_string}")
|
|
155
152
|
else:
|
|
156
153
|
validate_version_and_branch(context)
|
|
157
154
|
context.key = Cv.validate_certora_key()
|
|
@@ -196,9 +193,10 @@ def run_certora(args: List[str], attrs_class: Optional[Type[AttrUtil.Attributes]
|
|
|
196
193
|
compare_with_expected_file = Path(context.expected_file).exists()
|
|
197
194
|
|
|
198
195
|
check_cmd = Ctx.get_local_run_cmd(context)
|
|
196
|
+
check_cmd_string = " ".join(check_cmd)
|
|
199
197
|
|
|
200
198
|
# In local mode, this is reserved for Certora devs, so let the script print it
|
|
201
|
-
print(f"Verifier run command:\n {
|
|
199
|
+
print(f"Verifier run command:\n {check_cmd_string}", flush=True)
|
|
202
200
|
run_result = \
|
|
203
201
|
Util.run_jar_cmd(check_cmd, compare_with_expected_file,
|
|
204
202
|
logger_topic="verification", print_output=True)
|
|
@@ -209,7 +207,7 @@ def run_certora(args: List[str], attrs_class: Optional[Type[AttrUtil.Attributes]
|
|
|
209
207
|
exit_code = run_result
|
|
210
208
|
else:
|
|
211
209
|
Util.print_completion_message("Finished running verifier:")
|
|
212
|
-
print(f"\t{
|
|
210
|
+
print(f"\t{check_cmd_string}")
|
|
213
211
|
if compare_with_expected_file:
|
|
214
212
|
print("Comparing tool output to the expected output:")
|
|
215
213
|
output_path = (context.tool_output if context.tool_output else
|
|
@@ -309,7 +307,7 @@ def entry_point() -> None:
|
|
|
309
307
|
Console().print(f"[bold red]\n{e}\n")
|
|
310
308
|
sys.exit(1)
|
|
311
309
|
|
|
312
|
-
except ExitException as e:
|
|
310
|
+
except Util.ExitException as e:
|
|
313
311
|
Console().print(f"[bold red]{e}")
|
|
314
312
|
sys.exit(e.exit_code)
|
|
315
313
|
|
|
@@ -114,6 +114,13 @@ def run_solana_prover(args: List[str]) -> Optional[CertoraRunResult]:
|
|
|
114
114
|
|
|
115
115
|
if context.local:
|
|
116
116
|
check_cmd = Ctx.get_local_run_cmd(context)
|
|
117
|
+
if context.solana_summaries:
|
|
118
|
+
check_cmd.append("-solanaSummaries")
|
|
119
|
+
check_cmd.append(','.join(context.solana_summaries))
|
|
120
|
+
if context.solana_inlining:
|
|
121
|
+
check_cmd.append("-solanaInlining")
|
|
122
|
+
check_cmd.append(','.join(context.solana_inlining))
|
|
123
|
+
|
|
117
124
|
print(f"Verifier run command:\n {check_cmd}", flush=True)
|
|
118
125
|
|
|
119
126
|
compare_with_tool_output = False
|
|
@@ -16,21 +16,270 @@
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
import sys
|
|
19
|
+
import time
|
|
20
|
+
import logging
|
|
19
21
|
from pathlib import Path
|
|
22
|
+
from rich.console import Console
|
|
20
23
|
|
|
21
24
|
scripts_dir_path = Path(__file__).parent.resolve() # containing directory
|
|
22
25
|
sys.path.insert(0, str(scripts_dir_path))
|
|
23
26
|
|
|
27
|
+
from Shared.certoraLogging import LoggingManager
|
|
28
|
+
from Shared import certoraUtils as Util
|
|
29
|
+
from typing import List, Optional, Tuple, Dict
|
|
30
|
+
|
|
31
|
+
import CertoraProver.certoraContext as Ctx
|
|
24
32
|
import CertoraProver.certoraContextAttributes as Attrs
|
|
25
|
-
from
|
|
26
|
-
from
|
|
33
|
+
from CertoraProver import certoraContextValidator as Cv
|
|
34
|
+
from CertoraProver.certoraContextClass import CertoraContext
|
|
35
|
+
from CertoraProver.certoraCollectRunMetadata import collect_run_metadata
|
|
36
|
+
from CertoraProver.certoraCollectConfigurationLayout import collect_configuration_layout
|
|
37
|
+
from CertoraProver.certoraBuildRust import build_rust_app
|
|
38
|
+
from CertoraProver.certoraCloudIO import CloudVerification, validate_version_and_branch
|
|
39
|
+
from certoraRun import CertoraRunResult, VIOLATIONS_EXIT_CODE, CertoraFoundViolations
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
run_logger = logging.getLogger("run")
|
|
43
|
+
|
|
44
|
+
def setup_environment(args: List[str]) -> Tuple[CertoraContext, LoggingManager]:
|
|
45
|
+
"""
|
|
46
|
+
Setup the environment for running the prover.
|
|
47
|
+
This includes:
|
|
48
|
+
1. Setting up the logging manager
|
|
49
|
+
2. Parsing the arguments
|
|
50
|
+
3. Setting up the context
|
|
51
|
+
"""
|
|
52
|
+
Attrs.set_attribute_class(Attrs.SorobanProverAttributes)
|
|
53
|
+
non_str_els = [x for x in args if not isinstance(x, str)]
|
|
54
|
+
if non_str_els:
|
|
55
|
+
print(f"args for run_certora that are not strings: {non_str_els}")
|
|
56
|
+
exit(1)
|
|
57
|
+
|
|
58
|
+
# If we are not in debug mode, we do not want to print the traceback in case of exceptions.
|
|
59
|
+
if '--debug' not in args: # We check manually, because we want no traceback in argument parsing exceptions
|
|
60
|
+
sys.tracebacklimit = 0
|
|
61
|
+
|
|
62
|
+
# creating the default internal dir, files may be copied to user defined build directory after
|
|
63
|
+
# parsing the input
|
|
64
|
+
|
|
65
|
+
if not ('--help' in args or '--version' in args):
|
|
66
|
+
Util.reset_certora_internal_dir()
|
|
67
|
+
Util.safe_create_dir(Util.get_build_dir())
|
|
68
|
+
logging_manager = LoggingManager()
|
|
69
|
+
|
|
70
|
+
Ctx.handle_flags_in_args(args)
|
|
71
|
+
context = Ctx.get_args(args) # Parse arguments
|
|
72
|
+
|
|
73
|
+
assert logging_manager, "logging manager was not set"
|
|
74
|
+
logging_manager.set_log_level_and_format(is_quiet=Ctx.is_minimal_cli_output(context),
|
|
75
|
+
debug=context.debug,
|
|
76
|
+
debug_topics=context.debug_topics,
|
|
77
|
+
show_debug_topics=context.show_debug_topics)
|
|
78
|
+
|
|
79
|
+
return context, logging_manager
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def collect_and_validate_metadata(context: CertoraContext) -> None:
|
|
83
|
+
"""
|
|
84
|
+
Collect and validate run metadata.
|
|
85
|
+
|
|
86
|
+
Args:
|
|
87
|
+
context: The Certora context containing verification settings
|
|
88
|
+
|
|
89
|
+
Raises:
|
|
90
|
+
Util.TestResultsReady: If this is a metadata test run
|
|
91
|
+
"""
|
|
92
|
+
metadata = collect_run_metadata(wd=Path.cwd(), raw_args=sys.argv, context=context)
|
|
93
|
+
|
|
94
|
+
if context.test == str(Util.TestValue.CHECK_METADATA):
|
|
95
|
+
raise Util.TestResultsReady(metadata)
|
|
96
|
+
|
|
97
|
+
metadata.dump()
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def collect_and_dump(context: CertoraContext) -> None:
|
|
101
|
+
"""
|
|
102
|
+
Collect and dump the configuration layout.
|
|
103
|
+
|
|
104
|
+
Args:
|
|
105
|
+
context: The Certora context containing verification settings
|
|
106
|
+
|
|
107
|
+
Raises:
|
|
108
|
+
Util.TestResultsReady: If this is a configuration layout test run
|
|
109
|
+
"""
|
|
110
|
+
configuration_layout = collect_configuration_layout()
|
|
111
|
+
|
|
112
|
+
if context.test == str(Util.TestValue.CHECK_CONFIG_LAYOUT):
|
|
113
|
+
raise Util.TestResultsReady(configuration_layout)
|
|
114
|
+
|
|
115
|
+
configuration_layout.dump()
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def build_project(context: CertoraContext) -> Dict:
|
|
119
|
+
"""
|
|
120
|
+
Build the Rust application.
|
|
121
|
+
|
|
122
|
+
Args:
|
|
123
|
+
context: The Certora context containing build settings
|
|
124
|
+
|
|
125
|
+
Returns:
|
|
126
|
+
Dict: Timing information for the build process
|
|
127
|
+
|
|
128
|
+
Raises:
|
|
129
|
+
Util.TestResultsReady: If this is a build test run
|
|
130
|
+
"""
|
|
131
|
+
timings = {}
|
|
132
|
+
run_logger.debug("Build Soroban target")
|
|
133
|
+
|
|
134
|
+
build_start = time.perf_counter()
|
|
135
|
+
build_rust_app(context)
|
|
136
|
+
build_end = time.perf_counter()
|
|
137
|
+
|
|
138
|
+
timings["buildTime"] = round(build_end - build_start, 4)
|
|
139
|
+
|
|
140
|
+
if context.test == str(Util.TestValue.AFTER_BUILD):
|
|
141
|
+
raise Util.TestResultsReady(context)
|
|
142
|
+
|
|
143
|
+
return timings
|
|
144
|
+
|
|
145
|
+
def run_local_verification(context: CertoraContext) -> int:
|
|
146
|
+
"""
|
|
147
|
+
Run verification locally.
|
|
148
|
+
|
|
149
|
+
Args:
|
|
150
|
+
context: The Certora context containing verification settings
|
|
151
|
+
|
|
152
|
+
Returns:
|
|
153
|
+
int: Exit code (0 for success, non-zero for failure)
|
|
154
|
+
"""
|
|
155
|
+
check_cmd = Ctx.get_local_run_cmd(context)
|
|
156
|
+
run_logger.info(f"Verifier run command:\n {check_cmd}")
|
|
157
|
+
|
|
158
|
+
run_result = Util.run_jar_cmd(
|
|
159
|
+
check_cmd, override_exit_code=False, logger_topic="verification", print_output=True
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
if run_result == 0:
|
|
163
|
+
Util.print_completion_message("Finished running verifier:")
|
|
164
|
+
run_logger.info(f"\t{check_cmd}")
|
|
165
|
+
return 0
|
|
166
|
+
else:
|
|
167
|
+
return 1
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def run_cloud_verification(context: CertoraContext, args: List[str],
|
|
171
|
+
timings: dict) -> Tuple[int, Optional[CertoraRunResult]]:
|
|
172
|
+
"""
|
|
173
|
+
Run verification in the cloud.
|
|
174
|
+
|
|
175
|
+
Args:
|
|
176
|
+
context: The Certora context containing verification settings
|
|
177
|
+
args: Command line arguments
|
|
178
|
+
timings: Dict containing timing information
|
|
179
|
+
|
|
180
|
+
Returns:
|
|
181
|
+
Tuple[int, Optional[CertoraRunResult]]: Exit code and result object
|
|
182
|
+
"""
|
|
183
|
+
if context.compilation_steps_only:
|
|
184
|
+
return 0, CertoraRunResult(None, False, Util.get_certora_sources_dir(), None)
|
|
185
|
+
|
|
186
|
+
context.key = Cv.validate_certora_key()
|
|
187
|
+
cloud_verifier = CloudVerification(context, timings)
|
|
188
|
+
|
|
189
|
+
# Wrap strings with space with ' so it can be copied and pasted to shell
|
|
190
|
+
pretty_args = [f"'{arg}'" if ' ' in arg else arg for arg in args]
|
|
191
|
+
cl_args = ' '.join(pretty_args)
|
|
192
|
+
|
|
193
|
+
exit_code = 0
|
|
194
|
+
return_value = None
|
|
195
|
+
|
|
196
|
+
if not cloud_verifier.cli_verify_and_report(cl_args, context.wait_for_results):
|
|
197
|
+
exit_code = VIOLATIONS_EXIT_CODE
|
|
198
|
+
|
|
199
|
+
if cloud_verifier.statusUrl:
|
|
200
|
+
return_value = CertoraRunResult(
|
|
201
|
+
cloud_verifier.statusUrl, False,
|
|
202
|
+
Util.get_certora_sources_dir(), cloud_verifier.reportUrl
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
return exit_code, return_value
|
|
27
206
|
|
|
28
207
|
|
|
29
208
|
def run_soroban_prover(args: List[str]) -> Optional[CertoraRunResult]:
|
|
30
|
-
|
|
209
|
+
"""
|
|
210
|
+
The main function that is responsible for the general flow of the script.
|
|
211
|
+
The general flow is:
|
|
212
|
+
1. Parse program arguments
|
|
213
|
+
2. Run the necessary steps (build/ cloud verification/ local verification)
|
|
214
|
+
"""
|
|
215
|
+
|
|
216
|
+
context, logging_manager = setup_environment(args)
|
|
217
|
+
timings = {}
|
|
218
|
+
exit_code = 0 # The exit code of the script. 0 means success, any other number is an error.
|
|
219
|
+
return_value = None
|
|
220
|
+
|
|
221
|
+
# Collect and validate metadata and configuration layout
|
|
222
|
+
collect_and_validate_metadata(context)
|
|
223
|
+
collect_and_dump(context)
|
|
224
|
+
|
|
225
|
+
# Version validation
|
|
226
|
+
if not context.local and not context.build_only and not context.compilation_steps_only:
|
|
227
|
+
"""
|
|
228
|
+
The line below will raise an exception if the local version is incompatible.
|
|
229
|
+
"""
|
|
230
|
+
validate_version_and_branch(context)
|
|
231
|
+
|
|
232
|
+
# Build the application
|
|
233
|
+
timings.update(build_project(context))
|
|
234
|
+
|
|
235
|
+
# Run verification if requested
|
|
236
|
+
if not context.build_only:
|
|
237
|
+
|
|
238
|
+
if context.local:
|
|
239
|
+
exit_code = run_local_verification(context)
|
|
240
|
+
else:
|
|
241
|
+
# Remove debug logger before running cloud verification
|
|
242
|
+
logging_manager.remove_debug_logger()
|
|
243
|
+
exit_code, return_value = run_cloud_verification(context, args, timings)
|
|
244
|
+
|
|
245
|
+
# Handle exit codes and return
|
|
246
|
+
if exit_code == VIOLATIONS_EXIT_CODE:
|
|
247
|
+
raise CertoraFoundViolations("violations were found", return_value)
|
|
248
|
+
if exit_code != 0:
|
|
249
|
+
raise Util.CertoraUserInputError(f"certoraSorobanProver failed (code {exit_code})")
|
|
250
|
+
return return_value
|
|
251
|
+
|
|
31
252
|
|
|
32
253
|
def entry_point() -> None:
|
|
33
|
-
|
|
254
|
+
"""
|
|
255
|
+
This function is the entry point of the certora_cli customer-facing package, as well as this script.
|
|
256
|
+
It is important this function gets no arguments!
|
|
257
|
+
"""
|
|
258
|
+
try:
|
|
259
|
+
run_soroban_prover(sys.argv[1:])
|
|
260
|
+
sys.exit(0)
|
|
261
|
+
except KeyboardInterrupt:
|
|
262
|
+
Console().print("[bold red]\nInterrupted by user")
|
|
263
|
+
sys.exit(1)
|
|
264
|
+
except CertoraFoundViolations as e:
|
|
265
|
+
try:
|
|
266
|
+
if e.results and e.results.rule_report_link:
|
|
267
|
+
print(f"report url: {e.results.rule_report_link}")
|
|
268
|
+
except Exception:
|
|
269
|
+
pass
|
|
270
|
+
Console().print("[bold red]\nViolations were found\n")
|
|
271
|
+
sys.exit(1)
|
|
272
|
+
except Util.CertoraUserInputError as e:
|
|
273
|
+
if e.orig:
|
|
274
|
+
print(f"\n{str(e.orig).strip()}")
|
|
275
|
+
if e.more_info:
|
|
276
|
+
print(f"\n{e.more_info.strip()}")
|
|
277
|
+
Console().print(f"[bold red]\n{e}\n")
|
|
278
|
+
sys.exit(1)
|
|
279
|
+
except Exception as e:
|
|
280
|
+
Console().print(f"[bold red]{e}")
|
|
281
|
+
sys.exit(1)
|
|
282
|
+
|
|
34
283
|
|
|
35
284
|
if __name__ == '__main__':
|
|
36
285
|
entry_point()
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
The Certora Prover
|
|
3
|
+
Copyright (C) 2025 Certora Ltd.
|
|
4
|
+
|
|
5
|
+
This program is free software: you can redistribute it and/or modify
|
|
6
|
+
it under the terms of the GNU General Public License as published by
|
|
7
|
+
the Free Software Foundation, version 3 of the License.
|
|
8
|
+
|
|
9
|
+
This program is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY, without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR a PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
{certora_cli_beta_mirror-7.28.0.dist-info → certora_cli_beta_mirror-7.29.0.dist-info}/METADATA
RENAMED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: certora-cli-beta-mirror
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.29.0
|
|
4
4
|
Summary: Runner for the Certora Prover
|
|
5
5
|
Home-page: https://pypi.org/project/certora-cli-beta-mirror
|
|
6
6
|
Author: Certora
|
|
7
7
|
Author-email: support@certora.com
|
|
8
|
+
License: GPL-3.0-only
|
|
9
|
+
Project-URL: Documentation, https://docs.certora.com/en/latest/
|
|
10
|
+
Project-URL: Source, https://github.com/Certora/CertoraProver
|
|
8
11
|
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Classifier: License :: OSI Approved ::
|
|
12
|
+
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
10
13
|
Classifier: Operating System :: OS Independent
|
|
11
14
|
Requires-Python: >=3.8
|
|
12
15
|
Description-Content-Type: text/markdown
|
|
@@ -22,5 +25,16 @@ Requires-Dist: tqdm
|
|
|
22
25
|
Requires-Dist: StrEnum
|
|
23
26
|
Requires-Dist: universalmutator
|
|
24
27
|
Requires-Dist: jinja2
|
|
28
|
+
Dynamic: author
|
|
29
|
+
Dynamic: author-email
|
|
30
|
+
Dynamic: classifier
|
|
31
|
+
Dynamic: description
|
|
32
|
+
Dynamic: description-content-type
|
|
33
|
+
Dynamic: home-page
|
|
34
|
+
Dynamic: license
|
|
35
|
+
Dynamic: project-url
|
|
36
|
+
Dynamic: requires-dist
|
|
37
|
+
Dynamic: requires-python
|
|
38
|
+
Dynamic: summary
|
|
25
39
|
|
|
26
|
-
Commit
|
|
40
|
+
Commit 3f35845. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
|
{certora_cli_beta_mirror-7.28.0.dist-info → certora_cli_beta_mirror-7.29.0.dist-info}/RECORD
RENAMED
|
@@ -3,40 +3,41 @@ certora_cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
3
3
|
certora_cli/certoraEVMProver.py,sha256=12qxurzLtv0sS0NbHYY8yVlE0C7hvXRep2UyA0rCXyQ,1243
|
|
4
4
|
certora_cli/certoraEqCheck.py,sha256=qfZq7bpU1kbAIezC66W61VfKNZz7Uywg2Ygup62qYeo,1069
|
|
5
5
|
certora_cli/certoraMutate.py,sha256=XhFHyNVP_sk-3XkY6AAV5fVliEFAVRq-JeDGsqE5IQQ,3333
|
|
6
|
-
certora_cli/
|
|
7
|
-
certora_cli/
|
|
8
|
-
certora_cli/
|
|
6
|
+
certora_cli/certoraRanger.py,sha256=dJ49hGmHkED9-3wRw14Z8qPWeCP4DYPJAqPQKi52N1U,2302
|
|
7
|
+
certora_cli/certoraRun.py,sha256=IGAYmf-KiM0TJuVQQ6-KaZQQBFe0aJGnso9MpPXHL0Q,13981
|
|
8
|
+
certora_cli/certoraSolanaProver.py,sha256=UjXcnauGwJLY9pdqnjwrq26kOtAJT_qIHRVFVuOxAf0,7803
|
|
9
|
+
certora_cli/certoraSorobanProver.py,sha256=4PW4CxWNDArjIH3FDriFwC7ZJv0BKpeBjGuGJxtCy74,9608
|
|
9
10
|
certora_cli/rustMutator.py,sha256=6AvOGU8Ijz89zW_ZJCWlfXkeobJsk7EsqZhK7Eqwn-Y,14544
|
|
10
11
|
certora_cli/CertoraProver/__init__.py,sha256=QHNr-PJQAoyuPgTkO7gg23GRchiWSXglWNG7yLSQZvs,849
|
|
11
|
-
certora_cli/CertoraProver/certoraBuild.py,sha256=
|
|
12
|
+
certora_cli/CertoraProver/certoraBuild.py,sha256=JRZ4CrEhSPmNZTTw_vcL_kcJijKTaaB0MHj9RXBHEyM,206914
|
|
12
13
|
certora_cli/CertoraProver/certoraBuildCacheManager.py,sha256=dzXC8A-V9gr1GGsPYglQLlFLoR2Tk4dTJuMHaxXBfgw,13257
|
|
13
|
-
certora_cli/CertoraProver/certoraBuildDataClasses.py,sha256=
|
|
14
|
-
certora_cli/CertoraProver/certoraBuildRust.py,sha256=
|
|
15
|
-
certora_cli/CertoraProver/certoraCloudIO.py,sha256=
|
|
16
|
-
certora_cli/CertoraProver/certoraCollectConfigurationLayout.py,sha256=
|
|
17
|
-
certora_cli/CertoraProver/certoraCollectRunMetadata.py,sha256=
|
|
14
|
+
certora_cli/CertoraProver/certoraBuildDataClasses.py,sha256=8tPny9-pasC7CCRKQclaVQ3qcEDNa6EdOUu1ZWh0MZY,14704
|
|
15
|
+
certora_cli/CertoraProver/certoraBuildRust.py,sha256=aX2P19P3htb_-X0-CuZjjYdAd3m7UVxwFxg5r6iS2-k,6518
|
|
16
|
+
certora_cli/CertoraProver/certoraCloudIO.py,sha256=FIwM6SO-f4HbWj78Z9kcVMQw0N98XhbBiOiexSWN8aw,53250
|
|
17
|
+
certora_cli/CertoraProver/certoraCollectConfigurationLayout.py,sha256=waMo5_nzirDaK7aoPCfoS7jOqqi_6huRc-_jTrDcZO8,14252
|
|
18
|
+
certora_cli/CertoraProver/certoraCollectRunMetadata.py,sha256=n67E7hjVdPlBXMh1FMzcWSgu3v5SfFM_HOO2JpbCeY0,11787
|
|
18
19
|
certora_cli/CertoraProver/certoraCompilerParameters.py,sha256=r35y03IRwWIoz1GCNC7PuW3n8JPz9J1NGwhwUYKdYtI,1452
|
|
19
|
-
certora_cli/CertoraProver/certoraConfigIO.py,sha256=
|
|
20
|
-
certora_cli/CertoraProver/certoraContext.py,sha256=
|
|
21
|
-
certora_cli/CertoraProver/certoraContextAttributes.py,sha256=
|
|
20
|
+
certora_cli/CertoraProver/certoraConfigIO.py,sha256=H3ebbIBO8xXTf8ArBPnZV1TmDBExQVDF2zc9Yu1v0Xo,7493
|
|
21
|
+
certora_cli/CertoraProver/certoraContext.py,sha256=trrOxYutHtSqg3ePwHecRBs3_derI5jPcNCWP_Ucm5I,25598
|
|
22
|
+
certora_cli/CertoraProver/certoraContextAttributes.py,sha256=NKFbn9hgEQvZig2rgsfbvE-ppsYJHwHYUrkMZKpuGcI,67763
|
|
22
23
|
certora_cli/CertoraProver/certoraContextClass.py,sha256=d7HDqM72K7YnswR7kEcAHGwkFNrTqRz5-_0m7cl2Mso,900
|
|
23
|
-
certora_cli/CertoraProver/certoraContextValidator.py,sha256=
|
|
24
|
+
certora_cli/CertoraProver/certoraContextValidator.py,sha256=3y8SGRJko0LW-D8HlWygcSSH6uyBKwwGY_jo8-puN_Q,46075
|
|
24
25
|
certora_cli/CertoraProver/certoraContractFuncs.py,sha256=ipSwge5QQzp8qhUavY44bZ-eCR6szK_HWwSIWqQyuR0,6921
|
|
25
26
|
certora_cli/CertoraProver/certoraExtensionInfo.py,sha256=YlShzdoqJQgXXj3r0TJ3fir1KntIR99Rk8JN5qii2lk,2026
|
|
26
27
|
certora_cli/CertoraProver/certoraJobList.py,sha256=FBIYgJ60I0Ok7vchfTbcuJJbiXgnfAhrONoVeZoHti4,11464
|
|
27
28
|
certora_cli/CertoraProver/certoraMiniSpecParser.py,sha256=NjjMwf5Rav3YWpoOJh4PZ-QOS8exC2cg4yIBSbZA6l0,9660
|
|
28
29
|
certora_cli/CertoraProver/certoraNodeFilters.py,sha256=5Uk2mixZKeis_JVd3HkLgoEVklkAYBXAZiNHRlXOIfY,2830
|
|
29
|
-
certora_cli/CertoraProver/certoraParseBuildScript.py,sha256=
|
|
30
|
+
certora_cli/CertoraProver/certoraParseBuildScript.py,sha256=V_2lqlDnwdkXJzpdvXiMuOyupdrDTZnOyHKshm-_3rQ,4850
|
|
30
31
|
certora_cli/CertoraProver/certoraProjectScanner.py,sha256=jT7FeWzcy8o83LrZRwsg_L4x6im6Fm_0LZFKVbKr3Jk,6862
|
|
31
32
|
certora_cli/CertoraProver/certoraSourceFinders.py,sha256=qwJtwrQq3NUNYmdmn1UmANN4lmJFIUh4M-St2x1FJ2Y,19038
|
|
32
33
|
certora_cli/CertoraProver/certoraType.py,sha256=wD-Sr3xk_dJGtbvw33oIGu_lf15NCZuKWjUb4HlVcUM,29318
|
|
33
|
-
certora_cli/CertoraProver/certoraVerifyGenerator.py,sha256=
|
|
34
|
-
certora_cli/CertoraProver/splitRules.py,sha256=
|
|
34
|
+
certora_cli/CertoraProver/certoraVerifyGenerator.py,sha256=nZlSuw57oLwPKj4ec3Kn9q05PevaYd3ZD1O8FTSjZn4,10825
|
|
35
|
+
certora_cli/CertoraProver/splitRules.py,sha256=HfSqsKeeLZDeOnv8TGgpPDHoaXgdVc0HOrLcGk-cU1Q,7681
|
|
35
36
|
certora_cli/CertoraProver/Compiler/CompilerCollector.py,sha256=cr-PIl7LY9VfNs4s4H3-EnSnomPiCgXudfwP9-KenMk,6740
|
|
36
37
|
certora_cli/CertoraProver/Compiler/CompilerCollectorFactory.py,sha256=L-LAH0UU7gB7wYvCcXrwdtLGpBI8MX3rPts0ufQ-X9s,8157
|
|
37
38
|
certora_cli/CertoraProver/Compiler/CompilerCollectorSol.py,sha256=7nAY2FLMUlGJn4f_YoZMqpa3rf7THqhJVjLwTaChcBc,5027
|
|
38
39
|
certora_cli/CertoraProver/Compiler/CompilerCollectorSolBased.py,sha256=UasYWyu8Of6R84vXsqRNGpscYcFQghmSIY_dyaAWDYA,1350
|
|
39
|
-
certora_cli/CertoraProver/Compiler/CompilerCollectorVy.py,sha256=
|
|
40
|
+
certora_cli/CertoraProver/Compiler/CompilerCollectorVy.py,sha256=e95xOHK5Bz8BbzjbCVLCrGSutVs8ejqOImh5wH9o3Jk,69918
|
|
40
41
|
certora_cli/CertoraProver/Compiler/CompilerCollectorYul.py,sha256=El4WYJZVp3DpXQMZ53yVDPKOWPda5oLs3yD1qhb7dAE,5177
|
|
41
42
|
certora_cli/CertoraProver/Compiler/__init__.py,sha256=tEFAmNyx9WL0kzpp_-4s7b6pLvxHmBWz6pQAq0yeROM,789
|
|
42
43
|
certora_cli/EquivalenceCheck/Eq_default.conf,sha256=p9b8_cPnU41dVBrd8ry16H4x75TNp16HdJdmQeMuVxw,186
|
|
@@ -48,23 +49,23 @@ certora_cli/EquivalenceCheck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
|
48
49
|
certora_cli/EquivalenceCheck/equivCheck.py,sha256=D3TA1DRppaXpEcVW_smqMQzeUle0jPu0wIXXEd5un0U,20620
|
|
49
50
|
certora_cli/EquivalenceCheck/sanity.spec,sha256=tWmE9z2Sq3_SWaqKDRQaNajRrw94maUrirvoUmX89LE,103
|
|
50
51
|
certora_cli/Mutate/__init__.py,sha256=QHNr-PJQAoyuPgTkO7gg23GRchiWSXglWNG7yLSQZvs,849
|
|
51
|
-
certora_cli/Mutate/mutateApp.py,sha256=
|
|
52
|
+
certora_cli/Mutate/mutateApp.py,sha256=Fm-ThWbJFrq_UCBc7cKobdLnBhD2K_ndqrSm7gyQVx4,87631
|
|
52
53
|
certora_cli/Mutate/mutateAttributes.py,sha256=brsoisPowxpxQxN_-y0NDvsv8feoHONhtlOayXaLDdk,10092
|
|
53
54
|
certora_cli/Mutate/mutateConstants.py,sha256=LRrz3wMM8WpPYSshkc-PLYqT0nexcWQeBNsehip-LOE,3945
|
|
54
55
|
certora_cli/Mutate/mutateUtil.py,sha256=B7MCIFtZBetjR4MMxU6F5ikYsaot1wTG7XYMjgVXl4k,2287
|
|
55
56
|
certora_cli/Mutate/mutateValidate.py,sha256=9mWzR1zd9N_k78IH9MkvnTzUWb1xPdW086b2-lpi4mQ,7437
|
|
56
57
|
certora_cli/Shared/ExpectedComparator.py,sha256=eyRR-jni4WJoa6j2TK2lnZ89Tyb8U99wT2PNdu4se8w,18457
|
|
57
58
|
certora_cli/Shared/__init__.py,sha256=s0dhvolFtsS4sRNzPVhC_rlw8mm194rCZ0WhOxInY40,1025
|
|
58
|
-
certora_cli/Shared/certoraAttrUtil.py,sha256=
|
|
59
|
+
certora_cli/Shared/certoraAttrUtil.py,sha256=ZsoS6xbSZnAjEoPEcfiJi6CvHU-1ySBKubvVKh78ohs,8373
|
|
59
60
|
certora_cli/Shared/certoraLogging.py,sha256=cV2UQMhQ5j8crGXgeq9CEamI-Lk4HgdiA3HCrP-kSR4,14013
|
|
60
|
-
certora_cli/Shared/certoraUtils.py,sha256=
|
|
61
|
-
certora_cli/Shared/certoraValidateFuncs.py,sha256=
|
|
62
|
-
certora_jars/CERTORA-CLI-VERSION-METADATA.json,sha256=
|
|
63
|
-
certora_jars/Typechecker.jar,sha256=
|
|
61
|
+
certora_cli/Shared/certoraUtils.py,sha256=khp1BAlpW0WwMq92u887R05nPDqWAnLkY1kVk2ZT0Ek,55147
|
|
62
|
+
certora_cli/Shared/certoraValidateFuncs.py,sha256=WG4UiyES8u49o3XmuRIvNf79rcpWFuCKtV__QUptOEQ,41852
|
|
63
|
+
certora_jars/CERTORA-CLI-VERSION-METADATA.json,sha256=zvqXLfv-KL122-QtVCLQiMEsMynQdGQA-zYMeHDSptY,146
|
|
64
|
+
certora_jars/Typechecker.jar,sha256=sfV9EGc2AevkWfAopmcelJvbhtazZWYF52JmbmZ8r_Y,16968728
|
|
64
65
|
certora_jars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
|
-
certora_cli_beta_mirror-7.
|
|
66
|
-
certora_cli_beta_mirror-7.
|
|
67
|
-
certora_cli_beta_mirror-7.
|
|
68
|
-
certora_cli_beta_mirror-7.
|
|
69
|
-
certora_cli_beta_mirror-7.
|
|
70
|
-
certora_cli_beta_mirror-7.
|
|
66
|
+
certora_cli_beta_mirror-7.29.0.dist-info/LICENSE,sha256=UGKSKIJSetF8m906JLKqNLkUS2CL60XfQdNvxBvpQXo,620
|
|
67
|
+
certora_cli_beta_mirror-7.29.0.dist-info/METADATA,sha256=31Q-oxltoa2dRPa1cORu6majmrBk6w4GJjj-R7myGCk,1231
|
|
68
|
+
certora_cli_beta_mirror-7.29.0.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
|
69
|
+
certora_cli_beta_mirror-7.29.0.dist-info/entry_points.txt,sha256=_SQ5_uYOAJXtqEW992nIvq7blW9cWFSUVEdbMGuy--4,443
|
|
70
|
+
certora_cli_beta_mirror-7.29.0.dist-info/top_level.txt,sha256=8C77w3JLanY0-NW45vpJsjRssyCqVP-qmPiN9FjWiX4,38
|
|
71
|
+
certora_cli_beta_mirror-7.29.0.dist-info/RECORD,,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
certoraEVMProver = certora_cli.certoraEVMProver:entry_point
|
|
3
3
|
certoraEqCheck = certora_cli.certoraEqCheck:equiv_check_entry_point
|
|
4
4
|
certoraMutate = certora_cli.certoraMutate:mutate_entry_point
|
|
5
|
+
certoraRanger = certora_cli.certoraRanger:entry_point
|
|
5
6
|
certoraRun = certora_cli.certoraRun:entry_point
|
|
6
7
|
certoraSolanaProver = certora_cli.certoraSolanaProver:entry_point
|
|
7
8
|
certoraSorobanProver = certora_cli.certoraSorobanProver:entry_point
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name": "certora-cli-beta-mirror", "tag": "7.
|
|
1
|
+
{"name": "certora-cli-beta-mirror", "tag": "7.29.0", "branch": "", "commit": "3f35845", "timestamp": "20250508.13.19.941262", "version": "7.29.0"}
|
certora_jars/Typechecker.jar
CHANGED
|
Binary file
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
MIT License
|
|
3
|
-
|
|
4
|
-
Copyright (c) 2025 Certora
|
|
5
|
-
|
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
in the Software without restriction, including without limitation the rights
|
|
9
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
furnished to do so, subject to the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
SOFTWARE.
|
{certora_cli_beta_mirror-7.28.0.dist-info → certora_cli_beta_mirror-7.29.0.dist-info}/top_level.txt
RENAMED
|
File without changes
|