def reduce_VERSION_BaseStringConstant(self, *kids): version = kids[1].val try: verutils.parse_version(version.value) except ValueError: raise EdgeQLSyntaxError( 'invalid extension version format', details='Expected a SemVer-compatible format.', context=version.context, ) from None self.val = version
def _classname_from_ast(cls, schema: s_schema.Schema, astnode: qlast.NamedDDL, context: sd.CommandContext) -> sn.UnqualName: assert isinstance(astnode, qlast.ExtensionPackageCommand) parsed_version = verutils.parse_version(astnode.version.value) quals = ['pkg', str(parsed_version)] pnn = sn.get_specialized_name(sn.UnqualName(astnode.name.name), *quals) return sn.UnqualName(pnn)
def get_version() -> verutils.Version: if devmode.is_in_dev_mode(): root = pathlib.Path(__file__).parent.parent.resolve() version = verutils.parse_version(get_version_from_scm(root)) else: vertuple: List[Any] = list(get_build_metadata_value('VERSION')) vertuple[2] = verutils.VersionStage(vertuple[2]) version = verutils.Version(*vertuple) return version
def _cmd_tree_from_ast(cls, schema: s_schema.Schema, astnode: qlast.DDLOperation, context: sd.CommandContext) -> CreateExtension: assert isinstance(astnode, qlast.CreateExtension) cmd = super()._cmd_tree_from_ast(schema, astnode, context) assert isinstance(cmd, CreateExtension) if astnode.version is not None: parsed_version = verutils.parse_version(astnode.version.value) cmd.set_attribute_value('version', parsed_version) return cmd
def get_version() -> verutils.Version: if devmode.is_in_dev_mode(): if setuptools_scm is None: raise MetadataError( 'cannot determine build version: no setuptools_scm module') version = setuptools_scm.get_version( root='../..', relative_to=__file__, version_scheme=scm_version_scheme, ) version = verutils.parse_version(version) else: vertuple: List[Any] = list(get_build_metadata_value('VERSION')) vertuple[2] = verutils.VersionStage(vertuple[2]) version = verutils.Version(*vertuple) return version
def get_version() -> verutils.Version: if devmode.is_in_dev_mode(): root = pathlib.Path(__file__).parent.parent.parent.resolve() if setuptools_scm is None: raise MetadataError( 'cannot determine build version: no setuptools_scm module') version = setuptools_scm.get_version( root=str(root), version_scheme=functools.partial(scm_version_scheme, root), ) version = verutils.parse_version(version) else: vertuple: List[Any] = list(get_build_metadata_value('VERSION')) vertuple[2] = verutils.VersionStage(vertuple[2]) version = verutils.Version(*vertuple) return version
def _cmd_tree_from_ast( cls, schema: s_schema.Schema, astnode: qlast.DDLOperation, context: sd.CommandContext, ) -> CreateExtensionPackage: cmd = super()._cmd_tree_from_ast(schema, astnode, context) assert isinstance(cmd, CreateExtensionPackage) assert isinstance(astnode, qlast.CreateExtensionPackage) assert astnode.body.text is not None parsed_version = verutils.parse_version(astnode.version.value) cmd.set_attribute_value('version', parsed_version) cmd.set_attribute_value('script', astnode.body.text) cmd.set_attribute_value('builtin', context.stdmode) if not cmd.has_attribute_value('internal'): cmd.set_attribute_value('internal', False) return cmd
def _compile_build_meta(build_lib, version, pg_config, runstatedir, shared_dir, version_suffix): from edb.common import verutils parsed_version = verutils.parse_version(version) vertuple = list(parsed_version._asdict().values()) vertuple[2] = int(vertuple[2]) if version_suffix: vertuple[4] = tuple(version_suffix.split('.')) vertuple = tuple(vertuple) content = textwrap.dedent('''\ # # This source file is part of the EdgeDB open source project. # # Copyright 2008-present MagicStack Inc. and the EdgeDB authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # # THIS FILE HAS BEEN AUTOMATICALLY GENERATED. # PG_CONFIG_PATH = {pg_config!r} RUNSTATE_DIR = {runstatedir!r} SHARED_DATA_DIR = {shared_dir!r} VERSION = {version!r} ''').format( version=vertuple, pg_config=pg_config, runstatedir=runstatedir, shared_dir=shared_dir, ) directory = build_lib / 'edb' / 'server' if not directory.exists(): directory.mkdir(parents=True) with open(directory / '_buildmeta.py', 'w+t') as f: f.write(content)
def _compile_build_meta(build_lib, version, pg_config, runstate_dir, shared_dir, version_suffix): from edb.common import verutils parsed_version = verutils.parse_version(version) vertuple = list(parsed_version._asdict().values()) vertuple[2] = int(vertuple[2]) if version_suffix: vertuple[4] = tuple(version_suffix.split('.')) vertuple = tuple(vertuple) pg_config_path = pathlib.Path(pg_config) if not pg_config_path.is_absolute(): pg_config_path = f"_ROOT / {str(pg_config_path)!r}" else: pg_config_path = repr(str(pg_config_path)) if runstate_dir: runstate_dir_path = pathlib.Path(runstate_dir) if not runstate_dir_path.is_absolute(): runstate_dir_path = f"_ROOT / {str(runstate_dir_path)!r}" else: runstate_dir_path = repr(str(runstate_dir_path)) else: runstate_dir_path = "None # default to <data-dir>" shared_dir_path = pathlib.Path(shared_dir) if not shared_dir_path.is_absolute(): shared_dir_path = f"_ROOT / {str(shared_dir_path)!r}" else: shared_dir_path = repr(str(shared_dir_path)) content = textwrap.dedent('''\ # # This source file is part of the EdgeDB open source project. # # Copyright 2008-present MagicStack Inc. and the EdgeDB authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # # THIS FILE HAS BEEN AUTOMATICALLY GENERATED. # import pathlib _ROOT = pathlib.Path(__file__).parent PG_CONFIG_PATH = {pg_config_path} RUNSTATE_DIR = {runstate_dir_path} SHARED_DATA_DIR = {shared_dir_path} VERSION = {version!r} ''').format( version=vertuple, pg_config_path=pg_config_path, runstate_dir_path=runstate_dir_path, shared_dir_path=shared_dir_path, ) directory = build_lib / 'edb' if not directory.exists(): directory.mkdir(parents=True) with open(directory / '_buildmeta.py', 'w+t') as f: f.write(content)