certora-cli-beta-mirror 8.5.0__py3-none-any.whl → 8.6.0__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.
@@ -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.
@@ -6,15 +6,15 @@ certora_cli/certoraEVMProver.py,sha256=AH8ZeWXAs7wK6nNKFANCt6seLf9EaaFXtfpjc3xdI
6
6
  certora_cli/certoraEqCheck.py,sha256=qfZq7bpU1kbAIezC66W61VfKNZz7Uywg2Ygup62qYeo,1069
7
7
  certora_cli/certoraMutate.py,sha256=XhFHyNVP_sk-3XkY6AAV5fVliEFAVRq-JeDGsqE5IQQ,3333
8
8
  certora_cli/certoraRanger.py,sha256=thJ4EKo-MFHklCk-7zJADZ-9SO6eCg1AFv88-QssLj0,1289
9
- certora_cli/certoraRun.py,sha256=c3ySo9attnuMdrnWxUNKLu4PgKsqgoYrUgJnL0Ej3Qs,6651
9
+ certora_cli/certoraRun.py,sha256=TLKtAATiw3bOW-arkOu91CezIAks-cJFeSRWAEyR0yI,6714
10
10
  certora_cli/certoraSolanaProver.py,sha256=1R1YnGHCofb05GqFgpxRh3ZmHkmwMm1hPM7rfeiEu7o,3250
11
11
  certora_cli/certoraSorobanProver.py,sha256=SYJKz5Sw-N0bJrSa1njRCE53R9_PMz7IWLhfamOjisk,2840
12
12
  certora_cli/certoraSuiProver.py,sha256=gRs-iihB35ZSEIQ5-hJN-wLgrHZlcfmpk76Wr6vza74,2827
13
- certora_cli/rustMutator.py,sha256=6AvOGU8Ijz89zW_ZJCWlfXkeobJsk7EsqZhK7Eqwn-Y,14544
13
+ certora_cli/rustMutator.py,sha256=j1YdY5HOWQcRNbz7TOxp5c79J0YaaYHtWZ6m2mSTeGc,14865
14
14
  certora_cli/CertoraProver/__init__.py,sha256=QHNr-PJQAoyuPgTkO7gg23GRchiWSXglWNG7yLSQZvs,849
15
15
  certora_cli/CertoraProver/castingInstrumenter.py,sha256=4FDjQjnN9s8I3B9J-_G9rug9Jf3LnWnAuRngr50oTH4,7898
16
16
  certora_cli/CertoraProver/certoraApp.py,sha256=RKJ2Krb_CzbRUvczbdE6FhUDrFcvrR8j0JS8MNWXX7s,1469
17
- certora_cli/CertoraProver/certoraBuild.py,sha256=-4cBWcMj3dU9cc2BzJ7AT3TzY1tDYGTKaLrcvxUOW6Y,231453
17
+ certora_cli/CertoraProver/certoraBuild.py,sha256=h6lGjUyTcC0EnRCK1DXD26Qez4DEphpFjx_IoQRiuO8,231608
18
18
  certora_cli/CertoraProver/certoraBuildCacheManager.py,sha256=DnVd7w92xjmg0DIrMgoJnCvaU0yCz7ySy0M4RiHEXEM,13648
19
19
  certora_cli/CertoraProver/certoraBuildDataClasses.py,sha256=BKOjO0yBUWA26cK_VO_lczXrOD7VWC8egQiXY4jGpmk,14914
20
20
  certora_cli/CertoraProver/certoraBuildRust.py,sha256=ZPbNp4ttRmzcKhFsgHSiHDRExNPaLOzgxTRqu23o1D0,6061
@@ -25,9 +25,9 @@ certora_cli/CertoraProver/certoraCollectRunMetadata.py,sha256=SonKgq2l6_8o6xySbi
25
25
  certora_cli/CertoraProver/certoraCompilerParameters.py,sha256=v-MIt4sDJSQ7vpEFmCt9XBkKBhdBbZuZA4PWNErJwcU,1807
26
26
  certora_cli/CertoraProver/certoraConfigIO.py,sha256=-1EhJYsiheYvyCgOOWrRCQBjqtqNXrpMKJYRq5cKJ0Y,8171
27
27
  certora_cli/CertoraProver/certoraContext.py,sha256=bBbLPet5si6jFEdL1TBORN-HCiJGQK7hD6OQZ_ODmFY,28878
28
- certora_cli/CertoraProver/certoraContextAttributes.py,sha256=P1_wgeodSY3-n8c79E64whVSJ6y52pQGvxtvPc4le38,72244
28
+ certora_cli/CertoraProver/certoraContextAttributes.py,sha256=e1rtRyF3L_PftUBaQ8XzCutlduSuE1vcS9MyxGwcuqk,72750
29
29
  certora_cli/CertoraProver/certoraContextClass.py,sha256=d7HDqM72K7YnswR7kEcAHGwkFNrTqRz5-_0m7cl2Mso,900
