Skip to content

deliverables

create_deliverables

This module compiles the deliverable for Standards New Zealand from the reports and resources folders

archive_zip_folder(source_path: Path, zip_path: Path)

zip the deliverables folder

Parameters:

Name Type Description Default
source_path Path

path to source folder

required
zip_path Path

path to zipped folder

required
Source code in nzssdt_2023/snz_deliverables/create_deliverables.py
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
def archive_zip_folder(source_path: Path, zip_path: Path):
    """
    zip the deliverables folder

    Args:
        source_path: path to source folder
        zip_path: path to zipped folder

    """

    # remove current zip folder, if it exists
    zip_path.unlink(missing_ok=True)

    # create temporary zip
    temp_path = Path(WORKING_FOLDER, PurePath(zip_path).name)
    with zipfile.ZipFile(temp_path, "w") as zip:
        for filename in Path(source_path).rglob("*"):
            zip.write(filename, arcname=str(Path(filename).relative_to(source_path)))

    temp_path.rename(zip_path)

    return zip_path

copy_csv_reports_to_deliverable(gns_csv_files: List[Path], snz_csv_files: List[Path])

modify and re-encode the csv files for default Excel import then add them to the deliverables folder

Parameters:

Name Type Description Default
gns_csv_files List[Path]

list of csv paths in reports folder

required
snz_csv_files List[Path]

list of csv paths in deliverables folder

required
Source code in nzssdt_2023/snz_deliverables/create_deliverables.py
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
def copy_csv_reports_to_deliverable(
    gns_csv_files: List[Path], snz_csv_files: List[Path]
):
    """
    modify and re-encode the csv files for default Excel import then add them to the deliverables folder

    Args:
        gns_csv_files: list of csv paths in reports folder
        snz_csv_files: list of csv paths in deliverables folder

    """

    for gns_file, snz_file in zip(gns_csv_files, snz_csv_files):
        df = pd.read_csv(gns_file, keep_default_na=True)
        apoes = df["apoe"]
        df["apoe"] = [f" {apoe}" for apoe in apoes]

        # if table is for grid locations include individual lat/lon columns
        if "~" in df["location"][0]:
            latlons = list(df["location"])
            lats = [latlon.split("~")[0] for latlon in latlons]
            lons = [latlon.split("~")[1] for latlon in latlons]
            df.drop("location_ascii", axis=1, inplace=True)
            df.insert(1, "longitude", lons)
            df.insert(1, "latitude", lats)

        df.to_csv(
            snz_file,
            encoding="utf-8-sig",
            index=False,
            na_rep="n/a",
            quoting=csv.QUOTE_NONNUMERIC,
        )

copy_files_to_deliverable(gns_files: List[Path], snz_files: List[Path])

copy files directly to the deliverables folder

Parameters:

Name Type Description Default
gns_files List[Path]

list of paths in gns folder

required
snz_files List[Path]

list of paths in deliverables folder

required
Source code in nzssdt_2023/snz_deliverables/create_deliverables.py
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def copy_files_to_deliverable(gns_files: List[Path], snz_files: List[Path]):
    """
    copy files directly to the deliverables folder

    Args:
        gns_files: list of paths in gns folder
        snz_files: list of paths in deliverables folder

    """

    for gns_file, snz_file in zip(gns_files, snz_files):

        if gns_file.suffix == ".pdf":
            snz_file.write_bytes(gns_file.read_bytes())
        else:
            snz_file.write_text(gns_file.read_text())

create_deliverables_zipfile(snz_name_prefix: str, publication_year: int, deliverables_folder: Path, reports_folder: Path, resources_folder: Path, override: bool = False) -> Path

identify the relevant reports and resources and includes them in a zipfile

Parameters:

Name Type Description Default
snz_name_prefix str

prefix for filenames

required
publication_year int

date suffix for filenames

required
deliverables_folder Path

path to the deliverables folder for the version

required
reports_folder Path

path to the reports folder for the version

required
resources_folder Path

path to the resources folder for the version

required
override bool

if True, rewrite all files

False

Returns:

Name Type Description
zip_path Path

path to the zip file deliverable

