Skip to content

rebase development onto master#1749

Merged
jacalata merged 56 commits intodevelopmentfrom
jac/rebase
Feb 3, 2026
Merged

rebase development onto master#1749
jacalata merged 56 commits intodevelopmentfrom
jac/rebase

Conversation

@jacalata
Copy link
Contributor

@jacalata jacalata commented Feb 3, 2026

This should do nothing, but cleans up the branch history ready to do a non-squashed merge to master.

vchavatapalli and others added 30 commits February 3, 2026 11:22
Also correct the type hints to clarify that it accepts any
Iterable.
…#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 <[email protected]>
* 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 <[email protected]>
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 <[email protected]>
* 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 <[email protected]>
* chore: workook tests converted to pytest

* chore: convert all assets to Paths

* chore: convert tests to pytest

* style: black

* chore: remove asset and read_assets references

* chore: narrow download_revision return type

* chore: add type hints to fixture

---------

Co-authored-by: Jordan Woods <[email protected]>
* chore: pytestify test_custom_view

* chore: remove unused import

* chore: add server type hints

---------

Co-authored-by: Jordan Woods <[email protected]>
* feat: support collections in favorites

The API schema shows collections can be returned with favorites. This
change adds support for a `CollectionItem`, as well as making the
bundled type returned by favorites more specific.

* fix: change Self import to make compat with < 3.11

* fix: use parse_datetime

---------

Co-authored-by: Jordan Woods <[email protected]>
Eric Summers pointed out that when the User Visibility setting
is set to "Limited," TSC fails to parse because it can't retrieve
any owner information. This bug is due to an `UnboundLocalError`
where the `owner` and `project` variables were not assigned in cases
where the owner and project elements were not included in the XML
response.

This PR also includes a test for the parsing where the owner and
project elements are missing and properly set to `None` on the
DatasourceItem.

Co-authored-by: Jordan Woods <[email protected]>
* fix: datasource description update and publish

Publish and update datasource were missing adding in the description
to the XML. This PR adds it in.

Co-authored-by: raccoooonz

* ci: trigger

* chore: test publish contains description

---------

Co-authored-by: Jordan Woods <[email protected]>
Co-authored-by: Jac <[email protected]>
* fix: black ci errors

* chore: pytestify favorites

---------

Co-authored-by: Jordan Woods <[email protected]>
* fix: black ci errors

* chore: pytestify flows

* style: black

---------

Co-authored-by: Jordan Woods <[email protected]>
* fix: black ci errors

* chore: pytestify models repr

---------

Co-authored-by: Jordan Woods <[email protected]>
* fix: black ci errors

* chore: pytestify metadata

---------

Co-authored-by: Jordan Woods <[email protected]>
* fix: black ci errors

* chore: pytestify project

---------

Co-authored-by: Jordan Woods <[email protected]>
jorwoods and others added 24 commits February 3, 2026 11:23
Co-authored-by: Jordan Woods <[email protected]>
* fix: black ci errors

* chore: pytestify test_user

* chore: pytestify test_user_model

---------

Co-authored-by: Jordan Woods <[email protected]>
* fix: black ci errors

* chore: pytestify request_option

* fix: encoding error

---------

Co-authored-by: Jordan Woods <[email protected]>
* fix: black ci errors

* chore: pytestify schedule

* chore: remove unused imports

---------

Co-authored-by: Jordan Woods <[email protected]>
* fix: black ci errors

* chore: pytestify server info

---------

Co-authored-by: Jordan Woods <[email protected]>
* fix: black ci errors

* chore: pytestify views

* chore: pytestify view acceleration

---------

Co-authored-by: Jordan Woods <[email protected]>
* fix: black ci errors

* chore: pytestify sort

---------

Co-authored-by: Jordan Woods <[email protected]>
* fix: black ci errors

* chore: pytestify ssl_config

---------

Co-authored-by: Jordan Woods <[email protected]>
* fix: black ci errors

* chore: pytestify test_site

* chore: pytestify test_site_model

---------

Co-authored-by: Jordan Woods <[email protected]>
* fix: black ci errors

* chore: pytestify views

* chore: pytestify view acceleration

* feat: delete_view

Starting in Server 2025.3, views can be deleted.

---------

Co-authored-by: Jordan Woods <[email protected]>
* chore: pytestify schedule

* chore: remove unused imports

* feat: batch update schedule state

---------

Co-authored-by: Jordan Woods <[email protected]>
* fix: black ci errors

* feat: enable bulk adding users

* feat: ensure domain name is included if provided

* style: black

* chore: test missing user name

* feat: implement users bulk_remove

* chore: suppress deprecation warning in test

* chore: split csv add creation to own test

* chore: use subTests in remove_users

* chore: user factory function in make_user

* docs: bulk_add docstring

* fix: assert on warning instead of ignore

* chore: missed an absolute import

* docs: bulk_add docstring

* docs: create_users_csv docstring

* chore: deprecate add_all method

* test: test add_all and check DeprecationWarning

* docs: docstring updates for bulk add operations

* docs: add examples to docstrings

* chore: update deprecated version #

* feat: enable idp_configuration_id in bulk_add

* chore: remove outdated docstring text

* test: remove_users_csv

* chore: update deprecated version number

* chore: pytestify test_user

* chore: pytestify test_user_model

* style: black

---------

Co-authored-by: Jordan Woods <[email protected]>
Running locally on my Mac:
- pytest: 1min 20sec
- pytest -n auto: 15sec

https://pypi.org/project/pytest-xdist/

Co-authored-by: Jac <[email protected]>
* fix: add workbook and view setter for custom view
* chore: use workbook setter in tests

Closes #1729

