certora-cli 7.3.0__tar.gz → 7.10.1__tar.gz

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.
Files changed (68) hide show
  1. {certora-cli-7.3.0/certora_cli.egg-info → certora_cli-7.10.1}/PKG-INFO +2 -2
  2. certora_cli-7.10.1/README.md +1 -0
  3. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/Compiler/CompilerCollector.py +4 -1
  4. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/Compiler/CompilerCollectorFactory.py +2 -1
  5. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/Compiler/CompilerCollectorSol.py +2 -1
  6. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/Compiler/CompilerCollectorVy.py +9 -2
  7. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/Compiler/CompilerCollectorYul.py +24 -6
  8. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/certoraBuild.py +525 -505
  9. certora_cli-7.10.1/certora_cli/EVMVerifier/certoraBuildCacheManager.py +241 -0
  10. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/certoraCloudIO.py +51 -14
  11. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/certoraCollectRunMetadata.py +102 -42
  12. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/certoraConfigIO.py +8 -19
  13. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/certoraContext.py +78 -43
  14. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/certoraContextAttribute.py +587 -215
  15. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/certoraContextValidator.py +58 -26
  16. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/certoraContractFuncs.py +43 -3
  17. certora_cli-7.10.1/certora_cli/EVMVerifier/certoraMiniSpecParser.py +189 -0
  18. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/certoraType.py +3 -1
  19. certora_cli-7.10.1/certora_cli/EVMVerifier/certoraVerifyGenerator.py +170 -0
  20. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EquivalenceCheck/equivCheck.py +7 -6
  21. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/Mutate/mutateApp.py +310 -182
  22. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/Mutate/mutateAttribute.py +41 -58
  23. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/Mutate/mutateConstants.py +4 -3
  24. certora_cli-7.10.1/certora_cli/Mutate/mutateUtil.py +47 -0
  25. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/Mutate/mutateValidate.py +29 -6
  26. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/Shared/certoraAttrUtil.py +36 -2
  27. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/Shared/certoraLogging.py +1 -0
  28. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/Shared/certoraUtils.py +143 -65
  29. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/Shared/certoraValidateFuncs.py +17 -3
  30. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/certoraMutate.py +40 -42
  31. certora_cli-7.10.1/certora_cli/certoraRun.py +254 -0
  32. {certora-cli-7.3.0 → certora_cli-7.10.1/certora_cli.egg-info}/PKG-INFO +2 -2
  33. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli.egg-info/SOURCES.txt +4 -0
  34. certora_cli-7.10.1/certora_jars/CERTORA-CLI-VERSION-METADATA.json +1 -0
  35. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_jars/Typechecker.jar +0 -0
  36. {certora-cli-7.3.0 → certora_cli-7.10.1}/setup.py +2 -2
  37. certora-cli-7.3.0/README.md +0 -1
  38. certora-cli-7.3.0/certora_cli/certoraRun.py +0 -258
  39. certora-cli-7.3.0/certora_jars/CERTORA-CLI-VERSION-METADATA.json +0 -1
  40. {certora-cli-7.3.0 → certora_cli-7.10.1}/LICENSE +0 -0
  41. {certora-cli-7.3.0 → certora_cli-7.10.1}/MANIFEST.in +0 -0
  42. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_bins/__init__.py +0 -0
  43. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/Compiler/CompilerCollectorSolBased.py +0 -0
  44. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/Compiler/__init__.py +0 -0
  45. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/__init__.py +0 -0
  46. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/certoraCompilerParameters.py +0 -0
  47. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/certoraContextClass.py +0 -0
  48. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/certoraExtensionInfo.py +0 -0
  49. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/certoraJobList.py +0 -0
  50. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EVMVerifier/certoraNodeFilters.py +0 -0
  51. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EquivalenceCheck/Eq_default.conf +0 -0
  52. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EquivalenceCheck/Eq_mc_no_out_template.spec +0 -0
  53. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EquivalenceCheck/Eq_mc_template.spec +0 -0
  54. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EquivalenceCheck/Eq_sanity.conf +0 -0
  55. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EquivalenceCheck/Eq_template.spec +0 -0
  56. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EquivalenceCheck/__init__.py +0 -0
  57. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/EquivalenceCheck/sanity.spec +0 -0
  58. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/Mutate/__init__.py +0 -0
  59. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/Shared/ExpectedComparator.py +0 -0
  60. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/Shared/__init__.py +0 -0
  61. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/__init__.py +0 -0
  62. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli/certoraEqCheck.py +0 -0
  63. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli.egg-info/dependency_links.txt +0 -0
  64. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli.egg-info/entry_points.txt +0 -0
  65. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli.egg-info/requires.txt +0 -0
  66. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_cli.egg-info/top_level.txt +0 -0
  67. {certora-cli-7.3.0 → certora_cli-7.10.1}/certora_jars/__init__.py +0 -0
  68. {certora-cli-7.3.0 → certora_cli-7.10.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: certora-cli
3
- Version: 7.3.0
3
+ Version: 7.10.1
4
4
  Summary: Runner for the Certora Prover
5
5
  Home-page: https://pypi.org/project/certora-cli
6
6
  Author: Certora
@@ -21,4 +21,4 @@ Requires-Dist: tabulate
21
21
  Requires-Dist: tqdm
22
22
  Requires-Dist: StrEnum
23
23
 
24
- Commit 3dce873. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
24
+ Commit 3dd11d6. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
@@ -0,0 +1 @@
1
+ Commit 3dd11d6. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
@@ -3,6 +3,7 @@ from dataclasses import dataclass
3
3
  from pathlib import Path
4
4
  from typing import Any, Dict, List, Optional, Tuple, Set
5
5
  from Shared.certoraUtils import AbstractAndSingleton, CompilerVersion
6
+ from EVMVerifier.certoraContractFuncs import SourceBytes
6
7
  import EVMVerifier.certoraType as CT
7
8
 
8
9
 
@@ -22,8 +23,10 @@ class CompilerLangFunc:
22
23
  implemented: bool # does this function have a body? (false for interface functions)
23
24
  overrides: bool # does this function override an interface declaration or super-contract definition?
24
25
  contractName: str
26
+ source_bytes: Optional[SourceBytes]
25
27
  ast_id: Optional[int] = None
26
- where: Optional[Tuple[str, str]] = None # 1st element: source file name, 2nd element: location string
28
+ original_file: Optional[str] = None
29
+ body_location: Optional[str] = None
27
30
 
28
31
 
29
32
  class CompilerLang(metaclass=AbstractAndSingleton):
@@ -72,7 +72,8 @@ class CompilerCollectorFactory:
72
72
  return CompilerCollectorVy(version)
73
73
  elif str(path).endswith(".sol"):
74
74
  version = self.__get_solc_version(path)
75
- return CompilerCollectorSol(version, CompilerLangSol(), self.context.use_memory_safe_autofinders)
75
+
76
+ return CompilerCollectorSol(version, CompilerLangSol(), not self.context.no_memory_safe_autofinders)
76
77
  elif str(path).endswith(".yul"):
77
78
  version = self.__get_solc_version(path)
78
79
  return CompilerCollectorYul(version, CompilerLangYul())
@@ -35,7 +35,7 @@ class CompilerLangSol(CompilerLang, metaclass=Singleton):
35
35
 
36
36
  @staticmethod
37
37
  def compilation_output_path(sdc_name: str) -> Path:
38
- return get_certora_config_dir() / f"{sdc_name}.standard.json.stdout"
38
+ return get_certora_config_dir() / f"{sdc_name}.standard.stdout.json"
39
39
 
40
40
  @staticmethod
41
41
  def get_supports_imports() -> bool:
@@ -81,6 +81,7 @@ class CompilerCollectorSol(CompilerCollectorSolBased):
81
81
 
82
82
  def __init__(self, version: CompilerVersion, lang: CompilerLang, use_memory_safe_autofinders: bool):
83
83
  super().__init__(version, lang)
84
+ # will only be applied for supporting solc versions
84
85
  self.__use_memory_safe_autofinders = use_memory_safe_autofinders
85
86
 
86
87
  def normalize_storage(self, is_storage: bool, arg_name: str) -> str:
@@ -688,8 +688,11 @@ class CompilerLangVy(CompilerLang, metaclass=Singleton):
688
688
  implemented = True,
689
689
  overrides = False,
690
690
  visibility = first_of(decorators, ["internal", "external"]),
691
+ source_bytes = None,
691
692
  ast_id = function_def['node_id'],
692
- contractName = contract_name
693
+ contractName = contract_name,
694
+ original_file = None,
695
+ body_location = None,
693
696
  ))
