Repository navigation
Releases
v0.42
v0.42 Release Summary
New Features
- Add
Projects.get_by_path()for hierarchy-aware project lookup (PR #1804) — resolves a slash-separated path like"Marketing/Q1 Reports"to aProjectItem(orNone), walking the project tree level by level via the REST APInamefilter - Parse
<statusNotes>intoJobItem.status_notes(PR #1852) — exposes the structured per-row status notes (type/value/text) returned by the Query Job endpoint for jobs like UserImport, alongside the existing legacynoteslist - Expose
JobFailedException/JobCancelledException/FlowRun*exceptions at the top-levelTSCnamespace (PR #1870) — callers can now catchTSC.JobFailedExceptiondirectly instead of reaching into the internaltableauserverclient.server.endpoint.exceptionsmodule - Make
Serverthread-safe with per-thread sessions (PR #1871) — each thread now gets its ownrequests.Session, closing a gap where concurrent callers shared one session and its connection pool/cookies
Bug Fixes
- Correct wheel packaging and add release safety checks (PR #1798) — fixes a broken wheel structure (subpackages duplicated as bare top-level entries) caused by an
include-based setuptools config on newer setuptools; adds a packaging structure test to catch regressions - Correct
Filterserialization for datetimes and booleans (PR #1805) — datetime filter values were serialized with a space instead of ISO-8601T/Z, and booleans serialized as Python'sTrue/Falseinstead of lowercasetrue/false, both of which caused server 400 errors - Bump urllib3 floor to 2.6.3 for CVE-2026-21441 (PR #1869) — closes a gap where urllib3's streaming decompression safeguards could be bypassed when HTTP redirects were followed
- Preserve POST body across 3xx redirects (PR #1848) —
requestswas converting POST to GET and dropping the body on 301/302/303 redirects, causing 405 errors onusers.add,workbooks.publish, and other writes behind a redirect; TSC now walks the redirect chain manually and refuses HTTPS→HTTP downgrades - Fix CSVImport bugs: AUTH column, case-insensitive validation, username case (PR #1811) — fixes six bugs in
UserItem.CSVImport, including an off-by-one that rejected valid 8-column lines and destructive lowercasing of usernames/display names/emails - Preserve case of
customSubscriptionEmailandcustomSubscriptionFooter(PR #1851) — subscription footer text is shown verbatim in outgoing emails, so lowercasing it on serialization mangled company names and sentence casing - Resolve mypy 2.3 type errors (PR #1826) — unblocks the dependabot mypy upgrade by fixing a
castissue inhelpers/strings.pyand a missing import in a test - Normalize CRLF line endings to LF in six Python files (PR #1816) — cleans up
^Mnoise introduced accidentally by an earlier Black version bump - Fix three latent bugs in
samples/explore_workbook.py(PR #1881) — fixes a bare type annotation that left a variable unbound, plus two other pre-existing sample bugs surfaced by a fresh-eyes review - Use
tmp_pathfixture in download tests to avoid cwd pollution (PR #1800) — download tests wrote to the current working directory, causing conflicts when run in parallel (-n auto); now use a worker-isolated temp directory
Other
- Extract download streaming logic into
DownloadableMixin(PR #1803) — de-duplicates three identical streaming blocks acrossWorkbooks,Datasources, andFlowsinto a single shared helper - Extract
CSVImport._decompose_site_role(PR #1812) — moves the inverse of_evaluate_site_roleintoCSVImportand fixes three pre-existing bugs found along the way - Add environment gate to production PyPI publish job (PR #1830) — requires a human reviewer checkpoint before any tag/release can trigger a production PyPI publish
- Use stdlib typing for
Concatenate/ParamSpec/overload; align Black target-version (PR #1839) — removes no-optyping_extensionsindirection now that the minimum supported Python is 3.10, and aligns Black's target versions with the supported/CI matrix - Samples: credential helper, pagination fixes, and new jobs/subscriptions samples (PR #1843) — adds
resolve_credentials()for env-var-based sign-in, fixes samples that used.get()where pagination was intended, and adds new background-jobs/subscriptions sample scripts - Samples: sample for reading connector-specific connection attrs (PR #1880) — adds
samples/inspect_connection_details.py, demonstrating how to read connector-specific attributes (Oracle service, Snowflake schema, etc.) that aren't exposed viaConnectionItem - Docs: numpy-style docstrings on the Favorites endpoint (PR #1855), expanded
RequestOptions.vf()wire-format rules (PR #1840), clarified username formats, ProjectLeader-as-group, and filter special-char behavior (PR #1854), one-line docstrings on root-level helper modules (PR #1859), expandedupdate_connection_authsample header for Snowflake keypair auth (PR #1844) — documentation-only improvements, no behavior change - CI/chore: various dependency bumps (Black, mypy, GitHub Actions) and stale-bot/workflow tuning (PRs #1814, #1815, #1819, #1820, #1822, #1827, #1833, #1853, #1856, #1864, #1841, #1867, #1878, #1889)
Full Changelog: v0.41...v0.42
v0.41
v0.41 Release Summary
New Features
- SVG format support for view images (PR #1772) — sheet images can now be downloaded as SVG in addition to PNG
Bug Fixes
- Treat 409 errors as success on already-created jobs (PR #1772) — recognize when the job the user wants to create already exists
Note: Earlier drafts of these notes described additional features and fixes (Extensions API, delete view, batch schedule, OIDC, and others). Those changes landed on
developmentafter v0.41 was tagged and will ship in v0.42. The v0.41 tag contains only PR #1772.
v0.40
v0.39
What's Changed
-
feat: New APIs: Update multiple connections in a single workbook/datasource (#1638)
-
feat: enable toggling attribute capture for a site (#1619)
-
feat: support OIDC endpoints (#1630)
-
feat: add WebAuthoringForFlows capability to Permission class (#1642)
-
feat: support collections in favorites (#1647)
-
feat: Add UAT (unified access token) support to JWT login (#1671)
-
feat: Update permissions_item.py --added ExtractRefresh attribute (#1617) (#1669)
-
feat: make refresh consistent between endpoints (#1665)
-
feat: delete view (#1712)
-
feat: batch create schedule (#1714)
-
feat: users csv import (#1409)
-
feat: implement users bulk_remove
-
feat: enable idp_configuration_id in bulk_add
-
feat: support extensions api (#1672)
-
feat: Add support for receiving "Customized Monthly" schedule intervals (#1670)
-
feat: enable retrieving only owned workbooks by @jorwoods in #1594
-
feat: Add SSL option for connecting to Tableau Server with a weaker DH key length by @bcantoni in #1596
-
1580 list extracts on schedule by @casey-crawford-cfa in #1604
-
fix: add contentType to tags batch actions (#1643)
-
fix: datasource owner/project missing parsing (#1700)
-
fix: datasource description update and publish (#1682)
-
fix: windows decoding error
-
fix: assert on warning instead of ignore
-
fix: add workbook and view setter for custom view (#1730)
-
fix: handle parameters for view filters (#1633)
Full Changelog: v0.38...v0.39
v0.38
What's Changed
-
docs: docstrings for schedules and intervals (#1528)
-
docs: Docstrings for new fields
-
feat: enable retrieving only owned workbooks
-
feat: Add support for multiple IDPs (jorwoods)
-
feat: Add fields:all support (#1563)
-
feat: project support all fields
-
feat: groups all fields
-
feat: views support all fields
-
feat: user support all fields
-
feat: workbook support all fields
-
feat: datasourceitem all fields
-
feat: add fields methods to QuerySet
-
feat: add owner attribute to project
-
Add SSL option for connecting to Tableau Server with a weaker DH key length
Fixes #1582 -
feat: 1580 list extracts on schedule (#1604)
-
chore: type hint database and table objects (#1593)
-
ci: Switch Slack action to use
ubuntu-latestlike our other actions.
Co-authored-by: Jordan Woods jorwoods@users.noreply.github.com
Co-authored-by: Jordan Woods 13803242+jorwoods@users.noreply.github.com
Co-authored-by: Brian Cantoni bcantoni@salesforce.com
Co-authored-by: casey-crawford-cfa 91914995+casey-crawford-cfa@users.noreply.github.com
v0.37
What's Changed
- fix: Incorrect size unit when logging fileUpload by @KulykDmytro in #1560
- docs: DatasourceItem and Endpoint docstrings by @jorwoods in #1556
- fix: Change GroupSets.get api for more consistency by @jorwoods in #1568
- fix: Virtual connection ConnectionItem attributes by @jorwoods in #1566
- fix: Remove vizHeight and vizWidth from ImageRequestOptions by @jorwoods in #1565
- feat: Adding incremental refresh option for workbook and datasource endpoints by @renoyjohnm in #1585
- feat: New JobItem code by @renoyjohnm in #1585
New Contributors
- @KulykDmytro made their first contribution in #1560
Full Changelog: v0.36...v0.37
v0.36 hotfix (refresh datasource)
Fixes a 400 Bad Request error when calling Refresh Datasource with 0.35
v0.35
What's Changed
-
feat: capture site content url from sign in by @jorwoods in #1524
-
feat: support for thumbnail related options in workbook publish by @renoyjohnm in #1542
-
feat: incremental refresh for extracts by @jacalata in #1545
-
Fixing set default permissions for virtual connections by @TrimPeachu in #1535
-
feat: publish datasource as replacement by @jacalata in #1546
-
docs: docstrings for Pager and RequestOptions by @jorwoods in #1498
-
docs: docstrings for group endpoint and item by @jorwoods in #1499
-
docs: docstrings for JobItem and Jobs endpoint by @jorwoods in #1529
-
docs: docstrings on ConnectionItem and ConnectionCredentials by @jorwoods in #1526
New Contributors
Full Changelog: v0.34...v0.35
v0.34
What's Changed
- Draft: Make urllib3 dependency more flexible by @bcantoni in #1468
- chore(versions): Upgrade minimum python version by @jorwoods in #1465
- chore(typing): include samples in type checks by @jorwoods in #1455
- fix: queryset support for flowruns by @jorwoods in #1460
- #1464 - docs update for filtering on boolean values by @jacalata in #1471
- chore(versions): update remaining f-strings by @jorwoods in #1477
- #1475 Add 'description' to datasource sample code by @jacalata in #1475
- feat(exceptions): separate failed signin error by @jorwoods in #1478
- docs: add docstrings to auth objects and endpoints by @jorwoods in #1484
- Set FILESIZE_LIMIT_MB via environment variables by @Der-Henning in #1466
- added PulseMetricDefine cap by @AlbertWangXu in #1490
- Adding project permissions handling for databases, tables and virtual connections by @TrimPeachu in #1482
- docs: docstrings for Server and ServerInfo by @jorwoods in #1494
- refactor request_options, add language param by @jacalata in #1481
- docs: docstrings for user item and endpoint by @jorwoods in #1485
- ci: build on python 3.13 by @jorwoods in #1492
- docs: workbook docstrings by @jorwoods in #1488
- chore: type hint default permissions endpoints by @jorwoods in #1493
- fix: handle 0 item response in querysets by @jorwoods in #1501
- ci: cache dependencies for faster builds by @jorwoods in #1497
- Feature: export custom views #999 by @renoyjohnm in #1506
- chore: remove py2 holdover code by @jorwoods in #1496
- Update samples for Python 3.x compatibility by @bcantoni in #1479
- chore: support VizqlDataApiAccess capability by @jorwoods in #1504
- Remove sample code showing group name encoding by @jacalata in #1486
- Update requests library for CVE CVE-2024-35195 by @jacalata in #1507
- docs: docstrings for site item and endpoint by @jorwoods in #1495
- Bring development and master into sync by @jacalata in #1509
- Development to master branch merge by @renoyjohnm in #1511
- Revert "Development to master branch merge" by @renoyjohnm in #1513
- Revert "Bring development and master into sync" by @renoyjohnm in #1517
- Development to master in prep of release 0.34 by @bcantoni in #1519
New Contributors
- @Der-Henning made their first contribution in #1466
- @AlbertWangXu made their first contribution in #1490
- @renoyjohnm made their first contribution in #1506
Full Changelog: v0.33...v0.34
v0.33
What's Changed
- Update contributors by @bcantoni in #1428
- Add support for all types of monthly repeating schedules by @bcantoni in #1462
- Add workbook and datasource name attributes to JobItem Model by @ivanB1975 in #1391
- chore: make auth endpoint imports absolute by @jorwoods in #1410
- chore: make imports for flows absolute by @jorwoods in #1411
- feat: group bulk edit by @jorwoods in #1413
- Add str() and repr() to DatabaseItem by @joelclark in #1432
- feat: add support for groupsets by @jorwoods in #1405
- feat: custom views dl pub by @jorwoods in #1434
- docs: add docstrings detailing the filter options by @jorwoods in #1435
- feat: tag everything by @jorwoods in #1422
- feat: get page and chunk size from env vars by @jorwoods in #1439
- feat: linked tasks by @jorwoods in #1424
- chore: typing decorators by @jorwoods in #1447
- fix: Pager typing by @jorwoods in #1449
- Add GroupSets by @jorwoods in #1444
New Contributors
- @ivanB1975 made their first contribution in #1391
- @joelclark made their first contribution in #1432
Full Changelog: v0.32...v0.33