def validate_version_pragma(version_str: str, start: ParserPosition) -> None: """ Validates a version pragma directive against the current compiler version. """ from vyper import __version__ version_arr = version_str.split("@version") raw_file_version = version_arr[1].strip() strict_file_version = _convert_version_str(raw_file_version) strict_compiler_version = Version(_convert_version_str(__version__)) try: npm_spec = NpmSpec(strict_file_version) except ValueError: raise VersionException( f'Version specification "{raw_file_version}" is not a valid NPM semantic ' f"version specification", start, ) if not npm_spec.match(strict_compiler_version): raise VersionException( f'Version specification "{raw_file_version}" is not compatible ' f'with compiler version "{__version__}"', start, )
def validate_version_pragma(version_str: str, start: ParserPosition) -> None: """ Validates a version pragma directive against the current compiler version. """ from vyper import __version__ # NOTE: should be `x.y.z.*` installed_version = ".".join(__version__.split(".")[:3]) version_arr = version_str.split("@version") raw_file_version = version_arr[1].strip() strict_file_version = _convert_version_str(raw_file_version) strict_compiler_version = Version(_convert_version_str(installed_version)) if len(strict_file_version) == 0: raise VersionException("Version specification cannot be empty", start) try: npm_spec = NpmSpec(strict_file_version) except ValueError: raise VersionException( f'Version specification "{raw_file_version}" is not a valid NPM semantic ' f"version specification", start, ) if not npm_spec.match(strict_compiler_version): raise VersionException( f'Version specification "{raw_file_version}" is not compatible ' f'with compiler version "{installed_version}"', start, )