30
- certora_cli/CertoraProver/certoraContextValidator.py,sha256=Ja5XrVT1KY4XOG_tQsnUXq5wCifXpEdUUJba3073NaI,46366
30
+ certora_cli/CertoraProver/certoraContextValidator.py,sha256=KEsxk6D_s_piucib5VeuCNJhKUZUsuCcOyoZRywjKz8,46448
31
31
  certora_cli/CertoraProver/certoraContractFuncs.py,sha256=IKe4xbDh0yFoYVCuLeAxnGg9h59rQCla3Qpy0GwS3HE,8236
32
32
  certora_cli/CertoraProver/certoraExtensionInfo.py,sha256=YlShzdoqJQgXXj3r0TJ3fir1KntIR99Rk8JN5qii2lk,2026
33
33
  certora_cli/CertoraProver/certoraJobList.py,sha256=FBIYgJ60I0Ok7vchfTbcuJJbiXgnfAhrONoVeZoHti4,11464
@@ -69,13 +69,13 @@ certora_cli/Shared/certoraLogging.py,sha256=cV2UQMhQ5j8crGXgeq9CEamI-Lk4HgdiA3HC
69
69
  certora_cli/Shared/certoraUtils.py,sha256=lHd7Da2BmpFAMUoVpdmg5IICsCEIX9qCuD7Ts5QaLpQ,59556
70
70
  certora_cli/Shared/certoraValidateFuncs.py,sha256=gCM-YP0Tpngpasd2AWxhu90UNz1wtls3WqJYp18n_Q8,43503
71
71
  certora_cli/Shared/proverCommon.py,sha256=DUB-uEKjOkZ-8qil6xukPqfTynpigXW-gcrm0_kRUZY,11383
72
- certora_jars/ASTExtraction.jar,sha256=rBQRW5FNQvTwMCgKoqGC57e5Z4Nr8bfudvGrGLlTl18,21985312
73
- certora_jars/CERTORA-CLI-VERSION-METADATA.json,sha256=ppx9Vemc6qNycgG68gPOhJOtdkWdvoP3quVgINQz7oE,143
74
- certora_jars/Typechecker.jar,sha256=qqtuhN-2TnyY6VjuKJ2ELunS9lnbDecUd8GXNWGZSd0,21947424
72
+ certora_jars/ASTExtraction.jar,sha256=fUqpeRjQNtboB5KbXOsf0SvH_ZHvm73-S7uU3eZ9xE8,21987525
73
+ certora_jars/CERTORA-CLI-VERSION-METADATA.json,sha256=ENaW8Y4aNKyDEgRgB6FgUZP_MfitA5n6kyXfgQMw0Jg,143
74
+ certora_jars/Typechecker.jar,sha256=e4D5-ooY-PGOKwztxfJ-JmIYMY_qfl1V96Acm1-aZfg,21949637
75
75
  certora_jars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
- certora_cli_beta_mirror-8.5.0.dist-info/LICENSE,sha256=UGKSKIJSetF8m906JLKqNLkUS2CL60XfQdNvxBvpQXo,620
77
- certora_cli_beta_mirror-8.5.0.dist-info/METADATA,sha256=R7o6xR4P3zsUcfbMsNJXf7hSIcUgEJI6KwV_6fJNmGo,1286
78
- certora_cli_beta_mirror-8.5.0.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
79
- certora_cli_beta_mirror-8.5.0.dist-info/entry_points.txt,sha256=YXGQmR4tGdYD9lLdG_TEJkmVNrRauCtCDE88HwvO2Jo,569
80
- certora_cli_beta_mirror-8.5.0.dist-info/top_level.txt,sha256=8C77w3JLanY0-NW45vpJsjRssyCqVP-qmPiN9FjWiX4,38
81
- certora_cli_beta_mirror-8.5.0.dist-info/RECORD,,
76
+ certora_cli_beta_mirror-8.6.0.dist-info/LICENSE,sha256=UGKSKIJSetF8m906JLKqNLkUS2CL60XfQdNvxBvpQXo,620
77
+ certora_cli_beta_mirror-8.6.0.dist-info/METADATA,sha256=Vyx_DVA4yWL9aTP1YtuBi0NphKsla82MBZeVjJ3Z8Uw,1254
78
+ certora_cli_beta_mirror-8.6.0.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
79
+ certora_cli_beta_mirror-8.6.0.dist-info/entry_points.txt,sha256=YXGQmR4tGdYD9lLdG_TEJkmVNrRauCtCDE88HwvO2Jo,569
80
+ certora_cli_beta_mirror-8.6.0.dist-info/top_level.txt,sha256=8C77w3JLanY0-NW45vpJsjRssyCqVP-qmPiN9FjWiX4,38
81
+ 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