694
697
  return result
695
698
 
@@ -714,8 +717,11 @@ class CompilerLangVy(CompilerLang, metaclass=Singleton):
714
717
  implemented = True,
715
718
  overrides = False,
716
719
  visibility = "external",
720
+ source_bytes = None,
717
721
  ast_id = None,
718
- contractName = contract_name
722
+ contractName = contract_name,
723
+ original_file = None,
724
+ body_location = None,
719
725
  )
720
726
 
721
727
  @staticmethod
@@ -1044,6 +1050,7 @@ class CompilerLangVy(CompilerLang, metaclass=Singleton):
1044
1050
  overrides=False,
1045
1051
  # according to Solidity docs, getter functions have external visibility
1046
1052
  visibility="external",
1053
+ source_bytes=None,
1047
1054
  ast_id=None,
1048
1055
  contractName=contract_name
1049
1056
  )
@@ -57,10 +57,10 @@ class CompilerLangYul(CompilerLangSol, metaclass=Singleton):
57
57
  base = type_name[:-2]
58
58
  base_type = CT.Type.from_primitive_name(base)
59
59
  out_type: CT.Type = CT.ArrayType(type_name, base_type, None, contract_name, 0)
60
- elif type_name == "bytes":
60
+ elif type_name == "bytes" or type_name == "string":
61
61
  out_type = CT.PackedBytes()
