Repository URL to install this package:
| 
      
     
      
        
        
        Version: 
        
         
  
        
    
          
          0.4.184  ▾
        
         
  
      
        
      
  
      
  
     | 
    
    lib-py-b2b
  
    /
        errors.py
    | 
|---|
from abc import abstractmethod
from typing import List, Dict
from lib_b2b.persistent import Persistable
class TechnicalError(Exception):
    def __init__(self, message):
        self.sanitized_message = message
        self.message = ":[TechnicalError]: " + message
class BusinessError(Exception):
    def __init__(self, message):
        self.sanitized_message = message
        self.message = ":[BusinessError]: " + message
class NotificationFailedError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class AcknowledgementUrlNotProvidedError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class InvalidLabelPrintRequestError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class LabelPrintError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class AddressValidationServiceError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class OrderNotFoundError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class OrderValidationError(BusinessError):
    def __init__(self, message, reasons: List['RejectionReason']):
        super().__init__(message)
        self.reasons = reasons
class OrderLookupError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class CapturePaymentFailedError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class AcknowledgementFailedWarning(Exception):
    def __init__(self, message):
        super().__init__(message)
class AcknowledgementFailedError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class InvalidAddressError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class ShipNoticeFailedWarning(Exception):
    def __init__(self, message):
        super().__init__(message)
class VersionConflictError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class ConditionCheckError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class ShipNoticeFailedError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class ShipDateChangeError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class ItemPricingNotFound(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class ShipRateNotFound(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class ShipZoneNotFound(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class CustomerNotFoundError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class CustomerLookupError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class InvalidAPIKey(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class InvalidShopifyDomain(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class OrderExistsError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class InvalidCustomerItemError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class ShopifyOrderExistsError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class InvalidSignatureError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class TranslationError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class OrderFetchError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class OrderLineNotFoundError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class OrderFlowFailure(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class OrderSaveError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class FulfillmentLookupError(Exception):
    def __init__(self, message):
        super().__init__(message)
class FulfillmentExistsError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class FulfillmentStatusError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class InvalidQuantityError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class NotFoundError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class OrderShipStatusError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class ContainerCreationError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class ContainerContentsError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class InvalidPackageError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class ItemMismatchError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
        super().__init__(message)
class ConfigurationError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class FulfillmentFetchError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class FulfillmentSaveError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class ShippingRateSaveError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class IntegrationError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class ChangeFailedError(TechnicalError):
    def __init__(self, message):
        super().__init__(message)
class OrderStatusChangeError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class RuleNotFound(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class LineCancelError(BusinessError):
    def __init__(self, line_id, message):
        super().__init__(message)
        self.line_id = line_id
class TaxLocationNotFoundError(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class OrderCancelError(BusinessError):
    def __init__(self, order_id, line_errors: List[LineCancelError], message):
        _line_errs = "line_errors: \n\t{}".format('\n\t'.join([f'line_id: {e.line_id} - {e.message}' for e in line_errors]))
        _msg = f"{message} :: order_id: {order_id}{' :: ' + _line_errs if line_errors else ''}"
        super().__init__(_msg)
        self.order_id = order_id
        self.line_errors = line_errors
    def __str__(self):
        return self.message
class ChangeNotAllowed(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class PolicyViolation(BusinessError):
    def __init__(self, message):
        super().__init__(message)
class NoticeRecord(Persistable):
    def __init__(self, code: str, msg: str, field: str = None, extra_data: Dict = None):
        self.extra_data = extra_data
        self.field = field
        self.msg = msg
        self.code = code
    @property
    @abstractmethod
    def persist_as(self) -> str:
        raise NotImplementedError
    @classmethod
    def from_dict(cls, data: dict):
        return cls(
            code=data.get('code'),
            msg=data.get('msg'),
            field=data.get('field'),
            extra_data=data.get('extra_data')
        )
    def as_dict(self) -> dict:
        return vars(self)
class ErrorRecord(NoticeRecord):
    def __init__(self, code: str, msg: str, field: str = None, extra_data: Dict = None):
        super().__init__(code=code, msg=msg, field=field, extra_data=extra_data)
    @property
    def persist_as(self) -> str:
        return 'errors'
class WarningRecord(NoticeRecord):
    def __init__(self, code: str, msg: str, field: str = None, extra_data: Dict = None):
        super().__init__(code=code, msg=msg, field=field, extra_data=extra_data)
    @property
    def persist_as(self) -> str:
        return 'warnings'
class RejectionReason(Persistable):
    def __init__(self, rejection_type: str, message: str):
        self.rejection_type = rejection_type
        self.message = message
    @staticmethod
    def from_dict(data: dict):
        return RejectionReason(
            rejection_type=data.get('rejection_type'),
            message=data.get('message')
        )
    def as_dict(self) -> dict:
        return vars(self)