11import logging
2+ from typing import TYPE_CHECKING
3+ import warnings
24
35from defusedxml .ElementTree import fromstring
46
810
911from tableauserverclient .helpers .logging import logger
1012
13+ if TYPE_CHECKING :
14+ from tableauserverclient .models .site_item import SiteItem
15+ from tableauserverclient .models .tableau_auth import Credentials
16+
1117
1218class Auth (Endpoint ):
1319 class contextmgr (object ):
@@ -21,11 +27,21 @@ def __exit__(self, exc_type, exc_val, exc_tb):
2127 self ._callback ()
2228
2329 @property
24- def baseurl (self ):
30+ def baseurl (self ) -> str :
2531 return "{0}/auth" .format (self .parent_srv .baseurl )
2632
2733 @api (version = "2.0" )
28- def sign_in (self , auth_req ):
34+ def sign_in (self , auth_req : "Credentials" ) -> contextmgr :
35+ """
36+ Sign in to a Tableau Server or Tableau Online using a credentials object.
37+
38+ The credentials object can either be a TableauAuth object, a
39+ PersonalAccessTokenAuth object, or a JWTAuth object. This method now
40+ accepts them all. The object should be populated with the site_id and
41+ optionally a user_id to impersonate.
42+
43+ Creates a context manager that will sign out of the server upon exit.
44+ """
2945 url = "{0}/{1}" .format (self .baseurl , "signin" )
3046 signin_req = RequestFactory .Auth .signin_req (auth_req )
3147 server_response = self .parent_srv .session .post (
@@ -51,12 +67,12 @@ def sign_in(self, auth_req):
5167 return Auth .contextmgr (self .sign_out )
5268
5369 @api (version = "3.6" )
54- def sign_in_with_personal_access_token (self , auth_req ) :
70+ def sign_in_with_personal_access_token (self , auth_req : "Credentials" ) -> contextmgr :
5571 # We use the same request that username/password login uses.
5672 return self .sign_in (auth_req )
5773
5874 @api (version = "2.0" )
59- def sign_out (self ):
75+ def sign_out (self ) -> None :
6076 url = "{0}/{1}" .format (self .baseurl , "signout" )
6177 # If there are no auth tokens you're already signed out. No-op
6278 if not self .parent_srv .is_signed_in ():
@@ -66,7 +82,7 @@ def sign_out(self):
6682 logger .info ("Signed out" )
6783
6884 @api (version = "2.6" )
69- def switch_site (self , site_item ) :
85+ def switch_site (self , site_item : "SiteItem" ) -> contextmgr :
7086 url = "{0}/{1}" .format (self .baseurl , "switchSite" )
7187 switch_req = RequestFactory .Auth .switch_req (site_item .content_url )
7288 try :
@@ -87,7 +103,7 @@ def switch_site(self, site_item):
87103 return Auth .contextmgr (self .sign_out )
88104
89105 @api (version = "3.10" )
90- def revoke_all_server_admin_tokens (self ):
106+ def revoke_all_server_admin_tokens (self ) -> None :
91107 url = "{0}/{1}" .format (self .baseurl , "revokeAllServerAdminTokens" )
92108 self .post_request (url , "" )
93109 logger .info ("Revoked all tokens for all server admins" )
0 commit comments