def get_release_count(self, package_name: str) -> int: """ Returns the number of releases of the given package name available on the current registry. """ validate_package_name(package_name) self._validate_set_registry() return self.registry._num_release_ids(package_name)
def validate_alias(alias: str) -> None: try: validate_package_name(alias) except EthPMValidationError: raise ValidationError( f"{alias} is not a valid package name. All aliases must conform " "to the ethpm spec definition of a package name.")
def validate_registry_uri(uri: str) -> None: """ Raise an exception if the URI does not conform to the registry URI scheme. """ parsed = parse.urlparse(uri) scheme, authority, pkg_path = ( parsed.scheme, parsed.netloc, parsed.path, ) pkg_id = pkg_path.strip("/") if "@" in pkg_id: if len(pkg_id.split("@")) != 2: raise EthPMValidationError( "Registry URI: {pkg_id} is not properly escaped") pkg_name, pkg_version = pkg_id.split("@") else: pkg_name, pkg_version = (pkg_id, None) validate_registry_uri_scheme(scheme) validate_registry_uri_authority(authority) if pkg_name: validate_package_name(pkg_name) if not pkg_name and pkg_version: raise EthPMValidationError( "Registry URIs cannot provide a version without a package name.") if pkg_version: validate_escaped_string(pkg_version)
def _build_dependency(package_name: str, uri: URI, manifest: Manifest) -> Manifest: validate_package_name(package_name) if not is_supported_content_addressed_uri(uri): raise EthPMValidationError( f"{uri} is not a supported content-addressed URI. " "Currently only IPFS and Github blob uris are supported.") return assoc_in(manifest, ("buildDependencies", package_name), uri)
def get_release_id(self, package_name: str, version: str) -> bytes: """ Returns the 32 byte identifier of a release for the given package name and version, if they are available on the current registry. """ validate_package_name(package_name) validate_package_version(version) self._validate_set_registry() return self.registry._get_release_id(package_name, version)
def get_deployment_alias(contract_type: str) -> str: flag = parse_bool_flag( "Would you like to alias your deployment? " f"(reference it by a name other than its contract type: {contract_type}). " ) if flag: alias = input("Please enter your alias. ") validate_package_name(alias) return alias return contract_type
def get_all_package_releases(self, package_name: str) -> Iterable[Tuple[str, str]]: """ Returns a tuple of release data (version, manifest_ur) for every release of the given package name available on the current registry. """ validate_package_name(package_name) self._validate_set_registry() release_ids = self.registry._get_all_release_ids(package_name) for release_id in release_ids: release_data = self.registry._get_release_data(release_id) yield (release_data.version, release_data.manifest_uri)
def get_package(self, package_name: str, version: str) -> Package: """ Returns a ``Package`` instance, generated by the ``manifest_uri`` associated with the given package name and version, if they are published to the currently set registry. * Parameters: * ``name``: Must be a valid package name. * ``version``: Must be a valid package version. """ validate_package_name(package_name) validate_package_version(version) self._validate_set_registry() _, _, release_uri = self.get_release_data(package_name, version) return self.get_package_from_uri(release_uri)
def get_release_data(self, package_name: str, version: str) -> ReleaseData: """ Returns ``(package_name, version, manifest_uri)`` associated with the given package name and version, *if* they are published to the currently set registry. * Parameters: * ``name``: Must be a valid package name. * ``version``: Must be a valid package version. """ validate_package_name(package_name) validate_package_version(version) self._validate_set_registry() release_id = self.registry._get_release_id(package_name, version) return self.get_release_id_data(release_id)
def validate_registry_uri(uri: str) -> None: """ Raise an exception if the URI does not conform to the registry URI scheme. """ parsed = parse.urlparse(uri) scheme, authority, pkg_name, query = ( parsed.scheme, parsed.netloc, parsed.path, parsed.query, ) validate_registry_uri_scheme(scheme) validate_registry_uri_authority(authority) if query: validate_registry_uri_version(query) validate_package_name(pkg_name[1:])
def validate_registry_uri(uri: str) -> None: """ Raise an exception if the URI does not conform to the registry URI scheme. """ parsed = parse.urlparse(uri) scheme, authority, pkg_path, version = ( parsed.scheme, parsed.netloc, parsed.path, parsed.query, ) validate_registry_uri_scheme(scheme) validate_registry_uri_authority(authority) pkg_name = pkg_path.lstrip("/") if pkg_name: validate_package_name(pkg_name) if not pkg_name and version: raise ValidationError( "Registry URIs cannot provide a version without a package name.") if version: validate_registry_uri_version(version)
def validate_uninstall_cli_args(args: Namespace) -> None: validate_package_name(args.package) if args.ethpm_dir: validate_ethpm_dir(args.ethpm_dir)
def test_validate_package_name_raises_exception_for_invalid_names( package_name): with pytest.raises(EthPMValidationError): validate_package_name(package_name)
def test_validate_package_name_with_valid_package_names(package_name): assert validate_package_name(package_name) is None
def _validate_name(self, name: str) -> None: validate_package_name(name) if name not in self.build_dependencies: raise KeyError( f"Package name: {name} not found in build dependencies.")
def gen_package_name() -> Callable[..., Manifest]: package_name = input("Enter your package's name: ") validate_package_name(package_name) return b.package_name(package_name)