11import abc
2+ from typing import Optional
23
34
45class Credentials (abc .ABC ):
5- def __init__ (self , site_id = None , user_id_to_impersonate = None ):
6+ def __init__ (self , site_id : Optional [ str ] = None , user_id_to_impersonate : Optional [ str ] = None ) -> None :
67 self .site_id = site_id or ""
78 self .user_id_to_impersonate = user_id_to_impersonate or None
89
910 @property
1011 @abc .abstractmethod
11- def credentials (self ):
12- credentials = "Credentials can be username/password, Personal Access Token, or JWT"
13- + "This method returns values to set as an attribute on the credentials element of the request"
12+ def credentials (self ) -> dict [str , str ]:
13+ credentials = ("Credentials can be username/password, Personal Access Token, or JWT"
14+ "This method returns values to set as an attribute on the credentials element of the request" )
15+ return {"key" : "value" }
1416
1517 @abc .abstractmethod
1618 def __repr__ (self ):
@@ -28,15 +30,15 @@ def deprecate_site_attribute():
2830
2931# The traditional auth type: username/password
3032class TableauAuth (Credentials ):
31- def __init__ (self , username , password , site_id = None , user_id_to_impersonate = None ):
33+ def __init__ (self , username : str , password : str , site_id : Optional [ str ] = None , user_id_to_impersonate : Optional [ str ] = None ) -> None :
3234 super ().__init__ (site_id , user_id_to_impersonate )
3335 if password is None :
3436 raise TabError ("Must provide a password when using traditional authentication" )
3537 self .password = password
3638 self .username = username
3739
3840 @property
39- def credentials (self ):
41+ def credentials (self ) -> dict [ str , str ] :
4042 return {"name" : self .username , "password" : self .password }
4143
4244 def __repr__ (self ):
@@ -49,15 +51,15 @@ def __repr__(self):
4951
5052# A Tableau-generated Personal Access Token
5153class PersonalAccessTokenAuth (Credentials ):
52- def __init__ (self , token_name , personal_access_token , site_id = None , user_id_to_impersonate = None ):
54+ def __init__ (self , token_name : str , personal_access_token : str , site_id : Optional [ str ] = None , user_id_to_impersonate : Optional [ str ] = None ) -> None :
5355 if personal_access_token is None or token_name is None :
5456 raise TabError ("Must provide a token and token name when using PAT authentication" )
5557 super ().__init__ (site_id = site_id , user_id_to_impersonate = user_id_to_impersonate )
5658 self .token_name = token_name
5759 self .personal_access_token = personal_access_token
5860
5961 @property
60- def credentials (self ):
62+ def credentials (self ) -> dict [ str , str ] :
6163 return {
6264 "personalAccessTokenName" : self .token_name ,
6365 "personalAccessTokenSecret" : self .personal_access_token ,
@@ -76,14 +78,14 @@ def __repr__(self):
7678
7779# A standard JWT generated specifically for Tableau
7880class JWTAuth (Credentials ):
79- def __init__ (self , jwt : str , site_id = None , user_id_to_impersonate = None ):
81+ def __init__ (self , jwt : str , site_id : Optional [ str ] = None , user_id_to_impersonate : Optional [ str ] = None ) -> None :
8082 if jwt is None :
8183 raise TabError ("Must provide a JWT token when using JWT authentication" )
8284 super ().__init__ (site_id , user_id_to_impersonate )
8385 self .jwt = jwt
8486
8587 @property
86- def credentials (self ):
88+ def credentials (self ) -> dict [ str , str ] :
8789 return {"jwt" : self .jwt }
8890
8991 def __repr__ (self ):
0 commit comments