Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
1d3a642
Changes to alter cgi dependency to email.Messages
securehst Jan 19, 2024
2cc5171
Changes to alter cgi dependency to email.Messages
securehst Jan 20, 2024
999b301
Changes to alter cgi dependency to email.Messages
securehst Jan 20, 2024
68b9157
Changes to alter cgi dependency to email.Messages
securehst Jan 20, 2024
fea03b4
Merge branch 'development' into master
securehst Jan 20, 2024
969922b
Merge pull request #1346 from markm-io/master
jacalata Jan 22, 2024
5611859
feat: allow viz height and width parameters
jorwoods Jan 19, 2024
8ad3c03
fix: use python3.8 syntax
jorwoods Jan 24, 2024
7e44b5e
fix: python3.8 syntax
jorwoods Jan 24, 2024
ffd0b8f
docs: comment PDF viz dimensions XOR
jorwoods Jan 24, 2024
d09a9ce
Merge pull request #1348 from jorwoods/jorwoods/pdf_height_width
jacalata Jan 26, 2024
9ddbad5
Add support for System schedule type
bcantoni Feb 1, 2024
7631abb
Merge pull request #1350 from tableau/1349-system-schedule-type
jacalata Feb 3, 2024
60fa87f
Add failing test retrieving a task with 24 hour (aka daily) interval
Feb 14, 2024
0dca1aa
Add 24 (hours) as a valid interval which can be returned from the server
bcantoni Feb 14, 2024
3cc0f8e
Add Python 3.12 to test matrix
bcantoni Feb 14, 2024
0fb214e
Tweak test action to stop double-running everything
bcantoni Feb 14, 2024
0ddae7c
feat: add description support on wb publish
jorwoods Feb 15, 2024
65443eb
feat: add description support on wb publish
jacalata Feb 15, 2024
b06a7a2
Merge branch 'development' into 1354-daily-interval-tasks
jacalata Feb 15, 2024
dfd7f61
Merge pull request #1355 from tableau/1354-daily-interval-tasks
bcantoni Feb 15, 2024
2cbf18c
Merge pull request #1356 from tableau/actions-add-python-3.12
bcantoni Feb 15, 2024
eaedc29
Add Data Acceleration and Data Freshness Policy support (#1343)
ltiffanydev Mar 5, 2024
114214b
Improve robustness of Pager results
bcantoni Apr 27, 2024
bdce982
Add Cloud Flow Task endpoint
liu-rebecca May 8, 2024
6781285
cleanup
liu-rebecca May 8, 2024
06b76d6
black format
liu-rebecca May 8, 2024
4735bd3
add xml
liu-rebecca May 8, 2024
d6fd829
edit test initialization
liu-rebecca May 8, 2024
7f11a6d
fix task initialization
liu-rebecca May 8, 2024
c746957
third times the charm
liu-rebecca May 8, 2024
0e5ce78
cleanup
liu-rebecca May 8, 2024
bcb02ac
fix formatting
liu-rebecca May 10, 2024
435f1ae
feat: pass parameters in request options
jorwoods May 10, 2024
397e275
chore: pin typing_extensions version
jorwoods May 10, 2024
1e1f21c
Merge pull request #1371 from liu-rebecca/add-create-cloud-flow-task
jacalata May 22, 2024
b555528
Merge pull request #1372 from jorwoods/jorwoods/reqopts_filter_parame…
jacalata May 22, 2024
56d55b1
Merge branch 'development' into 1304-improve-pager-error-handling
jacalata May 22, 2024
6687d2a
Merge pull request #1370 from tableau/1304-improve-pager-error-handling
jacalata May 23, 2024
4029583
feat: enable combining PermissionsRules
jorwoods Apr 7, 2024
e8b01dd
style: black
jorwoods May 30, 2024
6dcabb2
fix: typo in exception
jorwoods May 30, 2024
691ba7f
feat: add eq comparison for PermissionsRule
jorwoods May 30, 2024
07e1fe2
style: black
jorwoods May 30, 2024
73b125a
fix: generalize eq methods
jorwoods May 30, 2024
2c0e2bd
style: black
jorwoods May 30, 2024
cad1711
fix: add missing type hint
jorwoods May 30, 2024
4d43c0b
Merge branch 'master' into development
bcantoni Jun 3, 2024
4feeffd
chore: remove deprecated group update argument
jorwoods May 30, 2024
1b7eb9b
chore: remove deprecated workbook method
jorwoods May 30, 2024
7a7587d
chore: remove deprecated workbook publish arguments
jorwoods May 30, 2024
c2ab2be
style: black
jorwoods May 30, 2024
2c4b787
chore: remove other deprecated methods
jorwoods May 30, 2024
98d27b4
chore: black
jorwoods May 30, 2024
560fff8
chore: remove comment
jorwoods May 30, 2024
83233a5
chore: remove hidden_views from wb publish
jorwoods May 31, 2024
d84adec
chore: remove deprecated site arg in auth
jorwoods Jun 7, 2024
58bc727
chore: remove no_extract arg from workbook download
jorwoods Jun 7, 2024
dd04bbd
style: black
jorwoods Jun 7, 2024
281ae3e
chore: remove deprecated arg from download datasource
jorwoods Jun 7, 2024
e6900e0
fix: don't lowercase OData server addresses
jorwoods Jun 11, 2024
9a92a5f
Merge pull request #1396 from jorwoods/jorwoods/odata
jacalata Jun 12, 2024
daace10
Merge branch 'development' into jorwoods/deprecated_cleanup
jorwoods Jun 12, 2024
b1b3873
feat: add size to datasource item
jorwoods Jun 12, 2024
30100a0
chore: remove outdated dependencies
jorwoods Jun 14, 2024
8c8b88c
ci: add dependency for build
jorwoods Jun 14, 2024
d2e9a61
Merge pull request #1398 from jorwoods/jorwoods/test_deps
jacalata Jun 15, 2024
48debe6
Merge pull request #1397 from jorwoods/jorwoods/datasource_size
jacalata Jun 15, 2024
d84fbc2
Merge branch 'development' into jorwoods/combining_permissionsrules
jacalata Jun 15, 2024
2f8fd5d
Merge pull request #1381 from jorwoods/jorwoods/combining_permissions…
jacalata Jun 15, 2024
16262e9
Merge branch 'development' into jorwoods/deprecated_cleanup
jacalata Jun 15, 2024
7169791
chore: no implicit reexport
jorwoods Jun 9, 2024
6e68d8b
chore: add typing to Pager
jorwoods Jun 6, 2024
c5d6abc
feat: add usage to views.get_by_id
jorwoods May 31, 2024
ff7ab65
chore: make pager generic type more specific
jorwoods Jun 17, 2024
c7cec85
chore: type hint QuerySet and QuerySetEndpoint
jorwoods Jun 17, 2024
f7524e8
fix: make 3.8 friendly
jorwoods Jun 17, 2024
3ae6de8
fix: ensure result_cache is empty before looping
jorwoods Jun 17, 2024
35643e5
chore: add self type hints
jorwoods Jun 17, 2024
de32333
feat: add with_page_size method onto QuerySet
jorwoods Jun 19, 2024
c9b92ec
style: black
jorwoods Jun 19, 2024
7b0cd6a
fix: ensure queryset iterator is called in test
jorwoods Jun 19, 2024
2def515
fix: change when result cache gets emptied
jorwoods Jun 19, 2024
7d134c2
Merge pull request #1394 from jorwoods/jorwoods/no_implicit_reexport
jacalata Jun 19, 2024
8b626db
Merge pull request #1399 from jorwoods/jorwoods/queryset_typing
jacalata Jun 19, 2024
e6a709a
Merge pull request #1383 from jorwoods/jorwoods/view_id_usage
jacalata Jun 20, 2024
6c4374b
Merge pull request #1380 from jorwoods/jorwoods/deprecated_cleanup
jacalata Jun 20, 2024
eee71d7
Merge branch 'development' into jorwoods/typed_pager
jacalata Jun 20, 2024
a5c28da
chore: type hint auth models
jorwoods Jun 20, 2024
22745a0
fix: dict[type, type] was added in 3.9
jorwoods Jun 20, 2024
2adcacc
style: black
jorwoods Jun 20, 2024
bae9dd0
fix(endpoint): pop from empty list
PatrickfBraz Jun 20, 2024
1fc7b74
Merge pull request #1390 from jorwoods/jorwoods/typed_pager
jacalata Jun 21, 2024
7a8e54e
Merge pull request #1403 from jorwoods/jorwoods/typehint_auth
jacalata Jun 21, 2024
c9bf9af
Merge branch 'development' into patch-1
jacalata Jun 21, 2024
75e7aaa
chore: absolute imports for favorites
jorwoods Jun 29, 2024
3c91a2e
feat: add support for changing project owner
jorwoods Jul 2, 2024
b031d01
chore: absolute imports
jorwoods Jul 2, 2024
86cdfd2
Merge pull request #1425 from tableau/master
jacalata Jul 24, 2024
79f1788
Merge pull request #1419 from jorwoods/jorwoods/projects_owner_update
jacalata Jul 24, 2024
9cd86ce
chore: ignore known internal warnings on tests
jorwoods Jun 17, 2024
776c009
chore: absolute imports for datasource
jorwoods Jun 29, 2024
015e979
Merge pull request #1407 from jorwoods/jorwoods/tests_warnings
jacalata Jul 26, 2024
84f2af4
Merge pull request #1404 from PatrickfBraz/patch-1
jacalata Jul 26, 2024
2a7bb48
Merge pull request #1416 from jorwoods/jorwoods/datasource_imports
jacalata Jul 26, 2024
7822be0
Merge pull request #1415 from jorwoods/jorwoods/favorites_imports
jacalata Jul 26, 2024
dcf89ab
feat: allow setting page_size in .all and .filter
jorwoods Jun 30, 2024
b9b3644
Merge pull request #1417 from jorwoods/jorwoods/queryset_pagesize
bcantoni Jul 27, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -156,3 +156,4 @@ docs/_site/
docs/.jekyll-metadata
docs/Gemfile.lock
samples/credentials
.venv/
4 changes: 3 additions & 1 deletion pyproject.toml
Original file line numberDiff line numberDiff line change
Expand Up@@ -32,7 +32,7 @@ classifiers = [
repository = "https://github.com/tableau/server-client-python"

[project.optional-dependencies]
test = ["argparse", "black==23.7", "mock", "mypy==1.4", "pytest>=7.0", "pytest-cov", "pytest-subtests",
test = ["black==23.7", "build", "mypy==1.4", "pytest>=7.0", "pytest-cov", "pytest-subtests",
"requests-mock>=1.0,<2.0"]

[tool.black]
Expand All@@ -49,6 +49,8 @@ disable_error_code = [
files = ["tableauserverclient", "test"]
show_error_codes = true
ignore_missing_imports = true # defusedxml library has no types
no_implicit_reexport = true

[tool.pytest.ini_options]
testpaths = ["test"]
addopts = "--junitxml=./test.junit.xml"
68 changes: 64 additions & 4 deletions tableauserverclient/__init__.py
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
from ._version import get_versions
from .namespace import NEW_NAMESPACE as DEFAULT_NAMESPACE
from .models import (
from tableauserverclient._version import get_versions
from tableauserverclient.namespace import NEW_NAMESPACE as DEFAULT_NAMESPACE
from tableauserverclient.models import (
BackgroundJobItem,
ColumnItem,
ConnectionCredentials,
Expand DownExpand Up@@ -43,7 +43,8 @@
WeeklyInterval,
WorkbookItem,
)
from .server import (

from tableauserverclient.server import (
CSVRequestOptions,
ExcelRequestOptions,
ImageRequestOptions,
Expand All@@ -57,3 +58,62 @@
Server,
Sort,
)

__all__ = [
"get_versions",
"DEFAULT_NAMESPACE",
"BackgroundJobItem",
"BackgroundJobItem",
"ColumnItem",
"ConnectionCredentials",
"ConnectionItem",
"CustomViewItem",
"DQWItem",
"DailyInterval",
"DataAlertItem",
"DatabaseItem",
"DataFreshnessPolicyItem",
"DatasourceItem",
"FavoriteItem",
"FlowItem",
"FlowRunItem",
"FileuploadItem",
"GroupItem",
"HourlyInterval",
"IntervalItem",
"JobItem",
"JWTAuth",
"MetricItem",
"MonthlyInterval",
"PaginationItem",
"Permission",
"PermissionsRule",
"PersonalAccessTokenAuth",
"ProjectItem",
"RevisionItem",
"ScheduleItem",
"SiteItem",
"ServerInfoItem",
"SubscriptionItem",
"TableItem",
"TableauAuth",
"Target",
"TaskItem",
"UserItem",
"ViewItem",
"WebhookItem",
"WeeklyInterval",
"WorkbookItem",
"CSVRequestOptions",
"ExcelRequestOptions",
"ImageRequestOptions",
"PDFRequestOptions",
"RequestOptions",
"MissingRequiredFieldError",
"NotSignedInError",
"ServerResponseError",
"Filter",
"Pager",
"Server",
"Sort",
]
125 changes: 88 additions & 37 deletions tableauserverclient/models/__init__.py
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,94 @@
from .column_item import ColumnItem
from .connection_credentials import ConnectionCredentials
from .connection_item import ConnectionItem
from .custom_view_item import CustomViewItem
from .data_acceleration_report_item import DataAccelerationReportItem
from .data_alert_item import DataAlertItem
from .database_item import DatabaseItem
from .data_freshness_policy_item import DataFreshnessPolicyItem
from .datasource_item import DatasourceItem
from .dqw_item import DQWItem
from .exceptions import UnpopulatedPropertyError
from .favorites_item import FavoriteItem
from .fileupload_item import FileuploadItem
from .flow_item import FlowItem
from .flow_run_item import FlowRunItem
from .group_item import GroupItem
from .interval_item import (
from tableauserverclient.models.column_item import ColumnItem
from tableauserverclient.models.connection_credentials import ConnectionCredentials
from tableauserverclient.models.connection_item import ConnectionItem
from tableauserverclient.models.custom_view_item import CustomViewItem
from tableauserverclient.models.data_acceleration_report_item import DataAccelerationReportItem
from tableauserverclient.models.data_alert_item import DataAlertItem
from tableauserverclient.models.database_item import DatabaseItem
from tableauserverclient.models.data_freshness_policy_item import DataFreshnessPolicyItem
from tableauserverclient.models.datasource_item import DatasourceItem
from tableauserverclient.models.dqw_item import DQWItem
from tableauserverclient.models.exceptions import UnpopulatedPropertyError
from tableauserverclient.models.favorites_item import FavoriteItem
from tableauserverclient.models.fileupload_item import FileuploadItem
from tableauserverclient.models.flow_item import FlowItem
from tableauserverclient.models.flow_run_item import FlowRunItem
from tableauserverclient.models.group_item import GroupItem
from tableauserverclient.models.interval_item import (
IntervalItem,
DailyInterval,
WeeklyInterval,
MonthlyInterval,
HourlyInterval,
)
from .job_item import JobItem, BackgroundJobItem
from .metric_item import MetricItem
from .pagination_item import PaginationItem
from .permissions_item import PermissionsRule, Permission
from .project_item import ProjectItem
from .revision_item import RevisionItem
from .schedule_item import ScheduleItem
from .server_info_item import ServerInfoItem
from .site_item import SiteItem
from .subscription_item import SubscriptionItem
from .table_item import TableItem
from .tableau_auth import Credentials, TableauAuth, PersonalAccessTokenAuth, JWTAuth
from .tableau_types import Resource, TableauItem, plural_type
from .tag_item import TagItem
from .target import Target
from .task_item import TaskItem
from .user_item import UserItem
from .view_item import ViewItem
from .webhook_item import WebhookItem
from .workbook_item import WorkbookItem
from tableauserverclient.models.job_item import JobItem, BackgroundJobItem
from tableauserverclient.models.metric_item import MetricItem
from tableauserverclient.models.pagination_item import PaginationItem
from tableauserverclient.models.permissions_item import PermissionsRule, Permission
from tableauserverclient.models.project_item import ProjectItem
from tableauserverclient.models.revision_item import RevisionItem
from tableauserverclient.models.schedule_item import ScheduleItem
from tableauserverclient.models.server_info_item import ServerInfoItem
from tableauserverclient.models.site_item import SiteItem
from tableauserverclient.models.subscription_item import SubscriptionItem
from tableauserverclient.models.table_item import TableItem
from tableauserverclient.models.tableau_auth import Credentials, TableauAuth, PersonalAccessTokenAuth, JWTAuth
from tableauserverclient.models.tableau_types import Resource, TableauItem, plural_type
from tableauserverclient.models.tag_item import TagItem
from tableauserverclient.models.target import Target
from tableauserverclient.models.task_item import TaskItem
from tableauserverclient.models.user_item import UserItem
from tableauserverclient.models.view_item import ViewItem
from tableauserverclient.models.webhook_item import WebhookItem
from tableauserverclient.models.workbook_item import WorkbookItem

__all__ = [
"ColumnItem",
"ConnectionCredentials",
"ConnectionItem",
"Credentials",
"CustomViewItem",
"DataAccelerationReportItem",
"DataAlertItem",
"DatabaseItem",
"DataFreshnessPolicyItem",
"DatasourceItem",
"DQWItem",
"UnpopulatedPropertyError",
"FavoriteItem",
"FileuploadItem",
"FlowItem",
"FlowRunItem",
"GroupItem",
"IntervalItem",
"JobItem",
"DailyInterval",
"WeeklyInterval",
"MonthlyInterval",
"HourlyInterval",
"BackgroundJobItem",
"MetricItem",
"PaginationItem",
"Permission",
"PermissionsRule",
"ProjectItem",
"RevisionItem",
"ScheduleItem",
"ServerInfoItem",
"SiteItem",
"SubscriptionItem",
"TableItem",
"TableauAuth",
"PersonalAccessTokenAuth",
"JWTAuth",
"Resource",
"TableauItem",
"plural_type",
"TagItem",
"Target",
"TaskItem",
"UserItem",
"ViewItem",
"WebhookItem",
"WorkbookItem",
]
24 changes: 18 additions & 6 deletions tableauserverclient/models/datasource_item.py
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,16 +6,16 @@
from defusedxml.ElementTree import fromstring

from tableauserverclient.datetime_helpers import parse_datetime
from .connection_item import ConnectionItem
from .exceptions import UnpopulatedPropertyError
from .permissions_item import PermissionsRule
from .property_decorators import (
from tableauserverclient.models.connection_item import ConnectionItem
from tableauserverclient.models.exceptions import UnpopulatedPropertyError
from tableauserverclient.models.permissions_item import PermissionsRule
from tableauserverclient.models.property_decorators import (
property_not_nullable,
property_is_boolean,
property_is_enum,
)
from .revision_item import RevisionItem
from .tag_item import TagItem
from tableauserverclient.models.revision_item import RevisionItem
from tableauserverclient.models.tag_item import TagItem


class DatasourceItem(object):
Expand DownExpand Up@@ -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
Expand DownExpand Up@@ -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

Expand DownExpand Up@@ -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,
Expand All@@ -237,6 +243,7 @@ def _parse_common_elements(self, datasource_xml, ns):
updated_at,
use_remote_query_agent,
webpage_url,
size,
)
return self

Expand All@@ -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
Expand DownExpand Up@@ -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"]:
Expand DownExpand Up@@ -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)
Expand DownExpand Up@@ -372,4 +383,5 @@ def _parse_element(datasource_xml: ET.Element, ns: Dict) -> Tuple:
updated_at,
use_remote_query_agent,
webpage_url,
size,
)
14 changes: 7 additions & 7 deletions tableauserverclient/models/favorites_item.py
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
import logging

from defusedxml.ElementTree import fromstring
from .tableau_types import TableauItem
from tableauserverclient.models.tableau_types import TableauItem

from .datasource_item import DatasourceItem
from .flow_item import FlowItem
from .project_item import ProjectItem
from .metric_item import MetricItem
from .view_item import ViewItem
from .workbook_item import WorkbookItem
from tableauserverclient.models.datasource_item import DatasourceItem
from tableauserverclient.models.flow_item import FlowItem
from tableauserverclient.models.project_item import ProjectItem
from tableauserverclient.models.metric_item import MetricItem
from tableauserverclient.models.view_item import ViewItem
from tableauserverclient.models.workbook_item import WorkbookItem
from typing import Dict, List

from tableauserverclient.helpers.logging import logger
Expand Down
Loading