123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- from .. import BaseProvider, ElementsType, date_time
- localized = True
- class Provider(BaseProvider):
- city_suffixes: ElementsType = ["Ville"]
- street_suffixes: ElementsType = ["Street"]
- city_formats: ElementsType = ("{{first_name}} {{city_suffix}}",)
- street_name_formats: ElementsType = ("{{last_name}} {{street_suffix}}",)
- street_address_formats: ElementsType = ("{{building_number}} {{street_name}}",)
- address_formats: ElementsType = ("{{street_address}} {{postcode}} {{city}}",)
- building_number_formats: ElementsType = ("##",)
- postcode_formats: ElementsType = ("#####",)
- countries: ElementsType = [tz["name"] for tz in date_time.Provider.countries]
- ALPHA_2 = "alpha-2"
- ALPHA_3 = "alpha-3"
- alpha_2_country_codes: ElementsType = [tz["alpha-2-code"] for tz in date_time.Provider.countries]
- alpha_3_country_codes: ElementsType = [tz["alpha-3-code"] for tz in date_time.Provider.countries]
- def city_suffix(self) -> str:
- """
- :example 'town'
- """
- return self.random_element(self.city_suffixes)
- def street_suffix(self) -> str:
- """
- :example 'Avenue'
- """
- return self.random_element(self.street_suffixes)
- def building_number(self) -> str:
- """
- :example '791'
- """
- return self.numerify(self.random_element(self.building_number_formats))
- def city(self) -> str:
- """
- :example 'Sashabury'
- """
- pattern: str = self.random_element(self.city_formats)
- return self.generator.parse(pattern)
- def street_name(self) -> str:
- """
- :example 'Crist Parks'
- """
- pattern: str = self.random_element(self.street_name_formats)
- return self.generator.parse(pattern)
- def street_address(self) -> str:
- """
- :example '791 Crist Parks'
- """
- pattern: str = self.random_element(self.street_address_formats)
- return self.generator.parse(pattern)
- def postcode(self) -> str:
- """
- :example 86039-9874
- """
- return self.bothify(self.random_element(self.postcode_formats)).upper()
- def address(self) -> str:
- """
- :example '791 Crist Parks, Sashabury, IL 86039-9874'
- """
- pattern: str = self.random_element(self.address_formats)
- return self.generator.parse(pattern)
- def country(self) -> str:
- return self.random_element(self.countries)
- def country_code(self, representation: str = ALPHA_2) -> str:
- if representation == self.ALPHA_2:
- return self.random_element(self.alpha_2_country_codes)
- elif representation == self.ALPHA_3:
- return self.random_element(self.alpha_3_country_codes)
- else:
- raise ValueError("`representation` must be one of `alpha-2` or `alpha-3`.")
- def current_country_code(self) -> str:
- try:
- return self.__lang__.split("_")[1] # type: ignore
- except IndexError:
- raise AttributeError("Country code cannot be determined from locale")
- def current_country(self) -> str:
- current_country_code = self.current_country_code()
- current_country = [
- tz["name"] for tz in date_time.Provider.countries if tz["alpha-2-code"] == current_country_code
- ]
- if len(current_country) == 1:
- return current_country[0] # type: ignore
- elif len(current_country) > 1:
- raise ValueError(f"Ambiguous country for country code {current_country_code}: {current_country}")
- else:
- raise ValueError(f"No appropriate country for country code {current_country_code}")
|