---------
Co-authored-by: Jordan Woods <[email protected]>
Adding support for the REST APIs which provide access to Tableau Extensions configuration.

---------

Co-authored-by: Jordan Woods <[email protected]>
Co-authored-by: Brian Cantoni <[email protected]>
)

* Add test for retrieving Customized Monthly schedule
* Add "Customized Monthly" as a possible schedule interval type that might be returned
* fix: black ci errors

* chore: pytestify request_option

* fix: encoding error

* fix: handle parameters for view filters

Closes #1632

Parameters need to be prefixed with "vf_Parameters." in order
to be properly registered as setting a parameter value. This PR
adds that prefix where it was missing, but leaves parameter names
that already included the prefix unmodified.

* docs: case sensitivity in the test's query string

* chore: pytest style asserts

* fix: black ci errors

---------

Co-authored-by: Jordan Woods <[email protected]>
* update publish workflow

* Update pyproject.toml and setup

* add init files to find test_repr, fix it to pass
* implement project.get_by_id

* format
enumerating subpackages doesn't (shouldn't) actually do anything, so we shouldn't do it.
* Revert "refer to single package entrypoint (#1739)"

This reverts commit 043efa1.

* fix: make pyproject.toml more explicity in what is included

* chore: remove commented out config

---------

Co-authored-by: Jordan Woods <[email protected]>
@github-actions
Copy link

github-actions bot commented Feb 3, 2026

Coverage

Coverage Report
FileStmtsMissCoverMissing
tableauserverclient
   __init__.py50100% 
   config.py150100% 
   datetime_helpers.py2511 96%
   exponential_backoff.py200100% 
   filesys_helpers.py310100% 
   namespace.py2633 88%
tableauserverclient/bin
   __init__.py20100% 
   _version.py358212212 41%
tableauserverclient/helpers
   __init__.py10100% 
   headers.py1388 38%
   logging.py20100% 
   strings.py3111 97%
tableauserverclient/models
   __init__.py460100% 
   collection_item.py4277 83%
   column_item.py553232 42%
   connection_credentials.py351111 69%
   connection_item.py861313 85%
   custom_view_item.py1442121 85%
   data_acceleration_report_item.py5411 98%
   data_alert_item.py15944 97%
   data_freshness_policy_item.py1561515 90%
   database_item.py2073636 83%
   datasource_item.py3011212 96%
   dqw_item.py10455 95%
   exceptions.py40100% 
   extensions_item.py13244 97%
   extract_item.py4544 91%
   favorites_item.py6988 88%
   fileupload_item.py190100% 
   flow_item.py1491010 93%
   flow_run_item.py720100% 
   group_item.py8966 93%
   groupset_item.py5077 86%
   interval_item.py1823232 82%
   job_item.py1881010 95%
   linked_tasks_item.py8011 99%
   location_item.py3022 93%
   metric_item.py1301313 90%
   oidc_item.py6433 95%
   pagination_item.py3411 97%
   permissions_item.py1121212 89%
   project_item.py2073131 85%
   property_decorators.py1001818 82%
   reference_item.py2622 92%
   revision_item.py6011 98%
   schedule_item.py20966 97%
   server_info_item.py3744 89%
   site_item.py6361313 98%
   subscription_item.py10122 98%
   table_item.py1191818 85%
   tableau_auth.py622525 60%
   tableau_types.py2711 96%
   tag_item.py150100% 
   target.py60100% 
   task_item.py5722 96%
   user_item.py3101818 94%
   view_item.py2201616 93%
   virtual_connection_item.py6488 88%
   webhook_item.py6622 97%
   workbook_item.py3621616 96%
tableauserverclient/server
   __init__.py90100% 
   exceptions.py40100% 
   filter.py2111 95%
   pager.py3311 97%
   query.py1431818 87%
   request_factory.py1326197197 85%
   request_options.py37955 99%
   server.py1891919 90%
   sort.py60100% 
tableauserverclient/server/endpoint
   __init__.py350100% 
   auth_endpoint.py751010 87%
   custom_views_endpoint.py1471212 92%
   data_acceleration_report_endpoint.py210100% 
   data_alert_endpoint.py942323 76%
   databases_endpoint.py1113030 73%
   datasources_endpoint.py3303434 90%
   default_permissions_endpoint.py4433 93%
   dqw_endpoint.py451616 64%
   endpoint.py1871818 90%
   exceptions.py7066 91%
   extensions_endpoint.py310100% 
   favorites_endpoint.py952222 77%
   fileuploads_endpoint.py510100% 
   flow_runs_endpoint.py6299 85%
   flow_task_endpoint.py2122 90%
   flows_endpoint.py2125454 75%
   groups_endpoint.py12699 93%
   groupsets_endpoint.py7277 90%
   jobs_endpoint.py6899 87%
   linked_tasks_endpoint.py380100% 
   metadata_endpoint.py881414 84%
   metrics_endpoint.py5566 89%
   oidc_endpoint.py4211 98%
   permissions_endpoint.py4433 93%
   projects_endpoint.py1572424 85%
   resource_tagger.py1273636 72%
   schedules_endpoint.py1191111 91%
   server_info_endpoint.py361010 72%
   sites_endpoint.py1302727 79%
   subscriptions_endpoint.py561414 75%
   tables_endpoint.py1103636 67%
   tasks_endpoint.py6366 90%
   users_endpoint.py18499 95%
   views_endpoint.py14699 94%
   virtual_connections_endpoint.py1131010 91%
   webhooks_endpoint.py5499 83%
   workbooks_endpoint.py3452424 93%
TOTAL11965143288% 

@jacalata jacalata merged commit bab12fc into development Feb 3, 2026
28 of 29 checks passed
@jacalata jacalata deleted the jac/rebase branch February 3, 2026 19:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants