Skip to content

feat(samples): sample for reading connector-specific connection attrs - #1880

Open
jacalata wants to merge 3 commits into
developmentfrom
jac/1807-document-api-sample
Open

jacalata wants to merge 3 commits into
developmentfrom
jac/1807-document-api-sample

Conversation

@jacalata

Copy link
Copy Markdown
Contributor

Relevant to #1807, #1571, #569, #353, #160.

Motivation

The REST API's <connection> element surfaces only generic fields (id, type, serverAddress, serverPort, userName, embedPassword, authenticationType, queryTaggingEnabled). Connector-specific attributes — Oracle service, Snowflake schema, Teradata query-band, initial SQL, etc. — live inside the workbook or datasource file itself and aren't reachable via ConnectionItem.

Behavior

Adds samples/inspect_connection_details.py. Downloads the workbook or datasource via TSC, parses it with the community tableaudocumentapi library, and prints the connector-specific attributes that don't appear on the REST connection.

Test plan

Verified against a live Tableau Cloud site: on a SQL Server datasource, the sample returns dbname / schema values that are None on the REST ConnectionItem.

…r-specific attrs

The REST API's <connection> element only surfaces generic fields (id, type,
serverAddress, serverPort, userName, embedPassword, authenticationType,
queryTaggingEnabled). Connector-specific attributes -- Oracle service, Snowflake
schema, Teradata query-band, initial SQL, etc. -- live inside the workbook or
datasource file itself. This sample downloads the file via TSC and parses it
with the community `tableaudocumentapi` library to reach the extra attributes.

Verified against a live Tableau Cloud site: on a SQL Server datasource, the
sample returns dbname/schema values that are None on the REST ConnectionItem.

Addresses the recurring backlog around connector-specific connection metadata
(#1807, #1571, #569, #353, #160) by pointing users at the existing
download-and-parse path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings September 18, 2026 07:02
@github-actions

github-actions Bot commented Sep 18, 2026

Copy link
Copy Markdown

Coverage

Coverage Report
FileStmtsMissCoverMissing
tableauserverclient
   __init__.py50100% 
   config.py150100% 
   datetime_helpers.py2511 96%
   exponential_backoff.py200100% 
   filesys_helpers.py310100% 
   namespace.py2533 88%
tableauserverclient/bin
   __init__.py20100% 
   _version.py358212212 41%
tableauserverclient/helpers
   __init__.py10100% 
   logging.py20100% 
   strings.py3111 97%
tableauserverclient/models
   __init__.py460100% 
   collection_item.py4177 83%
   column_item.py553232 42%
   connection_credentials.py351111 69%
   connection_item.py941414 85%
   custom_view_item.py1442121 85%
   data_acceleration_report_item.py5411 98%
   data_alert_item.py15844 97%
   data_freshness_policy_item.py1551515 90%
   database_item.py2073636 83%
   datasource_item.py3001212 96%
   dqw_item.py10455 95%
   exceptions.py40100% 
   extensions_item.py13244 97%
   extract_item.py4444 91%
   favorites_item.py6988 88%
   fileupload_item.py190100% 
   flow_item.py1491010 93%
   flow_run_item.py710100% 
   group_item.py8966 93%
   groupset_item.py4977 86%
   interval_item.py1823232 82%
   job_item.py1921010 95%
   linked_tasks_item.py7911 99%
   location_item.py2922 93%
   metric_item.py1291313 90%
   oidc_item.py6333 95%
   pagination_item.py3411 97%
   permissions_item.py1111212 89%
   project_item.py2073131 85%
   property_decorators.py1001818 82%
   reference_item.py2622 92%
   revision_item.py5911 98%
   schedule_item.py20966 97%
   server_info_item.py3777 81%
   site_item.py6361313 98%
   subscription_item.py10122 98%
   table_item.py1191818 85%
   tableau_auth.py612525 59%
   tableau_types.py2711 96%
   tag_item.py150100% 
   target.py60100% 
   task_item.py5622 96%
   user_item.py3381717 95%
   view_item.py2201616 93%
   virtual_connection_item.py6488 88%
   webhook_item.py6911 99%
   workbook_item.py3621616 96%
tableauserverclient/server
   __init__.py90100% 
   exceptions.py40100% 
   filter.py2911 97%
   pager.py3311 97%
   query.py1431515 90%
   request_factory.py1333195195 85%
   request_options.py38655 99%
   server.py2492525 90%
   sort.py60100% 
tableauserverclient/server/endpoint
   __init__.py350100% 
   auth_endpoint.py731010 86%
   custom_views_endpoint.py1521212 92%
   data_acceleration_report_endpoint.py210100% 
   data_alert_endpoint.py942323 76%
   databases_endpoint.py1113030 73%
   datasources_endpoint.py3233333 90%
   default_permissions_endpoint.py4433 93%
   dqw_endpoint.py451616 64%
   endpoint.py2602525 90%
   exceptions.py7966 92%
   extensions_endpoint.py310100% 
   favorites_endpoint.py942222 77%
   fileuploads_endpoint.py510100% 
   flow_runs_endpoint.py6299 85%
   flow_task_endpoint.py2122 90%
   flows_endpoint.py1985353 73%
   groups_endpoint.py12699 93%
   groupsets_endpoint.py7277 90%
   jobs_endpoint.py6899 87%
   linked_tasks_endpoint.py370100% 
   metadata_endpoint.py881414 84%
   metrics_endpoint.py5566 89%
   oidc_endpoint.py4211 98%
   permissions_endpoint.py4433 93%
   projects_endpoint.py1782424 87%
   resource_tagger.py1273535 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.py17077 96%
   views_endpoint.py15099 94%
   virtual_connections_endpoint.py1131010 91%
   webhooks_endpoint.py5499 83%
   workbooks_endpoint.py3382222 93%
TOTAL12127142788% 

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The sample documents Python 3.7, but the repository requires Python 3.10 or later.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Adds a sample that downloads Tableau workbooks or datasources and reads connector-specific connection attributes using Tableau Document API.

Changes:

  • Adds workbook and datasource inspection helpers.
  • Prints database, schema, service, query-band, and initial SQL attributes.
  • Adds CLI authentication and download handling.
File summaries
File Description
samples/inspect_connection_details.py New connection-detail inspection sample.
Review details
  • Files reviewed: 1/1 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread samples/inspect_connection_details.py Outdated
jacalata and others added 2 commits September 18, 2026 00:53
Fold the inline sign-in argparse block into the shared helper landed
in #1843. Users of this sample now get env / .env / interactive-prompt
credential resolution, JWT + username/password auth in addition to PAT,
and a clear ValueError when --server is missing under non-TTY, instead
of an opaque 400/401 inside TSC.

Also update the header's Python-version claim from 3.7 to 3.10 to match
`pyproject.toml`'s `requires-python = ">=3.10"`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings September 18, 2026 19:55

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The documented dependency name is incorrect, so installation fails before the sample can run.

Get a fresh assessment by requesting another Copilot review.

Review details
  • Files reviewed: 1/1 changed files
  • Comments generated: 3
  • Review effort level: Lite

# with the community `tableaudocumentapi` library to reach the extra attributes.
#
# Requires:
# pip install tableauserverclient tableau-document-api
from tableaudocumentapi import Datasource, Workbook
except ImportError:
raise SystemExit(
"This sample requires the tableau-document-api package.\n" "Install it with: pip install tableau-document-api"
Comment on lines +58 to +59
# Every attribute below comes from the raw XML embedded in the file; none of
# these are exposed by TSC's ConnectionItem today.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants