
    Qff              	          d Z ddlmZmZmZmZmZmZ ddlm	Z	m
Z
 g dZdZeZeZeeee	         f         Zeeef         ZdefdZdedefd	Zd
ededee         fdZde	deddfdZdede	fdZdeeedf         ee         f         de	fdZdededdfdZdeee         eee                  eeedf                  f         deddfdZdeeee         eee                  eeedf                  f         deddfdZdededefdZdedeeee	         f         de	fdZd
ededeee	f         fdZdedee	ddf         fd ZdS )!a  Astral geocoder is a database of locations stored within the package.

To get the :class:`~astral.LocationInfo` for a location use the
:func:`~astral.geocoder.lookup` function e.g. ::

    from astral.geocoder import lookup, database
    l = lookup("London", database())

All locations stored in the database can be accessed using the `all_locations`
generator ::

    from astral.geocoder import all_locations
    for location in all_locations:
        print(location)
    )Dict	GeneratorListOptionalTupleUnionLocationInfodms_to_float)lookupdatabaseadd_locationsall_locationsuK  Abu Dhabi,UAE,Asia/Dubai,24°28'N,54°22'E
Abu Dhabi,United Arab Emirates,Asia/Dubai,24°28'N,54°22'E
Abuja,Nigeria,Africa/Lagos,09°05'N,07°32'E
Accra,Ghana,Africa/Accra,05°35'N,00°06'W
Addis Ababa,Ethiopia,Africa/Addis_Ababa,09°02'N,38°42'E
Adelaide,Australia,Australia/Adelaide,34°56'S,138°36'E
Al Jubail,Saudi Arabia,Asia/Riyadh,25°24'N,49°39'W
Algiers,Algeria,Africa/Algiers,36°42'N,03°08'E
Amman,Jordan,Asia/Amman,31°57'N,35°52'E
Amsterdam,Netherlands,Europe/Amsterdam,52°23'N,04°54'E
Andorra la Vella,Andorra,Europe/Andorra,42°31'N,01°32'E
Ankara,Turkey,Europe/Istanbul,39°57'N,32°54'E
Antananarivo,Madagascar,Indian/Antananarivo,18°55'S,47°31'E
Apia,Samoa,Pacific/Apia,13°50'S,171°50'W
Ashgabat,Turkmenistan,Asia/Ashgabat,38°00'N,57°50'E
Asmara,Eritrea,Africa/Asmara,15°19'N,38°55'E
Astana,Kazakhstan,Asia/Qyzylorda,51°10'N,71°30'E
Asuncion,Paraguay,America/Asuncion,25°10'S,57°30'W
Athens,Greece,Europe/Athens,37°58'N,23°46'E
Avarua,Cook Islands,Etc/GMT-10,21°12'N,159°46'W
Baghdad,Iraq,Asia/Baghdad,33°20'N,44°30'E
Baku,Azerbaijan,Asia/Baku,40°29'N,49°56'E
Bamako,Mali,Africa/Bamako,12°34'N,07°55'W
Bandar Seri Begawan,Brunei Darussalam,Asia/Brunei,04°52'N,115°00'E
Bangkok,Thailand,Asia/Bangkok,13°45'N,100°35'E
Bangui,Central African Republic,Africa/Bangui,04°23'N,18°35'E
Banjul,Gambia,Africa/Banjul,13°28'N,16°40'W
Basse-Terre,Guadeloupe,America/Guadeloupe,16°00'N,61°44'W
Basseterre,Saint Kitts and Nevis,America/St_Kitts,17°17'N,62°43'W
Beijing,China,Asia/Harbin,39°55'N,116°20'E
Beirut,Lebanon,Asia/Beirut,33°53'N,35°31'E
Belfast,Northern Ireland,Europe/Belfast,54°36'N,5°56'W
Belgrade,Yugoslavia,Europe/Belgrade,44°50'N,20°37'E
Belmopan,Belize,America/Belize,17°18'N,88°30'W
Berlin,Germany,Europe/Berlin,52°30'N,13°25'E
Bern,Switzerland,Europe/Zurich,46°57'N,07°28'E
Bishkek,Kyrgyzstan,Asia/Bishkek,42°54'N,74°46'E
Bissau,Guinea-Bissau,Africa/Bissau,11°45'N,15°45'W
Bloemfontein,South Africa,Africa/Johannesburg,29°12'S,26°07'E
Bogota,Colombia,America/Bogota,04°34'N,74°00'W
Brasilia,Brazil,Brazil/East,15°47'S,47°55'W
Bratislava,Slovakia,Europe/Bratislava,48°10'N,17°07'E
Brazzaville,Congo,Africa/Brazzaville,04°09'S,15°12'E
Bridgetown,Barbados,America/Barbados,13°05'N,59°30'W
Brisbane,Australia,Australia/Brisbane,27°30'S,153°01'E
Brussels,Belgium,Europe/Brussels,50°51'N,04°21'E
Bucharest,Romania,Europe/Bucharest,44°27'N,26°10'E
Bucuresti,Romania,Europe/Bucharest,44°27'N,26°10'E
Budapest,Hungary,Europe/Budapest,47°29'N,19°05'E
Buenos Aires,Argentina,America/Buenos_Aires,34°62'S,58°44'W
Bujumbura,Burundi,Africa/Bujumbura,03°16'S,29°18'E
Cairo,Egypt,Africa/Cairo,30°01'N,31°14'E
Canberra,Australia,Australia/Canberra,35°15'S,149°08'E
Cape Town,South Africa,Africa/Johannesburg,33°55'S,18°22'E
Caracas,Venezuela,America/Caracas,10°30'N,66°55'W
Castries,Saint Lucia,America/St_Lucia,14°02'N,60°58'W
Cayenne,French Guiana,America/Cayenne,05°05'N,52°18'W
Charlotte Amalie,United States of Virgin Islands,America/Virgin,18°21'N,64°56'W
Chisinau,Moldova,Europe/Chisinau,47°02'N,28°50'E
Conakry,Guinea,Africa/Conakry,09°29'N,13°49'W
Copenhagen,Denmark,Europe/Copenhagen,55°41'N,12°34'E
Cotonou,Benin,Africa/Porto-Novo,06°23'N,02°42'E
Dakar,Senegal,Africa/Dakar,14°34'N,17°29'W
Damascus,Syrian Arab Republic,Asia/Damascus,33°30'N,36°18'E
Dammam,Saudi Arabia,Asia/Riyadh,26°30'N,50°12'E
Darwin,Australia,Australia/Darwin,12°26'S,130°50'E
Dhaka,Bangladesh,Asia/Dhaka,23°43'N,90°26'E
Dili,East Timor,Asia/Dili,08°29'S,125°34'E
Djibouti,Djibouti,Africa/Djibouti,11°08'N,42°20'E
Dodoma,United Republic of Tanzania,Africa/Dar_es_Salaam,06°08'S,35°45'E
Doha,Qatar,Asia/Qatar,25°15'N,51°35'E
Douglas,Isle Of Man,Europe/London,54°9'N,4°29'W
Dublin,Ireland,Europe/Dublin,53°21'N,06°15'W
Dushanbe,Tajikistan,Asia/Dushanbe,38°33'N,68°48'E
El Aaiun,Morocco,UTC,27°9'N,13°12'W
Fort-de-France,Martinique,America/Martinique,14°36'N,61°02'W
Freetown,Sierra Leone,Africa/Freetown,08°30'N,13°17'W
Funafuti,Tuvalu,Pacific/Funafuti,08°31'S,179°13'E
Gaborone,Botswana,Africa/Gaborone,24°45'S,25°57'E
George Town,Cayman Islands,America/Cayman,19°20'N,81°24'W
Georgetown,Guyana,America/Guyana,06°50'N,58°12'W
Gibraltar,Gibraltar,Europe/Gibraltar,36°9'N,5°21'W
Guatemala,Guatemala,America/Guatemala,14°40'N,90°22'W
Hanoi,Viet Nam,Asia/Saigon,21°05'N,105°55'E
Harare,Zimbabwe,Africa/Harare,17°43'S,31°02'E
Havana,Cuba,America/Havana,23°08'N,82°22'W
Helsinki,Finland,Europe/Helsinki,60°15'N,25°03'E
Hobart,Tasmania,Australia/Hobart,42°53'S,147°19'E
Hong Kong,China,Asia/Hong_Kong,22°16'N,114°09'E
Honiara,Solomon Islands,Pacific/Guadalcanal,09°27'S,159°57'E
Islamabad,Pakistan,Asia/Karachi,33°40'N,73°10'E
Jakarta,Indonesia,Asia/Jakarta,06°09'S,106°49'E
Jerusalem,Israel,Asia/Jerusalem,31°47'N,35°12'E
Juba,South Sudan,Africa/Juba,4°51'N,31°36'E
Jubail,Saudi Arabia,Asia/Riyadh,27°02'N,49°39'E
Kabul,Afghanistan,Asia/Kabul,34°28'N,69°11'E
Kampala,Uganda,Africa/Kampala,00°20'N,32°30'E
Kathmandu,Nepal,Asia/Kathmandu,27°45'N,85°20'E
Khartoum,Sudan,Africa/Khartoum,15°31'N,32°35'E
Kiev,Ukraine,Europe/Kiev,50°30'N,30°28'E
Kigali,Rwanda,Africa/Kigali,01°59'S,30°04'E
Kingston,Jamaica,America/Jamaica,18°00'N,76°50'W
Kingston,Norfolk Island,Pacific/Norfolk,45°20'S,168°43'E
Kingstown,Saint Vincent and the Grenadines,America/St_Vincent,13°10'N,61°10'W
Kinshasa,Democratic Republic of the Congo,Africa/Kinshasa,04°20'S,15°15'E
Koror,Palau,Pacific/Palau,07°20'N,134°28'E
Kuala Lumpur,Malaysia,Asia/Kuala_Lumpur,03°09'N,101°41'E
Kuwait,Kuwait,Asia/Kuwait,29°30'N,48°00'E
La Paz,Bolivia,America/La_Paz,16°20'S,68°10'W
Libreville,Gabon,Africa/Libreville,00°25'N,09°26'E
Lilongwe,Malawi,Africa/Blantyre,14°00'S,33°48'E
Lima,Peru,America/Lima,12°00'S,77°00'W
Lisbon,Portugal,Europe/Lisbon,38°42'N,09°10'W
Ljubljana,Slovenia,Europe/Ljubljana,46°04'N,14°33'E
Lome,Togo,Africa/Lome,06°09'N,01°20'E
London,England,Europe/London,51°28'24"N,00°00'3"W
Luanda,Angola,Africa/Luanda,08°50'S,13°15'E
Lusaka,Zambia,Africa/Lusaka,15°28'S,28°16'E
Luxembourg,Luxembourg,Europe/Luxembourg,49°37'N,06°09'E
Macau,Macao,Asia/Macau,22°12'N,113°33'E
Madinah,Saudi Arabia,Asia/Riyadh,24°28'N,39°36'E
Madrid,Spain,Europe/Madrid,40°25'N,03°45'W
Majuro,Marshall Islands,Pacific/Majuro,7°4'N,171°16'E
Makkah,Saudi Arabia,Asia/Riyadh,21°26'N,39°49'E
Malabo,Equatorial Guinea,Africa/Malabo,03°45'N,08°50'E
Male,Maldives,Indian/Maldives,04°00'N,73°28'E
Mamoudzou,Mayotte,Indian/Mayotte,12°48'S,45°14'E
Managua,Nicaragua,America/Managua,12°06'N,86°20'W
Manama,Bahrain,Asia/Bahrain,26°10'N,50°30'E
Manila,Philippines,Asia/Manila,14°40'N,121°03'E
Maputo,Mozambique,Africa/Maputo,25°58'S,32°32'E
Maseru,Lesotho,Africa/Maseru,29°18'S,27°30'E
Masqat,Oman,Asia/Muscat,23°37'N,58°36'E
Mbabane,Swaziland,Africa/Mbabane,26°18'S,31°06'E
Mecca,Saudi Arabia,Asia/Riyadh,21°26'N,39°49'E
Medina,Saudi Arabia,Asia/Riyadh,24°28'N,39°36'E
Melbourne,Australia,Australia/Melbourne,37°48'S,144°57'E
Mexico,Mexico,America/Mexico_City,19°20'N,99°10'W
Minsk,Belarus,Europe/Minsk,53°52'N,27°30'E
Mogadishu,Somalia,Africa/Mogadishu,02°02'N,45°25'E
Monaco,Priciplality Of Monaco,Europe/Monaco,43°43'N,7°25'E
Monrovia,Liberia,Africa/Monrovia,06°18'N,10°47'W
Montevideo,Uruguay,America/Montevideo,34°50'S,56°11'W
Moroni,Comoros,Indian/Comoro,11°40'S,43°16'E
Moscow,Russian Federation,Europe/Moscow,55°45'N,37°35'E
Moskva,Russian Federation,Europe/Moscow,55°45'N,37°35'E
Mumbai,India,Asia/Kolkata,18°58'N,72°49'E
Muscat,Oman,Asia/Muscat,23°37'N,58°32'E
N'Djamena,Chad,Africa/Ndjamena,12°10'N,14°59'E
Nairobi,Kenya,Africa/Nairobi,01°17'S,36°48'E
Nassau,Bahamas,America/Nassau,25°05'N,77°20'W
Naypyidaw,Myanmar,Asia/Rangoon,19°45'N,96°6'E
New Delhi,India,Asia/Kolkata,28°37'N,77°13'E
Ngerulmud,Palau,Pacific/Palau,7°30'N,134°37'E
Niamey,Niger,Africa/Niamey,13°27'N,02°06'E
Nicosia,Cyprus,Asia/Nicosia,35°10'N,33°25'E
Nouakchott,Mauritania,Africa/Nouakchott,20°10'S,57°30'E
Noumea,New Caledonia,Pacific/Noumea,22°17'S,166°30'E
Nuku'alofa,Tonga,Pacific/Tongatapu,21°10'S,174°00'W
Nuuk,Greenland,America/Godthab,64°10'N,51°35'W
Oranjestad,Aruba,America/Aruba,12°32'N,70°02'W
Oslo,Norway,Europe/Oslo,59°55'N,10°45'E
Ottawa,Canada,US/Eastern,45°27'N,75°42'W
Ouagadougou,Burkina Faso,Africa/Ouagadougou,12°15'N,01°30'W
P'yongyang,Democratic People's Republic of Korea,Asia/Pyongyang,39°09'N,125°30'E
Pago Pago,American Samoa,Pacific/Pago_Pago,14°16'S,170°43'W
Palikir,Micronesia,Pacific/Ponape,06°55'N,158°09'E
Panama,Panama,America/Panama,09°00'N,79°25'W
Papeete,French Polynesia,Pacific/Tahiti,17°32'S,149°34'W
Paramaribo,Suriname,America/Paramaribo,05°50'N,55°10'W
Paris,France,Europe/Paris,48°50'N,02°20'E
Perth,Australia,Australia/Perth,31°56'S,115°50'E
Phnom Penh,Cambodia,Asia/Phnom_Penh,11°33'N,104°55'E
Podgorica,Montenegro,Europe/Podgorica,42°28'N,19°16'E
Port Louis,Mauritius,Indian/Mauritius,20°9'S,57°30'E
Port Moresby,Papua New Guinea,Pacific/Port_Moresby,09°24'S,147°08'E
Port-Vila,Vanuatu,Pacific/Efate,17°45'S,168°18'E
Port-au-Prince,Haiti,America/Port-au-Prince,18°40'N,72°20'W
Port of Spain,Trinidad and Tobago,America/Port_of_Spain,10°40'N,61°31'W
Porto-Novo,Benin,Africa/Porto-Novo,06°23'N,02°42'E
Prague,Czech Republic,Europe/Prague,50°05'N,14°22'E
Praia,Cape Verde,Atlantic/Cape_Verde,15°02'N,23°34'W
Pretoria,South Africa,Africa/Johannesburg,25°44'S,28°12'E
Pristina,Albania,Europe/Tirane,42°40'N,21°10'E
Quito,Ecuador,America/Guayaquil,00°15'S,78°35'W
Rabat,Morocco,Africa/Casablanca,34°1'N,6°50'W
Reykjavik,Iceland,Atlantic/Reykjavik,64°10'N,21°57'W
Riga,Latvia,Europe/Riga,56°53'N,24°08'E
Riyadh,Saudi Arabia,Asia/Riyadh,24°41'N,46°42'E
Road Town,British Virgin Islands,America/Virgin,18°27'N,64°37'W
Rome,Italy,Europe/Rome,41°54'N,12°29'E
Roseau,Dominica,America/Dominica,15°20'N,61°24'W
Saint Helier,Jersey,Etc/GMT,49°11'N,2°6'W
Saint Pierre,Saint Pierre and Miquelon,America/Miquelon,46°46'N,56°12'W
Saipan,Northern Mariana Islands,Pacific/Saipan,15°12'N,145°45'E
Sana,Yemen,Asia/Aden,15°20'N,44°12'W
Sana'a,Yemen,Asia/Aden,15°20'N,44°12'W
San Jose,Costa Rica,America/Costa_Rica,09°55'N,84°02'W
San Juan,Puerto Rico,America/Puerto_Rico,18°28'N,66°07'W
San Marino,San Marino,Europe/San_Marino,43°55'N,12°30'E
San Salvador,El Salvador,America/El_Salvador,13°40'N,89°10'W
Santiago,Chile,America/Santiago,33°24'S,70°40'W
Santo Domingo,Dominica Republic,America/Santo_Domingo,18°30'N,69°59'W
Sao Tome,Sao Tome and Principe,Africa/Sao_Tome,00°10'N,06°39'E
Sarajevo,Bosnia and Herzegovina,Europe/Sarajevo,43°52'N,18°26'E
Seoul,Republic of Korea,Asia/Seoul,37°31'N,126°58'E
Singapore,Republic of Singapore,Asia/Singapore,1°18'N,103°48'E
Skopje,The Former Yugoslav Republic of Macedonia,Europe/Skopje,42°01'N,21°26'E
Sofia,Bulgaria,Europe/Sofia,42°45'N,23°20'E
Sri Jayawardenapura Kotte,Sri Lanka,Asia/Colombo,6°54'N,79°53'E
St. George's,Grenada,America/Grenada,32°22'N,64°40'W
St. John's,Antigua and Barbuda,America/Antigua,17°7'N,61°51'W
St. Peter Port,Guernsey,Europe/Guernsey,49°26'N,02°33'W
Stanley,Falkland Islands,Atlantic/Stanley,51°40'S,59°51'W
Stockholm,Sweden,Europe/Stockholm,59°20'N,18°05'E
Sucre,Bolivia,America/La_Paz,16°20'S,68°10'W
Suva,Fiji,Pacific/Fiji,18°06'S,178°30'E
Sydney,Australia,Australia/Sydney,33°53'S,151°13'E
Taipei,Republic of China (Taiwan),Asia/Taipei,25°02'N,121°38'E
T'bilisi,Georgia,Asia/Tbilisi,41°43'N,44°50'E
Tbilisi,Georgia,Asia/Tbilisi,41°43'N,44°50'E
Tallinn,Estonia,Europe/Tallinn,59°22'N,24°48'E
Tarawa,Kiribati,Pacific/Tarawa,01°30'N,173°00'E
Tashkent,Uzbekistan,Asia/Tashkent,41°20'N,69°10'E
Tegucigalpa,Honduras,America/Tegucigalpa,14°05'N,87°14'W
Tehran,Iran,Asia/Tehran,35°44'N,51°30'E
Thimphu,Bhutan,Asia/Thimphu,27°31'N,89°45'E
Tirana,Albania,Europe/Tirane,41°18'N,19°49'E
Tirane,Albania,Europe/Tirane,41°18'N,19°49'E
Torshavn,Faroe Islands,Atlantic/Faroe,62°05'N,06°56'W
Tokyo,Japan,Asia/Tokyo,35°41'N,139°41'E
Tripoli,Libyan Arab Jamahiriya,Africa/Tripoli,32°49'N,13°07'E
Tunis,Tunisia,Africa/Tunis,36°50'N,10°11'E
Ulan Bator,Mongolia,Asia/Ulaanbaatar,47°55'N,106°55'E
Ulaanbaatar,Mongolia,Asia/Ulaanbaatar,47°55'N,106°55'E
Vaduz,Liechtenstein,Europe/Vaduz,47°08'N,09°31'E
Valletta,Malta,Europe/Malta,35°54'N,14°31'E
Vienna,Austria,Europe/Vienna,48°12'N,16°22'E
Vientiane,Lao People's Democratic Republic,Asia/Vientiane,17°58'N,102°36'E
Vilnius,Lithuania,Europe/Vilnius,54°38'N,25°19'E
W. Indies,Antigua and Barbuda,America/Antigua,17°20'N,61°48'W
Warsaw,Poland,Europe/Warsaw,52°13'N,21°00'E
Washington DC,USA,US/Eastern,39°91'N,77°02'W
Wellington,New Zealand,Pacific/Auckland,41°19'S,174°46'E
Willemstad,Netherlands Antilles,America/Curacao,12°05'N,69°00'W
Windhoek,Namibia,Africa/Windhoek,22°35'S,17°04'E
Yamoussoukro,Cote d'Ivoire,Africa/Abidjan,06°49'N,05°17'W
Yangon,Myanmar,Asia/Rangoon,16°45'N,96°20'E
Yaounde,Cameroon,Africa/Douala,03°50'N,11°35'E
Yaren,Nauru,Pacific/Nauru,0°32'S,166°55'E
Yerevan,Armenia,Asia/Yerevan,40°10'N,44°31'E
Zagreb,Croatia,Europe/Zagreb,45°50'N,15°58'E
Zurich,Switzerland,Europe/Zurich,47°22'N,08°33'E

