Source code for parsons.utilities.cloud_storage

import csv
from typing import Literal

"""
This utility method is a generalizable method for moving files to an
online file storage class. It is used by methods that require access
to a file via a public url (e.g. VAN). Currently only includes
Amazon S3 and Google Cloud Storage.
"""


[docs] def post_file( tbl, type: Literal["S3", "GCS"], file_path=None, quoting=csv.QUOTE_MINIMAL, **file_storage_args ): """ This utility method is a generalizable method for moving files to an online file storage class. It is used by methods that require access to a file via a public url (e.g. VAN). **S3 is the only option allowed.** Args: tbl: object parsons.Table type: str `S3` or `GCS` (Google Cloud Storage) file_path: str The file path to store the file. Not required if provided with the `**file_storage_args`. quoting: attr The type of quoting to use for the csv. `**file_storage_args`: kwargs Optional arguments specific to the file storage. Returns: ``None`` """ if type.upper() == "S3": # Overwrite the file_path if key is passed if "key" in file_storage_args: file_storage_args["key"] = file_path return tbl.to_s3_csv(public_url=True, key=file_path, quoting=quoting, **file_storage_args) elif type.upper() == "GCS": return tbl.to_gcs_csv( public_url=True, blob_name=file_path, quoting=quoting, **file_storage_args ) else: raise ValueError("Type must be S3 or GCS.")