62
62
  else:
63
- out_type = CT.Type.from_primitive_name(input["type"])
63
+ out_type = CT.Type.from_primitive_name(type_name)
64
64
  full_args.append(CT.TypeInstance(out_type))
65
65
  param_names.append(input["name"])
66
66
  returns = []
@@ -71,17 +71,35 @@ class CompilerLangYul(CompilerLangSol, metaclass=Singleton):
71
71
  base = type_name[:-2]
72
72
  base_type = CT.Type.from_primitive_name(base)
73
73
  out_type = CT.ArrayType(type_name, base_type, None, contract_name, 0)
74
- elif type_name == "bytes":
74
+ elif type_name == "bytes" or type_name == "string":
75
75
  out_type = CT.PackedBytes()
76
76
  else:
77
- out_type = CT.Type.from_primitive_name(output["type"])
77
+ out_type = CT.Type.from_primitive_name(type_name)
78
78
  returns.append(CT.TypeInstance(out_type))
79
79
  visibility = "external"
80
80
  sighash = self.get_sighash(name, full_args)
81
81
  notpayable = state_mutability in ["nonpayable", "view", "pure"]
82
82
 
83
- funcs.append(Func(name, full_args, param_names, returns, sighash, notpayable, False, False,
84
- state_mutability, visibility, True, False, contract_name, None, None))
83
+ func = Func(
84
+ name=name,
85
+ fullArgs=full_args,
86
+ paramNames=param_names,
87
+ returns=returns,
88
+ sighash=sighash,
89
+ notpayable=notpayable,
90
+ fromLib=False,
91
+ isConstructor=False,
92
+ stateMutability=state_mutability,
93
+ visibility=visibility,
94
+ implemented=True,
95
+ overrides=False,
96
+ contractName=contract_name,
97
+ source_bytes=None,
98
+ ast_id=None,
99
+ original_file=None,
100
+ body_location=None,
101
+ )
102
+ funcs.append(func)
85
103
  return funcs
86
104
 
87
105