certora-cli-alpha-master 20250605.8.34.698591__py3-none-any.whl → 20250605.17.15.659237__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 +6 -0
- certora_cli/CertoraProver/certoraConfigIO.py +2 -1
- certora_cli/CertoraProver/certoraContextAttributes.py +5 -5
- certora_cli/CertoraProver/certoraContextValidator.py +36 -62
- certora_cli/Shared/certoraUtils.py +46 -9
- certora_cli/Shared/certoraValidateFuncs.py +4 -2
- {certora_cli_alpha_master-20250605.8.34.698591.dist-info → certora_cli_alpha_master-20250605.17.15.659237.dist-info}/METADATA +2 -2
- {certora_cli_alpha_master-20250605.8.34.698591.dist-info → certora_cli_alpha_master-20250605.17.15.659237.dist-info}/RECORD +14 -14
- certora_jars/CERTORA-CLI-VERSION-METADATA.json +1 -1
- certora_jars/Typechecker.jar +0 -0
- {certora_cli_alpha_master-20250605.8.34.698591.dist-info → certora_cli_alpha_master-20250605.17.15.659237.dist-info}/LICENSE +0 -0
- {certora_cli_alpha_master-20250605.8.34.698591.dist-info → certora_cli_alpha_master-20250605.17.15.659237.dist-info}/WHEEL +0 -0
- {certora_cli_alpha_master-20250605.8.34.698591.dist-info → certora_cli_alpha_master-20250605.17.15.659237.dist-info}/entry_points.txt +0 -0
- {certora_cli_alpha_master-20250605.8.34.698591.dist-info → certora_cli_alpha_master-20250605.17.15.659237.dist-info}/top_level.txt +0 -0
@@ -42,6 +42,12 @@ def get_relevant_compiler(contract_file_path: Path, context: CertoraContext) ->
|
|
42
42
|
|
43
43
|
if contract_file_path.is_absolute():
|
44
44
|
contract_file_path = Path(os.path.relpath(contract_file_path, Path.cwd()))
|
45
|
+
|
46
|
+
# If the contract file is in the sources directory, we want to use the relative path from the "cwd" in the source tree.
|
47
|
+
if Util.get_certora_sources_dir() in contract_file_path.parents:
|
48
|
+
cwd_in_source = Util.get_certora_sources_dir() / context.cwd_rel_in_sources
|
49
|
+
contract_file_path = Path(os.path.relpath(contract_file_path, cwd_in_source))
|
50
|
+
|
45
51
|
if context.compiler_map:
|
46
52
|
match = match_path_to_mapping_key(contract_file_path, context.compiler_map)
|
47
53
|
if match:
|
@@ -17,6 +17,7 @@ import json5
|
|
17
17
|
import logging
|
18
18
|
from pathlib import Path
|
19
19
|
from typing import Dict, Any
|
20
|
+
from collections import OrderedDict
|
20
21
|
|
21
22
|
import CertoraProver.certoraContext as Ctx
|
22
23
|
import CertoraProver.certoraContextAttributes as Attrs
|
@@ -75,7 +76,7 @@ def read_from_conf_file(context: CertoraContext) -> None:
|
|
75
76
|
|
76
77
|
try:
|
77
78
|
with conf_file_path.open() as conf_file:
|
78
|
-
context.conf_file_attr = json5.load(conf_file, allow_duplicate_keys=False)
|
79
|
+
context.conf_file_attr = json5.load(conf_file, allow_duplicate_keys=False, object_pairs_hook=OrderedDict)
|
79
80
|
try:
|
80
81
|
check_conf_content(context)
|
81
82
|
except Util.CertoraUserInputError as e:
|
@@ -340,7 +340,7 @@ class EvmAttributes(AttrUtil.Attributes):
|
|
340
340
|
default_desc="do not set via_ir during compilation unless solc_via_ir is set",
|
341
341
|
argparse_args={
|
342
342
|
'action': AttrUtil.UniqueStore,
|
343
|
-
'type': lambda value: Vf.
|
343
|
+
'type': lambda value: Vf.parse_ordered_dict('solc_via_ir_map', value, bool)
|
344
344
|
},
|
345
345
|
affects_build_cache_key=True,
|
346
346
|
disables_build_cache=False,
|
@@ -382,7 +382,7 @@ class EvmAttributes(AttrUtil.Attributes):
|
|
382
382
|
default_desc="Uses the same Solidity EVM version for all contracts",
|
383
383
|
argparse_args={
|
384
384
|
'action': AttrUtil.UniqueStore,
|
385
|
-
'type': lambda value: Vf.
|
385
|
+
'type': lambda value: Vf.parse_ordered_dict('solc_evm_version_map', value)
|
386
386
|
},
|
387
387
|
affects_build_cache_key=True,
|
388
388
|
disables_build_cache=False,
|
@@ -405,7 +405,7 @@ class EvmAttributes(AttrUtil.Attributes):
|
|
405
405
|
default_desc="Uses the same Solidity compiler version for all contracts",
|
406
406
|
argparse_args={
|
407
407
|
'action': AttrUtil.UniqueStore,
|
408
|
-
'type': lambda value: Vf.
|
408
|
+
'type': lambda value: Vf.parse_ordered_dict('solc_map', value)
|
409
409
|
},
|
410
410
|
affects_build_cache_key=True,
|
411
411
|
disables_build_cache=False,
|
@@ -428,7 +428,7 @@ class EvmAttributes(AttrUtil.Attributes):
|
|
428
428
|
default_desc="Uses the same compiler version for all contracts",
|
429
429
|
argparse_args={
|
430
430
|
'action': AttrUtil.UniqueStore,
|
431
|
-
'type': lambda value: Vf.
|
431
|
+
'type': lambda value: Vf.parse_ordered_dict('compiler_map', value)
|
432
432
|
},
|
433
433
|
affects_build_cache_key=True,
|
434
434
|
disables_build_cache=False,
|
@@ -481,7 +481,7 @@ class EvmAttributes(AttrUtil.Attributes):
|
|
481
481
|
default_desc="Compiles all contracts with the same optimization settings",
|
482
482
|
argparse_args={
|
483
483
|
'action': AttrUtil.UniqueStore,
|
484
|
-
'type': lambda value: Vf.
|
484
|
+
'type': lambda value: Vf.parse_ordered_dict('solc_optimize_map', value)
|
485
485
|
},
|
486
486
|
affects_build_cache_key=True,
|
487
487
|
disables_build_cache=False,
|
@@ -19,9 +19,8 @@ import re
|
|
19
19
|
import sys
|
20
20
|
import itertools
|
21
21
|
import tempfile
|
22
|
-
import fnmatch
|
23
22
|
from pathlib import Path
|
24
|
-
from typing import Dict, List, Tuple, Set, Any, Union,
|
23
|
+
from typing import Dict, List, Tuple, Set, Any, Union, OrderedDict
|
25
24
|
|
26
25
|
import CertoraProver.certoraContext as Ctx
|
27
26
|
import CertoraProver.certoraContextAttributes as Attrs
|
@@ -31,6 +30,7 @@ from Shared import certoraUtils as Util
|
|
31
30
|
from Shared import certoraAttrUtil as AttrUtil
|
32
31
|
from CertoraProver.certoraProjectScanner import scan_project
|
33
32
|
|
33
|
+
|
34
34
|
scripts_dir_path = Path(__file__).parent.resolve() # containing directory
|
35
35
|
sys.path.insert(0, str(scripts_dir_path))
|
36
36
|
|
@@ -375,19 +375,15 @@ def convert_to_compiler_map(context: CertoraContext) -> None:
|
|
375
375
|
if context.solc_map:
|
376
376
|
context.compiler_map = context.solc_map
|
377
377
|
context.solc_map = None
|
378
|
-
|
379
|
-
context.compiler_map = {'*.sol': f'{context.solc}'}
|
380
|
-
if context.vyper:
|
381
|
-
context.compiler_map = {'*.vy': f'{context.vyper}'}
|
378
|
+
|
382
379
|
|
383
380
|
def check_vyper_flag(context: CertoraContext) -> None:
|
384
381
|
if context.vyper:
|
385
|
-
|
386
|
-
if
|
387
|
-
|
382
|
+
vy_paths = [path for path in context.files if path.endswith(".vy")]
|
383
|
+
if not vy_paths:
|
384
|
+
validation_logger.warning("vyper attribute was set but no Vyper files were set")
|
388
385
|
if context.solc:
|
389
386
|
raise Util.CertoraUserInputError("cannot set both vyper attribute and solc attribute")
|
390
|
-
context.solc = context.vyper
|
391
387
|
|
392
388
|
def check_contract_name_arg_inputs(context: CertoraContext) -> None:
|
393
389
|
"""
|
@@ -671,37 +667,6 @@ def check_mode_of_operation(context: CertoraContext) -> None:
|
|
671
667
|
raise Util.CertoraUserInputError("You must use 'verify' when running the Certora Prover")
|
672
668
|
|
673
669
|
|
674
|
-
def _normalize_maps(context: CertoraContext, map_attr_name: str, map_attr: Dict) -> Dict[str, str]:
|
675
|
-
"""
|
676
|
-
|
677
|
-
:param context:
|
678
|
-
:param map_attr_name: name of the attribute e.g. solc_optimize_map
|
679
|
-
:param map_attr: the value of the map attribute, a dictionary mapping contract/file to a value
|
680
|
-
:return:
|
681
|
-
|
682
|
-
all solc_XXX_map attributes are used to set attributes for the Solidity compiler. The value is based on the
|
683
|
-
Solidity file to be compiled, therefore it translates all keys to a relative path to a file
|
684
|
-
"""
|
685
|
-
|
686
|
-
def find_matching_files(context: CertoraContext, pattern: str) -> List[str]:
|
687
|
-
file_part = pattern.split(':')[0]
|
688
|
-
if Path(file_part).suffix == "": # no suffix means the key is a contract
|
689
|
-
matching_contracts = fnmatch.filter(context.contracts, pattern) # find matching contracts
|
690
|
-
return [context.contract_to_file[contract] for contract in matching_contracts]
|
691
|
-
else:
|
692
|
-
return [file_part]
|
693
|
-
|
694
|
-
new_map_attr: Dict[str, str] = {}
|
695
|
-
for (pattern, value) in map_attr.copy().items():
|
696
|
-
matching_files = find_matching_files(context, pattern)
|
697
|
-
for file in matching_files:
|
698
|
-
file = str(Path(file).resolve(strict=False).relative_to(Path.cwd()))
|
699
|
-
attr_value = new_map_attr.get(file)
|
700
|
-
if attr_value is None: # key in file paths but no mapping yet
|
701
|
-
new_map_attr[file] = value
|
702
|
-
return new_map_attr
|
703
|
-
|
704
|
-
|
705
670
|
def check_map_attributes(context: CertoraContext) -> None:
|
706
671
|
|
707
672
|
map_attrs = Attrs.EvmAttributes.all_map_attrs()
|
@@ -718,27 +683,36 @@ def check_map_attributes(context: CertoraContext) -> None:
|
|
718
683
|
# we also check the map value was not set to False explicitly in the conf file
|
719
684
|
if base_attr and map_attr and not (base_attr is False and context.conf_options.get(base_attr) is not None):
|
720
685
|
raise Util.CertoraUserInputError(f"You cannot use both '{attr_prefix}' and '{map_attr_name}' arguments")
|
721
|
-
if not isinstance(map_attr,
|
722
|
-
raise RuntimeError(f"map_attr is not dictionary, got {map_attr}")
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
686
|
+
if not isinstance(map_attr, OrderedDict):
|
687
|
+
raise RuntimeError(f"`map_attr` is not an ordered dictionary, got {map_attr}")
|
688
|
+
|
689
|
+
# handle contracts
|
690
|
+
# creating a copy since we cannot modify the OrderedDict while iterating over it
|
691
|
+
new_map_attr = map_attr.copy()
|
692
|
+
|
693
|
+
for key, value in map_attr.items():
|
694
|
+
key_parts = key.split(':')
|
695
|
+
if Path(key_parts[0]).suffix == "" and key_parts[0] in context.contract_to_file:
|
696
|
+
# key is a contract in a known file
|
697
|
+
contract_key = key_parts[0]
|
698
|
+
contract_file = context.contract_to_file[contract_key]
|
699
|
+
if contract_file in map_attr:
|
700
|
+
if map_attr[contract_file] != value:
|
701
|
+
# contract binding conflicts with an existing binding
|
702
|
+
raise Util.CertoraUserInputError(f"mapping of `{key}` to `{value}` in `{map_attr_name}` conflicts"
|
703
|
+
f" with an existing binding of `{contract_file}` to"
|
704
|
+
f" `{map_attr[contract_file]}`")
|
705
|
+
else:
|
706
|
+
# no binding for the contract file, so we add it to the attribute
|
707
|
+
new_map_attr[contract_file] = value
|
708
|
+
# move to head
|
709
|
+
new_map_attr.move_to_end(contract_file, last=False)
|
710
|
+
setattr(context, map_attr_name, new_map_attr)
|
711
|
+
|
712
|
+
for path in context.file_paths:
|
713
|
+
match = Util.match_path_to_mapping_key(Path(path), new_map_attr)
|
714
|
+
if match is None:
|
715
|
+
raise RuntimeError(f'cannot match compiler to {path} from {map_attr_name}')
|
742
716
|
|
743
717
|
|
744
718
|
def check_parametric_contracts(context: CertoraContext) -> None:
|
@@ -14,7 +14,6 @@
|
|
14
14
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
15
15
|
|
16
16
|
import csv
|
17
|
-
import fnmatch
|
18
17
|
import json
|
19
18
|
import os
|
20
19
|
import subprocess
|
@@ -31,7 +30,7 @@ import urllib3.util
|
|
31
30
|
from collections import defaultdict
|
32
31
|
from types import SimpleNamespace
|
33
32
|
|
34
|
-
from typing import Any, Callable, Dict, List, Optional, Set, Union, Generator, Tuple, Iterable, Sequence, TypeVar
|
33
|
+
from typing import Any, Callable, Dict, List, Optional, Set, Union, Generator, Tuple, Iterable, Sequence, TypeVar, OrderedDict
|
35
34
|
from pathlib import Path
|
36
35
|
|
37
36
|
scripts_dir_path = Path(__file__).parent.parent.resolve() # containing directory
|
@@ -1176,20 +1175,30 @@ class AbstractAndSingleton(Singleton, ABCMeta):
|
|
1176
1175
|
pass
|
1177
1176
|
|
1178
1177
|
|
1179
|
-
def match_path_to_mapping_key(path: Path, m:
|
1178
|
+
def match_path_to_mapping_key(path: Path, m: OrderedDict[str, str]) -> Optional[str]:
|
1180
1179
|
"""
|
1181
|
-
Matches the path to the
|
1182
|
-
|
1183
|
-
|
1180
|
+
Matches the path to the first key in the map that matches the path.
|
1181
|
+
paths may include wildcards
|
1182
|
+
|
1183
|
+
For example, if the ordered dictionary in compiler_map has the mapping:
|
1184
|
+
|
1185
|
+
dir/a.sol -> solc7.1
|
1186
|
+
dir/*.sol -> solc6.3
|
1187
|
+
**/*.sol -> 8.10
|
1188
|
+
|
1189
|
+
dir/a.sol will be matched by the first rule
|
1190
|
+
dir/b.sol by the second rule
|
1191
|
+
and
|
1192
|
+
a.sol by the third rule
|
1193
|
+
|
1184
1194
|
@param path: the path to match against
|
1185
1195
|
@param m: the map whose keys we're searching
|
1186
1196
|
@return: the value from the map that best matches the path, None if not found.
|
1187
1197
|
"""
|
1188
1198
|
for k, v in m.items():
|
1189
|
-
if
|
1199
|
+
if match_pattern_to_source(k, path):
|
1190
1200
|
return v
|
1191
|
-
return None
|
1192
|
-
|
1201
|
+
return None # No match
|
1193
1202
|
|
1194
1203
|
def find_in(dir_path: Path, file_to_find: Path) -> Optional[Path]:
|
1195
1204
|
"""
|
@@ -1452,3 +1461,31 @@ def eq_by(f: Callable[[T, T], bool], a: Sequence[T], b: Sequence[T]) -> bool:
|
|
1452
1461
|
check if Sequences a and b are equal according to function f.
|
1453
1462
|
"""
|
1454
1463
|
return len(a) == len(b) and all(map(f, a, b))
|
1464
|
+
|
1465
|
+
def file_in_source_tree(file_path: Path) -> bool:
|
1466
|
+
# if the file is under .certora_source, return True
|
1467
|
+
file_path = Path(file_path).absolute()
|
1468
|
+
parent_dir = get_certora_sources_dir().absolute()
|
1469
|
+
|
1470
|
+
try:
|
1471
|
+
file_path.relative_to(parent_dir)
|
1472
|
+
return True
|
1473
|
+
except ValueError:
|
1474
|
+
return False
|
1475
|
+
|
1476
|
+
def match_pattern_to_source(pattern: str, file_path: Path) -> bool:
|
1477
|
+
|
1478
|
+
if file_in_source_tree(file_path):
|
1479
|
+
base_dir = get_certora_sources_dir()
|
1480
|
+
else:
|
1481
|
+
base_dir = Path.cwd()
|
1482
|
+
|
1483
|
+
# Search for matches under base_dir
|
1484
|
+
for candidate in base_dir.rglob(pattern):
|
1485
|
+
try:
|
1486
|
+
if os.path.samefile(candidate, file_path):
|
1487
|
+
return True
|
1488
|
+
except FileNotFoundError:
|
1489
|
+
# candidate or file_path may not exist; skip safely
|
1490
|
+
continue
|
1491
|
+
return False
|
@@ -18,6 +18,8 @@ import sys
|
|
18
18
|
import argparse
|
19
19
|
import json
|
20
20
|
import logging
|
21
|
+
from collections import OrderedDict
|
22
|
+
|
21
23
|
import json5
|
22
24
|
import re
|
23
25
|
import urllib3.util
|
@@ -938,7 +940,7 @@ def validate_on_off(value: str) -> str:
|
|
938
940
|
return __validate_enum_value(value, OnOffValue)
|
939
941
|
|
940
942
|
|
941
|
-
def
|
943
|
+
def parse_ordered_dict(conf_key: str, input_string: str, value_type: Type = str) -> OrderedDict[str, Union[str, bool]]:
|
942
944
|
"""
|
943
945
|
convert CLI flag value string of the form <key>=<value>,<key>=<value>,.. to a Dict.
|
944
946
|
Keys with different values raise an exception
|
@@ -971,7 +973,7 @@ def parse_dict(conf_key: str, input_string: str, value_type: Type = str) -> Dict
|
|
971
973
|
raise argparse.ArgumentTypeError(f"{conf_key} argument {input_string} is of wrong format. Must be of format:"
|
972
974
|
f"<key>=<value>[,..]")
|
973
975
|
|
974
|
-
return_dict =
|
976
|
+
return_dict = OrderedDict() # type: OrderedDict[str, Union[str, bool]]
|
975
977
|
|
976
978
|
for match in input_string.split(','):
|
977
979
|
key, value = match.split('=')
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: certora-cli-alpha-master
|
3
|
-
Version: 20250605.
|
3
|
+
Version: 20250605.17.15.659237
|
4
4
|
Summary: Runner for the Certora Prover
|
5
5
|
Home-page: https://pypi.org/project/certora-cli-alpha-master
|
6
6
|
Author: Certora
|
@@ -37,4 +37,4 @@ Dynamic: requires-dist
|
|
37
37
|
Dynamic: requires-python
|
38
38
|
Dynamic: summary
|
39
39
|
|
40
|
-
Commit
|
40
|
+
Commit 74570f3. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
|
@@ -17,11 +17,11 @@ certora_cli/CertoraProver/certoraCloudIO.py,sha256=oYhNAcyhQa97_5OrpFsewcD6sksoK
|
|
17
17
|
certora_cli/CertoraProver/certoraCollectConfigurationLayout.py,sha256=waMo5_nzirDaK7aoPCfoS7jOqqi_6huRc-_jTrDcZO8,14252
|
18
18
|
certora_cli/CertoraProver/certoraCollectRunMetadata.py,sha256=n67E7hjVdPlBXMh1FMzcWSgu3v5SfFM_HOO2JpbCeY0,11787
|
19
19
|
certora_cli/CertoraProver/certoraCompilerParameters.py,sha256=r35y03IRwWIoz1GCNC7PuW3n8JPz9J1NGwhwUYKdYtI,1452
|
20
|
-
certora_cli/CertoraProver/certoraConfigIO.py,sha256=
|
20
|
+
certora_cli/CertoraProver/certoraConfigIO.py,sha256=uq-uNnjVBzg9Kh41fDqn-lnwSJXe4k2_iy5GTnQIDa8,7560
|
21
21
|
certora_cli/CertoraProver/certoraContext.py,sha256=0AihMYuUAGHWjbiSOMiDM6FVW5OyvEAxE51GPnMxSKg,25821
|
22
|
-
certora_cli/CertoraProver/certoraContextAttributes.py,sha256
|
22
|
+
certora_cli/CertoraProver/certoraContextAttributes.py,sha256=tc5ieED4H1TaCG4FfEJmdx9b7NDyJzC3qlGfUbIFetg,69106
|
23
23
|
certora_cli/CertoraProver/certoraContextClass.py,sha256=d7HDqM72K7YnswR7kEcAHGwkFNrTqRz5-_0m7cl2Mso,900
|
24
|
-
certora_cli/CertoraProver/certoraContextValidator.py,sha256=
|
24
|
+
certora_cli/CertoraProver/certoraContextValidator.py,sha256=A7blCXdJTnxTh5x1w1fADinWtRUPJoAZC3bfPj3W3Hs,45333
|
25
25
|
certora_cli/CertoraProver/certoraContractFuncs.py,sha256=ipSwge5QQzp8qhUavY44bZ-eCR6szK_HWwSIWqQyuR0,6921
|
26
26
|
certora_cli/CertoraProver/certoraExtensionInfo.py,sha256=YlShzdoqJQgXXj3r0TJ3fir1KntIR99Rk8JN5qii2lk,2026
|
27
27
|
certora_cli/CertoraProver/certoraJobList.py,sha256=FBIYgJ60I0Ok7vchfTbcuJJbiXgnfAhrONoVeZoHti4,11464
|
@@ -36,7 +36,7 @@ certora_cli/CertoraProver/erc7201.py,sha256=BME5kBZsDx6lgqLn7EE91I1cEOZtsnZ8BlRV
|
|
36
36
|
certora_cli/CertoraProver/splitRules.py,sha256=HfSqsKeeLZDeOnv8TGgpPDHoaXgdVc0HOrLcGk-cU1Q,7681
|
37
37
|
certora_cli/CertoraProver/storageExtension.py,sha256=BZC9HJygeLxqS5TmhNxbIrVNfH3kLEPjN1VjsWQi8s8,15922
|
38
38
|
certora_cli/CertoraProver/Compiler/CompilerCollector.py,sha256=cr-PIl7LY9VfNs4s4H3-EnSnomPiCgXudfwP9-KenMk,6740
|
39
|
-
certora_cli/CertoraProver/Compiler/CompilerCollectorFactory.py,sha256=
|
39
|
+
certora_cli/CertoraProver/Compiler/CompilerCollectorFactory.py,sha256=seZwusxZNGicOaL0Qjp_uqhwdRIsKKfIhD_4bEA2KhA,8522
|
40
40
|
certora_cli/CertoraProver/Compiler/CompilerCollectorSol.py,sha256=7nAY2FLMUlGJn4f_YoZMqpa3rf7THqhJVjLwTaChcBc,5027
|
41
41
|
certora_cli/CertoraProver/Compiler/CompilerCollectorSolBased.py,sha256=UasYWyu8Of6R84vXsqRNGpscYcFQghmSIY_dyaAWDYA,1350
|
42
42
|
certora_cli/CertoraProver/Compiler/CompilerCollectorVy.py,sha256=e95xOHK5Bz8BbzjbCVLCrGSutVs8ejqOImh5wH9o3Jk,69918
|
@@ -60,16 +60,16 @@ certora_cli/Shared/ExpectedComparator.py,sha256=eyRR-jni4WJoa6j2TK2lnZ89Tyb8U99w
|
|
60
60
|
certora_cli/Shared/__init__.py,sha256=s0dhvolFtsS4sRNzPVhC_rlw8mm194rCZ0WhOxInY40,1025
|
61
61
|
certora_cli/Shared/certoraAttrUtil.py,sha256=ZsoS6xbSZnAjEoPEcfiJi6CvHU-1ySBKubvVKh78ohs,8373
|
62
62
|
certora_cli/Shared/certoraLogging.py,sha256=cV2UQMhQ5j8crGXgeq9CEamI-Lk4HgdiA3HCrP-kSR4,14013
|
63
|
-
certora_cli/Shared/certoraUtils.py,sha256=
|
64
|
-
certora_cli/Shared/certoraValidateFuncs.py,sha256=
|
63
|
+
certora_cli/Shared/certoraUtils.py,sha256=hYRupYu8ajlFr1dGboxmJpPMY1rqBVDlWiD8_MhYB4Q,56181
|
64
|
+
certora_cli/Shared/certoraValidateFuncs.py,sha256=EGoCGTtGMRzWdN-T5GducwkYbyqZBcSjQZHpau0fWnQ,41922
|
65
65
|
certora_cli/Shared/proverCommon.py,sha256=-Lw6_zEIlPA7i_n6xOUsmJeUKjqYWAnGW9GKWBB_GC0,11171
|
66
66
|
certora_cli/Shared/rustProverCommon.py,sha256=NIZ5ECbhuiMegyRAl07CV3r68MFG2tBNKgUAQoV4uLI,2049
|
67
|
-
certora_jars/CERTORA-CLI-VERSION-METADATA.json,sha256=
|
68
|
-
certora_jars/Typechecker.jar,sha256=
|
67
|
+
certora_jars/CERTORA-CLI-VERSION-METADATA.json,sha256=Ce-3jxCrPWyzAFCj1xGexrKQ7b2du6WoMQW_uwvjYg0,170
|
68
|
+
certora_jars/Typechecker.jar,sha256=oq53jnImLTWl_zY8n2UY8SUInBumIUCClLa9LLlCzV4,17139336
|
69
69
|
certora_jars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
70
|
-
certora_cli_alpha_master-20250605.
|
71
|
-
certora_cli_alpha_master-20250605.
|
72
|
-
certora_cli_alpha_master-20250605.
|
73
|
-
certora_cli_alpha_master-20250605.
|
74
|
-
certora_cli_alpha_master-20250605.
|
75
|
-
certora_cli_alpha_master-20250605.
|
70
|
+
certora_cli_alpha_master-20250605.17.15.659237.dist-info/LICENSE,sha256=UGKSKIJSetF8m906JLKqNLkUS2CL60XfQdNvxBvpQXo,620
|
71
|
+
certora_cli_alpha_master-20250605.17.15.659237.dist-info/METADATA,sha256=5oozF1HiqqiBWa5Eaw7aZhS1rHK5cdB2V74lBqknW8w,1248
|
72
|
+
certora_cli_alpha_master-20250605.17.15.659237.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
73
|
+
certora_cli_alpha_master-20250605.17.15.659237.dist-info/entry_points.txt,sha256=_SQ5_uYOAJXtqEW992nIvq7blW9cWFSUVEdbMGuy--4,443
|
74
|
+
certora_cli_alpha_master-20250605.17.15.659237.dist-info/top_level.txt,sha256=8C77w3JLanY0-NW45vpJsjRssyCqVP-qmPiN9FjWiX4,38
|
75
|
+
certora_cli_alpha_master-20250605.17.15.659237.dist-info/RECORD,,
|
@@ -1 +1 @@
|
|
1
|
-
{"name": "certora-cli-alpha-master", "tag": "", "branch": "master", "commit": "
|
1
|
+
{"name": "certora-cli-alpha-master", "tag": "", "branch": "master", "commit": "74570f3", "timestamp": "20250605.17.15.659237", "version": "20250605.17.15.659237+74570f3"}
|
certora_jars/Typechecker.jar
CHANGED
Binary file
|
File without changes
|
File without changes
|
File without changes
|