Source code for google_pandas_load.loader_quick_setup
from google.cloud import bigquery, storage
from google.auth.credentials import Credentials
from google_pandas_load.loader import Loader
from typing import Optional
[docs]class LoaderQuickSetup(Loader):
"""
The purpose of this class is to quickly set up a loader.
An instance of LoaderQuickSetup is simply an instance of the base class
built with the following arguments:
::
bq_client=bq_client
dataset_id=dataset_id
gs_client=gs_client
bucket_name=bucket_name
bucket_dir_path=bucket_dir_path
local_dir_path=local_dir_path
separator=separator
chunk_size=chunk_size
timeout=timeout
where
::
bq_client = google.cloud.bigquery.Client(
project=project_id,
credentials=credentials)
dataset_id = project_id + '.' + dataset_name
gs_client = google.cloud.storage.Client(
project=project_id,
credentials=credentials)
Args:
project_id (str, optional): The project id.
dataset_name (str, optional): The dataset name.
bucket_name (str, optional): The bucket name.
bucket_dir_path (str, optional): See base class.
credentials (google.auth.credentials.Credentials): Credentials used to
build the bq_client and the gs_client. If not passed, falls back to
the default inferred from the environment.
local_dir_path (str, optional): See base class.
separator (str, optional): See base class.
chunk_size (int, optional): See base class.
timeout (int, optional): See base class.
"""
def __init__(
self,
project_id: Optional[str] = None,
dataset_name: Optional[str] = None,
bucket_name: Optional[str] = None,
bucket_dir_path: Optional[str] = None,
credentials: Optional[Credentials] = None,
local_dir_path: Optional[str] = None,
separator: Optional[str] = '|',
chunk_size: Optional[int] = 2**28,
timeout: Optional[int] = 60):
self._project_id = project_id
bq_client = None
dataset_id = None
gs_client = None
if self._project_id is not None:
bq_client = bigquery.Client(
project=self._project_id, credentials=credentials)
if dataset_name is not None:
dataset_id = f'{self._project_id}.{dataset_name}'
if bucket_name is not None:
gs_client = storage.Client(
project=self._project_id, credentials=credentials)
super().__init__(
bq_client=bq_client,
dataset_id=dataset_id,
gs_client=gs_client,
bucket_name=bucket_name,
bucket_dir_path=bucket_dir_path,
local_dir_path=local_dir_path,
separator=separator,
chunk_size=chunk_size,
timeout=timeout)
@property
def project_id(self) -> str:
"""str: The project_id given in the argument."""
return self._project_id