Skip to content

Commit 7c08ca8

Browse files
authored
Merge branch 'pangea-v1alpha' into feat-b358215039-update-schema-object
2 parents 83aacdf + 07bc30a commit 7c08ca8

File tree

7 files changed

+46
-54
lines changed

7 files changed

+46
-54
lines changed

google/cloud/bigquery/_helpers.py

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
"""Shared helper functions for BigQuery API classes."""
1616

1717
import base64
18-
import copy
1918
import datetime
2019
import decimal
2120
import json
@@ -1038,19 +1037,3 @@ def _isinstance_or_raise(
10381037

10391038
msg = f"Pass {value} as a '{dtype}'{or_none}. Got {type(value)}."
10401039
raise TypeError(msg)
1041-
1042-
1043-
def _from_api_repr(cls, resource: dict):
1044-
"""Factory: constructs an instance of the class (cls)
1045-
given its API representation.
1046-
1047-
Args:
1048-
resource (Dict[str, Any]):
1049-
API representation of the object to be instantiated.
1050-
1051-
Returns:
1052-
An instance of the class initialized with data from 'resource'.
1053-
"""
1054-
config = cls
1055-
config._properties = copy.deepcopy(resource)
1056-
return config

google/cloud/bigquery/table.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,7 @@ class Table(_TableBase):
393393
"mview_last_refresh_time": ["materializedView", "lastRefreshTime"],
394394
"mview_query": "materializedView",
395395
"mview_refresh_interval": "materializedView",
396+
"mview_allow_non_incremental_definition": "materializedView",
396397
"num_bytes": "numBytes",
397398
"num_rows": "numRows",
398399
"partition_expiration": "timePartitioning",
@@ -935,6 +936,28 @@ def mview_refresh_interval(self, value):
935936
refresh_interval_ms,
936937
)
937938

