certora-cli-alpha-master 20250617.10.38.101609__py3-none-any.whl → 20250618.12.44.279419__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/certoraBuild.py +7 -11
- certora_cli/CertoraProver/certoraBuildCacheManager.py +15 -16
- {certora_cli_alpha_master-20250617.10.38.101609.dist-info → certora_cli_alpha_master-20250618.12.44.279419.dist-info}/METADATA +2 -2
- {certora_cli_alpha_master-20250617.10.38.101609.dist-info → certora_cli_alpha_master-20250618.12.44.279419.dist-info}/RECORD +10 -10
- certora_jars/CERTORA-CLI-VERSION-METADATA.json +1 -1
- certora_jars/Typechecker.jar +0 -0
- {certora_cli_alpha_master-20250617.10.38.101609.dist-info → certora_cli_alpha_master-20250618.12.44.279419.dist-info}/LICENSE +0 -0
- {certora_cli_alpha_master-20250617.10.38.101609.dist-info → certora_cli_alpha_master-20250618.12.44.279419.dist-info}/WHEEL +0 -0
- {certora_cli_alpha_master-20250617.10.38.101609.dist-info → certora_cli_alpha_master-20250618.12.44.279419.dist-info}/entry_points.txt +0 -0
- {certora_cli_alpha_master-20250617.10.38.101609.dist-info → certora_cli_alpha_master-20250618.12.44.279419.dist-info}/top_level.txt +0 -0
@@ -3729,8 +3729,7 @@ def build_from_scratch(context: CertoraContext,
|
|
3729
3729
|
|
3730
3730
|
def build_from_cache_or_scratch(context: CertoraContext,
|
3731
3731
|
certora_build_generator: CertoraBuildGenerator,
|
3732
|
-
certora_verify_generator: CertoraVerifyGenerator
|
3733
|
-
certora_build_cache_manager: CertoraBuildCacheManager) \
|
3732
|
+
certora_verify_generator: CertoraVerifyGenerator) \
|
3734
3733
|
-> Tuple[bool, bool, CachedFiles]:
|
3735
3734
|
"""
|
3736
3735
|
Builds either from cache (fast path) or from scratch (slow path)
|
@@ -3747,10 +3746,10 @@ def build_from_cache_or_scratch(context: CertoraContext,
|
|
3747
3746
|
False)
|
3748
3747
|
return cache_hit, False, cached_files
|
3749
3748
|
|
3750
|
-
build_cache_applicable =
|
3749
|
+
build_cache_applicable = CertoraBuildCacheManager.cache_is_applicable(context)
|
3751
3750
|
|
3752
3751
|
if not build_cache_applicable:
|
3753
|
-
build_cache_disabling_options =
|
3752
|
+
build_cache_disabling_options = CertoraBuildCacheManager.cache_disabling_options(context)
|
3754
3753
|
build_logger.warning("Requested to enable the build cache, but the build cache is not applicable "
|
3755
3754
|
f"to this run because of the given options: {build_cache_disabling_options}")
|
3756
3755
|
cached_files = build_from_scratch(context, certora_build_generator,
|
@@ -3758,7 +3757,7 @@ def build_from_cache_or_scratch(context: CertoraContext,
|
|
3758
3757
|
False)
|
3759
3758
|
return cache_hit, False, cached_files
|
3760
3759
|
|
3761
|
-
cached_files =
|
3760
|
+
cached_files = CertoraBuildCacheManager.build_from_cache(context)
|
3762
3761
|
# if no match, will rebuild from scratch
|
3763
3762
|
if cached_files is not None:
|
3764
3763
|
# write to .certora_build.json
|
@@ -3797,7 +3796,7 @@ def build(context: CertoraContext, ignore_spec_syntax_check: bool = False) -> No
|
|
3797
3796
|
|
3798
3797
|
try:
|
3799
3798
|
input_config = InputConfig(context)
|
3800
|
-
|
3799
|
+
context.main_cache_key = CertoraBuildCacheManager.get_main_cache_key(context)
|
3801
3800
|
# Create generators
|
3802
3801
|
certora_build_generator = CertoraBuildGenerator(input_config, context)
|
3803
3802
|
|
@@ -3813,12 +3812,9 @@ def build(context: CertoraContext, ignore_spec_syntax_check: bool = False) -> No
|
|
3813
3812
|
else:
|
3814
3813
|
Ctx.run_local_spec_check(False, context)
|
3815
3814
|
|
3816
|
-
certora_build_cache_manager = CertoraBuildCacheManager()
|
3817
|
-
|
3818
3815
|
cache_hit, build_cache_enabled, cached_files = build_from_cache_or_scratch(context,
|
3819
3816
|
certora_build_generator,
|
3820
|
-
certora_verify_generator
|
3821
|
-
certora_build_cache_manager)
|
3817
|
+
certora_verify_generator)
|
3822
3818
|
|
3823
3819
|
# avoid running the same test over and over again for each split run, context.split_rules is true only for
|
3824
3820
|
# the first run and is set to [] for split runs
|
@@ -3838,7 +3834,7 @@ def build(context: CertoraContext, ignore_spec_syntax_check: bool = False) -> No
|
|
3838
3834
|
|
3839
3835
|
# save in build cache
|
3840
3836
|
if not cache_hit and build_cache_enabled and cached_files.may_store_in_build_cache:
|
3841
|
-
|
3837
|
+
CertoraBuildCacheManager.save_build_cache(context, cached_files)
|
3842
3838
|
|
3843
3839
|
certora_verify_generator.update_certora_verify_struct(True)
|
3844
3840
|
certora_verify_generator.dump() # second dump with properly rooted specs
|
@@ -66,10 +66,9 @@ class CertoraBuildCacheManager:
|
|
66
66
|
@returns None if no cache hit, otherwise - the matching `.certora_build.json` file, and a set of source files
|
67
67
|
"""
|
68
68
|
build_cache_dir = Util.get_certora_build_cache_dir()
|
69
|
-
|
70
|
-
main_cache_entry_dir = build_cache_dir / main_cache_key
|
69
|
+
main_cache_entry_dir = build_cache_dir / context.main_cache_key
|
71
70
|
if not main_cache_entry_dir.exists():
|
72
|
-
build_cache_logger.info(f"cache miss on build cache key {main_cache_key}")
|
71
|
+
build_cache_logger.info(f"cache miss on build cache key {context.main_cache_key}")
|
73
72
|
return None
|
74
73
|
|
75
74
|
# here's the tricky matching part:
|
@@ -92,7 +91,7 @@ class CertoraBuildCacheManager:
|
|
92
91
|
build_cache_logger.debug(f"Current sub build cache key computed for {file_list_file} is invalid")
|
93
92
|
continue
|
94
93
|
elif sub_cache_key_current_for_list == sub_cache_key_from_saved_entry:
|
95
|
-
build_cache_logger.info(f"We have a match on build cache key {main_cache_key} and "
|
94
|
+
build_cache_logger.info(f"We have a match on build cache key {context.main_cache_key} and "
|
96
95
|
f"{sub_cache_key_current_for_list}")
|
97
96
|
sub_cache_key = sub_cache_key_current_for_list
|
98
97
|
all_contract_files = set([Path(f) for f in file_list])
|
@@ -103,24 +102,24 @@ class CertoraBuildCacheManager:
|
|
103
102
|
|
104
103
|
if sub_cache_key is None:
|
105
104
|
build_cache_logger.info("All sub-cache-key file list files missed, cache miss on build cache key "
|
106
|
-
f"{main_cache_key}")
|
105
|
+
f"{context.main_cache_key}")
|
107
106
|
return None
|
108
107
|
|
109
108
|
# cache hit
|
110
109
|
certora_build_file = main_cache_entry_dir / f"{sub_cache_key}.{CachedFiles.certora_build_suffix}"
|
111
110
|
if not certora_build_file.exists():
|
112
|
-
build_cache_logger.warning(f"Got a cache-hit on build cache key {main_cache_key} and {sub_cache_key} "
|
111
|
+
build_cache_logger.warning(f"Got a cache-hit on build cache key {context.main_cache_key} and {sub_cache_key} "
|
113
112
|
"but .certora_build.json file does not exist")
|
114
113
|
return None
|
115
114
|
|
116
115
|
if all_contract_files is None: # should not be feasible
|
117
|
-
build_cache_logger.warning(f"Got a cache-hit on build cache key {main_cache_key} and
|
118
|
-
"but file list file does not exist")
|
116
|
+
build_cache_logger.warning(f"Got a cache-hit on build cache key {context.main_cache_key} and "
|
117
|
+
f"{sub_cache_key} but file list file does not exist")
|
119
118
|
return None
|
120
119
|
|
121
120
|
build_output_props_file = main_cache_entry_dir / f"{sub_cache_key}.{CachedFiles.build_output_props_suffix}"
|
122
121
|
if not build_output_props_file.exists():
|
123
|
-
build_cache_logger.warning(f"Got a cache-hit on build cache key {main_cache_key} and {sub_cache_key} "
|
122
|
+
build_cache_logger.warning(f"Got a cache-hit on build cache key {context.main_cache_key} and {sub_cache_key} "
|
124
123
|
f"but {CachedFiles.build_output_props_suffix} file does not exist")
|
125
124
|
return None
|
126
125
|
|
@@ -131,26 +130,26 @@ class CertoraBuildCacheManager:
|
|
131
130
|
@staticmethod
|
132
131
|
def save_build_cache(context: CertoraContext, cached_files: CachedFiles) -> None:
|
133
132
|
build_cache_dir = Util.get_certora_build_cache_dir()
|
134
|
-
|
135
|
-
main_cache_entry_dir = build_cache_dir / main_cache_key
|
133
|
+
main_cache_entry_dir = build_cache_dir / context.main_cache_key
|
136
134
|
sub_cache_key = CertoraBuildCacheManager.get_sub_cache_key(cached_files.all_contract_files)
|
137
135
|
if sub_cache_key is None:
|
138
|
-
build_cache_logger.warning(f"Cannot save cache for main build cache key {main_cache_key} "
|
136
|
+
build_cache_logger.warning(f"Cannot save cache for main build cache key {context.main_cache_key} "
|
139
137
|
"as sub-cache-key could not be computed")
|
140
138
|
return
|
141
139
|
|
142
140
|
if main_cache_entry_dir.exists():
|
143
|
-
build_cache_logger.info(f"main build cache key already exists {main_cache_key}, "
|
141
|
+
build_cache_logger.info(f"main build cache key already exists {context.main_cache_key}, "
|
144
142
|
f"saving sub build cache key {sub_cache_key}")
|
145
143
|
if cached_files.all_exist(main_cache_entry_dir, sub_cache_key):
|
146
144
|
build_cache_logger.debug("cache already saved under this build cache key, override")
|
147
145
|
else:
|
148
|
-
build_cache_logger.debug(f"cache was corrupted, need to re-save build cache key
|
149
|
-
f"and sub cache key {sub_cache_key}")
|
146
|
+
build_cache_logger.debug(f"cache was corrupted, need to re-save build cache key "
|
147
|
+
f"{context.main_cache_key} and sub cache key {sub_cache_key}")
|
150
148
|
CertoraBuildCacheManager.save_files(cached_files, main_cache_entry_dir,
|
151
149
|
sub_cache_key)
|
152
150
|
else:
|
153
|
-
build_cache_logger.info(f"saving main build cache key {main_cache_key} and sub cache key
|
151
|
+
build_cache_logger.info(f"saving main build cache key {context.main_cache_key} and sub cache key "
|
152
|
+
f"{sub_cache_key}")
|
154
153
|
safe_create_dir(main_cache_entry_dir)
|
155
154
|
CertoraBuildCacheManager.save_files(cached_files, main_cache_entry_dir,
|
156
155
|
sub_cache_key)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: certora-cli-alpha-master
|
3
|
-
Version:
|
3
|
+
Version: 20250618.12.44.279419
|
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 83b38e8. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
|
@@ -9,8 +9,8 @@ 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=
|
13
|
-
certora_cli/CertoraProver/certoraBuildCacheManager.py,sha256=
|
12
|
+
certora_cli/CertoraProver/certoraBuild.py,sha256=PofVFPe6Xc2gd3J_gNV4UJRM0GkwWWBp6idSQM8QEN8,212184
|
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
|
16
16
|
certora_cli/CertoraProver/certoraCloudIO.py,sha256=w3mqA5ANgIX6dsb6Nxg4jl9zBRdAX5kw9xLeYmA-iHc,53062
|
@@ -64,12 +64,12 @@ certora_cli/Shared/certoraUtils.py,sha256=xTVCh7bWdMDQR37SA6jLUHSelxsk3mbSYi26XK
|
|
64
64
|
certora_cli/Shared/certoraValidateFuncs.py,sha256=EGoCGTtGMRzWdN-T5GducwkYbyqZBcSjQZHpau0fWnQ,41922
|
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=3cuCdKBIRB29Hr0WahkzwJ5la1y3BHaetXx3AyX6XgY,170
|
68
|
+
certora_jars/Typechecker.jar,sha256=DdmVVzOJPVGI1HwukqFj_bBTMT1D4Fe2j7F2WDZrzME,17142966
|
69
69
|
certora_jars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
70
|
-
certora_cli_alpha_master-
|
71
|
-
certora_cli_alpha_master-
|
72
|
-
certora_cli_alpha_master-
|
73
|
-
certora_cli_alpha_master-
|
74
|
-
certora_cli_alpha_master-
|
75
|
-
certora_cli_alpha_master-
|
70
|
+
certora_cli_alpha_master-20250618.12.44.279419.dist-info/LICENSE,sha256=UGKSKIJSetF8m906JLKqNLkUS2CL60XfQdNvxBvpQXo,620
|
71
|
+
certora_cli_alpha_master-20250618.12.44.279419.dist-info/METADATA,sha256=zK3yv8NXotUzp3OG1MHjKKaXitiXpUxQjCM_3ThiWVk,1271
|
72
|
+
certora_cli_alpha_master-20250618.12.44.279419.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
73
|
+
certora_cli_alpha_master-20250618.12.44.279419.dist-info/entry_points.txt,sha256=_SQ5_uYOAJXtqEW992nIvq7blW9cWFSUVEdbMGuy--4,443
|
74
|
+
certora_cli_alpha_master-20250618.12.44.279419.dist-info/top_level.txt,sha256=8C77w3JLanY0-NW45vpJsjRssyCqVP-qmPiN9FjWiX4,38
|
75
|
+
certora_cli_alpha_master-20250618.12.44.279419.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": "83b38e8", "timestamp": "20250618.12.44.279419", "version": "20250618.12.44.279419+83b38e8"}
|
certora_jars/Typechecker.jar
CHANGED
Binary file
|
File without changes
|
File without changes
|
File without changes
|