certora-cli-beta-mirror 8.0.0__py3-none-any.whl → 8.1.1__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 (35) hide show
  1. certora_cli/CertoraProver/Compiler/CompilerCollectorFactory.py +1 -3
  2. certora_cli/CertoraProver/Compiler/CompilerCollectorYul.py +3 -0
  3. certora_cli/CertoraProver/certoraApp.py +49 -0
  4. certora_cli/CertoraProver/certoraBuild.py +178 -26
  5. certora_cli/CertoraProver/certoraBuildDataClasses.py +3 -1
  6. certora_cli/CertoraProver/certoraBuildRust.py +1 -1
  7. certora_cli/CertoraProver/certoraCollectConfigurationLayout.py +1 -1
  8. certora_cli/CertoraProver/certoraConfigIO.py +11 -12
  9. certora_cli/CertoraProver/certoraContext.py +61 -54
  10. certora_cli/CertoraProver/certoraContextAttributes.py +9 -0
  11. certora_cli/CertoraProver/certoraContextValidator.py +12 -12
  12. certora_cli/CertoraProver/certoraContractFuncs.py +6 -0
  13. certora_cli/CertoraProver/certoraType.py +10 -1
  14. certora_cli/CertoraProver/certoraVerifyGenerator.py +2 -1
  15. certora_cli/CertoraProver/splitRules.py +18 -17
  16. certora_cli/EquivalenceCheck/equivCheck.py +2 -1
  17. certora_cli/Mutate/mutateApp.py +12 -6
  18. certora_cli/Mutate/mutateValidate.py +2 -2
  19. certora_cli/Shared/certoraUtils.py +70 -7
  20. certora_cli/Shared/proverCommon.py +6 -6
  21. certora_cli/certoraConcord.py +2 -2
  22. certora_cli/certoraEVMProver.py +2 -2
  23. certora_cli/certoraRanger.py +2 -2
  24. certora_cli/certoraRun.py +9 -9
  25. certora_cli/certoraSolanaProver.py +2 -2
  26. certora_cli/certoraSorobanProver.py +2 -3
  27. {certora_cli_beta_mirror-8.0.0.dist-info → certora_cli_beta_mirror-8.1.1.dist-info}/METADATA +3 -2
  28. {certora_cli_beta_mirror-8.0.0.dist-info → certora_cli_beta_mirror-8.1.1.dist-info}/RECORD +35 -34
  29. certora_jars/ASTExtraction.jar +0 -0
  30. certora_jars/CERTORA-CLI-VERSION-METADATA.json +1 -1
  31. certora_jars/Typechecker.jar +0 -0
  32. {certora_cli_beta_mirror-8.0.0.dist-info → certora_cli_beta_mirror-8.1.1.dist-info}/LICENSE +0 -0
  33. {certora_cli_beta_mirror-8.0.0.dist-info → certora_cli_beta_mirror-8.1.1.dist-info}/WHEEL +0 -0
  34. {certora_cli_beta_mirror-8.0.0.dist-info → certora_cli_beta_mirror-8.1.1.dist-info}/entry_points.txt +0 -0
  35. {certora_cli_beta_mirror-8.0.0.dist-info → certora_cli_beta_mirror-8.1.1.dist-info}/top_level.txt +0 -0
@@ -16,6 +16,7 @@
16
16
  import csv
17
17
  import json
18
18
  import os
19
+ import io
19
20
  import subprocess
20
21
  from abc import ABCMeta
21
22
  from enum import Enum, unique, auto
@@ -30,8 +31,9 @@ import urllib3.util
30
31
  from collections import defaultdict
31
32
  from types import SimpleNamespace
32
33
 
33
- from typing import Any, Callable, Dict, List, Optional, Set, Union, Generator, Tuple, Iterable, Sequence, TypeVar
34
+ from typing import Any, Callable, Dict, List, Optional, Set, Union, Generator, Tuple, Iterable, Sequence, TypeVar, OrderedDict
34
35
  from pathlib import Path
36
+ import json5
35
37
 
36
38
  scripts_dir_path = Path(__file__).parent.parent.resolve() # containing directory
37
39
  sys.path.insert(0, str(scripts_dir_path))
@@ -90,6 +92,7 @@ CERTORA_RUN_SCRIPT = "certoraRun.py"
90
92
  CERTORA_RUN_APP = "certoraRun"
91
93
  PACKAGE_FILE = Path("package.json")
92
94
  REMAPPINGS_FILE = Path("remappings.txt")
95
+ FOUNDRY_TOML_FILE = Path("foundry.toml")
93
96
  RECENT_JOBS_FILE = Path(".certora_recent_jobs.json")
94
97
  LAST_CONF_FILE = Path("run.conf")
95
98
  EMV_JAR = Path("emv.jar")
@@ -1350,25 +1353,49 @@ def is_local(object: Any) -> bool:
1350
1353
  default_jar_path = Path(certora_root_dir) / EMV_JAR
1351
1354
  return getattr(object, 'jar', None) or (default_jar_path.is_file() and not getattr(object, 'server', None))
1352
1355
 
