From cb56036a6e7ed1f3e0957032b7c6973a0a08cc02 Mon Sep 17 00:00:00 2001 From: aiordache Date: Thu, 9 Jul 2020 15:07:09 +0200 Subject: [PATCH] rename schema to compose_spec Signed-off-by: aiordache --- compose/config/config.py | 4 ++-- ...g_schema_v4.0.json => config_schema_compose_spec.json} | 2 +- compose/config/serialize.py | 2 +- compose/config/validation.py | 8 ++++++-- compose/const.py | 6 +++--- docker-compose.spec | 4 ++-- docker-compose_darwin.spec | 4 ++-- tests/acceptance/cli_test.py | 2 +- tests/integration/project_test.py | 2 +- tests/integration/testcases.py | 2 +- tests/unit/config/config_test.py | 2 +- tests/unit/config/interpolation_test.py | 2 +- tests/unit/config/types_test.py | 2 +- tests/unit/project_test.py | 2 +- 14 files changed, 24 insertions(+), 20 deletions(-) rename compose/config/{config_schema_v4.0.json => config_schema_compose_spec.json} (99%) diff --git a/compose/config/config.py b/compose/config/config.py index 5eed6b59a..a3110682c 100644 --- a/compose/config/config.py +++ b/compose/config/config.py @@ -12,8 +12,8 @@ import yaml from cached_property import cached_property from . import types +from ..const import COMPOSE_SPEC as VERSION from ..const import COMPOSEFILE_V1 as V1 -from ..const import COMPOSEFILE_V4 as VERSION from ..utils import build_string_dict from ..utils import json_hash from ..utils import parse_bytes @@ -214,7 +214,7 @@ class ConfigFile(namedtuple('_ConfigFile', 'filename config')): .format(self.filename)) if isinstance(version, str): - version_pattern = re.compile(r"^[1-4]+(\.\d+)?$") + version_pattern = re.compile(r"^[1-3]+(\.\d+)?$") if not version_pattern.match(version): raise ConfigurationError( 'Version "{}" in "{}" is invalid.' diff --git a/compose/config/config_schema_v4.0.json b/compose/config/config_schema_compose_spec.json similarity index 99% rename from compose/config/config_schema_v4.0.json rename to compose/config/config_schema_compose_spec.json index 316fbf9a0..0400cd866 100644 --- a/compose/config/config_schema_v4.0.json +++ b/compose/config/config_schema_compose_spec.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-04/schema#", - "id": "config_schema_v4.0.json", + "id": "config_schema_compose_spec.json", "type": "object", "properties": { "version": { diff --git a/compose/config/serialize.py b/compose/config/serialize.py index a162e3873..e41e1ba4f 100644 --- a/compose/config/serialize.py +++ b/compose/config/serialize.py @@ -1,8 +1,8 @@ import yaml from compose.config import types +from compose.const import COMPOSE_SPEC as VERSION from compose.const import COMPOSEFILE_V1 as V1 -from compose.const import COMPOSEFILE_V4 as VERSION def serialize_config_type(dumper, data): diff --git a/compose/config/validation.py b/compose/config/validation.py index f52de03de..942c4e036 100644 --- a/compose/config/validation.py +++ b/compose/config/validation.py @@ -282,7 +282,7 @@ def handle_error_for_schema_with_id(error, path): invalid_config_key = parse_key_from_error_msg(error) return get_unsupported_config_msg(path, invalid_config_key) - if schema_id.startswith('config_schema_v'): + if schema_id.startswith('config_schema_'): invalid_config_key = parse_key_from_error_msg(error) return ('Invalid top-level property "{key}". Valid top-level ' 'sections for this Compose file are: {properties}, and ' @@ -487,9 +487,13 @@ def get_schema_path(): def load_jsonschema(version): + suffix = "compose_spec" + if version == V1: + suffix = "v1" + filename = os.path.join( get_schema_path(), - "config_schema_v{0}.json".format(version)) + "config_schema_{0}.json".format(suffix)) if not os.path.exists(filename): raise ConfigurationError( diff --git a/compose/const.py b/compose/const.py index 9623769d1..c51e6ac0b 100644 --- a/compose/const.py +++ b/compose/const.py @@ -24,16 +24,16 @@ SECRETS_PATH = '/run/secrets' WINDOWS_LONGPATH_PREFIX = '\\\\?\\' COMPOSEFILE_V1 = ComposeVersion('1') -COMPOSEFILE_V4 = ComposeVersion('4.0') +COMPOSE_SPEC = ComposeVersion('3') # minimum DOCKER ENGINE API version needed to support # features for each compose schema version API_VERSIONS = { COMPOSEFILE_V1: '1.21', - COMPOSEFILE_V4: '1.38', + COMPOSE_SPEC: '1.38', } API_VERSION_TO_ENGINE_VERSION = { API_VERSIONS[COMPOSEFILE_V1]: '1.9.0', - API_VERSIONS[COMPOSEFILE_V4]: '18.06.0', + API_VERSIONS[COMPOSE_SPEC]: '18.06.0', } diff --git a/docker-compose.spec b/docker-compose.spec index 35195f9b4..ff739ab0d 100644 --- a/docker-compose.spec +++ b/docker-compose.spec @@ -23,8 +23,8 @@ exe = EXE(pyz, 'DATA' ), ( - 'compose/config/config_schema_v4.0.json', - 'compose/config/config_schema_v4.0.json', + 'compose/config/config_schema_compose_spec.json', + 'compose/config/config_schema_compose_spec.json', 'DATA' ), ( diff --git a/docker-compose_darwin.spec b/docker-compose_darwin.spec index f4642314e..6f96b29a4 100644 --- a/docker-compose_darwin.spec +++ b/docker-compose_darwin.spec @@ -32,8 +32,8 @@ coll = COLLECT(exe, 'DATA' ), ( - 'compose/config/config_schema_v4.0.json', - 'compose/config/config_schema_v4.0.json', + 'compose/config/config_schema_compose_spec.json', + 'compose/config/config_schema_compose_spec.json', 'DATA' ), ( diff --git a/tests/acceptance/cli_test.py b/tests/acceptance/cli_test.py index 51f6428be..180c3824f 100644 --- a/tests/acceptance/cli_test.py +++ b/tests/acceptance/cli_test.py @@ -20,8 +20,8 @@ from ..helpers import BUSYBOX_IMAGE_WITH_TAG from ..helpers import create_host_file from compose.cli.command import get_project from compose.config.errors import DuplicateOverrideFileFound +from compose.const import COMPOSE_SPEC as VERSION from compose.const import COMPOSEFILE_V1 as V1 -from compose.const import COMPOSEFILE_V4 as VERSION from compose.container import Container from compose.project import OneOffFilter from compose.utils import nanoseconds_from_time_seconds diff --git a/tests/integration/project_test.py b/tests/integration/project_test.py index cb40dbd43..4848c53ee 100644 --- a/tests/integration/project_test.py +++ b/tests/integration/project_test.py @@ -21,7 +21,7 @@ from compose.config import ConfigurationError from compose.config import types from compose.config.types import VolumeFromSpec from compose.config.types import VolumeSpec -from compose.const import COMPOSEFILE_V4 as VERSION +from compose.const import COMPOSE_SPEC as VERSION from compose.const import LABEL_PROJECT from compose.const import LABEL_SERVICE from compose.container import Container diff --git a/tests/integration/testcases.py b/tests/integration/testcases.py index e6de0b921..e84eadc93 100644 --- a/tests/integration/testcases.py +++ b/tests/integration/testcases.py @@ -11,8 +11,8 @@ from compose.cli.docker_client import docker_client from compose.config.config import resolve_environment from compose.config.environment import Environment from compose.const import API_VERSIONS +from compose.const import COMPOSE_SPEC as VERSION from compose.const import COMPOSEFILE_V1 as V1 -from compose.const import COMPOSEFILE_V4 as VERSION from compose.const import LABEL_PROJECT from compose.progress_stream import stream_output from compose.service import Service diff --git a/tests/unit/config/config_test.py b/tests/unit/config/config_test.py index 4196d8d83..0e01dc738 100644 --- a/tests/unit/config/config_test.py +++ b/tests/unit/config/config_test.py @@ -26,8 +26,8 @@ from compose.config.serialize import denormalize_service_dict from compose.config.serialize import serialize_config from compose.config.serialize import serialize_ns_time_value from compose.config.types import VolumeSpec +from compose.const import COMPOSE_SPEC as VERSION from compose.const import COMPOSEFILE_V1 as V1 -from compose.const import COMPOSEFILE_V4 as VERSION from compose.const import IS_WINDOWS_PLATFORM from tests import mock from tests import unittest diff --git a/tests/unit/config/interpolation_test.py b/tests/unit/config/interpolation_test.py index dfc7beb2e..f8ff8c662 100644 --- a/tests/unit/config/interpolation_test.py +++ b/tests/unit/config/interpolation_test.py @@ -8,7 +8,7 @@ from compose.config.interpolation import Interpolator from compose.config.interpolation import InvalidInterpolation from compose.config.interpolation import TemplateWithDefaults from compose.config.interpolation import UnsetRequiredSubstitution -from compose.const import COMPOSEFILE_V4 as VERSION +from compose.const import COMPOSE_SPEC as VERSION @pytest.fixture diff --git a/tests/unit/config/types_test.py b/tests/unit/config/types_test.py index 5271c0d27..23b9b6767 100644 --- a/tests/unit/config/types_test.py +++ b/tests/unit/config/types_test.py @@ -5,8 +5,8 @@ from compose.config.types import parse_extra_hosts from compose.config.types import ServicePort from compose.config.types import VolumeFromSpec from compose.config.types import VolumeSpec +from compose.const import COMPOSE_SPEC as VERSION from compose.const import COMPOSEFILE_V1 as V1 -from compose.const import COMPOSEFILE_V4 as VERSION def test_parse_extra_hosts_list(): diff --git a/tests/unit/project_test.py b/tests/unit/project_test.py index e80d46b2b..b889e5e2c 100644 --- a/tests/unit/project_test.py +++ b/tests/unit/project_test.py @@ -13,8 +13,8 @@ from ..helpers import BUSYBOX_IMAGE_WITH_TAG from compose.config import ConfigurationError from compose.config.config import Config from compose.config.types import VolumeFromSpec +from compose.const import COMPOSE_SPEC as VERSION from compose.const import COMPOSEFILE_V1 as V1 -from compose.const import COMPOSEFILE_V4 as VERSION from compose.const import DEFAULT_TIMEOUT from compose.const import LABEL_SERVICE from compose.container import Container