# UK Cities
Aberdeen,Scotland,Europe/London,57°08'N,02°06'W
Birmingham,England,Europe/London,52°30'N,01°50'W
Bolton,England,Europe/London,53°35'N,02°15'W
Bradford,England,Europe/London,53°47'N,01°45'W
Bristol,England,Europe/London,51°28'N,02°35'W
Cardiff,Wales,Europe/London,51°29'N,03°13'W
Crawley,England,Europe/London,51°8'N,00°10'W
Edinburgh,Scotland,Europe/London,55°57'N,03°13'W
Glasgow,Scotland,Europe/London,55°50'N,04°15'W
Greenwich,England,Europe/London,51°28'N,00°00'W
Leeds,England,Europe/London,53°48'N,01°35'W
Leicester,England,Europe/London,52°38'N,01°08'W
Liverpool,England,Europe/London,53°25'N,03°00'W
Manchester,England,Europe/London,53°30'N,02°15'W
Newcastle Upon Tyne,England,Europe/London,54°59'N,01°36'W
Newcastle,England,Europe/London,54°59'N,01°36'W
Norwich,England,Europe/London,52°38'N,01°18'E
Oxford,England,Europe/London,51°45'N,01°15'W
Plymouth,England,Europe/London,50°25'N,04°15'W
Portsmouth,England,Europe/London,50°48'N,01°05'W
Reading,England,Europe/London,51°27'N,0°58'W
Sheffield,England,Europe/London,53°23'N,01°28'W
Southampton,England,Europe/London,50°55'N,01°25'W
Swansea,England,Europe/London,51°37'N,03°57'W
Swindon,England,Europe/London,51°34'N,01°47'W
Wolverhampton,England,Europe/London,52°35'N,2°08'W
Barrow-In-Furness,England,Europe/London,54°06'N,3°13'W