1356
+ def get_mappings_from_forge_remappings() -> List[str]:
1357
+ remappings_output = ""
1358
+ try:
1359
+ result = subprocess.run(['forge', 'remappings'], capture_output=True, text=True, check=True)
1360
+ remappings_output = result.stdout
1361
+ except Exception as e:
1362
+ context_logger.debug(f"get_mappings_from_forge_remappings: forge failed to run\n{e}")
1363
+
1364
+ remappings = []
1365
+ if remappings_output:
1366
+ for line in remappings_output.strip().split('\n'):
1367
+ if '=' in line:
1368
+ remappings.append(line.strip())
1369
+
1370
+ return remappings
1371
+
1353
1372
 
1354
1373
  def handle_remappings_file(context: SimpleNamespace) -> List[str]:
1355
1374
  """"
1356
- Tries to reach packages from remappings.txt
1375
+ Tries to reach packages from remappings.txt.
1376
+ If the file exists in cwd and foundry.toml does not exist in cwd we return the mappings in
1377
+ the file (legacy implementation).
1378
+ In all other cases we add the remappings returned from running the "forge remappings" command. Forge remappings
1379
+ takes into consideration mappings in remappings.txt but also mappings in foundry.toml and mappings from auto scan
1357
1380
  :return:
1358
1381
  """
1359
- if REMAPPINGS_FILE.exists():
1382
+ remappings = []
1383
+ if REMAPPINGS_FILE.exists() and not FOUNDRY_TOML_FILE.exists():
1360
1384
  try:
1361
1385
  with REMAPPINGS_FILE.open() as remappings_file:
1362
1386
  remappings = list(filter(lambda x: x != "", map(lambda x: x.strip(), remappings_file.readlines())))
1363
1387
  keys = [s.split('=')[0] for s in remappings]
1364
1388
  if len(set(keys)) < len(keys):
1365
1389
  raise CertoraUserInputError(f"remappings.txt includes duplicated keys in: {keys}")
1366
- return remappings
1367
1390
  except CertoraUserInputError as e:
1368
1391
  raise e from None
1369
1392
  except Exception as e:
1393
+ # create CertoraUserInputError from other exceptions
1370
1394
  raise CertoraUserInputError(f"Invalid remappings file: {REMAPPINGS_FILE}", e)
1371
- return []
1395
+ elif find_nearest_foundry_toml():
1396
+ remappings = get_mappings_from_forge_remappings()
1397
+
1398
+ return remappings
1372
1399
 
1373
1400
 
1374
1401
  def get_ir_flag(solc: str) -> str:
@@ -1437,14 +1464,33 @@ def eq_by(f: Callable[[T, T], bool], a: Sequence[T], b: Sequence[T]) -> bool:
1437
1464
  """
1438
1465
  return len(a) == len(b) and all(map(f, a, b))
1439
1466
 
1440
- def find_nearest_cargo_toml() -> Optional[Path]:
1467
+
1468
+ def find_file_in_parents(file_name: Union[Path, str]) -> Optional[Path]:
1469
+ """
1470
+ find file_name in current directory or in one of its parent directories
1471
+ """
1441
1472
  current = Path.cwd()
1442
1473
  for parent in [current] + list(current.parents):
1443
- candidate = parent / CARGO_TOML_FILE
1474
+ candidate = parent / str(file_name)
1444
1475
  if candidate.is_file():
1445
1476
  return candidate
1446
1477
  return None
1447
1478
 
1479
+ def find_nearest_cargo_toml() -> Optional[Path]:
1480
+ """
1481
+ Find the nearest Cargo.toml file in the current directory or its parent directories.
1482
+ Returns the path to the Cargo.toml file if found, otherwise returns None.
1483
+ """
1484
+ return find_file_in_parents(CARGO_TOML_FILE)
1485
+
1486
+ def find_nearest_foundry_toml() -> Optional[Path]:
1487
+ """
1488
+ Find the nearest foundry.toml file in the current directory or its parent directories.
1489
+ Returns the path to the foundry.toml file if found, otherwise returns None.
1490
+ """
1491
+ return find_file_in_parents(FOUNDRY_TOML_FILE)
1492
+
1493
+
1448
1494
  def file_in_source_tree(file_path: Path) -> bool:
1449
1495
  # if the file is under .certora_source, return True
1450
1496
  file_path = Path(file_path).absolute()
@@ -1455,3 +1501,20 @@ def file_in_source_tree(file_path: Path) -> bool:
1455
1501
  return True
1456
1502
  except ValueError:
1457
1503
  return False
1504
+
1505
+ def parse_int_as_str(val: str) -> str:
1506
+ return str(val)
1507
+
1508
+ def read_conf_file(file: io.TextIOWrapper) -> OrderedDict:
1509
+ res = json5.load(file, allow_duplicate_keys=False, object_pairs_hook=OrderedDict, parse_int=parse_int_as_str)
1510
+ return res
1511
+
1512
+ def convert_str_ints(obj: Union[dict, list, str, int]) -> Union[dict, list, str, int]:
1513
+ if isinstance(obj, dict):
1514
+ return {k: convert_str_ints(v) for k, v in obj.items()}
1515
+ elif isinstance(obj, list):
1516
+ return [convert_str_ints(v) for v in obj]
1517
+ elif isinstance(obj, str) and re.fullmatch(r"-?\d+", obj):
1518
+ return int(obj)
1519
+ else:
1520
+ return obj
@@ -36,7 +36,6 @@ sys.path.insert(0, str(scripts_dir_path))
36
36
  from CertoraProver.certoraCloudIO import validate_version_and_branch
37
37
  from Shared.certoraLogging import LoggingManager
38
38
  from Shared import certoraUtils as Util
39
- from Shared.certoraAttrUtil import Attributes
40
39
  import CertoraProver.certoraContext as Ctx
41
40
  from CertoraProver.certoraContextClass import CertoraContext
42
41
  import CertoraProver.certoraContextAttributes as Attrs
@@ -44,6 +43,7 @@ from CertoraProver.certoraCollectRunMetadata import collect_run_metadata
44
43
  from CertoraProver.certoraCollectConfigurationLayout import collect_configuration_layout
45
44
  from CertoraProver import certoraContextValidator as Cv
46
45
  from CertoraProver.certoraCloudIO import CloudVerification
46
+ import CertoraProver.certoraApp as App
47
47
 
48
48
  log = logging.getLogger(__name__)
49
49
 
@@ -65,7 +65,7 @@ class CertoraFoundViolations(Exception):
65
65
  # --------------------------------------------------------------------------- #
66
66
  # Setup Environment
67
67
  # --------------------------------------------------------------------------- #
68
- def build_context(args: List[str], attributes: Type[Attributes]) -> Tuple[CertoraContext, LoggingManager]:
68
+ def build_context(args: List[str], app: Type[App.CertoraApp]) -> Tuple[CertoraContext, LoggingManager]:
69
69
  """
