certora-cli-beta-mirror 8.5.0__py3-none-macosx_10_9_universal2.whl → 8.6.0__py3-none-macosx_10_9_universal2.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.
@@ -3339,14 +3339,14 @@ class CertoraBuildGenerator:
3339
3339
  else:
3340
3340
  added_source_finders = {}
3341
3341
 
3342
- try:
3343
- casting_instrumentations, casting_types = generate_casting_instrumentation(self.asts, build_arg_contract_file, sdc_pre_finder)
3344
- except Exception as e:
3345
- instrumentation_logger.warning(
3346
- f"Computing casting instrumentation failed for {build_arg_contract_file}: {e}", exc_info=True)
3347
- casting_instrumentations, casting_types = {}, {}
3348
-
3349
- instr = CertoraBuildGenerator.merge_dicts_instrumentation(instr, casting_instrumentations)
3342
+ if self.context.safe_casting_builtin:
3343
+ try:
3344
+ casting_instrumentations, casting_types = generate_casting_instrumentation(self.asts, build_arg_contract_file, sdc_pre_finder)
3345
+ except Exception as e:
3346
+ instrumentation_logger.warning(
3347
+ f"Computing casting instrumentation failed for {build_arg_contract_file}: {e}", exc_info=True)
3348
+ casting_instrumentations, casting_types = {}, {}
3349
+ instr = CertoraBuildGenerator.merge_dicts_instrumentation(instr, casting_instrumentations)
3350
3350
 
3351
3351
  abs_build_arg_contract_file = Util.abs_posix_path(build_arg_contract_file)
3352
3352
  if abs_build_arg_contract_file not in instr:
@@ -3401,12 +3401,13 @@ class CertoraBuildGenerator:
3401
3401
  read_so_far += amt + 1 + to_skip
3402
3402
  output.write(in_file.read(-1))
3403
3403
 
3404
- library_name, funcs = casting_types.get(contract_file, ("", list()))
3405
- if len(funcs) > 0:
3406
- output.write(bytes(f"\nlibrary {library_name}" + "{\n", "utf8"))
3407
- for f in funcs:
3408
- output.write(bytes(f, "utf8"))
3409
- output.write(bytes("}\n", "utf8"))
3404
+ if self.context.safe_casting_builtin:
3405
+ library_name, funcs = casting_types.get(contract_file, ("", list()))
3406
+ if len(funcs) > 0:
3407
+ output.write(bytes(f"\nlibrary {library_name}" + "{\n", "utf8"))
3408
+ for f in funcs:
3409
+ output.write(bytes(f, "utf8"))
3410
+ output.write(bytes("}\n", "utf8"))
3410
3411
 
3411
3412
  new_file = self.to_autofinder_file(build_arg_contract_file)
3412
3413
  self.context.file_to_contract[new_file] = self.context.file_to_contract[
@@ -1202,6 +1202,19 @@ class EvmAttributes(AttrUtil.Attributes):
1202
1202
  disables_build_cache=False,
1203
1203
  )
1204
1204
 
1205
+ SAFE_CASTING_BUILTIN = AttrUtil.AttributeDefinition(
1206
+ arg_type=AttrUtil.AttrArgType.BOOLEAN,
1207
+ help_msg="This needs to be set to true for the safeCasting builtin to work",
1208
+ default_desc="This needs to be set to true for the safeCasting builtin to work",
1209
+ jar_flag='-safeCastingBuiltin',
1210
+ argparse_args={
1211
+ 'action': AttrUtil.STORE_TRUE,
1212
+ 'default': False
1213
+ },
1214
+ affects_build_cache_key=True,
1215
+ disables_build_cache=False,
1216
+ )
1217
+
1205
1218
  @classmethod
1206
1219
  def hide_attributes(cls) -> List[str]:
1207
1220
  # do not show these attributes in the help message
@@ -238,7 +238,8 @@ class CertoraContextValidator:
238
238
  check_rule(context)
239
239
 
240
240
  if context.split_rules and (context.build_only or context.compilation_steps_only):
241
- raise Util.CertoraUserInputError("cannot use 'compilation_steps_only' or 'build_only' with 'split_rules'")
241
+ validation_logger.warning("When running with 'compilation_steps_only' or 'build_only', "
242
+ "'split_rules' attribute has no effect and will be ignored.")
242
243
 
