From 6d7ba58f880be618ade07f8ea080fe8c4bf8a896 Mon Sep 17 00:00:00 2001 From: cyfraeviolae Date: Wed, 3 Apr 2024 03:10:44 -0400 Subject: venv --- .../faker/providers/address/en_CA/__init__.py | 417 +++++++++++++++++++++ .../en_CA/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 7975 bytes 2 files changed, 417 insertions(+) create mode 100644 venv/lib/python3.11/site-packages/faker/providers/address/en_CA/__init__.py create mode 100644 venv/lib/python3.11/site-packages/faker/providers/address/en_CA/__pycache__/__init__.cpython-311.pyc (limited to 'venv/lib/python3.11/site-packages/faker/providers/address/en_CA') diff --git a/venv/lib/python3.11/site-packages/faker/providers/address/en_CA/__init__.py b/venv/lib/python3.11/site-packages/faker/providers/address/en_CA/__init__.py new file mode 100644 index 0000000..db6592f --- /dev/null +++ b/venv/lib/python3.11/site-packages/faker/providers/address/en_CA/__init__.py @@ -0,0 +1,417 @@ +import re + +from typing import Optional + +from faker.providers import ElementsType + +from ..en import Provider as AddressProvider + + +class Provider(AddressProvider): + # Source: https://www.canadapost.ca/tools/pg/manual/PGaddress-e.asp#1449294 + # + # 'W' and 'Z' are valid in non-initial position (easily verified in the + # wild), but online official documentation is hard to find, so just ignore + # them for now. + postal_code_letters = ( + "A", + "B", + "C", + "E", + "G", + "H", + "J", + "K", + "L", + "M", + "N", + "P", + "R", + "S", + "T", + "V", + "X", + "Y", + ) + + city_prefixes: ElementsType[str] = ("North", "East", "West", "South", "New", "Lake", "Port") + + city_suffixes: ElementsType[str] = ( + "town", + "ton", + "land", + "ville", + "berg", + "burgh", + "borough", + "bury", + "view", + "port", + "mouth", + "stad", + "furt", + "chester", + "mouth", + "fort", + "haven", + "side", + "shire", + ) + + building_number_formats = ("#####", "####", "###") + + street_suffixes = ( + "Alley", + "Avenue", + "Branch", + "Bridge", + "Brook", + "Brooks", + "Burg", + "Burgs", + "Bypass", + "Camp", + "Canyon", + "Cape", + "Causeway", + "Center", + "Centers", + "Circle", + "Circles", + "Cliff", + "Cliffs", + "Club", + "Common", + "Corner", + "Corners", + "Course", + "Court", + "Courts", + "Cove", + "Coves", + "Creek", + "Crescent", + "Crest", + "Crossing", + "Crossroad", + "Curve", + "Dale", + "Dam", + "Divide", + "Drive", + "Drive", + "Drives", + "Estate", + "Estates", + "Expressway", + "Extension", + "Extensions", + "Fall", + "Falls", + "Ferry", + "Field", + "Fields", + "Flat", + "Flats", + "Ford", + "Fords", + "Forest", + "Forge", + "Forges", + "Fork", + "Forks", + "Fort", + "Freeway", + "Garden", + "Gardens", + "Gateway", + "Glen", + "Glens", + "Green", + "Greens", + "Grove", + "Groves", + "Harbor", + "Harbors", + "Haven", + "Heights", + "Highway", + "Hill", + "Hills", + "Hollow", + "Inlet", + "Inlet", + "Island", + "Island", + "Islands", + "Islands", + "Isle", + "Isle", + "Junction", + "Junctions", + "Key", + "Keys", + "Knoll", + "Knolls", + "Lake", + "Lakes", + "Land", + "Landing", + "Lane", + "Light", + "Lights", + "Loaf", + "Lock", + "Locks", + "Locks", + "Lodge", + "Lodge", + "Loop", + "Mall", + "Manor", + "Manors", + "Meadow", + "Meadows", + "Mews", + "Mill", + "Mills", + "Mission", + "Mission", + "Motorway", + "Mount", + "Mountain", + "Mountain", + "Mountains", + "Mountains", + "Neck", + "Orchard", + "Oval", + "Overpass", + "Park", + "Parks", + "Parkway", + "Parkways", + "Pass", + "Passage", + "Path", + "Pike", + "Pine", + "Pines", + "Place", + "Plain", + "Plains", + "Plains", + "Plaza", + "Plaza", + "Point", + "Points", + "Port", + "Port", + "Ports", + "Ports", + "Prairie", + "Prairie", + "Radial", + "Ramp", + "Ranch", + "Rapid", + "Rapids", + "Rest", + "Ridge", + "Ridges", + "River", + "Road", + "Road", + "Roads", + "Roads", + "Route", + "Row", + "Rue", + "Run", + "Shoal", + "Shoals", + "Shore", + "Shores", + "Skyway", + "Spring", + "Springs", + "Springs", + "Spur", + "Spurs", + "Square", + "Square", + "Squares", + "Squares", + "Station", + "Station", + "Stravenue", + "Stravenue", + "Stream", + "Stream", + "Street", + "Street", + "Streets", + "Summit", + "Summit", + "Terrace", + "Throughway", + "Trace", + "Track", + "Trafficway", + "Trail", + "Trail", + "Tunnel", + "Tunnel", + "Turnpike", + "Turnpike", + "Underpass", + "Union", + "Unions", + "Valley", + "Valleys", + "Via", + "Viaduct", + "View", + "Views", + "Village", + "Village", + "Villages", + "Ville", + "Vista", + "Vista", + "Walk", + "Walks", + "Wall", + "Way", + "Ways", + "Well", + "Wells", + ) + + postal_code_formats = ("?%? %?%", "?%?%?%") + + provinces = ( + "Alberta", + "British Columbia", + "Manitoba", + "New Brunswick", + "Newfoundland and Labrador", + "Northwest Territories", + "Nova Scotia", + "Nunavut", + "Ontario", + "Prince Edward Island", + "Quebec", + "Saskatchewan", + "Yukon Territory", + ) + + provinces_abbr = ( + "AB", + "BC", + "MB", + "NB", + "NL", + "NT", + "NS", + "NU", + "ON", + "PE", + "QC", + "SK", + "YT", + ) + + provinces_postcode_prefixes = { + "NL": ["A"], + "NS": ["B"], + "PE": ["C"], + "NB": ["E"], + "QC": ["G", "H", "J"], + "ON": ["K", "L", "M", "N", "P"], + "MB": ["R"], + "SK": ["S"], + "AB": ["T"], + "BC": ["V"], + "NU": ["X"], + "NT": ["X"], + "YT": ["Y"], + } + + city_formats: ElementsType[str] = ( + "{{city_prefix}} {{first_name}}{{city_suffix}}", + "{{city_prefix}} {{first_name}}", + "{{first_name}}{{city_suffix}}", + "{{last_name}}{{city_suffix}}", + ) + street_name_formats = ( + "{{first_name}} {{street_suffix}}", + "{{last_name}} {{street_suffix}}", + ) + street_address_formats = ( + "{{building_number}} {{street_name}}", + "{{building_number}} {{street_name}} {{secondary_address}}", + ) + address_formats = ("{{street_address}}\n{{city}}, {{province_abbr}} {{postalcode}}",) + secondary_address_formats = ("Apt. ###", "Suite ###") + + def administrative_unit(self) -> str: + """ """ + return self.random_element(self.provinces) + + province = administrative_unit + + def province_abbr(self) -> str: + return self.random_element(self.provinces_abbr) + + def city_prefix(self) -> str: + return self.random_element(self.city_prefixes) + + def secondary_address(self) -> str: + return self.numerify(self.random_element(self.secondary_address_formats)) + + def postal_code_letter(self) -> str: + """ + Returns a random letter from the list of allowable + letters in a canadian postal code + """ + return self.random_element(self.postal_code_letters) + + def _postcode_replace(self, postal_code_format: str) -> str: + """ + Replaces all question mark ('?') occurrences with a random letter + from given postal_code_format, then passes result to numerify to insert + numbers + """ + temp = re.sub(r"\?", lambda x: self.postal_code_letter(), postal_code_format) + return self.numerify(temp) + + def postcode(self) -> str: + """ + Returns a random postcode + """ + return self._postcode_replace(self.random_element(self.postal_code_formats)) + + def postcode_in_province(self, province_abbr: Optional[str] = None) -> str: + """ + Returns a random postcode within the provided province abbreviation + """ + if province_abbr is None: + province_abbr = self.random_element(self.provinces_abbr) + + if province_abbr in self.provinces_abbr: + postal_code_format: str = self.random_element(self.postal_code_formats) + postal_code_format = postal_code_format.replace( + "?", + self.generator.random_element(self.provinces_postcode_prefixes[province_abbr]), + 1, + ) + return self._postcode_replace(postal_code_format) + else: + raise Exception("Province Abbreviation not found in list") + + def postalcode_in_province(self, province_abbr: Optional[str] = None) -> str: + return self.postcode_in_province(province_abbr) + + def postalcode(self) -> str: + return self.postcode() diff --git a/venv/lib/python3.11/site-packages/faker/providers/address/en_CA/__pycache__/__init__.cpython-311.pyc b/venv/lib/python3.11/site-packages/faker/providers/address/en_CA/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..f712d99 Binary files /dev/null and b/venv/lib/python3.11/site-packages/faker/providers/address/en_CA/__pycache__/__init__.cpython-311.pyc differ -- cgit v1.2.3