70
70
  Build the context for the Certora Prover.
71
71
  This function is responsible for setting up the context and logging manager
@@ -76,11 +76,11 @@ def build_context(args: List[str], attributes: Type[Attributes]) -> Tuple[Certor
76
76
 
77
77
  Args:
78
78
  args: The command line arguments to parse.
79
- attributes: The attributes class to use for the context. (e.g., SolanaProverAttributes or SorobanProverAttributes)
79
+ app: The application
80
80
  Returns:
81
81
  A tuple containing the CertoraContext object and the LoggingManager object.
82
82
  """
83
- Attrs.set_attribute_class(attributes)
83
+ Attrs.set_attribute_class(app.attr_class)
84
84
  non_str_els = [x for x in args if not isinstance(x, str)]
85
85
  if non_str_els:
86
86
  print(f"args for run_certora that are not strings: {non_str_els}")
@@ -98,8 +98,8 @@ def build_context(args: List[str], attributes: Type[Attributes]) -> Tuple[Certor
98
98
  Util.safe_create_dir(Util.get_build_dir())
99
99
  logging_manager = LoggingManager()
100
100
 
101
- Ctx.handle_flags_in_args(args)
102
- context = Ctx.get_args(args) # Parse arguments
101
+ Ctx.handle_flags_in_args(args, app)
102
+ context = Ctx.get_args(args, app) # Parse arguments
103
103
 
104
104
  assert logging_manager, "logging manager was not set"
105
105
  logging_manager.set_log_level_and_format(is_quiet=Ctx.is_minimal_cli_output(context),
@@ -21,7 +21,7 @@ from pathlib import Path
21
21
  scripts_dir_path = Path(__file__).parent.resolve() # containing directory
22
22
  sys.path.insert(0, str(scripts_dir_path))
23
23
 
24
- import CertoraProver.certoraContextAttributes as Attrs
24
+ import CertoraProver.certoraApp as App
25
25
  from certoraRun import run_certora
26
26
  from Shared.proverCommon import CertoraRunResult, catch_exits
27
27
 
@@ -29,7 +29,7 @@ from typing import List, Optional
29
29
 
30
30
 
31
31
  def run_concord(args: List[str]) -> Optional[CertoraRunResult]:
32
- return run_certora(args, Attrs.ConcordAttributes, prover_cmd=sys.argv[0])
32
+ return run_certora(args, App.ConcordApp, prover_cmd=sys.argv[0])
33
33
 
34
34
  @catch_exits
35
35
  def entry_point() -> None:
@@ -21,14 +21,14 @@ from pathlib import Path
21
21
  scripts_dir_path = Path(__file__).parent.resolve() # containing directory
22
22
  sys.path.insert(0, str(scripts_dir_path))
23
23
 
24
- import CertoraProver.certoraContextAttributes as Attrs
24
+ import CertoraProver.certoraApp as App
25
25
  from Shared.proverCommon import CertoraRunResult
26
26
  from certoraRun import run_certora
27
27
  from typing import List, Optional
28
28
 
29
29
 
30
30
  def run_evm_prover(args: List[str]) -> Optional[CertoraRunResult]:
31
- return run_certora(args, Attrs.EvmProverAttributes)
31
+ return run_certora(args, App.EvmApp)
32
32
 
33
33
  def entry_point() -> None:
34
34
  run_evm_prover(sys.argv[1:])
@@ -21,7 +21,7 @@ from pathlib import Path
21
21
  scripts_dir_path = Path(__file__).parent.resolve() # containing directory
22
22
  sys.path.insert(0, str(scripts_dir_path))
23
23
 
24
- import CertoraProver.certoraContextAttributes as Attrs
24
+ import CertoraProver.certoraApp as App
25
25
  from certoraRun import run_certora
26
26
  from Shared.proverCommon import CertoraRunResult, catch_exits
27
27
 
@@ -29,7 +29,7 @@ from typing import List, Optional
29
29
 
30
30
 
31
31
  def run_ranger(args: List[str]) -> Optional[CertoraRunResult]:
32
- return run_certora(args, Attrs.RangerAttributes, prover_cmd=sys.argv[0])
32
+ return run_certora(args, App.RangerApp, prover_cmd=sys.argv[0])
33
33
 
34
34
  @catch_exits
35
35
  def entry_point() -> None:
certora_cli/certoraRun.py CHANGED
@@ -28,10 +28,10 @@ from CertoraProver.certoraCloudIO import CloudVerification
28
28
 
29
29
  from CertoraProver.certoraBuild import build
30
30
  import CertoraProver.certoraContext as Ctx
31
+ import CertoraProver.certoraApp as App
31
32
 
32
33
  from CertoraProver import certoraContextValidator as Cv
33
- import CertoraProver.certoraContextAttributes as Attrs
34
- from Shared import certoraAttrUtil as AttrUtil
34
+
35
35
  from Shared.proverCommon import (
36
36
  build_context,
37
37
  collect_and_dump_metadata,
@@ -51,7 +51,7 @@ BUILD_SCRIPT_PATH = Path("CertoraProver/certoraBuild.py")
51
51
  # Also serves as the default logger for errors originating from unexpected places.
52
52
  run_logger = logging.getLogger("run")
53
53
 
54
- def run_certora(args: List[str], attrs_class: Type[AttrUtil.Attributes] = Attrs.EvmProverAttributes,
54
+ def run_certora(args: List[str], app: Type[App.CertoraApp] = App.EvmApp,
55
55
  prover_cmd: Optional[str] = None) -> Optional[CertoraRunResult]:
56
56
  """
57
57
  The main function that is responsible for the general flow of the script.
@@ -60,7 +60,7 @@ def run_certora(args: List[str], attrs_class: Type[AttrUtil.Attributes] = Attrs.
60
60
  2. Run the necessary steps (type checking/ build/ cloud verification/ local verification)
61
61
 
62
62
  """
63
- context, logging_manager = build_context(args, attrs_class)
63
+ context, logging_manager = build_context(args, app)
64
64
 
65
65
  if prover_cmd:
66
66
  context.prover_cmd = prover_cmd
@@ -127,15 +127,15 @@ def run_certora(args: List[str], attrs_class: Type[AttrUtil.Attributes] = Attrs.
127
127
  else: # Remote run
128
128
  # Syntax checking and typechecking
129
129
  if Cv.mode_has_spec_file(context):
130
- if context.disable_local_typechecking:
131
- run_logger.warning(
132
- "Local checks of CVL specification files disabled. It is recommended to enable "
133
- "the checks.")
134
- else:
130
+ if Ctx.should_run_local_speck_check(context):
135
131
  typechecking_start = time.perf_counter()
136
132
  Ctx.run_local_spec_check(True, context)
137
133
  typechecking_end = time.perf_counter()
138
134
  timings['typecheckingTime'] = round(typechecking_end - typechecking_start, 4)
135
+ else:
136
+ run_logger.warning(
137
+ "Local checks of CVL specification files disabled. It is recommended to enable "
138
+ "the checks.")
139
139
 
140
140
  # Remove debug logger and run remote verification
141
141
  logging_manager.remove_debug_logger()
@@ -24,7 +24,7 @@ scripts_dir_path = Path(__file__).parent.resolve() # containing directory
24
24
  sys.path.insert(0, str(scripts_dir_path))
25
25
 
26
26
 
27
- import CertoraProver.certoraContextAttributes as Attrs
27
+ import CertoraProver.certoraApp as App
28
28
  from CertoraProver.certoraBuildRust import build_rust_project
29
29
  from Shared.proverCommon import (
30
30
  build_context,
@@ -50,7 +50,7 @@ def run_solana_prover(args: List[str]) -> Optional[CertoraRunResult]:
50
50
  1. Parse program arguments
51
51
  2. Run the necessary steps (build/ cloud verification/ local verification)
52
52
  """
53
- context, logging_manager = build_context(args, Attrs.SolanaProverAttributes)
53
+ context, logging_manager = build_context(args, App.SolanaApp)
54
54
 
55
55
  timings: Dict[str, float] = {}
56
56
  exit_code = 0 # The exit code of the script. 0 means success, any other number is an error.
@@ -23,8 +23,7 @@ scripts_dir_path = Path(__file__).parent.resolve() # containing directory
23
23
  sys.path.insert(0, str(scripts_dir_path))
24
24
 
25
25
  from typing import List, Optional, Dict
26
-
27
- import CertoraProver.certoraContextAttributes as Attrs
26
+ import CertoraProver.certoraApp as App
28
27
 
29
28
  from CertoraProver.certoraBuildRust import build_rust_project
30
29
  from Shared.proverCommon import (
@@ -49,7 +48,7 @@ def run_soroban_prover(args: List[str]) -> Optional[CertoraRunResult]:
49
48
  2. Run the necessary steps (build/ cloud verification/ local verification)
50
49
  """
51
50
 
52
- context, logging_manager = build_context(args, Attrs.SorobanProverAttributes)
51
+ context, logging_manager = build_context(args, App.SorobanApp)
53
52
  timings: Dict[str, float] = {}
54
53
  exit_code = 0 # The exit code of the script. 0 means success, any other number is an error.
55
54
  return_value = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: certora-cli-beta-mirror
3
- Version: 8.0.0
3
+ Version: 8.1.1
4
4
  Summary: Runner for the Certora Prover
5
5
  Home-page: https://pypi.org/project/certora-cli-beta-mirror
6
6
  Author: Certora
@@ -26,6 +26,7 @@ Requires-Dist: StrEnum
26
26
  Requires-Dist: universalmutator
27
27
  Requires-Dist: jinja2
28
28
  Requires-Dist: wcmatch
29
+ Requires-Dist: typing_extensions
29
30
  Dynamic: author
30
31
  Dynamic: author-email
31
32
  Dynamic: classifier
@@ -38,4 +39,4 @@ Dynamic: requires-dist
38
39
  Dynamic: requires-python
39
40
  Dynamic: summary
40
41
 
41
- Commit 852805e. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
42
+ Commit b03ee33. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
@@ -1,31 +1,32 @@
1
1
  certora_bins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  certora_cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  certora_cli/certoraCVLFormatter.py,sha256=P2S5Lk4R-Xg09ex0EYXTqlsd8FgY226n_pQImWcDPKk,2767
4
- certora_cli/certoraConcord.py,sha256=cyRShi1ArHqVcruvxdYw5sw60lHt-t4mcauk7a7c2xU,1317
5
- certora_cli/certoraEVMProver.py,sha256=gLxqPXG9jKlCdLdgfo0aNjvp09vbHGSs8wghY6RH0Gg,1274
4
+ certora_cli/certoraConcord.py,sha256=H6-Ft-kZvB6BNwr8OgCsfZN2vxPw9_mYfCSO_1-FKLk,1292
5
+ certora_cli/certoraEVMProver.py,sha256=AH8ZeWXAs7wK6nNKFANCt6seLf9EaaFXtfpjc3xdIfc,1243
6
6
  certora_cli/certoraEqCheck.py,sha256=qfZq7bpU1kbAIezC66W61VfKNZz7Uywg2Ygup62qYeo,1069
7
7
  certora_cli/certoraMutate.py,sha256=XhFHyNVP_sk-3XkY6AAV5fVliEFAVRq-JeDGsqE5IQQ,3333
8
- certora_cli/certoraRanger.py,sha256=cwejxWTNlHsbwtu6Lew0SNsynSeq_ZKJu1Cr9uu0DhE,1314
9
- certora_cli/certoraRun.py,sha256=ueQiuTUb_zTzZDoD2VTAj9rXn8MLCTZMvIJciXGPiEY,6652
10
- certora_cli/certoraSolanaProver.py,sha256=PIuJiFHPq8oeU1Q_RMb3C7Lcc4_LyaaLrp3TKBNBMl4,3281
11
- certora_cli/certoraSorobanProver.py,sha256=thqd0mAcjAOZO5oHByihbGhpGfrIz3ImqLzwSfd-xOw,2872
8
+ certora_cli/certoraRanger.py,sha256=thJ4EKo-MFHklCk-7zJADZ-9SO6eCg1AFv88-QssLj0,1289
9
+ certora_cli/certoraRun.py,sha256=11tc3-l_G8cidFNSQfzCmuPbqfF-n_UEIZC4yASLz8g,6561
10
+ certora_cli/certoraSolanaProver.py,sha256=1R1YnGHCofb05GqFgpxRh3ZmHkmwMm1hPM7rfeiEu7o,3250
11
+ certora_cli/certoraSorobanProver.py,sha256=SYJKz5Sw-N0bJrSa1njRCE53R9_PMz7IWLhfamOjisk,2840
12
12
  certora_cli/rustMutator.py,sha256=6AvOGU8Ijz89zW_ZJCWlfXkeobJsk7EsqZhK7Eqwn-Y,14544
13
13
  certora_cli/CertoraProver/__init__.py,sha256=QHNr-PJQAoyuPgTkO7gg23GRchiWSXglWNG7yLSQZvs,849
14
- certora_cli/CertoraProver/certoraBuild.py,sha256=yk4zzGATe-HPqVUPwNBejaCqPN3WqLQPEsiNJobTdE0,212894
14
+ certora_cli/CertoraProver/certoraApp.py,sha256=ffHaqpokTOH0OcNpf8pzrbfygVJtNKyxShvjixnlsQg,1426
15
+ certora_cli/CertoraProver/certoraBuild.py,sha256=IFADu1Oi3bIRLgw0Hc-HoXeNpeOVSXJvEEBTT_DqCnI,221048
15
16
  certora_cli/CertoraProver/certoraBuildCacheManager.py,sha256=YnZmBZ_gCIbLwExgK5oxFlVDQGe4_YuGIpDLMy589E0,13318
16
- certora_cli/CertoraProver/certoraBuildDataClasses.py,sha256=8tPny9-pasC7CCRKQclaVQ3qcEDNa6EdOUu1ZWh0MZY,14704
17
- certora_cli/CertoraProver/certoraBuildRust.py,sha256=s_tZpzQQLASYiv27LLqn6S_FVUKn5UOljXQgIGrjlBo,6051
17
+ certora_cli/CertoraProver/certoraBuildDataClasses.py,sha256=hO0w3YK9V9gZsTbh4gxxlnEAaOiubUwfzNEw6uL1HaE,14841
18
+ certora_cli/CertoraProver/certoraBuildRust.py,sha256=ZPbNp4ttRmzcKhFsgHSiHDRExNPaLOzgxTRqu23o1D0,6061
18
19
  certora_cli/CertoraProver/certoraBuildSui.py,sha256=oOY6l3JnxYtFl3i3ibEcOp69x0mKsFg4Z86UnVC6CwY,2383
19
20
  certora_cli/CertoraProver/certoraCloudIO.py,sha256=99IRWSA4wAF1q_yu7m1IpDlybMVqtupW_C5qa3Xrhs0,54351
20
- certora_cli/CertoraProver/certoraCollectConfigurationLayout.py,sha256=6aHEGrhT_Y9aYfM5n_Mk--awgcQfdtc-chBPRl7FU4E,14095
21
+ certora_cli/CertoraProver/certoraCollectConfigurationLayout.py,sha256=Rln6LsqMp-u0H2fAFulTLAn7GW-j3ox2XZSz0ghdjk0,14116
21
22
  certora_cli/CertoraProver/certoraCollectRunMetadata.py,sha256=i31dkYt8kwlX44SHZtV_b8QI1Egi6cbB5-uuh5beYN0,12630
22
23
  certora_cli/CertoraProver/certoraCompilerParameters.py,sha256=r35y03IRwWIoz1GCNC7PuW3n8JPz9J1NGwhwUYKdYtI,1452
23
- certora_cli/CertoraProver/certoraConfigIO.py,sha256=TEmOhbuZLuX8AEJorungS_dP_90nZLdbnJFUGLdUFng,7604
24
- certora_cli/CertoraProver/certoraContext.py,sha256=2quDk2spVMtDIOI4oCN_m3Jwnbk-_u82LE0AEbDpSU0,28225
25
- certora_cli/CertoraProver/certoraContextAttributes.py,sha256=UBhbGvbacsuIPb6XpQ_edNPObMjFeLWt_wPhKxvnyYI,66504
24
+ certora_cli/CertoraProver/certoraConfigIO.py,sha256=J12jAZ8aKdOQhnMtGUtWmvibjzm_2qlvH6YwI8I4LAc,7483
25
+ certora_cli/CertoraProver/certoraContext.py,sha256=l6aXnfe-fdaDacIVFlhwGqfWb5dne69AnqBrck7-3bw,28758
26
+ certora_cli/CertoraProver/certoraContextAttributes.py,sha256=O7beTjvk0uBTFyxUaSgdV9Tcg33--G4XA6nnIdX00GU,66778
26
27
  certora_cli/CertoraProver/certoraContextClass.py,sha256=d7HDqM72K7YnswR7kEcAHGwkFNrTqRz5-_0m7cl2Mso,900
27
- certora_cli/CertoraProver/certoraContextValidator.py,sha256=CW54on8TtVyx0Euma-ysJ94jK9QKuyUyCSGZwdtwZHY,46341
28
- certora_cli/CertoraProver/certoraContractFuncs.py,sha256=ipSwge5QQzp8qhUavY44bZ-eCR6szK_HWwSIWqQyuR0,6921
28
+ certora_cli/CertoraProver/certoraContextValidator.py,sha256=clXwmYHIBUmOJ8ADRUmu9U6_pNe_tXRNawvUPBLlYVY,46490
29
+ certora_cli/CertoraProver/certoraContractFuncs.py,sha256=-CV7MkmsrwYfdYFAd6ZZib_6-mDG_ytxPM4hAjxtbMM,7137
29
30
  certora_cli/CertoraProver/certoraExtensionInfo.py,sha256=YlShzdoqJQgXXj3r0TJ3fir1KntIR99Rk8JN5qii2lk,2026
30
31
  certora_cli/CertoraProver/certoraJobList.py,sha256=FBIYgJ60I0Ok7vchfTbcuJJbiXgnfAhrONoVeZoHti4,11464
31
32
  certora_cli/CertoraProver/certoraMiniSpecParser.py,sha256=NjjMwf5Rav3YWpoOJh4PZ-QOS8exC2cg4yIBSbZA6l0,9660
@@ -33,17 +34,17 @@ certora_cli/CertoraProver/certoraNodeFilters.py,sha256=5Uk2mixZKeis_JVd3HkLgoEVk
33
34
  certora_cli/CertoraProver/certoraParseBuildScript.py,sha256=l7KQA1poEjmbmuYbMskz0jOQg6cW0lM3vk5ruAGPjPI,4863
34
35
  certora_cli/CertoraProver/certoraProjectScanner.py,sha256=jT7FeWzcy8o83LrZRwsg_L4x6im6Fm_0LZFKVbKr3Jk,6862
35
36
  certora_cli/CertoraProver/certoraSourceFinders.py,sha256=qwJtwrQq3NUNYmdmn1UmANN4lmJFIUh4M-St2x1FJ2Y,19038
36
- certora_cli/CertoraProver/certoraType.py,sha256=wD-Sr3xk_dJGtbvw33oIGu_lf15NCZuKWjUb4HlVcUM,29318
37
- certora_cli/CertoraProver/certoraVerifyGenerator.py,sha256=VcWUprCL6dxE28B2gzYYXZK-rav5KU1Pd6Fuq1gC3xA,11006
37
+ certora_cli/CertoraProver/certoraType.py,sha256=inwaLkMVwtJnwkyQhDJs-wRxoyytu2Xa_BJ5MdGlZqY,29737
38
+ certora_cli/CertoraProver/certoraVerifyGenerator.py,sha256=YMuzGj2RNOnADOx8UnV2ys1ptw_-2mermgC9ZLMWceo,11052
38
39
  certora_cli/CertoraProver/erc7201.py,sha256=BME5kBZsDx6lgqLn7EE91I1cEOZtsnZ8BlRVF62eEBE,1660
39
- certora_cli/CertoraProver/splitRules.py,sha256=YisV7T_Rr2MpVAcantCVp9aPeFI-qtcdo81eecjK2AU,7683
40
+ certora_cli/CertoraProver/splitRules.py,sha256=dNhy05ShB_-rWYTnJH5m-Xc5A4HGStAvwLRs1BTu1GA,7627
40
41
  certora_cli/CertoraProver/storageExtension.py,sha256=nrCrbH8ne-yCYSDFzh3J9A7Q6h96WxhEfLbfxGSUCSc,14363
41
42
  certora_cli/CertoraProver/Compiler/CompilerCollector.py,sha256=cr-PIl7LY9VfNs4s4H3-EnSnomPiCgXudfwP9-KenMk,6740
42
- certora_cli/CertoraProver/Compiler/CompilerCollectorFactory.py,sha256=TOpHMSYGhfSmVQwJYZMVOI_Ws03k6cTffzaQUmhnNUo,8761
43
+ certora_cli/CertoraProver/Compiler/CompilerCollectorFactory.py,sha256=drMPTUz9cabxqIu2ngGp0x1ZZ_Jqqn-Db2qql97PTaw,8544
43
44
  certora_cli/CertoraProver/Compiler/CompilerCollectorSol.py,sha256=7nAY2FLMUlGJn4f_YoZMqpa3rf7THqhJVjLwTaChcBc,5027
44
45
  certora_cli/CertoraProver/Compiler/CompilerCollectorSolBased.py,sha256=UasYWyu8Of6R84vXsqRNGpscYcFQghmSIY_dyaAWDYA,1350
45
46
  certora_cli/CertoraProver/Compiler/CompilerCollectorVy.py,sha256=e95xOHK5Bz8BbzjbCVLCrGSutVs8ejqOImh5wH9o3Jk,69918
46
- certora_cli/CertoraProver/Compiler/CompilerCollectorYul.py,sha256=El4WYJZVp3DpXQMZ53yVDPKOWPda5oLs3yD1qhb7dAE,5177
47
+ certora_cli/CertoraProver/Compiler/CompilerCollectorYul.py,sha256=ZTyWIMtaf4gLPRM3_jjq58Gb0r5LE_giajz6sssIi0Y,5299
47
48
  certora_cli/CertoraProver/Compiler/__init__.py,sha256=tEFAmNyx9WL0kzpp_-4s7b6pLvxHmBWz6pQAq0yeROM,789
48
49
  certora_cli/EquivalenceCheck/Eq_default.conf,sha256=J-tMFzIuQa1NcklOh-wv2bpnikfAxFogpRFOl3qoSwM,164
49
50
  certora_cli/EquivalenceCheck/Eq_mc_no_out_template.spec,sha256=HC3Zhpp9ePV10ClZE09Ah7h84O-BTNIUH6w0aA-qIOQ,2286
@@ -51,28 +52,28 @@ certora_cli/EquivalenceCheck/Eq_mc_template.spec,sha256=pbRhwqw0a_KHQ6W3biJeGS9o
51
52
  certora_cli/EquivalenceCheck/Eq_sanity.conf,sha256=BuBI5YNg25b--iQxpNxBzb4v-q-HByObCx7R5Uy1jRw,161
52
53
  certora_cli/EquivalenceCheck/Eq_template.spec,sha256=YGaG5KxSOhelDiBd1oxDnVC8VhPl6coaxHiY4lXVf6o,823
53
54
  certora_cli/EquivalenceCheck/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
- certora_cli/EquivalenceCheck/equivCheck.py,sha256=D3TA1DRppaXpEcVW_smqMQzeUle0jPu0wIXXEd5un0U,20620
55
+ certora_cli/EquivalenceCheck/equivCheck.py,sha256=nfKm1zyboMui_eOGwXZCAC9LkcmW67teUEx8YEANCyY,20671
55
56
  certora_cli/EquivalenceCheck/sanity.spec,sha256=tWmE9z2Sq3_SWaqKDRQaNajRrw94maUrirvoUmX89LE,103
56
57
  certora_cli/Mutate/__init__.py,sha256=QHNr-PJQAoyuPgTkO7gg23GRchiWSXglWNG7yLSQZvs,849
57
- certora_cli/Mutate/mutateApp.py,sha256=jcZGd-bk_8UeewCHfUoHF5Ch1NZ-A7wgFBShXFBMZx0,88255
58
+ certora_cli/Mutate/mutateApp.py,sha256=UY4TWn9f318b2upVAFUL0cqcgzlyTDZ5XeNW3MjofkA,88701
58
59
  certora_cli/Mutate/mutateAttributes.py,sha256=2onGaPmztwmHg5V_X7BUG4HcQCThhqYzGYKBy695Izc,10587
59
60
  certora_cli/Mutate/mutateConstants.py,sha256=LRrz3wMM8WpPYSshkc-PLYqT0nexcWQeBNsehip-LOE,3945
60
61
  certora_cli/Mutate/mutateUtil.py,sha256=B7MCIFtZBetjR4MMxU6F5ikYsaot1wTG7XYMjgVXl4k,2287
61
- certora_cli/Mutate/mutateValidate.py,sha256=9mWzR1zd9N_k78IH9MkvnTzUWb1xPdW086b2-lpi4mQ,7437
62
+ certora_cli/Mutate/mutateValidate.py,sha256=BV1nwGQfNvWlvNDgqY8679Rz5Uy0XKdcRuAJAludUQ4,7436
62
63
  certora_cli/Shared/ExpectedComparator.py,sha256=eyRR-jni4WJoa6j2TK2lnZ89Tyb8U99wT2PNdu4se8w,18457
63
64
  certora_cli/Shared/__init__.py,sha256=s0dhvolFtsS4sRNzPVhC_rlw8mm194rCZ0WhOxInY40,1025
64
65
  certora_cli/Shared/certoraAttrUtil.py,sha256=Nw8ban5Axp6c6dT-KJfCD9i9tKnGk1DbvRDDNH3--DU,8574
65
66
  certora_cli/Shared/certoraLogging.py,sha256=cV2UQMhQ5j8crGXgeq9CEamI-Lk4HgdiA3HCrP-kSR4,14013
66
- certora_cli/Shared/certoraUtils.py,sha256=3imWdLsEQhpEHCpfERHet_zJLu1aShgf3XQFs8Qvbr8,55006
67
+ certora_cli/Shared/certoraUtils.py,sha256=Pj319ac48U0pQZEvCAaIQ0RHVPxK9olcxiVGWT4-tXc,57521
67
68
  certora_cli/Shared/certoraValidateFuncs.py,sha256=BPLuVsS3yAcYIuCvkXtDuFQKf2qaT74TIddB0lM84yM,42508
68
- certora_cli/Shared/proverCommon.py,sha256=jpX4nfzIPvBHI9IUW3e2rwLHOC_Op8vDW9672J-EANk,11305
69
- certora_jars/ASTExtraction.jar,sha256=58Ex1h7YYLpkAYZorsYJ0EHJlR1uWs_nN-jG0i4Cgkk,17533256
70
- certora_jars/CERTORA-CLI-VERSION-METADATA.json,sha256=i7WoCF3KuTtnU1nNmEJHC2QA5vUPt9WCXRF8QqqOw-w,144
71
- certora_jars/Typechecker.jar,sha256=JtIlUDMIP9YK_jeEnKWxJTt8gctTU9ZLZZjQlN5qJmw,17495413
69
+ certora_cli/Shared/proverCommon.py,sha256=uZkl9PDLPj81kKRnBnlPUmvhMZovNP25_74No_7jaQ4,11215
70
+ certora_jars/ASTExtraction.jar,sha256=chudYF-_mStmKDgqsZHxhZDzyZ1c5IPjyi0H4sioUmM,17562779
71
+ certora_jars/CERTORA-CLI-VERSION-METADATA.json,sha256=PNje5L4z_LLNebQk3DqGwhNXPiTaBJKVmuBQIiaW_bE,143
72
+ certora_jars/Typechecker.jar,sha256=KopfIVe2A3lLPpef8IcWFnNbMsSIyQm9HUt7d79ss2s,17524936
72
73
  certora_jars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
- certora_cli_beta_mirror-8.0.0.dist-info/LICENSE,sha256=UGKSKIJSetF8m906JLKqNLkUS2CL60XfQdNvxBvpQXo,620
74
- certora_cli_beta_mirror-8.0.0.dist-info/METADATA,sha256=o6xRNRvYfzjWcYk-LEPODsMZbNrYZOuKWfqBrbsf_lE,1253
75
- certora_cli_beta_mirror-8.0.0.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
76
- certora_cli_beta_mirror-8.0.0.dist-info/entry_points.txt,sha256=ClZiFkCYDdK25_ufxZvnE2Rx_kNk1_4vj7KpgYUKxGM,509
77
- certora_cli_beta_mirror-8.0.0.dist-info/top_level.txt,sha256=8C77w3JLanY0-NW45vpJsjRssyCqVP-qmPiN9FjWiX4,38
78
- certora_cli_beta_mirror-8.0.0.dist-info/RECORD,,
74
+ certora_cli_beta_mirror-8.1.1.dist-info/LICENSE,sha256=UGKSKIJSetF8m906JLKqNLkUS2CL60XfQdNvxBvpQXo,620
75
+ certora_cli_beta_mirror-8.1.1.dist-info/METADATA,sha256=-IrQQVdM-CWRDoFTuEVu9mnRJ7OUwq6JvC3t3rG2S8g,1286
76
+ certora_cli_beta_mirror-8.1.1.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
77
+ certora_cli_beta_mirror-8.1.1.dist-info/entry_points.txt,sha256=ClZiFkCYDdK25_ufxZvnE2Rx_kNk1_4vj7KpgYUKxGM,509
78
+ certora_cli_beta_mirror-8.1.1.dist-info/top_level.txt,sha256=8C77w3JLanY0-NW45vpJsjRssyCqVP-qmPiN9FjWiX4,38
79
+ certora_cli_beta_mirror-8.1.1.dist-info/RECORD,,
Binary file
@@ -1 +1 @@
1
- {"name": "certora-cli-beta-mirror", "tag": "8.0.0", "branch": "", "commit": "852805e", "timestamp": "20250721.16.13.726664", "version": "8.0.0"}
1
+ {"name": "certora-cli-beta-mirror", "tag": "8.1.1", "branch": "", "commit": "b03ee33", "timestamp": "20250812.16.6.250096", "version": "8.1.1"}
Binary file