Skip to content

Commit e6cbc1f

Browse files
committed
Fix requirements, handle missing requirements
1 parent 2149ba4 commit e6cbc1f

File tree

3 files changed

+34
-12
lines changed

3 files changed

+34
-12
lines changed

dev_requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
sqlalchemy>=1.1.9
2-
google-cloud-bigquery[bqstorage]>=1.25.0
3-
google-cloud-bigquery-storage[fastavro]>=1.0.0
2+
google-cloud-bigquery>=1.12.0
43
future==0.16.0
4+
packaging>=20.0
55

66
pytest==3.2.2
77
pytz==2017.2

pybigquery/sqlalchemy_bigquery.py

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,20 @@
33
from __future__ import absolute_import
44
from __future__ import unicode_literals
55

6+
import re
7+
import warnings
8+
from packaging.version import Version, parse as parse_version
9+
610
from google import auth
7-
from google.cloud import bigquery, bigquery_storage_v1beta1
8-
from google.cloud.bigquery import dbapi, QueryJobConfig
11+
from google.cloud import bigquery
12+
13+
try:
14+
from google.cloud import bigquery_storage_v1
15+
except ImportError:
16+
pass
17+
18+
from google.cloud.bigquery import dbapi
919
from google.cloud.bigquery.schema import SchemaField
10-
from google.cloud.bigquery.table import EncryptionConfiguration
11-
from google.cloud.bigquery.dataset import DatasetReference
1220
from google.oauth2 import service_account
1321
from google.api_core.exceptions import NotFound
1422
from sqlalchemy.exc import NoSuchTableError
@@ -18,7 +26,6 @@
1826
from sqlalchemy.engine.base import Engine
1927
from sqlalchemy.sql.schema import Column
2028
from sqlalchemy.sql import elements
21-
import re
2229

2330
from .parse_url import parse_url
2431

@@ -342,11 +349,19 @@ def create_connect_args(self, url):
342349
default_query_job_config=default_query_job_config
343350
)
344351

345-
storage_client = None
352+
clients = [client]
353+
346354
if use_bqstorage_api:
347-
storage_client = bigquery_storage_v1beta1.BigQueryStorageClient(credentials=credentials)
355+
if parse_version(bigquery.__version__) >= Version("1.26.0"):
356+
try:
357+
storage_client = bigquery_storage_v1.BigQueryReadClient(credentials=credentials)
358+
clients.append(storage_client)
359+
except NameError:
360+
warnings.warn("It is not possible to use the bqstorage api without installing the bqstorage extra requirement")
361+
else:
362+
warnings.warn('It is not possible to use the bqstorage api with google-cloud-bigquery < 1.26.0')
348363

349-
return ([client, storage_client], {})
364+
return (clients, {})
350365

351366
def _json_deserializer(self, row):
352367
"""JSON deserializer for RECORD types.

setup.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,18 @@ def readme():
2424
"Topic :: Database :: Front-Ends"
2525
],
2626
install_requires=[
27+
'google-cloud-bigquery>=1.12.0',
28+
'packaging>=20.0'
2729
'sqlalchemy>=1.1.9',
28-
'google-cloud-bigquery[bqstorage]>=1.25.0',
29-
'google-cloud-bigquery-storage[fastavro]>=1.0.0',
3030
'future',
3131
],
32+
extras_require = {
33+
"bqstorage": [
34+
"google-cloud-bigquery-storage >= 1.0.0, <2.0.0dev",
35+
"grpcio >= 1.8.2, < 2.0dev",
36+
"pyarrow>=0.16.0, < 2.0dev",
37+
]
38+
},
3239
tests_require=[
3340
'pytz'
3441
],

0 commit comments

Comments
 (0)