diff --git a/google/cloud/bigquery/table.py b/google/cloud/bigquery/table.py index e66d24e74..cbd0d2ee6 100644 --- a/google/cloud/bigquery/table.py +++ b/google/cloud/bigquery/table.py @@ -2128,7 +2128,14 @@ def to_api_repr(self): return self._properties def _key(self): - return tuple(sorted(self._properties.items())) + properties = self._properties.copy() + if "type" in properties.keys(): + properties["type_"] = properties.pop("type") + if "requirePartitionFilter" in properties.keys(): + properties["require_partition_filter"] = properties.pop("requirePartitionFilter") + if "expirationMs" in properties.keys(): + properties["expiration_ms"] = properties.pop("expirationMs") + return tuple(sorted(properties.items())) def __eq__(self, other): if not isinstance(other, TimePartitioning): @@ -2142,7 +2149,7 @@ def __hash__(self): return hash(self._key()) def __repr__(self): - key_vals = ["{}={}".format(key, val) for key, val in self._key()] + key_vals = ["{}={}".format(key, repr(val)) for key, val in self._key()] return "TimePartitioning({})".format(",".join(key_vals)) diff --git a/tests/unit/test_table.py b/tests/unit/test_table.py index 72275fc53..be8252c4b 100644 --- a/tests/unit/test_table.py +++ b/tests/unit/test_table.py @@ -3743,7 +3743,7 @@ def test___hash__not_equals(self): def test___repr___minimal(self): time_partitioning = self._make_one() - expected = "TimePartitioning(type=DAY)" + expected = "TimePartitioning(type_='DAY')" self.assertEqual(repr(time_partitioning), expected) def test___repr___explicit(self): @@ -3752,7 +3752,7 @@ def test___repr___explicit(self): time_partitioning = self._make_one( type_=TimePartitioningType.DAY, field="name", expiration_ms=10000 ) - expected = "TimePartitioning(" "expirationMs=10000," "field=name," "type=DAY)" + expected = "TimePartitioning(" "expiration_ms=10000," "field=name," "type_='DAY')" self.assertEqual(repr(time_partitioning), expected) def test_set_expiration_w_none(self):