939+
@property
940+
def mview_allow_non_incremental_definition(self):
941+
"""Optional[bool]: This option declares the intention to construct a
942+
materialized view that isn't refreshed incrementally.
943+
The default value is :data:`False`.
944+
"""
945+
api_field = self._PROPERTY_TO_API_FIELD[
946+
"mview_allow_non_incremental_definition"
947+
]
948+
return _helpers._get_sub_prop(
949+
self._properties, [api_field, "allowNonIncrementalDefinition"]
950+
)
951+
952+
@mview_allow_non_incremental_definition.setter
953+
def mview_allow_non_incremental_definition(self, value):
954+
api_field = self._PROPERTY_TO_API_FIELD[
955+
"mview_allow_non_incremental_definition"
956+
]
957+
_helpers._set_sub_prop(
958+
self._properties, [api_field, "allowNonIncrementalDefinition"], value
959+
)
960+
938961
@property
939962
def streaming_buffer(self):
940963
"""google.cloud.bigquery.StreamingBuffer: Information about a table's

samples/geography/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ pandas==2.2.3; python_version >= '3.9'
3636
proto-plus==1.25.0
3737
pyarrow===12.0.1; python_version == '3.7'
3838
pyarrow===17.0.0; python_version == '3.8'
39-
pyarrow==18.0.0; python_version >= '3.9'
39+
pyarrow==18.1.0; python_version >= '3.9'
4040
pyasn1===0.5.1; python_version == '3.7'
4141
pyasn1==0.6.1; python_version >= '3.8'
4242
pyasn1-modules===0.3.0; python_version == '3.7'

tests/unit/test__helpers.py

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import google.api_core
2727
from google.cloud.bigquery._helpers import (
2828
_isinstance_or_raise,
29-
_from_api_repr,
3029
)
3130

3231

@@ -1695,25 +1694,5 @@ def test__valid_isinstance_or_raise(self, value, dtype, none_allowed, expected):
16951694
],
16961695
)
16971696
def test__invalid_isinstance_or_raise(self, value, dtype, none_allowed, expected):
1698-
with expected as e:
1699-
result = _isinstance_or_raise(value, dtype, none_allowed=none_allowed)
1700-
1701-
assert result == e
1702-
1703-
1704-
class _MockClass:
1705-
def __init__(self):
1706-
self._properties = {}
1707-
1708-
1709-
@pytest.fixture
1710-
def mock_class():
1711-
return _MockClass
1712-
1713-
1714-
class Test__from_api_repr:
1715-
def test_from_api_repr(self, mock_class):
1716-
resource = {"foo": "bar", "baz": {"qux": 1}}
1717-
config = _from_api_repr(mock_class, resource)
1718-
assert config._properties == resource
1719-
assert config._properties is not resource
1697+
with expected:
1698+
_isinstance_or_raise(value, dtype, none_allowed=none_allowed)

tests/unit/test_external_config.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -930,10 +930,8 @@ def test_ctor_initialization(
930930
parameters=parameters,
931931
)
932932

933-
assert instance._properties == {
934-
"defaultStorageLocationUri": default_storage_location_uri,
935-
"parameters": parameters,
936-
}
933+
assert instance.default_storage_location_uri == default_storage_location_uri
934+
assert instance.parameters == parameters
937935

938936
def test_ctor_invalid_input(self):
939937
"""Test ExternalCatalogDatasetOptions constructor with invalid input."""
@@ -1025,15 +1023,15 @@ def test_ctor_initialization(
10251023
storage_descriptor=storage_descriptor,
10261024
)
10271025

1028-
assert instance._properties["connectionId"] == connection_id
1029-
assert instance._properties["parameters"] == parameters
1026+
assert instance.connection_id == connection_id
1027+
assert instance.parameters == parameters
10301028
if storage_descriptor is not None:
10311029
assert (
1032-
instance._properties["storageDescriptor"]
1030+
instance.storage_descriptor.to_api_repr()
10331031
== storage_descriptor.to_api_repr()
10341032
)
10351033
else:
1036-
assert instance._properties["storageDescriptor"] == storage_descriptor
1034+
assert instance.storage_descriptor is None
10371035

10381036
@pytest.mark.parametrize(
10391037
"connection_id, parameters, storage_descriptor",

tests/unit/test_schema.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1345,7 +1345,7 @@ def _make_one(self, *args, **kw):
13451345
def test_ctor_valid_input(self, type_system, expected):
13461346
result = self._make_one(type_system=type_system)
13471347

1348-
assert result._properties["typeSystem"] == expected
1348+
assert result.type_system == expected
13491349

13501350
def test_ctor_invalid_input(self):
13511351
with pytest.raises(TypeError) as e:
@@ -1444,7 +1444,6 @@ def test_ctor_valid_input(
14441444
assert storage_descriptor.input_format == input_format
14451445
assert storage_descriptor.location_uri == location_uri
14461446
assert storage_descriptor.output_format == output_format
1447-
14481447
if serde_info is not None:
14491448
assert (
14501449
storage_descriptor.serde_info.to_api_repr() == serde_info.to_api_repr()
@@ -1546,9 +1545,9 @@ def test_ctor_valid_input(self, serialization_library, name, parameters):
15461545
name=name,
15471546
parameters=parameters,
15481547
)
1549-
assert serde_info._properties["serializationLibrary"] == serialization_library
1550-
assert serde_info._properties["name"] == name
1551-
assert serde_info._properties["parameters"] == parameters
1548+
assert serde_info.serialization_library == serialization_library
1549+
assert serde_info.name == name
1550+
assert serde_info.parameters == parameters
15521551

15531552
@pytest.mark.parametrize(
15541553
"serialization_library,name,parameters",

tests/unit/test_table.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1058,6 +1058,16 @@ def test_mview_refresh_interval(self):
10581058
table.mview_refresh_interval = None
10591059
self.assertIsNone(table.mview_refresh_interval)
10601060

1061+
def test_mview_allow_non_incremental_definition(self):
1062+
table = self._make_one()
1063+
self.assertIsNone(table.mview_allow_non_incremental_definition)
1064+
table.mview_allow_non_incremental_definition = True
1065+
self.assertTrue(table.mview_allow_non_incremental_definition)
1066+
table.mview_allow_non_incremental_definition = False
1067+
self.assertFalse(table.mview_allow_non_incremental_definition)
1068+
table.mview_allow_non_incremental_definition = None
1069+
self.assertIsNone(table.mview_allow_non_incremental_definition)
1070+
10611071
def test_from_string(self):
10621072
cls = self._get_target_class()
10631073
got = cls.from_string("string-project.string_dataset.string_table")

0 commit comments

Comments
 (0)