|
30 | 30 | from tableauserverclient.server import RequestFactory
|
31 | 31 |
|
32 | 32 | from typing import (
|
| 33 | + Literal, |
33 | 34 | Optional,
|
34 | 35 | TYPE_CHECKING,
|
| 36 | + TypeVar, |
35 | 37 | Union,
|
| 38 | + overload, |
36 | 39 | )
|
37 | 40 | from collections.abc import Iterable, Sequence
|
38 | 41 |
|
@@ -383,16 +386,33 @@ def update_connections(
|
383 | 386 | logger.info(f"Updated connections for workbook {workbook_item.id}: {', '.join(updated_ids)}")
|
384 | 387 | return connection_items
|
385 | 388 |
|
| 389 | + T = TypeVar("T", bound=FileObjectW) |
| 390 | + @overload |
| 391 | + def download( |
| 392 | + self, |
| 393 | + workbook_id: str, |
| 394 | + filepath: T, |
| 395 | + include_extract: bool = True, |
| 396 | + ) -> T: ... |
| 397 | + |
| 398 | + @overload |
| 399 | + def download( |
| 400 | + self, |
| 401 | + workbook_id: str, |
| 402 | + filepath: Optional[FilePath] = None, |
| 403 | + include_extract: bool = True, |
| 404 | + ) -> str: ... |
| 405 | + |
386 | 406 | # Download workbook contents with option of passing in filepath
|
387 | 407 | @api(version="2.0")
|
388 | 408 | @parameter_added_in(no_extract="2.5")
|
389 | 409 | @parameter_added_in(include_extract="2.5")
|
390 | 410 | def download(
|
391 | 411 | self,
|
392 |
| - workbook_id: str, |
393 |
| - filepath: Optional[PathOrFileW] = None, |
394 |
| - include_extract: bool = True, |
395 |
| - ) -> PathOrFileW: |
| 412 | + workbook_id, |
| 413 | + filepath=None, |
| 414 | + include_extract=True, |
| 415 | + ): |
396 | 416 | """
|
397 | 417 | Downloads a workbook to the specified directory (optional).
|
398 | 418 |
|
@@ -741,6 +761,28 @@ def delete_permission(self, item: WorkbookItem, capability_item: PermissionsRule
|
741 | 761 | """
|
742 | 762 | return self._permissions.delete(item, capability_item)
|
743 | 763 |
|
| 764 | + @overload |
| 765 | + def publish(self, |
| 766 | + workbook_item: WorkbookItem, |
| 767 | + file: PathOrFileR, |
| 768 | + mode: str, |
| 769 | + connections: Optional[Sequence[ConnectionItem]], |
| 770 | + as_job: Literal[False], |
| 771 | + skip_connection_check: bool, |
| 772 | + parameters=None, |
| 773 | + ) -> WorkbookItem: ... |
| 774 | + |
| 775 | + @overload |
| 776 | + def publish(self, |
| 777 | + workbook_item: WorkbookItem, |
| 778 | + file: PathOrFileR, |
| 779 | + mode: str, |
| 780 | + connections: Optional[Sequence[ConnectionItem]], |
| 781 | + as_job: Literal[True], |
| 782 | + skip_connection_check: bool, |
| 783 | + parameters=None, |
| 784 | + ) -> JobItem: ... |
| 785 | + |
744 | 786 | @api(version="2.0")
|
745 | 787 | @parameter_added_in(as_job="3.0")
|
746 | 788 | @parameter_added_in(connections="2.8")
|
@@ -977,15 +1019,25 @@ def _get_workbook_revisions(
|
977 | 1019 | revisions = RevisionItem.from_response(server_response.content, self.parent_srv.namespace, workbook_item)
|
978 | 1020 | return revisions
|
979 | 1021 |
|
| 1022 | + @overload |
| 1023 | + def download_revision( |
| 1024 | + self, workbook_id: str, revision_number: Optional[str], filepath: FileObjectW, include_extract: bool |
| 1025 | + ) -> FileObjectW: ... |
| 1026 | + |
| 1027 | + @overload |
| 1028 | + def download_revision( |
| 1029 | + self, workbook_id: str, revision_number: Optional[str], filepath: Optional[FilePath], include_extract: bool |
| 1030 | + ) -> str: ... |
| 1031 | + |
980 | 1032 | # Download 1 workbook revision by revision number
|
981 | 1033 | @api(version="2.3")
|
982 | 1034 | def download_revision(
|
983 | 1035 | self,
|
984 |
| - workbook_id: str, |
985 |
| - revision_number: Optional[str], |
986 |
| - filepath: Optional[PathOrFileW] = None, |
987 |
| - include_extract: bool = True, |
988 |
| - ) -> PathOrFileW: |
| 1036 | + workbook_id, |
| 1037 | + revision_number, |
| 1038 | + filepath, |
| 1039 | + include_extract=True, |
| 1040 | + ): |
989 | 1041 | """
|
990 | 1042 | Downloads a workbook revision to the specified directory (optional).
|
991 | 1043 |
|
|
0 commit comments