# US State Capitals
Montgomery,USA,US/Central,32°21'N,86°16'W
Juneau,USA,US/Alaska,58°23'N,134°11'W
Phoenix,USA,America/Phoenix,33°26'N,112°04'W
Little Rock,USA,US/Central,34°44'N,92°19'W
Sacramento,USA,US/Pacific,38°33'N,121°28'W
Denver,USA,US/Mountain,39°44'N,104°59'W
Hartford,USA,US/Eastern,41°45'N,72°41'W
Dover,USA,US/Eastern,39°09'N,75°31'W
Tallahassee,USA,US/Eastern,30°27'N,84°16'W
Atlanta,USA,US/Eastern,33°45'N,84°23'W
Honolulu,USA,US/Hawaii,21°18'N,157°49'W
Boise,USA,US/Mountain,43°36'N,116°12'W
Springfield,USA,US/Central,39°47'N,89°39'W
Indianapolis,USA,US/Eastern,39°46'N,86°9'W
Des Moines,USA,US/Central,41°35'N,93°37'W
Topeka,USA,US/Central,39°03'N,95°41'W
Frankfort,USA,US/Eastern,38°11'N,84°51'W
Baton Rouge,USA,US/Central,30°27'N,91°8'W
Augusta,USA,US/Eastern,44°18'N,69°46'W
Annapolis,USA,US/Eastern,38°58'N,76°30'W
Boston,USA,US/Eastern,42°21'N,71°03'W
Lansing,USA,US/Eastern,42°44'N,84°32'W
Saint Paul,USA,US/Central,44°56'N,93°05'W
Jackson,USA,US/Central,32°17'N,90°11'W
Jefferson City,USA,US/Central,38°34'N,92°10'W
Helena,USA,US/Mountain,46°35'N,112°1'W
Lincoln,USA,US/Central,40°48'N,96°40'W
Carson City,USA,US/Pacific,39°9'N,119°45'W
Concord,USA,US/Eastern,43°12'N,71°32'W
Trenton,USA,US/Eastern,40°13'N,74°45'W
Santa Fe,USA,US/Mountain,35°40'N,105°57'W
Albany,USA,US/Eastern,42°39'N,73°46'W
Raleigh,USA,US/Eastern,35°49'N,78°38'W
Bismarck,USA,US/Central,46°48'N,100°46'W
Columbus,USA,US/Eastern,39°59'N,82°59'W
Oklahoma City,USA,US/Central,35°28'N,97°32'W
Salem,USA,US/Pacific,44°55'N,123°1'W
Harrisburg,USA,US/Eastern,40°16'N,76°52'W
Providence,USA,US/Eastern,41°49'N,71°25'W
Columbia,USA,US/Eastern,34°00'N,81°02'W
Pierre,USA,US/Central,44°22'N,100°20'W
Nashville,USA,US/Central,36°10'N,86°47'W
Austin,USA,US/Central,30°16'N,97°45'W
Salt Lake City,USA,US/Mountain,40°45'N,111°53'W
Montpelier,USA,US/Eastern,44°15'N,72°34'W
Richmond,USA,US/Eastern,37°32'N,77°25'W
Olympia,USA,US/Pacific,47°2'N,122°53'W
Charleston,USA,US/Eastern,38°20'N,81°38'W
Madison,USA,US/Central,43°4'N,89°24'W
Cheyenne,USA,US/Mountain,41°8'N,104°48'W

