Skip to content

chore: use stdlib typing for Concatenate/ParamSpec/overload; align Black target-version - #1839

Open
jacalata wants to merge 1 commit into
developmentfrom
jac/typing-stdlib-quickwins
Open

chore: use stdlib typing for Concatenate/ParamSpec/overload; align Black target-version#1839
jacalata wants to merge 1 commit into
developmentfrom
jac/typing-stdlib-quickwins

Conversation

@jacalata

Copy link
Copy Markdown
Contributor

Small housekeeping. Two adjustments that are safe today under the current requires-python = ">=3.10":

  • Concatenate, ParamSpec, and overload all exist in stdlib typing from Python 3.10 (or earlier). Move them off typing_extensions. Self stays on typing_extensions since stdlib typing.Self is 3.11+ and we still support 3.10.
  • Black target-version drops py39 (below the supported minimum) and adds py314 (already in the CI matrix).

No behavior change; mypy, pytest, and black --check are all clean locally.

A separate followup issue tracks the broader 3.10-EOL cleanup (including moving Self and removing the tomli fallback).

…typing

These three names live in stdlib `typing` since Python 3.10, which is the
repo's supported minimum (`requires-python = ">=3.10"`). Only `Self`
still requires `typing_extensions` for 3.10 users, so keep that import
in place until 3.10 support drops.

Also drop `py39` from Black's `target-version` array and add `py314` --
py39 is below the supported minimum, py314 is already in the CI test
matrix.

No behavior change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

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% 
   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.py1871010 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.py3101818 94%
   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.py1882323 88%
   sort.py60100% 
tableauserverclient/server/endpoint
   __init__.py350100% 
   auth_endpoint.py771111 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.py2112020 91%
   exceptions.py7766 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.py18388 96%
   views_endpoint.py15099 94%
   virtual_connections_endpoint.py1131010 91%
   webhooks_endpoint.py5499 83%
   workbooks_endpoint.py3382222 93%
TOTAL12000142388% 

@jacalata
jacalata requested a lite review from Copilot August 6, 2026 21:22
@jacalata
jacalata enabled auto-merge (squash) August 6, 2026 21:23

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.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Updates typing imports to rely more on the stdlib typing module and adjusts Black’s configured target Python versions.

Changes:

  • Replace typing_extensions usage with stdlib typing for ParamSpec/Concatenate where applicable
  • Split typing imports in jobs_endpoint.py (overload from typing, Self from typing_extensions)
  • Update Black target-version by dropping py39 and adding py314

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
tableauserverclient/server/request_factory.py Switch ParamSpec/Concatenate imports to stdlib typing
tableauserverclient/server/endpoint/jobs_endpoint.py Move overload to stdlib typing while keeping Self on typing_extensions
tableauserverclient/server/endpoint/endpoint.py Switch ParamSpec/Concatenate imports to stdlib typing
pyproject.toml Update Black target-version list (drop 3.9, add 3.14)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@@ -1,12 +1,9 @@
import xml.etree.ElementTree as ET
from typing import Any, Callable, TypeVar, TYPE_CHECKING
from typing import Any, Callable, Concatenate, ParamSpec, TypeVar, TYPE_CHECKING
Comment on lines 11 to +17
from typing import (
Any,
Callable,
Concatenate,
Generic,
Optional,
ParamSpec,
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