v0.41 - add SVG image generation#1772
Open
jacalata wants to merge 188 commits into
Open
Conversation
Fix typo in update_datasource_data.py
PersonalAccessTokenAuth repr was malformed. Fixing it to be more representative and show the actual class name used in cases where the client user decides to subclass.
fix: repr for auth objects
Also correct the type hints to clarify that it accepts any Iterable.
chore: refactor XML payload into RequestFactory
…#1638) Update multiple connections in a single workbook - Takes multiple connection, authType and credentials as input Update multiple connections in a single datasource - Takes multiple connection, authType and credentials as input --------- Co-authored-by: Jordan Woods <13803242+jorwoods@users.noreply.github.com>
…nections Minor fixes on update connections
* feat: enable toggling attribute capture for a site According to https://help.tableau.com/current/api/embedding_api/en-us/docs/embedding_api_user_attributes.html#:~:text=For%20security%20purposes%2C%20user%20attributes,a%20site%20admin%20(on%20Tableau setting this site setting to `true` is required to enable use of user attributes with Tableau Server and embedding workflows. * chore: fix mypy error --------- Co-authored-by: Jordan Woods <13803242+jorwoods@users.noreply.github.com>
Closes #1620 Sorting the fields prior to putting them in the query string assures that '_all_' and '_default_' appear first in the field list, satisfying the criteria of Tableau Server/Cloud to process those first. Order of other fields appeared to be irrelevant, so the test simply ensures their presence. Co-authored-by: Jordan Woods <13803242+jorwoods@users.noreply.github.com>
* feat: support OIDC endpoints Add support for remaining OIDC endpoints, including getting an OIDC configuration by ID, removing the configuration, creating, and updating configurations. * feat: add str and repr to oidc item --------- Co-authored-by: Jordan Woods <13803242+jorwoods@users.noreply.github.com>
* feat: SiteAuthConfiguration str and repr Gives SiteAuthConfiguration methods for str and repr calls to ensure consistent display of the object. * style: black --------- Co-authored-by: Jordan Woods <13803242+jorwoods@users.noreply.github.com> Co-authored-by: Jac <jacalata@users.noreply.github.com>
Closes #1626 VirtualConnections leverages the ConnectionItem object to parse the database connections server response. Most of other endpoints return "userName" and the VirtualConnections' "Get Database Connections" endpoint returns "username." Resolves the issue by allowing the ConnectionItem to read either. Update the test assets to reflect the actual returned value. Co-authored-by: Jordan Woods <13803242+jorwoods@users.noreply.github.com>
According to the .xsd schema file, the tags:batchCreate and tags:batchDelete need a "contentType" attribute on the "content" elements. This PR adds the missing attribute and checks in the test that the string is carried through in the request body. Co-authored-by: Jordan Woods <13803242+jorwoods@users.noreply.github.com>
enumerating subpackages doesn't (shouldn't) actually do anything, so we shouldn't do it.
Co-authored-by: Jordan Woods <13803242+jorwoods@users.noreply.github.com>
* fix: black ci errors * chore: pytestify ssl_config --------- Co-authored-by: Jordan Woods <13803242+jorwoods@users.noreply.github.com>
…1740) * Initial plan * Fix assertion syntax in test_populate_data_quality_warning Co-authored-by: jacalata <2009720+jacalata@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jacalata <2009720+jacalata@users.noreply.github.com> Co-authored-by: Jac <jacalata@users.noreply.github.com>
Co-authored-by: jacalata <2009720+jacalata@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* feat: add SVG format support for view and custom view images Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Update license information in pyproject.toml - Fixes license specifiers according to https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license-and-license-files - This allows automatic license inspection tools like pip-licenses to correctly categorize this package.
* Remove deprecated cgi module usage and clean up dead code Agent-Logs-Url: https://github.com/tableau/server-client-python/sessions/453f920c-7857-4503-ad99-0ccef076d792 Co-authored-by: jacalata <2009720+jacalata@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jacalata <2009720+jacalata@users.noreply.github.com> Co-authored-by: Brian Cantoni <bcantoni@salesforce.com>
* chore: replace Union with modern syntax * chore: modernize Optional type hints * fix: bump required versions * fix: typing on update_connections methods * docs: make docstrings match function signature * fix: clarify max_age can be None * fix: docstring indent * style: black --------- Co-authored-by: Jordan Woods <13803242+jorwoods@users.noreply.github.com>
* chore(deps-dev): bump black from 24.10 to 26.3.1 Bumps [black](https://github.com/psf/black) from 24.10 to 26.3.1. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](psf/black@24.10.0...26.3.1) --- updated-dependencies: - dependency-name: black dependency-version: 26.3.1 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com> * style: apply black 26.3.1 formatting Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jac Fitzgerald <jac.fitzgerald@salesforce.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds -n auto to pytest addopts so the test suite uses all available CPU cores. Reduces local and CI run time from ~6 min to ~2 min. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: quote tag labels containing spaces or commas in XML request The server's TagUtil.parseTags splits unquoted labels on spaces and commas, causing tags like "Yearly Sales" to be stored as two separate tags. Wrapping labels in double quotes prevents the split; the server strips the quotes before storing. Fixes #1738 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: quote tag labels containing spaces or commas; add e2e test suite The Tableau server splits unquoted tag labels on spaces and commas (via TagUtil.parseTags), so "Yearly Sales" becomes two tags "Yearly" and "Sales". Wrapping labels in double quotes prevents the split; the server strips the quotes before storing. Also adds the first e2e test infrastructure to the repo: - test_e2e/ directory with a session-scoped server fixture reading credentials from env vars (TABLEAU_SERVER, TABLEAU_SITE, TABLEAU_TOKEN, TABLEAU_TOKEN_NAME, TABLEAU_PROJECT) - test_e2e/test_tagging.py validates the tag quoting fix against a real Tableau server - contributing.md documents how to run unit and e2e tests Fixes #1738 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: encode special characters in tag delete URL path Fixes #675 #994 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: don't default authSetting to ServerDefault in bulk user add ServerDefault is wrong for Tableau Cloud. Match the single-user add/update behaviour and only send authSetting when explicitly set. Fixes #1777 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: update test to match corrected bulk add authSetting behaviour Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…1781) * fix: improve timeout error messages and document TSC_CHUNK_SIZE_MB When a 504 occurs during an async chunked upload, the error message now hints at reducing TSC_CHUNK_SIZE_MB rather than suggesting async mode (which the user is already using). Also document the env var in the publish docstrings for workbooks and datasources. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * style: apply black formatting Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * test: add tests for async publish 504 timeout error message Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Fixes #1571 Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…1788) * fix: use return instead of raise StopIteration in QuerySet.__iter__ Per PEP 479, StopIteration raised inside a generator is converted to RuntimeError. QuerySet.__iter__ is a generator and was raising StopIteration to handle 400006 (invalid page number) errors, causing RuntimeError for callers iterating endpoints that don't support pagination past the last page. Fixes #1786 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * test: remove bare baseurl statements outside requests_mock context server.workbooks.baseurl accessed outside a requests_mock context causes DNS resolution of http://test on Linux, failing with a ConnectionError. These statements were no-ops — baseurl is pure string formatting. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
feat: document email filter for users endpoint Fixes #1562 Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Fixes #1597 Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: include description in workbook publish and update requests The REST API has supported workbook description since v3.20 (2023.2). Fixes #899 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: correct version gate and test style for workbook description update - Restore version threshold to 3.21 (matching Tableau REST API docs) - Restore parent_srv is None guard to exclude description (original behavior) - Update tests to reflect 3.21 boundary - Use re.search on multipart body for publish test, matching existing pattern - Fix stale sample comment Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: replace no_extract with DeprecationWarning, document include_extract no_extract was silently accepted but never documented as removed. Now raises DeprecationWarning and maps to include_extract=False so existing callers get a clear migration path rather than a silent no-op. Fixes #1541 Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Fixes #1083 Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…1795) * feat: add vizWidth/vizHeight to PDFRequestOptions Fixes #1102 - PDFRequestOptions already inherited viz_width/viz_height from _ImagePDFCommonExportOptions (shared with ImageRequestOptions), which serialises them as vizWidth/vizHeight query params - Added version guard in views.populate_pdf: raises UnsupportedAttributeError when viz_height or viz_width are used below API 3.26 - Added tests for the new version guard, the happy path (API 3.26+), unit- level query-param serialisation, and the existing XOR validation - Removed stray bare literal '44' from test_request_option.py Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: remove incorrect version gate on vizWidth/vizHeight for PDF export The REST API docs claimed vizHeight/vizWidth required API 3.26 and were Cloud-only, but server-side code shows these params have been accepted unconditionally since at least 2021.4 with no platform distinction. Remove the 3.26 guard; the endpoint's own minimum version is sufficient. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes