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.
Files changed (31) hide show
  1. certora_cli/CertoraProver/Compiler/CompilerCollectorVy.py +48 -13
  2. certora_cli/CertoraProver/certoraBuild.py +61 -30
  3. certora_cli/CertoraProver/certoraBuildDataClasses.py +5 -2
  4. certora_cli/CertoraProver/certoraBuildRust.py +77 -41
  5. certora_cli/CertoraProver/certoraCloudIO.py +29 -64
  6. certora_cli/CertoraProver/certoraCollectConfigurationLayout.py +205 -70
  7. certora_cli/CertoraProver/certoraCollectRunMetadata.py +3 -1
  8. certora_cli/CertoraProver/certoraConfigIO.py +14 -15
  9. certora_cli/CertoraProver/certoraContext.py +13 -5
  10. certora_cli/CertoraProver/certoraContextAttributes.py +95 -26
  11. certora_cli/CertoraProver/certoraContextValidator.py +39 -5
  12. certora_cli/CertoraProver/certoraParseBuildScript.py +7 -10
  13. certora_cli/CertoraProver/certoraVerifyGenerator.py +12 -0
  14. certora_cli/CertoraProver/splitRules.py +3 -1
  15. certora_cli/Mutate/mutateApp.py +3 -3
  16. certora_cli/Shared/certoraAttrUtil.py +10 -0
  17. certora_cli/Shared/certoraUtils.py +9 -1
  18. certora_cli/Shared/certoraValidateFuncs.py +7 -0
  19. certora_cli/certoraRanger.py +71 -0
  20. certora_cli/certoraRun.py +11 -13
  21. certora_cli/certoraSolanaProver.py +7 -0
  22. certora_cli/certoraSorobanProver.py +253 -4
  23. certora_cli_beta_mirror-7.29.0.dist-info/LICENSE +15 -0
  24. {certora_cli_beta_mirror-7.28.0.dist-info → certora_cli_beta_mirror-7.29.0.dist-info}/METADATA +18 -4
  25. {certora_cli_beta_mirror-7.28.0.dist-info → certora_cli_beta_mirror-7.29.0.dist-info}/RECORD +30 -29
  26. {certora_cli_beta_mirror-7.28.0.dist-info → certora_cli_beta_mirror-7.29.0.dist-info}/WHEEL +1 -1
  27. {certora_cli_beta_mirror-7.28.0.dist-info → certora_cli_beta_mirror-7.29.0.dist-info}/entry_points.txt +1 -0
  28. certora_jars/CERTORA-CLI-VERSION-METADATA.json +1 -1
  29. certora_jars/Typechecker.jar +0 -0
  30. certora_cli_beta_mirror-7.28.0.dist-info/LICENSE +0 -22
  31. {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
- raise ExitException(f"Split Rules {'succeeded' if exit_code == 0 else 'failed'}", exit_code)
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
- print(f"Verifier run command:\n {check_cmd}", flush=True)
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{check_cmd}")
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 {' '.join(check_cmd)}", flush=True)
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{check_cmd}")
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 certoraRun import run_certora, CertoraRunResult
26
- from typing import List, Optional
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
- return run_certora(args, attrs_class=Attrs.SorobanProverAttributes)
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
- run_soroban_prover(sys.argv[1:])
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/>.
@@ -1,12 +1,15 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: certora-cli-beta-mirror
3
- Version: 7.28.0
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 :: MIT License
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 489a4d6. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
40
+ Commit 3f35845. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
@@ -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/certoraRun.py,sha256=yShug0KoLE4mdplMTFLNzY_Q8vPkEVyR_E6aXZe7_O0,13983
7
- certora_cli/certoraSolanaProver.py,sha256=6KbhUaEPBngPZK3rsw8ZNHSKCcdSeN48nE94xuBUIdI,7479
8
- certora_cli/certoraSorobanProver.py,sha256=fV_t16_ED3xom_0BEeJh2F-RIcPFdVjsQ_j-UaCCZjM,1267
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=K8KHx7OqARz3efW5QJL1t_X5LNiYQNoGlQqF3iyFLfo,205029
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=0kgCvJhg2d7JrVNQxWNYGhbImTNojEqa-G3pucneFKA,14552
14
- certora_cli/CertoraProver/certoraBuildRust.py,sha256=pxsUd5WYe_w1uwhk8uAsNMxtSzjQCQuWNNxPIZRPHvc,5218
15
- certora_cli/CertoraProver/certoraCloudIO.py,sha256=ovTe8twtfxgZxjOZn5to8v9e10fK0dj-roQaSQ-bZFU,54713
16
- certora_cli/CertoraProver/certoraCollectConfigurationLayout.py,sha256=OPRGm8IvBns_SD6EmDuJ16BIiCG_7O80dMrBQ3WSNUA,9568
17
- certora_cli/CertoraProver/certoraCollectRunMetadata.py,sha256=tKx56neJoHiVAsxjSHaMjVsWRM4lYJe16PgpSO-JrrM,11684
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=lxdtoV6Fiu2nbjujV8wDQmDVx3FwXTZ_El5--oit6iI,7484
20
- certora_cli/CertoraProver/certoraContext.py,sha256=K-cCht-oVvi0vI4UWRhUF9yQdIvsyZgxNtv43S5KH_Q,25284
21
- certora_cli/CertoraProver/certoraContextAttributes.py,sha256=GCYK_tWVrOl1y7Mn3EcPKMnnGb89qkqcw2va3Q_b2ZA,64410
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=Vrq50PQ0NzQUucsLR96QIoCNEJ7uuU0WW_x8O0LUfys,43953
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=VJARWSLN6QVeBnQasvD9SdsS_V-S2pYitRFTu775Wyc,4908
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=HZSFbcOO5NReOsJXDxx9o7xARhwbAdP9CYDFEQSTMcY,10146
34
- certora_cli/CertoraProver/splitRules.py,sha256=PXLhrIRDpYoNsVm1lgNx87SP4Se_0LbRYP5QRgqIZrw,7477
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=WXoyZ_OZaQeudzT3dTOjuQSKSRZBAYoeuGJHRrwhFNw,68460
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=hWFOXIBSI9P8L5n2ShYyh-VZc8j4OLk6y5yHNSaxxPA,87613
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=wORBPLKJzRmiHaTkPYfFYxS2iccbqT3T3QJ9suTzyRo,8070
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=1_-P8rG_ed3aH1lvDx8jcFtyDvln3PAKuPaKYWBK9U4,54871
61
- certora_cli/Shared/certoraValidateFuncs.py,sha256=M3eSr_5vxhdavTA_9NWYhH8SKR-PMyqYH8JzOTl7vwU,41527
62
- certora_jars/CERTORA-CLI-VERSION-METADATA.json,sha256=bvSyQhDNDC36lGbIJZJccOWUEw8ae3jNCDjz77ZNEwU,146
63
- certora_jars/Typechecker.jar,sha256=ltNw9oSXH6gODnpico36szDxqwLG-fR3HRxsaWeF1X8,16885722
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.28.0.dist-info/LICENSE,sha256=a-Nl3_IeBWTgtndKszDEK9NUQB0gMGVdlE18EMpQxpQ,1065
66
- certora_cli_beta_mirror-7.28.0.dist-info/METADATA,sha256=-KXkefNrqjNfRCv7Wc0luiGmbHLlDwMDdZbJzOQTcoU,822
67
- certora_cli_beta_mirror-7.28.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
68
- certora_cli_beta_mirror-7.28.0.dist-info/entry_points.txt,sha256=x2dyit80wAtF72k5CQj9F5lnWZEmP9ioseqvrEGWyFc,389
69
- certora_cli_beta_mirror-7.28.0.dist-info/top_level.txt,sha256=8C77w3JLanY0-NW45vpJsjRssyCqVP-qmPiN9FjWiX4,38
70
- certora_cli_beta_mirror-7.28.0.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.45.1)
2
+ Generator: setuptools (75.8.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -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.28.0", "branch": "", "commit": "489a4d6", "timestamp": "20250408.13.21.430328", "version": "7.28.0"}
1
+ {"name": "certora-cli-beta-mirror", "tag": "7.29.0", "branch": "", "commit": "3f35845", "timestamp": "20250508.13.19.941262", "version": "7.29.0"}
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.