File size: 1,201 Bytes
155727c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import definitions
import pandas as pdb
from typing import NamedTuple, Dict

_ROOT_DIR = definitions.get_project_root()


class ZipCodeEntry(NamedTuple):
    zip: str
    city: str
    state: str
    lat: str
    long: str
    time_zone: str
    dst_flags: bool


def _load_zip_codes() -> Dict[str, ZipCodeEntry]:
    df = pdb.read_csv(f'{_ROOT_DIR}/utils/us-zip-code-latitude-and-longitude.txt', dtype=str,
                      sep=';')
    zip_code_list = {}
    # Zip;City;State;Latitude;Longitude;Timezone;Daylight savings time flag;geopoint
    for _, row in df.iterrows():
        zip_code = row.get('Zip')
        if zip_code:
            zip_code_entry = ZipCodeEntry(
                zip=zip_code,
                city=row.get('City'),
                state=row.get('State'),
                lat=row.get('Latitude'),
                long=row.get('Longitude'),
                time_zone=row.get('Timezone'),
                dst_flags=row.get('Daylight savings time flag')
            )
            zip_code_list[zip_code] = zip_code_entry

    return zip_code_list


ZIP_CODE_LIST = _load_zip_codes()


if __name__ == '__main__':
    print(ZIP_CODE_LIST)
    print(ZIP_CODE_LIST.get('62833'))