123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- # coding=utf-8
- from __future__ import unicode_literals
- from decimal import Decimal
- from .. import BaseProvider
- from .. import date_time
- localized = True
- class Provider(BaseProvider):
- city_suffixes = ['Ville', ]
- street_suffixes = ['Street', ]
- city_formats = ('{{first_name}} {{city_suffix}}', )
- street_name_formats = ('{{last_name}} {{street_suffix}}', )
- street_address_formats = ('{{building_number}} {{street_name}}', )
- address_formats = ('{{street_address}} {{postcode}} {{city}}', )
- building_number_formats = ('##', )
- postcode_formats = ('#####', )
- countries = [tz['name'] for tz in date_time.Provider.countries]
- ALPHA_2 = 'alpha-2'
- ALPHA_3 = 'alpha-3'
- alpha_2_country_codes = [tz['alpha-2-code'] for tz in date_time.Provider.countries]
- alpha_3_country_codes = [tz['alpha-3-code'] for tz in date_time.Provider.countries]
- def city_suffix(self):
- """
- :example 'town'
- """
- return self.random_element(self.city_suffixes)
- def street_suffix(self):
- """
- :example 'Avenue'
- """
- return self.random_element(self.street_suffixes)
- def building_number(self):
- """
- :example '791'
- """
- return self.numerify(self.random_element(self.building_number_formats))
- def city(self):
- """
- :example 'Sashabury'
- """
- pattern = self.random_element(self.city_formats)
- return self.generator.parse(pattern)
- def street_name(self):
- """
- :example 'Crist Parks'
- """
- pattern = self.random_element(self.street_name_formats)
- return self.generator.parse(pattern)
- def street_address(self):
- """
- :example '791 Crist Parks'
- """
- pattern = self.random_element(self.street_address_formats)
- return self.generator.parse(pattern)
- def postcode(self):
- """
- :example 86039-9874
- """
- return self.bothify(self.random_element(self.postcode_formats)).upper()
- def address(self):
- """
- :example '791 Crist Parks, Sashabury, IL 86039-9874'
- """
- pattern = self.random_element(self.address_formats)
- return self.generator.parse(pattern)
- def country(self):
- return self.random_element(self.countries)
- def country_code(self, representation=ALPHA_2):
- 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 geo_coordinate(self, center=None, radius=0.001):
- """
- Optionally center the coord and pick a point within radius.
- """
- if center is None:
- return Decimal(str(self.generator.random.randint(-180000000,
- 180000000) / 1000000.0)).quantize(Decimal('.000001'))
- else:
- center = float(center)
- radius = float(radius)
- geo = self.generator.random.uniform(
- center - radius, center + radius)
- return Decimal(str(geo)).quantize(Decimal('.000001'))
- def latitude(self):
- # Latitude has a range of -90 to 90, so divide by two.
- return self.geo_coordinate() / 2
- def longitude(self):
- return self.geo_coordinate()
|