certora-cli-alpha-master 20250619.14.5.808490__py3-none-any.whl → 20250619.17.8.71428__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.
Potentially problematic release.
This version of certora-cli-alpha-master might be problematic. Click here for more details.
- certora_cli/CertoraProver/Compiler/CompilerCollectorFactory.py +5 -2
- certora_cli/CertoraProver/certoraBuild.py +31 -30
- certora_cli/CertoraProver/certoraContext.py +29 -0
- certora_cli/CertoraProver/certoraContextValidator.py +29 -25
- certora_cli/Shared/certoraUtils.py +1 -29
- {certora_cli_alpha_master-20250619.14.5.808490.dist-info → certora_cli_alpha_master-20250619.17.8.71428.dist-info}/METADATA +2 -2
- {certora_cli_alpha_master-20250619.14.5.808490.dist-info → certora_cli_alpha_master-20250619.17.8.71428.dist-info}/RECORD +13 -13
- certora_jars/CERTORA-CLI-VERSION-METADATA.json +1 -1
- certora_jars/Typechecker.jar +0 -0
- {certora_cli_alpha_master-20250619.14.5.808490.dist-info → certora_cli_alpha_master-20250619.17.8.71428.dist-info}/LICENSE +0 -0
- {certora_cli_alpha_master-20250619.14.5.808490.dist-info → certora_cli_alpha_master-20250619.17.8.71428.dist-info}/WHEEL +0 -0
- {certora_cli_alpha_master-20250619.14.5.808490.dist-info → certora_cli_alpha_master-20250619.17.8.71428.dist-info}/entry_points.txt +0 -0
- {certora_cli_alpha_master-20250619.14.5.808490.dist-info → certora_cli_alpha_master-20250619.17.8.71428.dist-info}/top_level.txt +0 -0
@@ -25,8 +25,9 @@ from CertoraProver.Compiler.CompilerCollector import CompilerLang, CompilerColle
|
|
25
25
|
from CertoraProver.Compiler.CompilerCollectorSol import CompilerCollectorSol, CompilerLangSol
|
26
26
|
from CertoraProver.Compiler.CompilerCollectorYul import CompilerLangYul, CompilerCollectorYul
|
27
27
|
from CertoraProver.Compiler.CompilerCollectorVy import CompilerCollectorVy, CompilerLangVy
|
28
|
-
from Shared.certoraUtils import
|
28
|
+
from Shared.certoraUtils import remove_file, get_certora_config_dir
|
29
29
|
from CertoraProver.certoraContextClass import CertoraContext
|
30
|
+
import CertoraProver.certoraContext as Ctx
|
30
31
|
|
31
32
|
# logger for running the Solidity compiler and reporting any errors it emits
|
32
33
|
compiler_logger = logging.getLogger("compiler")
|
@@ -49,7 +50,9 @@ def get_relevant_compiler(contract_file_path: Path, context: CertoraContext) ->
|
|
49
50
|
contract_file_path = Path(os.path.relpath(contract_file_path, cwd_in_source))
|
50
51
|
|
51
52
|
if context.compiler_map:
|
52
|
-
match =
|
53
|
+
match = Ctx.get_map_attribute_value(context, contract_file_path, 'compiler')
|
54
|
+
assert isinstance(match, str), (f"In the attribute compiler_map, {contract_file_path} expected to be matched "
|
55
|
+
f"to a string, {match} is of type {type(match)} not a string")
|
53
56
|
if match:
|
54
57
|
return match
|
55
58
|
else:
|
@@ -1365,47 +1365,48 @@ class CertoraBuildGenerator:
|
|
1365
1365
|
|
1366
1366
|
return bytecode
|
1367
1367
|
|
1368
|
-
def
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
|
1375
|
-
|
1376
|
-
|
1368
|
+
def get_solc_via_ir_value(self, contract_file_path: Path) -> bool:
|
1369
|
+
match = Ctx.get_map_attribute_value(self.context, contract_file_path, 'solc_via_ir')
|
1370
|
+
assert isinstance(match, (bool, type(None))), f"Expected solc_via_ir to be bool or None, got {type(match)}"
|
1371
|
+
return bool(match)
|
1372
|
+
|
1373
|
+
def get_solc_evm_version_value(self, contract_file_path: Path) -> Optional[str]:
|
1374
|
+
match = Ctx.get_map_attribute_value(self.context, contract_file_path, 'solc_evm_version')
|
1375
|
+
assert isinstance(match, (str, type(None))), f"Expected solc_evm_version to be string or None, got {type(match)}"
|
1376
|
+
return match
|
1377
|
+
|
1378
|
+
def get_solc_optimize_value(self, contract_file_path: Path) -> Optional[str]:
|
1379
|
+
match = Ctx.get_map_attribute_value(self.context, contract_file_path, 'solc_optimize')
|
1380
|
+
assert isinstance(match, (str, type(None))), f"Expected solc_optimize to be string or None, got {type(match)}"
|
1381
|
+
return match
|
1382
|
+
|
1383
|
+
def _handle_via_ir(self, contract_file_path: Path, settings_dict: Dict[str, Any]) -> None:
|
1384
|
+
if self.get_solc_via_ir_value(contract_file_path):
|
1377
1385
|
settings_dict["viaIR"] = True
|
1378
1386
|
|
1379
|
-
def _handle_evm_version(self, contract_file_path:
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
settings_dict["evmVersion"] = match
|
1384
|
-
elif self.context.solc_evm_version:
|
1385
|
-
settings_dict["evmVersion"] = self.context.solc_evm_version
|
1387
|
+
def _handle_evm_version(self, contract_file_path: Path, settings_dict: Dict[str, Any]) -> None:
|
1388
|
+
match = self.get_solc_evm_version_value(contract_file_path)
|
1389
|
+
if match:
|
1390
|
+
settings_dict["evmVersion"] = match
|
1386
1391
|
|
1387
|
-
def _handle_optimize(self, contract_file_path:
|
1392
|
+
def _handle_optimize(self, contract_file_path: Path, settings_dict: Dict[str, Any],
|
1388
1393
|
compiler_collector: CompilerCollector) -> None:
|
1389
1394
|
"""
|
1390
1395
|
@param contract_file_path: the contract that we are working on
|
1391
1396
|
@param settings_dict: data structure for sending to the solc compiler
|
1392
1397
|
"""
|
1393
|
-
|
1394
|
-
|
1395
|
-
if match and int(match) > 0:
|
1396
|
-
settings_dict["optimizer"] = {"enabled": True}
|
1397
|
-
settings_dict["optimizer"]['runs'] = int(match)
|
1398
|
-
elif self.context.solc_optimize:
|
1398
|
+
match = self.get_solc_optimize_value(contract_file_path)
|
1399
|
+
if match:
|
1399
1400
|
settings_dict["optimizer"] = {"enabled": True}
|
1400
|
-
if int(
|
1401
|
-
settings_dict["optimizer"]['runs'] = int(
|
1401
|
+
if int(match) > 0:
|
1402
|
+
settings_dict["optimizer"]['runs'] = int(match)
|
1402
1403
|
|
1403
1404
|
# if optimizer is true, we should also define settings_dict["optimizer"]["details"]
|
1404
1405
|
# for both optimize map and optimize
|
1405
1406
|
optimizer = settings_dict.get("optimizer")
|
1406
1407
|
if optimizer and isinstance(optimizer, dict) and optimizer.get('enabled'):
|
1407
1408
|
# if we are not disabling finder friendly optimizer specifically, enable it whenever viaIR is also enabled
|
1408
|
-
if not self.context.strict_solc_optimizer and self.
|
1409
|
+
if not self.context.strict_solc_optimizer and self.get_solc_via_ir_value(contract_file_path):
|
1409
1410
|
# The default optimizer steps (taken from libsolidity/interface/OptimiserSettings.h) but with the
|
1410
1411
|
# full inliner step removed
|
1411
1412
|
solc0_8_26_to_0_8_30 = ("dhfoDgvulfnTUtnIfxa[r]EscLMVcul[j]Trpeulxa[r]cLCTUca[r]LSsTFOtfDnca[r]" +
|
@@ -1475,7 +1476,7 @@ class CertoraBuildGenerator:
|
|
1475
1476
|
for opt_pass in self.context.disable_solc_optimizers:
|
1476
1477
|
settings_dict["optimizer"]["details"][opt_pass] = False
|
1477
1478
|
|
1478
|
-
def _fill_codegen_related_options(self, contract_file_path:
|
1479
|
+
def _fill_codegen_related_options(self, contract_file_path: Path, settings_dict: Dict[str, Any],
|
1479
1480
|
compiler_collector: CompilerCollector) -> None:
|
1480
1481
|
"""
|
1481
1482
|
Fills options that control how we call solc and affect the bytecode in some way
|
@@ -1556,7 +1557,7 @@ class CertoraBuildGenerator:
|
|
1556
1557
|
}
|
1557
1558
|
}
|
1558
1559
|
|
1559
|
-
self._fill_codegen_related_options(contract_file_as_provided, settings_dict, compiler_collector)
|
1560
|
+
self._fill_codegen_related_options(Path(contract_file_as_provided), settings_dict, compiler_collector)
|
1560
1561
|
|
1561
1562
|
result_dict = {"language": compiler_collector_lang.name, "sources": sources_dict, "settings": settings_dict}
|
1562
1563
|
# debug_print("Standard json input")
|
@@ -2291,7 +2292,7 @@ class CertoraBuildGenerator:
|
|
2291
2292
|
|
2292
2293
|
if compiler_lang == CompilerLangSol():
|
2293
2294
|
settings_dict: Dict[str, Any] = {}
|
2294
|
-
self._fill_codegen_related_options(build_arg_contract_file, settings_dict,
|
2295
|
+
self._fill_codegen_related_options(Path(build_arg_contract_file), settings_dict,
|
2295
2296
|
compiler_collector_for_contract_file)
|
2296
2297
|
solc_optimizer_on, solc_optimizer_runs = self.solc_setting_optimizer_runs(settings_dict)
|
2297
2298
|
solc_via_ir = self.solc_setting_via_ir(settings_dict)
|
@@ -2421,7 +2422,7 @@ class CertoraBuildGenerator:
|
|
2421
2422
|
# if no function finder mode set, determine based on viaIR enabled or not:
|
2422
2423
|
if self.context.function_finder_mode is None:
|
2423
2424
|
# in via-ir, should not compress
|
2424
|
-
if self.
|
2425
|
+
if self.get_solc_via_ir_value(Path(contract_file)):
|
2425
2426
|
should_compress = False
|
2426
2427
|
else:
|
2427
2428
|
should_compress = True
|
@@ -20,6 +20,8 @@ import os
|
|
20
20
|
import re
|
21
21
|
import sys
|
22
22
|
import logging
|
23
|
+
import fnmatch
|
24
|
+
from wcmatch import glob
|
23
25
|
|
24
26
|
|
25
27
|
from pathlib import Path
|
@@ -613,3 +615,30 @@ def attrs_to_relative(context: CertoraContext) -> None:
|
|
613
615
|
packages_to_relative()
|
614
616
|
prover_resource_file_to_relative()
|
615
617
|
verify_to_relative()
|
618
|
+
|
619
|
+
def get_map_attribute_value(context: CertoraContext, path: Path, attr_name: str) -> Optional[str | bool]:
|
620
|
+
|
621
|
+
value = getattr(context, attr_name, None)
|
622
|
+
if value:
|
623
|
+
return value
|
624
|
+
|
625
|
+
map_value = getattr(context, f"{attr_name}_map", None)
|
626
|
+
if not map_value:
|
627
|
+
return None # No map value defined
|
628
|
+
for key, entry_value in map_value.items():
|
629
|
+
# Split key to handle contract:field syntax
|
630
|
+
key_parts = key.split(':')
|
631
|
+
pattern = key_parts[0]
|
632
|
+
|
633
|
+
if Path(pattern).suffix == "": # This is a contract pattern
|
634
|
+
# Find contracts that match the pattern
|
635
|
+
for contract_name, contract_file_path in context.contract_to_file.items():
|
636
|
+
if fnmatch.fnmatch(contract_name, pattern):
|
637
|
+
# Check if this contract's file matches our target path
|
638
|
+
if Path(contract_file_path) == path:
|
639
|
+
return entry_value
|
640
|
+
else: # This is a file pattern
|
641
|
+
# Match the file pattern against the path
|
642
|
+
if glob.globmatch(str(path), pattern, flags=glob.GLOBSTAR):
|
643
|
+
return entry_value
|
644
|
+
return None # No match
|
@@ -19,7 +19,9 @@ import re
|
|
19
19
|
import sys
|
20
20
|
import itertools
|
21
21
|
import tempfile
|
22
|
+
import fnmatch
|
22
23
|
from pathlib import Path
|
24
|
+
from wcmatch import glob
|
23
25
|
from typing import Dict, List, Tuple, Set, Any, Union, OrderedDict
|
24
26
|
|
25
27
|
import CertoraProver.certoraContext as Ctx
|
@@ -666,6 +668,20 @@ def check_mode_of_operation(context: CertoraContext) -> None:
|
|
666
668
|
special_file_type]) and not context.build_only:
|
667
669
|
raise Util.CertoraUserInputError("You must use 'verify' when running the Certora Prover")
|
668
670
|
|
671
|
+
def find_matching_contracts(context: CertoraContext, pattern: str) -> List[str]:
|
672
|
+
result = []
|
673
|
+
for contract in context.contract_to_file:
|
674
|
+
if fnmatch.fnmatch(contract, pattern):
|
675
|
+
result.append(context.contract_to_file[contract])
|
676
|
+
return result
|
677
|
+
|
678
|
+
def find_matching_files(context: CertoraContext, pattern: str) -> List[str]:
|
679
|
+
result = []
|
680
|
+
|
681
|
+
for path in context.file_paths:
|
682
|
+
if glob.globmatch(path, pattern, flags=glob.GLOBSTAR):
|
683
|
+
result.append(path)
|
684
|
+
return result
|
669
685
|
|
670
686
|
def check_map_attributes(context: CertoraContext) -> None:
|
671
687
|
|
@@ -686,33 +702,21 @@ def check_map_attributes(context: CertoraContext) -> None:
|
|
686
702
|
if not isinstance(map_attr, OrderedDict):
|
687
703
|
raise RuntimeError(f"`map_attr` is not an ordered dictionary, got {map_attr}")
|
688
704
|
|
689
|
-
#
|
690
|
-
|
691
|
-
new_map_attr = map_attr.copy()
|
705
|
+
# will check that all the contract files are matched
|
706
|
+
file_list: Dict[str, bool] = {path: False for path in context.file_paths}
|
692
707
|
|
693
708
|
for key, value in map_attr.items():
|
694
|
-
|
695
|
-
if Path(
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
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}')
|
709
|
+
pattern = key.split(':')[0] # ignore the contract part
|
710
|
+
if Path(pattern).suffix == "":
|
711
|
+
for path in find_matching_contracts(context, pattern):
|
712
|
+
file_list[path] = True
|
713
|
+
else:
|
714
|
+
for path in find_matching_files(context, pattern):
|
715
|
+
file_list[path] = True
|
716
|
+
|
717
|
+
none_keys = [k for k, v in file_list.items() if v is False]
|
718
|
+
if none_keys:
|
719
|
+
raise Util.CertoraUserInputError(f"The following files are not matched in {map_attr_name}: {none_keys}")
|
716
720
|
|
717
721
|
|
718
722
|
def check_parametric_contracts(context: CertoraContext) -> None:
|
@@ -30,7 +30,7 @@ import urllib3.util
|
|
30
30
|
from collections import defaultdict
|
31
31
|
from types import SimpleNamespace
|
32
32
|
|
33
|
-
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
|
34
34
|
from pathlib import Path
|
35
35
|
|
36
36
|
scripts_dir_path = Path(__file__).parent.parent.resolve() # containing directory
|
@@ -44,7 +44,6 @@ import tempfile
|
|
44
44
|
from datetime import datetime
|
45
45
|
from rich.console import Console
|
46
46
|
from rich.text import Text
|
47
|
-
from wcmatch import glob
|
48
47
|
|
49
48
|
CONSOLE = Console()
|
50
49
|
|
@@ -1172,36 +1171,9 @@ class Singleton(type):
|
|
1172
1171
|
cls.__instancesinstances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
|
1173
1172
|
return cls.__instancesinstances[cls]
|
1174
1173
|
|
1175
|
-
|
1176
1174
|
class AbstractAndSingleton(Singleton, ABCMeta):
|
1177
1175
|
pass
|
1178
1176
|
|
1179
|
-
|
1180
|
-
def match_path_to_mapping_key(path: Path, m: OrderedDict[str, str]) -> Optional[str]:
|
1181
|
-
"""
|
1182
|
-
Matches the path to the first key in the map that matches the path.
|
1183
|
-
paths may include wildcards
|
1184
|
-
|
1185
|
-
For example, if the ordered dictionary in compiler_map has the mapping:
|
1186
|
-
|
1187
|
-
dir/a.sol -> solc7.1
|
1188
|
-
dir/*.sol -> solc6.3
|
1189
|
-
**/*.sol -> 8.10
|
1190
|
-
|
1191
|
-
dir/a.sol will be matched by the first rule
|
1192
|
-
dir/b.sol by the second rule
|
1193
|
-
and
|
1194
|
-
a.sol by the third rule
|
1195
|
-
|
1196
|
-
@param path: the path to match against
|
1197
|
-
@param m: the map whose keys we're searching
|
1198
|
-
@return: the value from the map that best matches the path, None if not found.
|
1199
|
-
"""
|
1200
|
-
for k, v in m.items():
|
1201
|
-
if glob.globmatch(str(path), k, flags=glob.GLOBSTAR):
|
1202
|
-
return v
|
1203
|
-
return None # No match
|
1204
|
-
|
1205
1177
|
def find_in(dir_path: Path, file_to_find: Path) -> Optional[Path]:
|
1206
1178
|
"""
|
1207
1179
|
Given a directory dir_path and a file we wish to find within that directory,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: certora-cli-alpha-master
|
3
|
-
Version: 20250619.
|
3
|
+
Version: 20250619.17.8.71428
|
4
4
|
Summary: Runner for the Certora Prover
|
5
5
|
Home-page: https://pypi.org/project/certora-cli-alpha-master
|
6
6
|
Author: Certora
|
@@ -38,4 +38,4 @@ Dynamic: requires-dist
|
|
38
38
|
Dynamic: requires-python
|
39
39
|
Dynamic: summary
|
40
40
|
|
41
|
-
Commit
|
41
|
+
Commit 59712dc. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
|
@@ -9,7 +9,7 @@ certora_cli/certoraSolanaProver.py,sha256=7hu-YJJNA_P5eAJq_jYh6IGjiUf0PegGUBRCJ5
|
|
9
9
|
certora_cli/certoraSorobanProver.py,sha256=qE6b_vicC8KgOvUz7UTOaDuXT3UW0MMhq3keQgUVvzs,2865
|
10
10
|
certora_cli/rustMutator.py,sha256=6AvOGU8Ijz89zW_ZJCWlfXkeobJsk7EsqZhK7Eqwn-Y,14544
|
11
11
|
certora_cli/CertoraProver/__init__.py,sha256=QHNr-PJQAoyuPgTkO7gg23GRchiWSXglWNG7yLSQZvs,849
|
12
|
-
certora_cli/CertoraProver/certoraBuild.py,sha256=
|
12
|
+
certora_cli/CertoraProver/certoraBuild.py,sha256=ci9QZPpn8624rS-zQhatgyXBAmkqpo7XU9B3HJkvaeo,212387
|
13
13
|
certora_cli/CertoraProver/certoraBuildCacheManager.py,sha256=I60x0ykMFPzciD193cPXihsHh0fdV--UOmNKbIZW6Rc,13238
|
14
14
|
certora_cli/CertoraProver/certoraBuildDataClasses.py,sha256=8tPny9-pasC7CCRKQclaVQ3qcEDNa6EdOUu1ZWh0MZY,14704
|
15
15
|
certora_cli/CertoraProver/certoraBuildRust.py,sha256=ofKvmtqzUGTrgVm5crcybV7gbElbjiUc6Z4FphPEjz0,6016
|
@@ -18,10 +18,10 @@ certora_cli/CertoraProver/certoraCollectConfigurationLayout.py,sha256=6aHEGrhT_Y
|
|
18
18
|
certora_cli/CertoraProver/certoraCollectRunMetadata.py,sha256=n67E7hjVdPlBXMh1FMzcWSgu3v5SfFM_HOO2JpbCeY0,11787
|
19
19
|
certora_cli/CertoraProver/certoraCompilerParameters.py,sha256=r35y03IRwWIoz1GCNC7PuW3n8JPz9J1NGwhwUYKdYtI,1452
|
20
20
|
certora_cli/CertoraProver/certoraConfigIO.py,sha256=uq-uNnjVBzg9Kh41fDqn-lnwSJXe4k2_iy5GTnQIDa8,7560
|
21
|
-
certora_cli/CertoraProver/certoraContext.py,sha256=
|
21
|
+
certora_cli/CertoraProver/certoraContext.py,sha256=D7ReIsRgUdBq_05AqJsSWz_iWJpRokaCujW6YD4gSug,26910
|
22
22
|
certora_cli/CertoraProver/certoraContextAttributes.py,sha256=zg_AmotgzlklxIkj6h7G5mPvRWuMHEYw04eEKsO2u64,69080
|
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=fwkuH6-uqDsLEHytsb_t8ySrI12Bt8nUa4Yq-1UIzEQ,45068
|
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=TOpHMSYGhfSmVQwJYZMVOI_Ws03k6cTffzaQUmhnNUo,8761
|
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=
|
63
|
+
certora_cli/Shared/certoraUtils.py,sha256=5uxgeGyfq8jw4w9l7fxiyMsgw74GpEtS8Wy8u5MNBHs,55178
|
64
64
|
certora_cli/Shared/certoraValidateFuncs.py,sha256=Fn6GN_LEwlMjBdTiVO6WzCg8P5F6DhwkvP9Xl-XiQ6o,41921
|
65
65
|
certora_cli/Shared/proverCommon.py,sha256=PqkjycZ3TdZr0RNWoPuA_VZ5b7EAAsu9ewymNH6kIm4,11291
|
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=pKEi0SdquwIT3s2TgZ3k7WXXsaWya10ISXuqMc5DwDk,168
|
68
|
+
certora_jars/Typechecker.jar,sha256=UEK7qCOV1xqNskydASfX_f1osNO68SeN3PyXSfRBOgU,17142966
|
69
69
|
certora_jars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
70
|
-
certora_cli_alpha_master-20250619.
|
71
|
-
certora_cli_alpha_master-20250619.
|
72
|
-
certora_cli_alpha_master-20250619.
|
73
|
-
certora_cli_alpha_master-20250619.
|
74
|
-
certora_cli_alpha_master-20250619.
|
75
|
-
certora_cli_alpha_master-20250619.
|
70
|
+
certora_cli_alpha_master-20250619.17.8.71428.dist-info/LICENSE,sha256=UGKSKIJSetF8m906JLKqNLkUS2CL60XfQdNvxBvpQXo,620
|
71
|
+
certora_cli_alpha_master-20250619.17.8.71428.dist-info/METADATA,sha256=Hyd0gBmBvmUJrOEJxu2TVSuwcJX4Rs3GSds0lMz_3bY,1269
|
72
|
+
certora_cli_alpha_master-20250619.17.8.71428.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
73
|
+
certora_cli_alpha_master-20250619.17.8.71428.dist-info/entry_points.txt,sha256=_SQ5_uYOAJXtqEW992nIvq7blW9cWFSUVEdbMGuy--4,443
|
74
|
+
certora_cli_alpha_master-20250619.17.8.71428.dist-info/top_level.txt,sha256=8C77w3JLanY0-NW45vpJsjRssyCqVP-qmPiN9FjWiX4,38
|
75
|
+
certora_cli_alpha_master-20250619.17.8.71428.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": "59712dc", "timestamp": "20250619.17.8.071428", "version": "20250619.17.8.071428+59712dc"}
|
certora_jars/Typechecker.jar
CHANGED
Binary file
|
File without changes
|
File without changes
|
File without changes
|