From 87e50e6973e160a2b5e01474341c5878cfe73b39 Mon Sep 17 00:00:00 2001 From: Pulkit Gupta <42977200+pulkitgupta2k@users.noreply.github.com> Date: Wed, 30 Dec 2020 21:24:53 +0530 Subject: [PATCH] en_IN address + phone number provider (#1357) * en_IN person provider * en_IN person provider linted * en_IN person providers removed formats * en_IN address+phone_number added * test_address linted --- faker/providers/address/en_IN/__init__.py | 399 ++++++++++++++++++ .../providers/phone_number/en_IN/__init__.py | 9 + tests/providers/test_address.py | 19 +- 3 files changed, 426 insertions(+), 1 deletion(-) create mode 100644 faker/providers/address/en_IN/__init__.py create mode 100644 faker/providers/phone_number/en_IN/__init__.py diff --git a/faker/providers/address/en_IN/__init__.py b/faker/providers/address/en_IN/__init__.py new file mode 100644 index 0000000000..fa264f7b6d --- /dev/null +++ b/faker/providers/address/en_IN/__init__.py @@ -0,0 +1,399 @@ +from .. import Provider as AddressProvider + + +class Provider(AddressProvider): + # City and States names taken from wikipedia + # Street format taken from some common famous places in India + # Link for cities: https://en.wikipedia.org/wiki/List_of_cities_in_India_by_population + # Link for States: https://en.wikipedia.org/wiki/States_and_union_territories_of_India + # Links for street name formats: https://www.mumbai77.com/city/3313/travel/old-new-street-names/ + + city_formats = ('{{city_name}}', ) + + street_name_formats = ( + '{{last_name}} Nagar', + '{{last_name}} Zila', + '{{last_name}} Street', + '{{last_name}} Ganj', + '{{last_name}} Road', + '{{last_name}} Path', + '{{last_name}} Marg', + '{{last_name}} Chowk', + '{{last_name}} Circle', + '{{last_name}}', + ) + + street_address_formats = ( + '{{building_number}}, {{street_name}}', + '{{building_number}}\n{{street_name}}', + ) + + address_formats = ( + '{{street_address}}\n{{city}} {{postcode}}', + '{{street_address}}\n{{city}}-{{postcode}}', + '{{street_address}}, {{city}} {{postcode}}', + '{{street_address}}, {{city}}-{{postcode}}', + ) + + building_number_formats = ( + 'H.No. ###', '###', 'H.No. ##', '##', '##/##', "##/###") + + postcode_formats = ('######', ) + + cities = ( + 'Mumbai', + 'Delhi', + 'Kolkata', + 'Chennai', + 'Bangalore', + 'Hyderabad', + 'Ahmedabad', + 'Kanpur', + 'Pune', + 'Surat', + 'Jaipur', + 'Lucknow', + 'Nagpur', + 'Indore', + 'Bhopal', + 'Ludhiana', + 'Patna', + 'Visakhapatnam', + 'Vadodara', + 'Agra', + 'Thane', + 'Kalyan-Dombivli', + 'Varanasi', + 'Ranchi', + 'Nashik', + 'Dhanbad', + 'Faridabad', + 'Meerut', + 'Pimpri-Chinchwad', + 'Howrah', + 'Allahabad', + 'Ghaziabad', + 'Rajkot', + 'Amritsar', + 'Jabalpur', + 'Coimbatore', + 'Madurai', + 'Srinagar', + 'Aurangabad', + 'Solapur', + 'Vijayawada', + 'Jodhpur', + 'Gwalior', + 'Guwahati', + 'Chandigarh', + 'Hubli–Dharwad', + 'Mysore', + 'Tiruchirappalli', + 'Bareilly', + 'Jalandhar', + 'Navi Mumbai', + 'Salem', + 'Kota', + 'Vasai-Virar', + 'Aligarh', + 'Moradabad', + 'Bhubaneswar', + 'Gorakhpur', + 'Raipur', + 'Bhiwandi', + 'Kochi', + 'Jamshedpur', + 'Bhilai', + 'Amravati', + 'Cuttack', + 'Warangal', + 'Bikaner', + 'Mira-Bhayandar', + 'Guntur', + 'Bhavnagar', + 'Durgapur', + 'Kolhapur', + 'Ajmer', + 'Asansol', + 'Ulhasnagar', + 'Siliguri', + 'Jalgaon', + 'Saharanpur', + 'Jamnagar', + 'Bhatpara', + 'Sangli-Miraj & Kupwad', + 'Kozhikode', + 'Nanded', + 'Ujjain', + 'Dehradun', + 'Rourkela', + 'Gulbarga', + 'Tirunelveli', + 'Malegaon', + 'Akola', + 'Belgaum', + 'Mangalore', + 'Bokaro', + 'South Dumdum', + 'Udaipur', + 'Gaya', + 'Maheshtala', + 'Jhansi', + 'Nellore', + 'Jammu', + 'Thiruvananthapuram', + 'Davanagere', + 'Kollam', + 'Panihati', + 'Kurnool', + 'Tiruppur', + 'Dhule', + 'Bhagalpur', + 'Rajpur Sonarpur', + 'Kakinada', + 'Thrissur', + 'Bellary', + 'Muzaffarnagar', + 'Korba', + 'Rajahmundry', + 'Kamarhati', + 'Ambattur', + 'Berhampur', + 'Ahmednagar', + 'Muzaffarpur', + 'Noida', + 'Patiala', + 'Mathura', + 'New Delhi', + 'Latur', + 'Sambalpur', + 'Shahjahanpur', + 'Kulti', + 'Chandrapur', + 'Nizamabad', + 'Rohtak', + 'Bardhaman', + 'Rampur', + 'Bhilwara', + 'Firozabad', + 'Bilaspur', + 'Shimoga', + 'Agartala', + 'Gopalpur', + 'Darbhanga', + 'Panipat', + 'Bally', + 'Alwar', + 'Parbhani', + 'Ichalkaranji', + 'Anantapuram', + 'Baranagar', + 'Tumkur', + 'Ramagundam', + 'Jalna', + 'Durg', + 'Sagar', + 'Bihar Sharif', + 'Dewas', + 'Barasat', + 'Avadi', + 'Farrukhabad', + 'Aizawl', + 'Tirupati', + 'Bijapur', + 'Satara', + 'Satna', + 'Ratlam', + 'Imphal', + 'Pondicherry', + 'North Dumdum', + 'Anantapur', + 'Khammam', + 'Ozhukarai', + 'Bathinda', + 'Thoothukudi', + 'Thanjavur', + 'Naihati', + 'Sonipat', + 'Mau', + 'Tiruvottiyur', + 'Hapur', + 'Sri Ganganagar', + 'Karnal', + 'Etawah', + 'Nagercoil', + 'Raichur', + 'Raurkela Industrial Township', + 'Secunderabad', + 'Karimnagar', + 'Mirzapur', + 'Bharatpur', + 'Ambarnath', + 'Arrah', + 'Uluberia', + 'Serampore', + 'Dindigul', + 'Gandhinagar', + 'Burhanpur', + 'Nadiad', + 'Eluru', + 'Yamunanagar', + 'Kharagpur', + 'Munger', + 'Pali', + 'Katni', + 'Singrauli', + 'Tenali', + 'Sikar', + 'Silchar', + 'Rewa', + 'Sambhal', + 'Machilipatnam', + 'Vellore', + 'Alappuzha', + 'Bulandshahr', + 'Haridwar', + 'Vijayanagaram', + 'Erode', + 'Gurgaon', + 'Bidar', + 'Bhusawal', + 'Khandwa', + 'Purnia', + 'Haldia', + 'Chinsurah', + 'Bhiwani', + 'Raebareli', + 'Junagadh', + 'Bahraich', + 'Gandhidham', + 'Mango', + 'Raiganj', + 'Amroha', + 'Sultan Pur Majra', + 'Hospet', + 'Bidhannagar', + 'Malda', + 'Sirsa', + 'Berhampore', + 'Jaunpur', + 'Surendranagar Dudhrej', + 'Madhyamgram', + 'Kirari Suleman Nagar', + 'Bhind', + 'Nandyal', + 'Chittoor', + 'Bhalswa Jahangir Pur', + 'Fatehpur', + 'Morena', + 'Nangloi Jat', + 'Ongole', + 'Karawal Nagar', + 'Shivpuri', + 'Morbi', + 'Unnao', + 'Pallavaram', + 'Kumbakonam', + 'Shimla', + 'Mehsana', + 'Panchkula', + 'Orai', + 'Ambala', + 'Dibrugarh', + 'Guna', + 'Danapur', + 'Sasaram', + 'Anand', + 'Kottayam', + 'Hazaribagh', + 'Kadapa', + 'Saharsa', + 'Nagaon', + 'Loni', + 'Hajipur', + 'Dehri', + 'Bettiah', + 'Katihar', + 'Deoghar', + 'Jorhat', + 'Siwan', + 'Panvel', + 'Hosur', + 'Tinsukia', + 'Bongaigaon', + 'Motihari', + 'Jamalpur', + 'Suryapet', + 'Begusarai', + 'Miryalaguda', + 'Proddatur', + 'Karaikudi', + 'Kishanganj', + 'Phusro', + 'Buxar', + 'Tezpur', + 'Jehanabad', + 'Aurangabad', + 'Chapra', + 'Ramgarh', + 'Gangtok', + 'Adoni', + 'Amaravati', + 'Ballia', + 'Bhimavaram', + 'Dharmavaram', + 'Giridih', + 'Gudivada', + 'Guntakal', + 'Hindupur', + 'Kavali', + 'Khora ', + 'Ghaziabad', + 'Madanapalle', + 'Mahbubnagar', + 'Medininagar', + 'Narasaraopet', + 'Phagwara', + 'Pudukkottai', + 'Srikakulam', + 'Tadepalligudem', + 'Tadipatri', + 'Udupi', + ) + + states = ( + 'Andhra Pradesh', + 'Arunachal Pradesh', + 'Assam', + 'Bihar', + 'Chhattisgarh', + 'Goa', + 'Gujarat', + 'Haryana', + 'Himachal Pradesh', + 'Jharkhand', + 'Karnataka', + 'Kerala', + 'Madhya Pradesh', + 'Maharashtra', + 'Manipur', + 'Meghalaya', + 'Mizoram', + 'Nagaland', + 'Odisha', + 'Punjab', + 'Rajasthan', + 'Sikkim', + 'Tamil Nadu', + 'Telangana', + 'Tripura', + 'Uttar Pradesh', + 'Uttarakhand', + 'West Bengal', + ) + + def city_name(self): + return self.random_element(self.cities) + + def state(self): + return self.random_element(self.states) diff --git a/faker/providers/phone_number/en_IN/__init__.py b/faker/providers/phone_number/en_IN/__init__.py new file mode 100644 index 0000000000..96a86bdd65 --- /dev/null +++ b/faker/providers/phone_number/en_IN/__init__.py @@ -0,0 +1,9 @@ +from .. import Provider as PhoneNumberProvider + + +class Provider(PhoneNumberProvider): + formats = ( + '+91##########', + '0##########', + '##########', + ) diff --git a/tests/providers/test_address.py b/tests/providers/test_address.py index cae8b6ab20..106e6c2d16 100644 --- a/tests/providers/test_address.py +++ b/tests/providers/test_address.py @@ -13,6 +13,7 @@ from faker.providers.address.en_AU import Provider as EnAuAddressProvider from faker.providers.address.en_CA import Provider as EnCaAddressProvider from faker.providers.address.en_GB import Provider as EnGbAddressProvider +from faker.providers.address.en_IN import Provider as EnInAddressProvider from faker.providers.address.en_PH import Provider as EnPhAddressProvider from faker.providers.address.en_US import Provider as EnUsAddressProvider from faker.providers.address.es_ES import Provider as EsEsAddressProvider @@ -291,7 +292,7 @@ class TestEnCa: """Test en_CA address provider methods""" valid_postcode_letter_re = r'[{}]'.format( - ''.join(EnCaAddressProvider.postal_code_letters)) + ''.join(EnCaAddressProvider.postal_code_letters)) valid_postcode_re = r"{0}[0-9]{0} ?[0-9]{0}[0-9]".format(valid_postcode_letter_re) def test_postcode(self, faker, num_samples): @@ -1443,3 +1444,19 @@ def test_postcode(self, faker, num_samples): postcode = faker.postcode() assert isinstance(postcode, str) assert re.fullmatch(r'[1-9]\d{4}', postcode) + + +class TestEnIn: + """Test en_IN address provider methods""" + + def test_city_name(self, faker, num_samples): + for _ in range(num_samples): + city_name = faker.city_name() + assert isinstance(city_name, str) + assert city_name in EnInAddressProvider.cities + + def test_state(self, faker, num_samples): + for _ in range(num_samples): + state = faker.state() + assert isinstance(state, str) + assert state in EnInAddressProvider.states