# Path: pandas_gbq/exceptions.py
# class GenericGBQException(ValueError):
# class AccessDenied(ValueError):
# class ConversionError(GenericGBQException):
# class InvalidPrivateKeyFormat(ValueError):
# class PerformanceWarning(RuntimeWarning):
# 
# Path: pandas_gbq/features.py
# FEATURES = Features()


import decimal
import io
import db_dtypes
import pandas
import pyarrow.lib
import pandas_gbq.schema
from typing import Any, Callable, Dict, List, Optional
from google.cloud import bigquery
from pandas_gbq import exceptions
from pandas_gbq.features import FEATURES
                project=billing_project,
            ).result()
        finally:
            chunk_buffer.close()

    return load_csv(dataframe, chunksize, bq_schema, load_chunk)


def load_chunks(
    client,
    dataframe,
    destination_table_ref,
    chunksize=None,
    schema=None,
    location=None,
    api_method="load_parquet",
    billing_project: Optional[str] = None,
):
    if api_method == "load_parquet":
        load_parquet(
            client,
            dataframe,
            destination_table_ref,
            location,
            schema,
            billing_project=billing_project,
        )
        # TODO: yield progress depending on result() with timeout
        return [0]
    elif api_method == "load_csv":

# Path: pandas_gbq/exceptions.py
# class GenericGBQException(ValueError):
# class AccessDenied(ValueError):
# class ConversionError(GenericGBQException):
# class InvalidPrivateKeyFormat(ValueError):
# class PerformanceWarning(RuntimeWarning):
# 
# Path: pandas_gbq/features.py
# FEATURES = Features()


# Path: pandas_gbq/load.py
import decimal
import io
import db_dtypes
import pandas
import pyarrow.lib
import pandas_gbq.schema
from typing import Any, Callable, Dict, List, Optional
from google.cloud import bigquery
from pandas_gbq import exceptions
from pandas_gbq.features import FEATURES

                project=billing_project,
            ).result()
        finally:
            chunk_buffer.close()

    return load_csv(dataframe, chunksize, bq_schema, load_chunk)


def load_chunks(
    client,
    dataframe,
    destination_table_ref,
    chunksize=None,
    schema=None,
    location=None,
    api_method="load_parquet",
    billing_project: Optional[str] = None,
):
    if api_method == "load_parquet":
        load_parquet(
            client,
            dataframe,
            destination_table_ref,
            location,
            schema,
            billing_project=billing_project,
        )
        # TODO: yield progress depending on result() with timeout
        return [0]
    elif api_method == "load_csv":

        if FEATURES.bigquery_has_from_dataframe_with_csv: