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.
- certora_cli/CertoraProver/Compiler/CompilerCollectorFactory.py +1 -3
- certora_cli/CertoraProver/Compiler/CompilerCollectorYul.py +3 -0
- certora_cli/CertoraProver/certoraApp.py +49 -0
- certora_cli/CertoraProver/certoraBuild.py +178 -26
- certora_cli/CertoraProver/certoraBuildDataClasses.py +3 -1
- certora_cli/CertoraProver/certoraBuildRust.py +1 -1
- certora_cli/CertoraProver/certoraCollectConfigurationLayout.py +1 -1
- certora_cli/CertoraProver/certoraConfigIO.py +11 -12
- certora_cli/CertoraProver/certoraContext.py +61 -54
- certora_cli/CertoraProver/certoraContextAttributes.py +9 -0
- certora_cli/CertoraProver/certoraContextValidator.py +12 -12
- certora_cli/CertoraProver/certoraContractFuncs.py +6 -0
- certora_cli/CertoraProver/certoraType.py +10 -1
- certora_cli/CertoraProver/certoraVerifyGenerator.py +2 -1
- certora_cli/CertoraProver/splitRules.py +18 -17
- certora_cli/EquivalenceCheck/equivCheck.py +2 -1
- certora_cli/Mutate/mutateApp.py +12 -6
- certora_cli/Mutate/mutateValidate.py +2 -2
- certora_cli/Shared/certoraUtils.py +70 -7
- certora_cli/Shared/proverCommon.py +6 -6
- certora_cli/certoraConcord.py +2 -2
- certora_cli/certoraEVMProver.py +2 -2
- certora_cli/certoraRanger.py +2 -2
- certora_cli/certoraRun.py +9 -9
- certora_cli/certoraSolanaProver.py +2 -2
- certora_cli/certoraSorobanProver.py +2 -3
- {certora_cli_beta_mirror-8.0.0.dist-info → certora_cli_beta_mirror-8.1.1.dist-info}/METADATA +3 -2
- {certora_cli_beta_mirror-8.0.0.dist-info → certora_cli_beta_mirror-8.1.1.dist-info}/RECORD +35 -34
- certora_jars/ASTExtraction.jar +0 -0
- certora_jars/CERTORA-CLI-VERSION-METADATA.json +1 -1
- certora_jars/Typechecker.jar +0 -0
- {certora_cli_beta_mirror-8.0.0.dist-info → certora_cli_beta_mirror-8.1.1.dist-info}/LICENSE +0 -0
- {certora_cli_beta_mirror-8.0.0.dist-info → certora_cli_beta_mirror-8.1.1.dist-info}/WHEEL +0 -0
- {certora_cli_beta_mirror-8.0.0.dist-info → certora_cli_beta_mirror-8.1.1.dist-info}/entry_points.txt +0 -0
- {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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 /
|
|
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],
|
|
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
|
-
|
|
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(
|
|
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),
|
certora_cli/certoraConcord.py
CHANGED
|
@@ -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.
|
|
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,
|
|
32
|
+
return run_certora(args, App.ConcordApp, prover_cmd=sys.argv[0])
|
|
33
33
|
|
|
34
34
|
@catch_exits
|
|
35
35
|
def entry_point() -> None:
|
certora_cli/certoraEVMProver.py
CHANGED
|
@@ -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.
|
|
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,
|
|
31
|
+
return run_certora(args, App.EvmApp)
|
|
32
32
|
|
|
33
33
|
def entry_point() -> None:
|
|
34
34
|
run_evm_prover(sys.argv[1:])
|
certora_cli/certoraRanger.py
CHANGED
|
@@ -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.
|
|
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,
|
|
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
|
-
|
|
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],
|
|
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,
|
|
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
|
|
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.
|
|
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,
|
|
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,
|
|
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
|
{certora_cli_beta_mirror-8.0.0.dist-info → certora_cli_beta_mirror-8.1.1.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: certora-cli-beta-mirror
|
|
3
|
-
Version: 8.
|
|
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
|
|
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=
|
|
5
|
-
certora_cli/certoraEVMProver.py,sha256=
|
|
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=
|
|
9
|
-
certora_cli/certoraRun.py,sha256=
|
|
10
|
-
certora_cli/certoraSolanaProver.py,sha256=
|
|
11
|
-
certora_cli/certoraSorobanProver.py,sha256=
|
|
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/
|
|
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=
|
|
17
|
-
certora_cli/CertoraProver/certoraBuildRust.py,sha256=
|
|
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=
|
|
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=
|
|
24
|
-
certora_cli/CertoraProver/certoraContext.py,sha256=
|
|
25
|
-
certora_cli/CertoraProver/certoraContextAttributes.py,sha256=
|
|
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=
|
|
28
|
-
certora_cli/CertoraProver/certoraContractFuncs.py,sha256
|
|
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=
|
|
37
|
-
certora_cli/CertoraProver/certoraVerifyGenerator.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
69
|
-
certora_jars/ASTExtraction.jar,sha256=
|
|
70
|
-
certora_jars/CERTORA-CLI-VERSION-METADATA.json,sha256=
|
|
71
|
-
certora_jars/Typechecker.jar,sha256=
|
|
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.
|
|
74
|
-
certora_cli_beta_mirror-8.
|
|
75
|
-
certora_cli_beta_mirror-8.
|
|
76
|
-
certora_cli_beta_mirror-8.
|
|
77
|
-
certora_cli_beta_mirror-8.
|
|
78
|
-
certora_cli_beta_mirror-8.
|
|
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,,
|
certora_jars/ASTExtraction.jar
CHANGED
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name": "certora-cli-beta-mirror", "tag": "8.
|
|
1
|
+
{"name": "certora-cli-beta-mirror", "tag": "8.1.1", "branch": "", "commit": "b03ee33", "timestamp": "20250812.16.6.250096", "version": "8.1.1"}
|
certora_jars/Typechecker.jar
CHANGED
|
Binary file
|
|
File without changes
|
|
File without changes
|
{certora_cli_beta_mirror-8.0.0.dist-info → certora_cli_beta_mirror-8.1.1.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{certora_cli_beta_mirror-8.0.0.dist-info → certora_cli_beta_mirror-8.1.1.dist-info}/top_level.txt
RENAMED
|
File without changes
|