Skip to content

Commit 1450f4f

Browse files
francois-baptisteFrançois BAPTISTE
authored and
François BAPTISTE
committed
fix: Makes TimePartitioning printable representation evaluable
1 parent 23a173b commit 1450f4f

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

google/cloud/bigquery/table.py

+9-2
Original file line numberDiff line numberDiff line change
@@ -2128,7 +2128,14 @@ def to_api_repr(self):
21282128
return self._properties
21292129

21302130
def _key(self):
2131-
return tuple(sorted(self._properties.items()))
2131+
properties = self._properties.copy()
2132+
if "type" in properties.keys():
2133+
properties["type_"] = properties.pop("type")
2134+
if "requirePartitionFilter" in properties.keys():
2135+
properties["require_partition_filter"] = properties.pop("requirePartitionFilter")
2136+
if "expirationMs" in properties.keys():
2137+
properties["expiration_ms"] = properties.pop("expirationMs")
2138+
return tuple(sorted(properties.items()))
21322139

21332140
def __eq__(self, other):
21342141
if not isinstance(other, TimePartitioning):
@@ -2142,7 +2149,7 @@ def __hash__(self):
21422149
return hash(self._key())
21432150

21442151
def __repr__(self):
2145-
key_vals = ["{}={}".format(key, val) for key, val in self._key()]
2152+
key_vals = ["{}={}".format(key, repr(val)) for key, val in self._key()]
21462153
return "TimePartitioning({})".format(",".join(key_vals))
21472154

21482155

tests/unit/test_table.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3743,7 +3743,7 @@ def test___hash__not_equals(self):
37433743

37443744
def test___repr___minimal(self):
37453745
time_partitioning = self._make_one()
3746-
expected = "TimePartitioning(type=DAY)"
3746+
expected = "TimePartitioning(type_='DAY')"
37473747
self.assertEqual(repr(time_partitioning), expected)
37483748

37493749
def test___repr___explicit(self):
@@ -3752,7 +3752,7 @@ def test___repr___explicit(self):
37523752
time_partitioning = self._make_one(
37533753
type_=TimePartitioningType.DAY, field="name", expiration_ms=10000
37543754
)
3755-
expected = "TimePartitioning(" "expirationMs=10000," "field=name," "type=DAY)"
3755+
expected = "TimePartitioning(" "expiration_ms=10000," "field=name," "type_='DAY')"
37563756
self.assertEqual(repr(time_partitioning), expected)
37573757

37583758
def test_set_expiration_w_none(self):

0 commit comments

Comments
 (0)