Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add subscriptions sample #1487

Open
wants to merge 24 commits into
base: development
Choose a base branch
from
Open

Conversation

jacalata
Copy link
Contributor

@jacalata jacalata commented Oct 4, 2024

A new sample program showing how to create a subscription.

Copy link

github-actions bot commented Oct 4, 2024

Coverage

Coverage Report
FileStmtsMissCoverMissing
tableauserverclient
   __init__.py50100% 
   _version.py278163163 41%
   config.py150100% 
   datetime_helpers.py2511 96%
   exponential_backoff.py200100% 
   filesys_helpers.py310100% 
   namespace.py2633 88%
tableauserverclient/helpers
   __init__.py10100% 
   headers.py1388 38%
   logging.py20100% 
   strings.py2711 96%
tableauserverclient/models
   __init__.py410100% 
   column_item.py553232 42%
   connection_credentials.py351111 69%
   connection_item.py771010 87%
   custom_view_item.py1381313 91%
   data_acceleration_report_item.py5411 98%
   data_alert_item.py15933 98%
   data_freshness_policy_item.py1561515 90%
   database_item.py2073636 83%
   datasource_item.py2471111 96%
   dqw_item.py10455 95%
   exceptions.py40100% 
   favorites_item.py5688 86%
   fileupload_item.py190100% 
   flow_item.py1491010 93%
   flow_run_item.py720100% 
   group_item.py8133 96%
   groupset_item.py3911 97%
   interval_item.py1823232 82%
   job_item.py1871010 95%
   linked_tasks_item.py8011 99%
   metric_item.py1301212 91%
   pagination_item.py340100% 
   permissions_item.py1101212 89%
   project_item.py1573333 79%
   property_decorators.py1001818 82%
   reference_item.py2311 96%
   revision_item.py600100% 
   schedule_item.py20666 97%
   server_info_item.py3744 89%
   site_item.py6101212 98%
   subscription_item.py10333 97%
   table_item.py1181818 85%
   tableau_auth.py612424 61%
   tableau_types.py2511 96%
   tag_item.py150100% 
   target.py60100% 
   task_item.py5722 96%
   user_item.py2771717 94%
   view_item.py1791515 92%
   virtual_connection_item.py6488 88%
   webhook_item.py660100% 
   workbook_item.py2751616 94%
tableauserverclient/server
   __init__.py90100% 
   exceptions.py40100% 
   filter.py2111 95%
   pager.py3511 97%
   query.py1431515 90%
   request_factory.py1092148148 86%
   request_options.py24222 99%
   server.py1671717 90%
   sort.py60100% 
tableauserverclient/server/endpoint
   __init__.py330100% 
   auth_endpoint.py761212 84%
   custom_views_endpoint.py1461111 92%
   data_acceleration_report_endpoint.py210100% 
   data_alert_endpoint.py972525 74%
   databases_endpoint.py1103030 73%
   datasources_endpoint.py3113636 88%
   default_permissions_endpoint.py4755 89%
   dqw_endpoint.py431616 63%
   endpoint.py1812020 89%
   exceptions.py6866 91%
   favorites_endpoint.py952222 77%
   fileuploads_endpoint.py510100% 
   flow_runs_endpoint.py651111 83%
   flow_task_endpoint.py2333 87%
   flows_endpoint.py2165858 73%
   groups_endpoint.py1271010 92%
   groupsets_endpoint.py7488 89%
   jobs_endpoint.py711212 83%
   linked_tasks_endpoint.py380100% 
   metadata_endpoint.py881414 84%
   metrics_endpoint.py5888 86%
   permissions_endpoint.py4755 89%
   projects_endpoint.py1532929 81%
   resource_tagger.py1354343 68%
   schedules_endpoint.py1001111 89%
   server_info_endpoint.py361010 72%
   sites_endpoint.py1262828 78%
   subscriptions_endpoint.py581515 74%
   tables_endpoint.py1083636 67%
   tasks_endpoint.py6577 89%
   users_endpoint.py1301616 88%
   views_endpoint.py1381010 93%
   virtual_connections_endpoint.py1151111 90%
   webhooks_endpoint.py571111 81%
   workbooks_endpoint.py3342727 92%
TOTAL10658133088% 

jorwoods and others added 23 commits October 10, 2024 12:09
* feat(exceptions): separate failed signin error

Closes #1472

This makes sign in failures their own class of exceptions, while still
inheriting from NotSignedInException to not break backwards
compatability for any existing client code. This should allow users
to get out more specific exceptions more easily on what failed with
their authentication request.

* fix(error): raise exception when ServerInfo.get fails

If ServerInfoItem.from_response gets invalid XML, raise the error
immediately instead of suppressing the error and setting an invalid
version number

* fix(test): add missing test asset

---------

Co-authored-by: Jordan Woods <[email protected]>
* docs: add docstrings to auth objects and endpoints

* docs: add parameters and examples to methods

---------

Co-authored-by: Jordan Woods <[email protected]>
* add TSC_FILESIZE_LIMIT_MB environment variable

* add hard limit for filesize limit at 64MB

* fix formatting

---------

Co-authored-by: Jac <[email protected]>
Update permissions_item.py

added PulseMetricDefine cap

Co-authored-by: Jac <[email protected]>
* refactor request_options, add language param

I have refactored the classes to separate options that can be used in querying content, and options that can be used for exporting data. "language" is only available for data exporting.
* docs: docstrings for user item and endpoint

* docs: add serverresponseerror details

---------

Co-authored-by: Jordan Woods <[email protected]>
Now that python 3.13 has released, test builds on actual
3.13 instead of the 3.13-dev build

Co-authored-by: Jordan Woods <[email protected]>
Add detailed docstrings to workbook item and endpoint
Co-authored-by: Jordan Woods <[email protected]>
Resource is not currently an actual type, but an enum-like
holder for literal values. Added a Union for str types to
make mypy happy.

Co-authored-by: Jordan Woods <[email protected]>
* fix: handle 0 item response in querysets

A flaw in the __iter__ logic introduced to handle scenarios
where a pagination element is not included in the response xml
resulted in an infinite loop. This PR introduces a few changes
to protect against this:

1. After running QuerySet._fetch_all(), if the result_cache is
empty, return instead of performing other comparisons.
2. Ensure that any non-None total_available is returned from
the PaginationItem's object.
3. In _fetch_all, check if there is a PaginationItem that has been
populated so as to not call the server side endpoint muliple times
before returning.

* fix: null out PaginationItem._page_number

Tests were failing because the fetch_all method added a second
check before fetching the next page. This fix will allow the
next page to be retrieved when used normally

---------

Co-authored-by: Jordan Woods <[email protected]>
* ci: cache dependencies for faster builds

* ci: cache for mypy and black

---------

Co-authored-by: Jordan Woods <[email protected]>
Adding custom views PDF & CSV export endpoints
Favor list comprehensions for readability, consistency, and
performance

Co-authored-by: Jordan Woods <[email protected]>
* Replace obsolete env package with os.environ
* Python 2.x to 3.x updates
* Fix some comments
* Remove workbook data acceleration; feature was removed in 2022
* Remove switch_site() example which is confusing in this context of demonstrating login
* Remove sample code showing group name encoding

This is no longer needed - ran the sample and verified that it works now.
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.

7 participants