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.

@@ -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 match_path_to_mapping_key, remove_file, get_certora_config_dir
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 = match_path_to_mapping_key(contract_file_path, context.compiler_map)
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 get_via_ir_value(self, contract_file_path: str) -> bool:
1369
- if not self.context.solc_via_ir_map and not self.context.solc_via_ir:
1370
- return False
1371
- if self.context.solc_via_ir_map:
1372
- return bool(Util.match_path_to_mapping_key(Path(contract_file_path), self.context.solc_via_ir_map))
1373
- return self.context.solc_via_ir
1374
-
1375
- def _handle_via_ir(self, contract_file_path: str, settings_dict: Dict[str, Any]) -> None:
1376
- if self.get_via_ir_value(contract_file_path):
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: str, settings_dict: Dict[str, Any]) -> None:
1380
- if self.context.solc_evm_version_map:
1381
- match = Util.match_path_to_mapping_key(Path(contract_file_path), self.context.solc_evm_version_map)
1382
- if match:
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: str, settings_dict: Dict[str, Any],
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
- if self.context.solc_optimize_map:
1394
- match = Util.match_path_to_mapping_key(Path(contract_file_path), self.context.solc_optimize_map)
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(self.context.solc_optimize) > 0:
1401
- settings_dict["optimizer"]['runs'] = int(self.context.solc_optimize)
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.get_via_ir_value(contract_file_path):
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: str, settings_dict: Dict[str, Any],
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.get_via_ir_value(contract_file):
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
- # handle contracts
690
- # creating a copy since we cannot modify the OrderedDict while iterating over it
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
- 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}')
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, OrderedDict
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.14.5.808490
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 d0b812b. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
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=9NT9HCFKHZaGXo3lK9ZQHngxbxGBoigkojJANTR_ZRA,212293
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=A4RZMEd7Slx8dt_zEyohfA22wnwE8uw1cyc5ln3BE4k,25716
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=A7blCXdJTnxTh5x1w1fADinWtRUPJoAZC3bfPj3W3Hs,45333
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=seZwusxZNGicOaL0Qjp_uqhwdRIsKKfIhD_4bEA2KhA,8522
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=xTVCh7bWdMDQR37SA6jLUHSelxsk3mbSYi26XKb4MZQ,56006
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=zy91-tq2O8gVujWcQQT_AaetMInqpmFdOPEIla6PbAs,168
68
- certora_jars/Typechecker.jar,sha256=f_N3qu5QQ38hJCq7hM0vU97sqYU0ps5uLQXlbVud4fA,17142966
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.14.5.808490.dist-info/LICENSE,sha256=UGKSKIJSetF8m906JLKqNLkUS2CL60XfQdNvxBvpQXo,620
71
- certora_cli_alpha_master-20250619.14.5.808490.dist-info/METADATA,sha256=Tf7o7nk0XiSzM7-tdd1QKR4HR5ebuDcPfGSfrpTw2FQ,1270
72
- certora_cli_alpha_master-20250619.14.5.808490.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
73
- certora_cli_alpha_master-20250619.14.5.808490.dist-info/entry_points.txt,sha256=_SQ5_uYOAJXtqEW992nIvq7blW9cWFSUVEdbMGuy--4,443
74
- certora_cli_alpha_master-20250619.14.5.808490.dist-info/top_level.txt,sha256=8C77w3JLanY0-NW45vpJsjRssyCqVP-qmPiN9FjWiX4,38
75
- certora_cli_alpha_master-20250619.14.5.808490.dist-info/RECORD,,
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": "d0b812b", "timestamp": "20250619.14.5.808490", "version": "20250619.14.5.808490+d0b812b"}
1
+ {"name": "certora-cli-alpha-master", "tag": "", "branch": "master", "commit": "59712dc", "timestamp": "20250619.17.8.071428", "version": "20250619.17.8.071428+59712dc"}
Binary file