243
244
  if context.compilation_steps_only and context.build_only:
244
245
  raise Util.CertoraUserInputError("cannot use both 'compilation_steps_only' and 'build_only'")
certora_cli/certoraRun.py CHANGED
@@ -74,7 +74,7 @@ def run_certora(args: List[str], app: Type[App.CertoraApp] = App.EvmApp,
74
74
  # Collect and dump configuration layout
75
75
  collect_and_dump_config_layout(context)
76
76
 
77
- if context.split_rules:
77
+ if context.split_rules and not (context.build_only or context.compilation_steps_only):
78
78
  context.build_only = True
79
79
  build(context)
80
80
  context.build_only = False
@@ -249,7 +249,10 @@ def validate_mutate_command() -> None:
249
249
  Util.CertoraUserInputError: If validation fails.
250
250
  """
251
251
  if shutil.which("mutate") is None:
252
- raise Util.CertoraUserInputError("universalmutator command 'mutate' not found in PATH.")
252
+ raise Util.CertoraUserInputError("Currently for Rust projects, universalmutator is required to generate mutants. "
253
+ "The universalmutator command 'mutate' not found in PATH. "
254
+ "To install universalmutator, please follow the instructions at"
255
+ " https://github.com/agroce/universalmutator")
253
256
 
254
257
 
255
258
  def run_mutate(file_to_mutate: Path, mutants_location: Path, build_command: str) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: certora-cli-beta-mirror
3
- Version: 8.5.0
3
+ Version: 8.6.0
4
4
  Summary: Runner for the Certora Prover
5
5
  Home-page: https://pypi.org/project/certora-cli-beta-mirror
6
6
  Author: Certora
@@ -23,7 +23,6 @@ Requires-Dist: sly
23
23
  Requires-Dist: tabulate
24
24
  Requires-Dist: tqdm
25
25
  Requires-Dist: StrEnum
26
- Requires-Dist: universalmutator
27
26
  Requires-Dist: jinja2
28
27
  Requires-Dist: wcmatch
29
28
  Requires-Dist: typing_extensions
@@ -39,4 +38,4 @@ Dynamic: requires-dist
39
38
  Dynamic: requires-python
40
39
  Dynamic: summary
41
40
 
42
- Commit d143e0e. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
41
+ Commit 92412cc. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
@@ -7,15 +7,15 @@ certora_cli/certoraEVMProver.py,sha256=AH8ZeWXAs7wK6nNKFANCt6seLf9EaaFXtfpjc3xdI
7
7
  certora_cli/certoraEqCheck.py,sha256=qfZq7bpU1kbAIezC66W61VfKNZz7Uywg2Ygup62qYeo,1069
8
8
  certora_cli/certoraMutate.py,sha256=XhFHyNVP_sk-3XkY6AAV5fVliEFAVRq-JeDGsqE5IQQ,3333
9
9
  certora_cli/certoraRanger.py,sha256=thJ4EKo-MFHklCk-7zJADZ-9SO6eCg1AFv88-QssLj0,1289
10
- certora_cli/certoraRun.py,sha256=c3ySo9attnuMdrnWxUNKLu4PgKsqgoYrUgJnL0Ej3Qs,6651
10
+ certora_cli/certoraRun.py,sha256=TLKtAATiw3bOW-arkOu91CezIAks-cJFeSRWAEyR0yI,6714
11
11
  certora_cli/certoraSolanaProver.py,sha256=1R1YnGHCofb05GqFgpxRh3ZmHkmwMm1hPM7rfeiEu7o,3250
12
12
  certora_cli/certoraSorobanProver.py,sha256=SYJKz5Sw-N0bJrSa1njRCE53R9_PMz7IWLhfamOjisk,2840
13
13
  certora_cli/certoraSuiProver.py,sha256=gRs-iihB35ZSEIQ5-hJN-wLgrHZlcfmpk76Wr6vza74,2827
14
- certora_cli/rustMutator.py,sha256=6AvOGU8Ijz89zW_ZJCWlfXkeobJsk7EsqZhK7Eqwn-Y,14544
14
+ certora_cli/rustMutator.py,sha256=j1YdY5HOWQcRNbz7TOxp5c79J0YaaYHtWZ6m2mSTeGc,14865
15
15
  certora_cli/CertoraProver/__init__.py,sha256=QHNr-PJQAoyuPgTkO7gg23GRchiWSXglWNG7yLSQZvs,849
16
16
  certora_cli/CertoraProver/castingInstrumenter.py,sha256=4FDjQjnN9s8I3B9J-_G9rug9Jf3LnWnAuRngr50oTH4,7898
17
17
  certora_cli/CertoraProver/certoraApp.py,sha256=RKJ2Krb_CzbRUvczbdE6FhUDrFcvrR8j0JS8MNWXX7s,1469
18
- certora_cli/CertoraProver/certoraBuild.py,sha256=-4cBWcMj3dU9cc2BzJ7AT3TzY1tDYGTKaLrcvxUOW6Y,231453
18
+ certora_cli/CertoraProver/certoraBuild.py,sha256=h6lGjUyTcC0EnRCK1DXD26Qez4DEphpFjx_IoQRiuO8,231608
19
19
  certora_cli/CertoraProver/certoraBuildCacheManager.py,sha256=DnVd7w92xjmg0DIrMgoJnCvaU0yCz7ySy0M4RiHEXEM,13648
20
20
  certora_cli/CertoraProver/certoraBuildDataClasses.py,sha256=BKOjO0yBUWA26cK_VO_lczXrOD7VWC8egQiXY4jGpmk,14914
21
21
  certora_cli/CertoraProver/certoraBuildRust.py,sha256=ZPbNp4ttRmzcKhFsgHSiHDRExNPaLOzgxTRqu23o1D0,6061
@@ -26,9 +26,9 @@ certora_cli/CertoraProver/certoraCollectRunMetadata.py,sha256=SonKgq2l6_8o6xySbi
26
26
  certora_cli/CertoraProver/certoraCompilerParameters.py,sha256=v-MIt4sDJSQ7vpEFmCt9XBkKBhdBbZuZA4PWNErJwcU,1807
27
27
  certora_cli/CertoraProver/certoraConfigIO.py,sha256=-1EhJYsiheYvyCgOOWrRCQBjqtqNXrpMKJYRq5cKJ0Y,8171
28
28
  certora_cli/CertoraProver/certoraContext.py,sha256=bBbLPet5si6jFEdL1TBORN-HCiJGQK7hD6OQZ_ODmFY,28878
29
- certora_cli/CertoraProver/certoraContextAttributes.py,sha256=P1_wgeodSY3-n8c79E64whVSJ6y52pQGvxtvPc4le38,72244
29
+ certora_cli/CertoraProver/certoraContextAttributes.py,sha256=e1rtRyF3L_PftUBaQ8XzCutlduSuE1vcS9MyxGwcuqk,72750
30
30
  certora_cli/CertoraProver/certoraContextClass.py,sha256=d7HDqM72K7YnswR7kEcAHGwkFNrTqRz5-_0m7cl2Mso,900
31
- certora_cli/CertoraProver/certoraContextValidator.py,sha256=Ja5XrVT1KY4XOG_tQsnUXq5wCifXpEdUUJba3073NaI,46366
31
+ certora_cli/CertoraProver/certoraContextValidator.py,sha256=KEsxk6D_s_piucib5VeuCNJhKUZUsuCcOyoZRywjKz8,46448
32
32
  certora_cli/CertoraProver/certoraContractFuncs.py,sha256=IKe4xbDh0yFoYVCuLeAxnGg9h59rQCla3Qpy0GwS3HE,8236
33
33
  certora_cli/CertoraProver/certoraExtensionInfo.py,sha256=YlShzdoqJQgXXj3r0TJ3fir1KntIR99Rk8JN5qii2lk,2026
34
34
  certora_cli/CertoraProver/certoraJobList.py,sha256=FBIYgJ60I0Ok7vchfTbcuJJbiXgnfAhrONoVeZoHti4,11464
@@ -70,13 +70,13 @@ certora_cli/Shared/certoraLogging.py,sha256=cV2UQMhQ5j8crGXgeq9CEamI-Lk4HgdiA3HC
70
70
  certora_cli/Shared/certoraUtils.py,sha256=lHd7Da2BmpFAMUoVpdmg5IICsCEIX9qCuD7Ts5QaLpQ,59556
71
71
  certora_cli/Shared/certoraValidateFuncs.py,sha256=gCM-YP0Tpngpasd2AWxhu90UNz1wtls3WqJYp18n_Q8,43503
72
72
  certora_cli/Shared/proverCommon.py,sha256=DUB-uEKjOkZ-8qil6xukPqfTynpigXW-gcrm0_kRUZY,11383
73
- certora_jars/ASTExtraction.jar,sha256=rBQRW5FNQvTwMCgKoqGC57e5Z4Nr8bfudvGrGLlTl18,21985312
74
- certora_jars/CERTORA-CLI-VERSION-METADATA.json,sha256=ppx9Vemc6qNycgG68gPOhJOtdkWdvoP3quVgINQz7oE,143
75
- certora_jars/Typechecker.jar,sha256=qqtuhN-2TnyY6VjuKJ2ELunS9lnbDecUd8GXNWGZSd0,21947424
73
+ certora_jars/ASTExtraction.jar,sha256=fUqpeRjQNtboB5KbXOsf0SvH_ZHvm73-S7uU3eZ9xE8,21987525
74
+ certora_jars/CERTORA-CLI-VERSION-METADATA.json,sha256=ENaW8Y4aNKyDEgRgB6FgUZP_MfitA5n6kyXfgQMw0Jg,143
75
+ certora_jars/Typechecker.jar,sha256=e4D5-ooY-PGOKwztxfJ-JmIYMY_qfl1V96Acm1-aZfg,21949637
76
76
  certora_jars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
- certora_cli_beta_mirror-8.5.0.dist-info/LICENSE,sha256=UGKSKIJSetF8m906JLKqNLkUS2CL60XfQdNvxBvpQXo,620
78
- certora_cli_beta_mirror-8.5.0.dist-info/METADATA,sha256=R7o6xR4P3zsUcfbMsNJXf7hSIcUgEJI6KwV_6fJNmGo,1286
79
- certora_cli_beta_mirror-8.5.0.dist-info/WHEEL,sha256=9Ig2YBzm5cpS_YWKLeuYxVAxcKv_uDQsCzy9XJbRZ_g,110
80
- certora_cli_beta_mirror-8.5.0.dist-info/entry_points.txt,sha256=YXGQmR4tGdYD9lLdG_TEJkmVNrRauCtCDE88HwvO2Jo,569
81
- certora_cli_beta_mirror-8.5.0.dist-info/top_level.txt,sha256=8C77w3JLanY0-NW45vpJsjRssyCqVP-qmPiN9FjWiX4,38
82
- certora_cli_beta_mirror-8.5.0.dist-info/RECORD,,
77
+ certora_cli_beta_mirror-8.6.0.dist-info/LICENSE,sha256=UGKSKIJSetF8m906JLKqNLkUS2CL60XfQdNvxBvpQXo,620
78
+ certora_cli_beta_mirror-8.6.0.dist-info/METADATA,sha256=Vyx_DVA4yWL9aTP1YtuBi0NphKsla82MBZeVjJ3Z8Uw,1254
79
+ certora_cli_beta_mirror-8.6.0.dist-info/WHEEL,sha256=9Ig2YBzm5cpS_YWKLeuYxVAxcKv_uDQsCzy9XJbRZ_g,110
80
+ certora_cli_beta_mirror-8.6.0.dist-info/entry_points.txt,sha256=YXGQmR4tGdYD9lLdG_TEJkmVNrRauCtCDE88HwvO2Jo,569
81
+ certora_cli_beta_mirror-8.6.0.dist-info/top_level.txt,sha256=8C77w3JLanY0-NW45vpJsjRssyCqVP-qmPiN9FjWiX4,38
82
+ certora_cli_beta_mirror-8.6.0.dist-info/RECORD,,
Binary file
@@ -1 +1 @@
1
- {"name": "certora-cli-beta-mirror", "tag": "8.5.0", "branch": "", "commit": "d143e0e", "timestamp": "20251116.12.6.675546", "version": "8.5.0"}
1
+ {"name": "certora-cli-beta-mirror", "tag": "8.6.0", "branch": "", "commit": "92412cc", "timestamp": "20251127.6.22.749789", "version": "8.6.0"}
Binary file