Source code in nzssdt_2023/snz_deliverables/create_deliverables.py
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
def create_deliverables_zipfile(
    snz_name_prefix: str,
    publication_year: int,
    deliverables_folder: Path,
    reports_folder: Path,
    resources_folder: Path,
    override: bool = False,
) -> Path:
    """
    identify the relevant reports and resources and includes them in a zipfile

    Args:
        snz_name_prefix: prefix for filenames
        publication_year: date suffix for filenames
        deliverables_folder: path to the deliverables folder for the version
        reports_folder: path to the reports folder for the version
        resources_folder: path to the resources folder for the version
        override: if True, rewrite all files

    Returns:
         zip_path: path to the zip file deliverable
    """

    zip_name = f"{snz_name_prefix}_files"
    zip_path = Path(deliverables_folder, zip_name + ".zip")

    # set relevant paths in gns repo
    gns_named_report_pdf = Path(reports_folder, "named_location_report.pdf")
    gns_grid_report_pdf = Path(reports_folder, "gridded_location_report.pdf")
    gns_pdf_files = [gns_grid_report_pdf, gns_named_report_pdf]

    gns_named_report_csv = Path(reports_folder, "named_location_report.csv")
    gns_grid_report_csv = Path(reports_folder, "gridded_location_report.csv")
    gns_csv_files = [gns_grid_report_csv, gns_named_report_csv]

    gns_named_json = Path(resources_folder, "named_locations_combo.json")
    gns_grid_json = Path(resources_folder, "grid_locations_combo.json")
    gns_polygons = Path(resources_folder, "urban_area_polygons.geojson")
    gns_grid_points = Path(resources_folder, "grid_points.geojson")
    gns_faults = Path(resources_folder, "major_faults.geojson")
    gns_geojsons = [gns_polygons, gns_grid_points, gns_faults]
    gns_jsons = [gns_named_json, gns_grid_json]

    # set relevant paths for snz deliverable
    snz_named_report_pdf = Path(
        deliverables_folder, f"{snz_name_prefix}_Table3-1_{publication_year}.pdf"
    )
    snz_grid_report_pdf = Path(
        deliverables_folder, f"{snz_name_prefix}_Table3-2_{publication_year}.pdf"
    )
    snz_pdf_files = [snz_grid_report_pdf, snz_named_report_pdf]

    snz_named_report_csv = Path(
        deliverables_folder, f"{snz_name_prefix}_Table3-1_{publication_year}.csv"
    )
    snz_grid_report_csv = Path(
        deliverables_folder, f"{snz_name_prefix}_Table3-2_{publication_year}.csv"
    )
    snz_csv_files = [snz_grid_report_csv, snz_named_report_csv]

    snz_named_json = Path(
        deliverables_folder, f"{snz_name_prefix}_Table3-1_{publication_year}.json"
    )
    snz_grid_json = Path(
        deliverables_folder, f"{snz_name_prefix}_Table3-2_{publication_year}.json"
    )
    snz_polygons = Path(
        deliverables_folder,
        f"{snz_name_prefix}_Figure3-2_{publication_year}.geojson",
    )
    snz_grid_points = Path(
        deliverables_folder, f"{snz_name_prefix}_GridPoints_{publication_year}.geojson"
    )
    snz_faults = Path(
        deliverables_folder, f"{snz_name_prefix}_MajorFaults_{publication_year}.geojson"
    )
    snz_geojsons = [snz_polygons, snz_grid_points, snz_faults]
    snz_jsons = [snz_named_json, snz_grid_json]

    if (
        override
        | (not snz_named_report_pdf.exists())
        | (not snz_grid_report_pdf.exists())
        | (not snz_named_report_csv.exists())
        | (not snz_grid_report_pdf.exists())
        | (not snz_named_json.exists())
        | (not snz_grid_json.exists())
        | (not snz_polygons.exists())
        | (not snz_grid_points.exists())
        | (not snz_faults.exists())
    ):

        # create deliverables version folder
        if not deliverables_folder.is_dir():
            deliverables_folder.mkdir()

        # copy files for zip folder
        copy_files_to_deliverable(
            gns_pdf_files + gns_geojsons, snz_pdf_files + snz_geojsons
        )
        copy_csv_reports_to_deliverable(gns_csv_files, snz_csv_files)
        zip_path = archive_zip_folder(deliverables_folder, zip_path)

        # add jsons outside of the zipped folder
        copy_files_to_deliverable(gns_jsons, snz_jsons)

    return zip_path