def process_and_validate_raw_manifest(raw_manifest: bytes) -> Manifest: raw_manifest_text = to_text(raw_manifest).rstrip("\n") validate_raw_manifest_format(raw_manifest_text) manifest = json.loads(raw_manifest_text) validate_manifest_against_schema(manifest) validate_manifest_deployments(manifest) return manifest
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 __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_deployed_contracts_pr(manifest_with_no_deployments): validate = validate_manifest_deployments(manifest_with_no_deployments) assert validate is None
def test_validate_deployments(safe_math_lib_package): validate = validate_manifest_deployments(safe_math_lib_package.manifest) assert validate is None
def test_validate_deployed_contracts_present_validates( manifest_with_conflicting_deployments): with pytest.raises(ValidationError): validate_manifest_deployments(manifest_with_conflicting_deployments)
def test_validate_deployments_without_deployment(manifest_with_no_deployments): assert validate_manifest_deployments(manifest_with_no_deployments) is None
def test_validate_deployments_for_single_deployment(safe_math_lib_package): assert validate_manifest_deployments( safe_math_lib_package.manifest) is None
def test_validate_manifest_deployments_catches_missing_contract_type_references( manifest_with_conflicting_deployments): with pytest.raises(EthPMValidationError, match="Manifest missing references to contracts"): validate_manifest_deployments(manifest_with_conflicting_deployments)