certora-cli 7.3.0__tar.gz → 7.6.3__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 (66) hide show
  1. {certora-cli-7.3.0/certora_cli.egg-info → certora-cli-7.6.3}/PKG-INFO +2 -2
  2. certora-cli-7.6.3/README.md +1 -0
  3. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/Compiler/CompilerCollector.py +4 -1
  4. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/Compiler/CompilerCollectorFactory.py +2 -1
  5. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/Compiler/CompilerCollectorSol.py +1 -0
  6. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/Compiler/CompilerCollectorVy.py +9 -2
  7. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/Compiler/CompilerCollectorYul.py +24 -6
  8. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/certoraBuild.py +418 -498
  9. certora-cli-7.6.3/certora_cli/EVMVerifier/certoraBuildCacheManager.py +220 -0
  10. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/certoraCloudIO.py +20 -13
  11. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/certoraCollectRunMetadata.py +87 -36
  12. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/certoraConfigIO.py +8 -7
  13. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/certoraContext.py +71 -36
  14. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/certoraContextAttribute.py +559 -207
  15. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/certoraContextValidator.py +36 -15
  16. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/certoraContractFuncs.py +43 -3
  17. certora-cli-7.6.3/certora_cli/EVMVerifier/certoraMiniSpecParser.py +189 -0
  18. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/certoraType.py +3 -1
  19. certora-cli-7.6.3/certora_cli/EVMVerifier/certoraVerifyGenerator.py +170 -0
  20. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EquivalenceCheck/equivCheck.py +6 -5
  21. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/Mutate/mutateApp.py +164 -115
  22. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/Mutate/mutateAttribute.py +41 -58
  23. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/Mutate/mutateValidate.py +12 -4
  24. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/Shared/certoraAttrUtil.py +36 -2
  25. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/Shared/certoraLogging.py +1 -0
  26. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/Shared/certoraUtils.py +100 -56
  27. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/Shared/certoraValidateFuncs.py +1 -1
  28. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/certoraMutate.py +35 -41
  29. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/certoraRun.py +56 -21
  30. {certora-cli-7.3.0 → certora-cli-7.6.3/certora_cli.egg-info}/PKG-INFO +2 -2
  31. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli.egg-info/SOURCES.txt +3 -0
  32. certora-cli-7.6.3/certora_jars/CERTORA-CLI-VERSION-METADATA.json +1 -0
  33. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_jars/Typechecker.jar +0 -0
  34. {certora-cli-7.3.0 → certora-cli-7.6.3}/setup.py +2 -2
  35. certora-cli-7.3.0/README.md +0 -1
  36. certora-cli-7.3.0/certora_jars/CERTORA-CLI-VERSION-METADATA.json +0 -1
  37. {certora-cli-7.3.0 → certora-cli-7.6.3}/LICENSE +0 -0
  38. {certora-cli-7.3.0 → certora-cli-7.6.3}/MANIFEST.in +0 -0
  39. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_bins/__init__.py +0 -0
  40. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/Compiler/CompilerCollectorSolBased.py +0 -0
  41. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/Compiler/__init__.py +0 -0
  42. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/__init__.py +0 -0
  43. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/certoraCompilerParameters.py +0 -0
  44. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/certoraContextClass.py +0 -0
  45. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/certoraExtensionInfo.py +0 -0
  46. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/certoraJobList.py +0 -0
  47. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EVMVerifier/certoraNodeFilters.py +0 -0
  48. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EquivalenceCheck/Eq_default.conf +0 -0
  49. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EquivalenceCheck/Eq_mc_no_out_template.spec +0 -0
  50. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EquivalenceCheck/Eq_mc_template.spec +0 -0
  51. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EquivalenceCheck/Eq_sanity.conf +0 -0
  52. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EquivalenceCheck/Eq_template.spec +0 -0
  53. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EquivalenceCheck/__init__.py +0 -0
  54. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/EquivalenceCheck/sanity.spec +0 -0
  55. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/Mutate/__init__.py +0 -0
  56. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/Mutate/mutateConstants.py +0 -0
  57. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/Shared/ExpectedComparator.py +0 -0
  58. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/Shared/__init__.py +0 -0
  59. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/__init__.py +0 -0
  60. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli/certoraEqCheck.py +0 -0
  61. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli.egg-info/dependency_links.txt +0 -0
  62. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli.egg-info/entry_points.txt +0 -0
  63. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli.egg-info/requires.txt +0 -0
  64. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_cli.egg-info/top_level.txt +0 -0
  65. {certora-cli-7.3.0 → certora-cli-7.6.3}/certora_jars/__init__.py +0 -0
  66. {certora-cli-7.3.0 → certora-cli-7.6.3}/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.6.3
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 8d9362c. Build and Run scripts for executing the Certora Prover on Solidity smart contracts.
@@ -0,0 +1 @@
1
+ Commit 8d9362c. 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())
@@ -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