# Major US Cities
Birmingham,USA,US/Central,33°39'N,86°48'W
Anchorage,USA,US/Alaska,61°13'N,149°53'W
Los Angeles,USA,US/Pacific,34°03'N,118°15'W
San Francisco,USA,US/Pacific,37°46'N,122°25'W
Bridgeport,USA,US/Eastern,41°11'N,73°11'W
Wilmington,USA,US/Eastern,39°44'N,75°32'W
Jacksonville,USA,US/Eastern,30°19'N,81°39'W
Miami,USA,US/Eastern,26°8'N,80°12'W
Chicago,USA,US/Central,41°50'N,87°41'W
Wichita,USA,US/Central,37°41'N,97°20'W
Louisville,USA,US/Eastern,38°15'N,85°45'W
New Orleans,USA,US/Central,29°57'N,90°4'W
Portland,USA,US/Eastern,43°39'N,70°16'W
Baltimore,USA,US/Eastern,39°17'N,76°37'W
Detroit,USA,US/Eastern,42°19'N,83°2'W
Minneapolis,USA,US/Central,44°58'N,93°15'W
Kansas City,USA,US/Central,39°06'N,94°35'W
Billings,USA,US/Mountain,45°47'N,108°32'W
Omaha,USA,US/Central,41°15'N,96°0'W
Las Vegas,USA,US/Pacific,36°10'N,115°08'W
Manchester,USA,US/Eastern,42°59'N,71°27'W
Newark,USA,US/Eastern,40°44'N,74°11'W
Albuquerque,USA,US/Mountain,35°06'N,106°36'W
New York,USA,US/Eastern,40°43'N,74°0'W
Charlotte,USA,US/Eastern,35°13'N,80°50'W
Fargo,USA,US/Central,46°52'N,96°47'W
Cleveland,USA,US/Eastern,41°28'N,81°40'W
Philadelphia,USA,US/Eastern,39°57'N,75°10'W
Sioux Falls,USA,US/Central,43°32'N,96°43'W
Memphis,USA,US/Central,35°07'N,89°58'W
Houston,USA,US/Central,29°45'N,95°22'W
Dallas,USA,US/Central,32°47'N,96°48'W
Burlington,USA,US/Eastern,44°28'N,73°9'W
Virginia Beach,USA,US/Eastern,36°50'N,76°05'W
Seattle,USA,US/Pacific,47°36'N,122°19'W
Milwaukee,USA,US/Central,43°03'N,87°57'W
San Diego,USA,US/Pacific,32°42'N,117°09'W
Orlando,USA,US/Eastern,28°32'N,81°22'W
Buffalo,USA,US/Eastern,42°54'N,78°50'W
Toledo,USA,US/Eastern,41°39'N,83°34'W

