diff --git a/tableauserverclient/models/datasource_item.py b/tableauserverclient/models/datasource_item.py index 5a867135c..fb2db6663 100644 --- a/tableauserverclient/models/datasource_item.py +++ b/tableauserverclient/models/datasource_item.py @@ -47,6 +47,7 @@ def __init__(self, project_id: Optional[str] = None, name: Optional[str] = None) self._initial_tags: Set = set() self._project_name: Optional[str] = None self._revisions = None + self._size: Optional[int] = None self._updated_at = None self._use_remote_query_agent = None self._webpage_url = None @@ -182,6 +183,10 @@ def revisions(self) -> List[RevisionItem]: raise UnpopulatedPropertyError(error) return self._revisions() + @property + def size(self) -> Optional[int]: + return self._size + def _set_connections(self, connections): self._connections = connections @@ -217,6 +222,7 @@ def _parse_common_elements(self, datasource_xml, ns): updated_at, use_remote_query_agent, webpage_url, + size, ) = self._parse_element(datasource_xml, ns) self._set_values( ask_data_enablement, @@ -237,6 +243,7 @@ def _parse_common_elements(self, datasource_xml, ns): updated_at, use_remote_query_agent, webpage_url, + size, ) return self @@ -260,6 +267,7 @@ def _set_values( updated_at, use_remote_query_agent, webpage_url, + size, ): if ask_data_enablement is not None: self._ask_data_enablement = ask_data_enablement @@ -297,6 +305,8 @@ def _set_values( self._use_remote_query_agent = str(use_remote_query_agent).lower() == "true" if webpage_url: self._webpage_url = webpage_url + if size is not None: + self._size = int(size) @classmethod def from_response(cls, resp: str, ns: Dict) -> List["DatasourceItem"]: @@ -330,6 +340,7 @@ def _parse_element(datasource_xml: ET.Element, ns: Dict) -> Tuple: has_extracts = datasource_xml.get("hasExtracts", None) use_remote_query_agent = datasource_xml.get("useRemoteQueryAgent", None) webpage_url = datasource_xml.get("webpageUrl", None) + size = datasource_xml.get("size", None) tags = None tags_elem = datasource_xml.find(".//t:tags", namespaces=ns) @@ -372,4 +383,5 @@ def _parse_element(datasource_xml: ET.Element, ns: Dict) -> Tuple: updated_at, use_remote_query_agent, webpage_url, + size, ) diff --git a/test/assets/datasource_get.xml b/test/assets/datasource_get.xml index 951409caa..1c420d116 100644 --- a/test/assets/datasource_get.xml +++ b/test/assets/datasource_get.xml @@ -2,12 +2,12 @@ - + - + @@ -17,4 +17,4 @@ - \ No newline at end of file + diff --git a/test/test_datasource.py b/test/test_datasource.py index f258fdc52..624eb93e1 100644 --- a/test/test_datasource.py +++ b/test/test_datasource.py @@ -52,6 +52,7 @@ def test_get(self) -> None: self.assertEqual("dataengine", all_datasources[0].datasource_type) self.assertEqual("SampleDsDescription", all_datasources[0].description) self.assertEqual("SampleDS", all_datasources[0].content_url) + self.assertEqual(4096, all_datasources[0].size) self.assertEqual("2016-08-11T21:22:40Z", format_datetime(all_datasources[0].created_at)) self.assertEqual("2016-08-11T21:34:17Z", format_datetime(all_datasources[0].updated_at)) self.assertEqual("default", all_datasources[0].project_name) @@ -67,6 +68,7 @@ def test_get(self) -> None: self.assertEqual("dataengine", all_datasources[1].datasource_type) self.assertEqual("description Sample", all_datasources[1].description) self.assertEqual("Sampledatasource", all_datasources[1].content_url) + self.assertEqual(10240, all_datasources[1].size) self.assertEqual("2016-08-04T21:31:55Z", format_datetime(all_datasources[1].created_at)) self.assertEqual("2016-08-04T21:31:55Z", format_datetime(all_datasources[1].updated_at)) self.assertEqual("default", all_datasources[1].project_name)