Skip to content
Browse files
feat: add TableReference.__str__ to get table ID in standard SQL (#405

This is the natural inverse of the `TableReference.from_string` method.

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
- [x] Make sure to open an issue as a [bug/issue]( before writing your code!  That way we can discuss the change, evaluate designs, and agree on the general idea
- [x] Ensure the tests and linter pass
- [x] Code coverage does not decrease (if any source code was changed)
- [x] Appropriate docs were updated (if necessary)

Fixes #354 🦕
  • Loading branch information
tswast committed Nov 30, 2020
1 parent 168f035 commit 53dff2a
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 2 deletions.
@@ -262,6 +262,9 @@ def __ne__(self, other):
def __hash__(self):
return hash(self._key())

def __str__(self):
return f"{self.project}.{self.dataset_id}.{self.table_id}"

def __repr__(self):
from import DatasetReference

@@ -475,7 +478,7 @@ def full_table_id(self):
"""Union[str, None]: ID for the table (:data:`None` until set from the
In the format ``project_id:dataset_id.table_id``.
In the format ``project-id:dataset_id.table_id``.
return self._properties.get("id")

@@ -484,7 +487,8 @@ def table_type(self):
"""Union[str, None]: The type of the table (:data:`None` until set from
the server).
Possible values are ``'TABLE'``, ``'VIEW'``, or ``'EXTERNAL'``.
Possible values are ``'TABLE'``, ``'VIEW'``, ``'MATERIALIZED_VIEW'`` or
return self._properties.get("type")

@@ -272,6 +272,11 @@ def test___repr__(self):
self.assertEqual(repr(table1), expected)

def test___str__(self):
dataset = DatasetReference("project1", "dataset1")
table1 = self._make_one(dataset, "table1")
self.assertEqual(str(table1), "project1.dataset1.table1")

class TestTable(unittest.TestCase, _SchemaBase):

@@ -813,6 +818,9 @@ def test_from_string(self):
self.assertEqual(got.project, "string-project")
self.assertEqual(got.dataset_id, "string_dataset")
self.assertEqual(got.table_id, "string_table")
str(got.reference), "string-project.string_dataset.string_table"

def test_from_string_legacy_string(self):
cls = self._get_target_class()

0 comments on commit 53dff2a

Please sign in to comment.