# Canadian cities
Vancouver,Canada,America/Vancouver,49°15'N,123°6'W
Calgary,Canada,America/Edmonton,51°2'N,114°3'W
Edmonton,Canada,America/Edmonton,53°32'N,113°29'W
Saskatoon,Canada,America/Regina,52°8'N,106°40'W
Regina,Canada,America/Regina,50°27'N,104°36'W
Winnipeg,Canada,America/Winnipeg,49°53'N,97°8'W
Toronto,Canada,America/Toronto,43°39'N,79°22'W
Montreal,Canada,America/Montreal,45°30'N,73°33'W
Quebec,Canada,America/Toronto,46°48'N,71°14'W
Fredericton,Canada,America/Halifax,45°57'N,66°38'W
Halifax,Canada,America/Halifax,44°38'N,63°34'W
Charlottetown,Canada,America/Halifax,46°14'N,63°7'W
St. John's,Canada,America/Halifax,47°33'N,52°42'W
Whitehorse,Canada,America/Whitehorse,60°43'N,135°3'W
Yellowknife,Canada,America/Yellowknife,62°27'N,114°22'W
Iqaluit,Canada,America/Iqaluit,63°44'N,68°31'W
returnc                  4    i } t          t          |            | S )z\Returns a database populated with the inital set of locations stored
    in this module
    )_add_locations_from_str_LOCATION_INFO)dbs    N/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/astral/geocoder.pyr   r     s     BNB///I    keyc                 l    t          |                                                               dd          S )z^Sanitize the location or group key to look up

    Args:
        key: The key to sanitize
     _)strlowerreplace)r   s    r   _sanitize_keyr     s*     s88>>##C---r   namer   c                 .    |                     | d           S )N)get)r   r   s     r   
