Source code for abstract_api.vat.vat_validation_response

from functools import cached_property
from typing import Optional

import requests

from ..core.bases import JSONResponse
from ..core.common_entities import Country
from ..core.mixins import NestedEntitiesMixin
from ._response_fields.validation import VALIDATION_RESPONSE_FIELDS


[docs] class Company: """Company entity in VAT validation response.""" def __init__(self, address: str, name: str) -> None: """Initializes a new Company.""" self._address = address self._name = name @property def address(self) -> Optional[str]: """The address of the company associated with the VAT number.""" return self._address @property def name(self) -> Optional[str]: """The name of the company associated with the VAT number.""" return self._name
[docs] class VATValidationResponse(NestedEntitiesMixin, JSONResponse): """VAT validation service response.""" _nested_entities = { "company": Company, "country": Country } def __init__(self, response: requests.models.Response) -> None: """Initializes a new VATValidationResponse.""" super().__init__(response, VALIDATION_RESPONSE_FIELDS) @cached_property def vat_number(self) -> Optional[str]: """The submitted VAT number.""" return self._get_response_field("vat_number") @cached_property def valid(self) -> Optional[bool]: """Is true if the submitted VAT number is valid.""" return self._get_response_field("valid") @cached_property def company(self) -> Optional[Company]: """Company details.""" return self._get_response_field("company") @cached_property def country(self) -> Optional[Country]: """Country details.""" return self._get_response_field("country")