Skip to content

Releases

v0.42

Choose a tag to compare

@bcantoni bcantoni released this 15 Oct 21:20
Immutable release. Only release title and notes can be modified.
b7c5866

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 a ProjectItem (or None), walking the project tree level by level via the REST API name filter
  • Parse <statusNotes> into JobItem.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 legacy notes list
  • Expose JobFailedException/JobCancelledException/FlowRun* exceptions at the top-level TSC namespace (PR #1870) — callers can now catch TSC.JobFailedException directly instead of reaching into the internal tableauserverclient.server.endpoint.exceptions module
  • Make Server thread-safe with per-thread sessions (PR #1871) — each thread now gets its own requests.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 Filter serialization for datetimes and booleans (PR #1805) — datetime filter values were serialized with a space instead of ISO-8601 T/Z, and booleans serialized as Python's True/False instead of lowercase true/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) — requests was converting POST to GET and dropping the body on 301/302/303 redirects, causing 405 errors on users.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 customSubscriptionEmail and customSubscriptionFooter (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 cast issue in helpers/strings.py and a missing import in a test
  • Normalize CRLF line endings to LF in six Python files (PR #1816) — cleans up ^M noise 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_path fixture 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 across Workbooks, Datasources, and Flows into a single shared helper
  • Extract CSVImport._decompose_site_role (PR #1812) — moves the inverse of _evaluate_site_role into CSVImport and 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-op typing_extensions indirection 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 via ConnectionItem
  • 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), expanded update_connection_auth sample 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

Choose a tag to compare

@jacalata jacalata released this 25 Jun 23:39
Immutable release. Only release title and notes can be modified.
38f082a

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 development after v0.41 was tagged and will ship in v0.42. The v0.41 tag contains only PR #1772.

v0.40

Choose a tag to compare

@jacalata jacalata released this 03 Feb 20:20
d4b27f4

What's Changed

Full Changelog: v0.39...v0.40

v0.39

v0.39 Pre-release
Pre-release

Choose a tag to compare

@jacalata jacalata released this 02 Feb 20:11
34ac954

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: make ResourceReference hashable (#1668) Closes #1666

  • 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: implement #816: project.get_by_id (#1736)

  • feat: enable retrieving only owned workbooks by @jorwoods in #1594

  • feat: Add fields:all support by @jorwoods in #1563

  • 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: put special fields first (#1622) Closes #1620

  • fix: virtual connections username (#1628) Closes #1626

  • 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

Choose a tag to compare

@jacalata jacalata released this 15 May 22:03
cda018b

What's Changed

  • v0.38 - IDP configuration by @jacalata in #1606

  • 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-latest like 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

Choose a tag to compare

@renoyjohnm renoyjohnm released this 24 Mar 17:01
bf85704

What's Changed

New Contributors

Full Changelog: v0.36...v0.37

v0.36 hotfix (refresh datasource)

Choose a tag to compare

@jacalata jacalata released this 10 Jan 18:38
42cecfe

Fixes a 400 Bad Request error when calling Refresh Datasource with 0.35

v0.35

Choose a tag to compare

@jacalata jacalata released this 06 Jan 21:49
c5e016f

What's Changed

New Contributors

Full Changelog: v0.34...v0.35

v0.34

Choose a tag to compare

@renoyjohnm renoyjohnm released this 26 Oct 00:02
1d98fda

What's Changed

New Contributors

Full Changelog: v0.33...v0.34

v0.33

Choose a tag to compare

@jacalata jacalata released this 18 Sep 04:59
4259316

What's Changed

New Contributors

Full Changelog: v0.32...v0.33