_get_groupr"     s    66$r   locationNc                     t          | j                  }t          ||          }|si }|||<   t          | j                  }||vr| g||<   dS ||                             |            dS )z#Add a single location to a databaseN)r   timezone_groupr"   r   append)r#   r   r   grouplocation_keys        r   _add_location_to_dbr)     s    
/
0
0CsBE 3 //L5  'jll""8,,,,,r   infoc           
          |                      d          }t          |d         |d         |d         t          |d         d          t          |d         d          	          S )
N,r                 V@        f@r   regiontimezonelatitude	longitude)splitr
   r   )r*   idxables     r   _locationinfo_from_strr:     s_    jjooGQZqzgaj$//wqz511   r   r9   .c           
          t          | d         | d         | d         t          | d         d          t          | d         d                    S )	Nr   r-   r.   r/   r0   r1   r2   r3   r	   )r9   s    r   _locationinfo_from_indexabler<     sR     QZqzgaj$//wqz511   r   location_stringc                     |                      d          D ]G}|                                }|dk    r+|d         dk    rt          |          }t          ||           HdS )zAdd locations from a string.
 r   #N)r8   stripr:   r)   )r=   r   liner#   s       r   r   r     sk      %%d++ . .zz||2::$q'S..-d33H"---	. .r   location_listc                     | D ]G}t          |t                    rt          ||           (t          |          }t	          ||           HdS )z^Add locations from a list of either strings or lists of strings
    or tuples of strings.
    N)
