def __init__( self, manifest: Dict[str, Any], w3: Web3, uri: Optional[str] = None ) -> None: """ A package should be created using one of the available classmethods and a valid w3 instance. """ if not isinstance(manifest, dict): raise TypeError( "Package object must be initialized with a dictionary. " f"Got {type(manifest)}" ) if "manifest" not in manifest or manifest["manifest"] != "ethpm/3": raise EthPMValidationError( "Py-Ethpm currently only supports v3 ethpm manifests. " "Please use the CLI to update or re-generate a v3 manifest. " ) validate_manifest_against_schema(manifest) validate_manifest_deployments(manifest) validate_w3_instance(w3) self.w3 = w3 self.w3.eth.defaultContractFactory = cast(Type[Contract], LinkableContract) self.manifest = manifest self._uri = uri
def update_w3(self, w3: Web3) -> "Package": """ Returns a new instance of `Package` containing the same manifest, but connected to a different web3 instance. .. doctest:: >>> new_w3 = Web3(Web3.EthereumTesterProvider()) >>> NewPackage = OwnedPackage.update_w3(new_w3) >>> assert NewPackage.w3 == new_w3 >>> assert OwnedPackage.manifest == NewPackage.manifest """ validate_w3_instance(w3) return Package(self.manifest, w3, self.uri)
def __init__(self, manifest: Dict[str, Any], w3: Web3, uri: Optional[str] = None) -> None: """ A package should be created using one of the available classmethods and a valid w3 instance. """ if not isinstance(manifest, dict): raise TypeError( "Package object must be initialized with a dictionary. " f"Got {type(manifest)}") validate_manifest_against_schema(manifest) validate_manifest_deployments(manifest) validate_w3_instance(w3) self.w3 = w3 self.w3.eth.defaultContractFactory = LinkableContract self.manifest = manifest self._uri = uri
def test_validate_w3_instance_invalidates(w3): with pytest.raises(ValueError): assert validate_w3_instance(w3)
def test_validate_w3_instance_validates(w3): assert validate_w3_instance(w3) is None