예제 #1
0
from dbt.utils import translate_aliases
from dbt.logger import GLOBAL_LOGGER as logger
from typing_extensions import Protocol
from dbt.dataclass_schema import (dbtClassMixin, StrEnum,
                                  ExtensibleDbtClassMixin,
                                  HyphenatedDbtClassMixin,
                                  ValidatedStringMixin, register_pattern)
from dbt.contracts.util import Replaceable


class Identifier(ValidatedStringMixin):
    ValidationRegex = r'^[A-Za-z_][A-Za-z0-9_]+$'


# we need register_pattern for jsonschema validation
register_pattern(Identifier, r'^[A-Za-z_][A-Za-z0-9_]+$')


@dataclass
class AdapterResponse(dbtClassMixin):
    _message: str
    code: Optional[str] = None
    rows_affected: Optional[int] = None

    def __str__(self):
        return self._message


class ConnectionState(StrEnum):
    INIT = 'init'
    OPEN = 'open'
예제 #2
0
    ExtensibleDbtClassMixin,
    register_pattern, ValidatedStringMixin
)
from dataclasses import dataclass, field
from typing import Optional, List, Dict, Union, Any
from mashumaro.types import SerializableType

PIN_PACKAGE_URL = 'https://docs.getdbt.com/docs/package-management#section-specifying-package-versions'  # noqa
DEFAULT_SEND_ANONYMOUS_USAGE_STATS = True


class Name(ValidatedStringMixin):
    ValidationRegex = r'^[^\d\W]\w*$'


register_pattern(Name, r'^[^\d\W]\w*$')


class SemverString(str, SerializableType):
    def _serialize(self) -> str:
        return self

    @classmethod
    def _deserialize(cls, value: str) -> 'SemverString':
        return SemverString(value)


# this does not support the full semver (does not allow a trailing -fooXYZ) and
# is not restrictive enough for full semver, (allows '1.0'). But it's like
# 'semver lite'.
register_pattern(
예제 #3
0
            f'Got an invalid merge_behavior: {merge_behavior}')


def insensitive_patterns(*patterns: str):
    lowercased = []
    for pattern in patterns:
        lowercased.append(''.join('[{}{}]'.format(s.upper(), s.lower())
                                  for s in pattern))
    return '^({})$'.format('|'.join(lowercased))


class Severity(str):
    pass


register_pattern(Severity, insensitive_patterns('warn', 'error'))


@dataclass
class Hook(dbtClassMixin, Replaceable):
    sql: str
    transaction: bool = True
    index: Optional[int] = None


T = TypeVar('T', bound='BaseConfig')


@dataclass
class BaseConfig(AdditionalPropertiesAllowed, Replaceable,
                 MutableMapping[str, Any]):