isinstancer   r   r<   r)   )rD   r   r*   r#   s       r   _add_locations_from_listrG     sb      . .dC   	.#D"----3D99H"----. .r   	locationsc                 t    t          | t                    rt          | |           dS t          | |           dS )zAdd locations to the database.

    Locations can be added by passing either a string with one line per location or
    by passing a list containing strings, lists or tuples (lists and tuples are
    passed directly to the LocationInfo constructor).N)rF   r   r   rG   )rH   r   s     r   r   r     sB     )S!! 0	2..... B/////r   r4   c                     t          |           }|                                D ]\  }}||k    r|c S t          d|            )zAccess to each timezone group. For example London is in timezone
    group Europe.

    Lookups are case insensitive

    Args:
        region: the name to look up

    Raises:
        KeyError: if the location is not found
    zUnrecognised Group - )r   itemsKeyError)r4   r   r   r   values        r   r'   r'     s\     

Cxxzz  e3;;LLL  3633
4
44r   r'   c                    t          |           }	 |                    dd          \  }}n# t          $ r |}d}Y nw xY w|                    d          }|                    d          }|                                D ]>\  }}||k    r3|dk    r
|d         c S |D ] }t          |j                  |k    r|c c S !?t          d|           )aI  Looks up the location within a group dictionary

    You can supply an optional region name by adding a comma
    followed by the region name. Where multiple locations have the
    same name you may need to supply the region name otherwise
    the first result will be returned which may not be the one
    you're looking for::

        location = group['Abu Dhabi,United Arab Emirates']

    Lookups are case insensitive.

    Args:
        location: The location to look up
        group: The location group to look in

    Raises:
        KeyError: if the location is not found
    r,   r-   r@   z"'r   zUnrecognised location name - )r   r8   
