Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
lib-py-b2b / dialect.py
Size: Mime:
import abc
import logging
from os import environ
from typing import Type
from .order_request import OrderRequestType, OrderRequest

logger = logging.getLogger(__name__)


class Dialect:

    @staticmethod
    def infer_from(request):
        from .shopify import ShopifyDialect
        if ShopifyDialect.matches_dialect(request):
            return ShopifyDialect(request)
        else:
            from .standard import StandardDialect
            return StandardDialect(request)

    @staticmethod
    def matches_dialect(request):
        pass

    @property
    @abc.abstractmethod
    def request_type(self) -> OrderRequestType:
        raise NotImplementedError

    @abc.abstractmethod
    def verify(self, request_type: OrderRequestType):
        raise NotImplementedError

    @abc.abstractmethod
    def data_provider_for(self, order_request: OrderRequest, change_request_type: Type[OrderRequest.C]):
        raise NotImplementedError

    @property
    @abc.abstractmethod
    def shipTo(self):
        raise NotImplementedError


class CreateOrderRequestDataProvider(metaclass=abc.ABCMeta):
    @property
    @abc.abstractmethod
    def order_id(self):
        raise NotImplementedError


class CancelOrderRequestDataProvider(metaclass=abc.ABCMeta):
    @property
    @abc.abstractmethod
    def cancellation_reason(self):
        raise NotImplementedError

    @property
    @abc.abstractmethod
    def cancelled_at(self):
        raise NotImplementedError