ValueErrorrB   rK   r4   rL   )r#   r'   r   lookup_namelookup_regionlocation_namerD   locs           r   lookup_in_grouprT   %  s   , 
!
!C%(YYsA%6%6"]]    ##E**K!''..M*/++--  &K''""$Q''''$   ,,==JJJJJ > 8388
9
99s   + <<c                     t          |           }|                                D ]1\  }}||k    r|c S 	 t          | |          c S # t          $ r Y .w xY wt          d|            )ab  Look up a name in a database.

    If a group with the name specified is a group name then that will
    be returned. If no group is found a location with the name will be
    looked up.

    Args:
        name: The group/location name to look up
        db:   The location database to look in

    Raises:
        KeyError: if the name is not found
    zUnrecognised name - )r   rK   rT   rL   )r   r   r   	group_keyr'   s        r   r   r   R  s     

CHHJJ  	5LLL	"4///// 	 	 	D	 0$00
1
11s   A
AAc              #   x   K   |                                  D ]"}|                                 D ]}|D ]}|V  #dS )zcA generator that returns all the :class:`~astral.LocationInfo`\s
    contained in the database
    N)values)r   
group_inforD   r#   s       r   r   r   n  sh       iikk  
'..00 	 	M)  	 r   )__doc__typingr   r   r   r   r   r   astralr
   r   __all__r   r   	GroupNameLocationName	GroupInfoLocationDatabaser   r   r"   r)   r:   r<   r   rG   r   r'   rT   r   r    r   r   <module>rc      s6     A @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ - - - - - - - -
B
B
B
JZ 	tL112		9,- "    .s .s . . . .S . 8I3F    -, -4D - - - - -     	5c?DI-.		 	 	 	.S .6F .4 . . . ..cDcOT%S/5JJK.. 
. . . .0S$s)T$s)_d5c?6KKL00 
0 0 0 05# 5+ 5	 5 5 5 5(*:*:sD$667*:*: *: *: *:Z2 2* 2uY5L/M 2 2 2 28& 9\45M+N      r   