11import abc
2+ from typing import Dict , 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 = (
14+ "Credentials can be username/password, Personal Access Token, or JWT"
15+ "This method returns values to set as an attribute on the credentials element of the request"
16+ )
17+ return {"key" : "value" }
1418
1519 @abc .abstractmethod
1620 def __repr__ (self ):
@@ -28,15 +32,17 @@ def deprecate_site_attribute():
2832
2933# The traditional auth type: username/password
3034class TableauAuth (Credentials ):
31- def __init__ (self , username , password , site_id = None , user_id_to_impersonate = None ):
35+ def __init__ (
36+ self , username : str , password : str , site_id : Optional [str ] = None , user_id_to_impersonate : Optional [str ] = None
37+ ) -> None :
3238 super ().__init__ (site_id , user_id_to_impersonate )
3339 if password is None :
3440 raise TabError ("Must provide a password when using traditional authentication" )
3541 self .password = password
3642 self .username = username
3743
3844 @property
39- def credentials (self ):
45+ def credentials (self ) -> Dict [ str , str ] :
4046 return {"name" : self .username , "password" : self .password }
4147
4248 def __repr__ (self ):
@@ -49,15 +55,21 @@ def __repr__(self):
4955
5056# A Tableau-generated Personal Access Token
5157class PersonalAccessTokenAuth (Credentials ):
52- def __init__ (self , token_name , personal_access_token , site_id = None , user_id_to_impersonate = None ):
58+ def __init__ (
59+ self ,
60+ token_name : str ,
61+ personal_access_token : str ,
62+ site_id : Optional [str ] = None ,
63+ user_id_to_impersonate : Optional [str ] = None ,
64+ ) -> None :
5365 if personal_access_token is None or token_name is None :
5466 raise TabError ("Must provide a token and token name when using PAT authentication" )
5567 super ().__init__ (site_id = site_id , user_id_to_impersonate = user_id_to_impersonate )
5668 self .token_name = token_name
5769 self .personal_access_token = personal_access_token
5870
5971 @property
60- def credentials (self ):
72+ def credentials (self ) -> Dict [ str , str ] :
6173 return {
6274 "personalAccessTokenName" : self .token_name ,
6375 "personalAccessTokenSecret" : self .personal_access_token ,
@@ -76,14 +88,14 @@ def __repr__(self):
7688
7789# A standard JWT generated specifically for Tableau
7890class JWTAuth (Credentials ):
79- def __init__ (self , jwt : str , site_id = None , user_id_to_impersonate = None ):
91+ def __init__ (self , jwt : str , site_id : Optional [ str ] = None , user_id_to_impersonate : Optional [ str ] = None ) -> None :
8092 if jwt is None :
8193 raise TabError ("Must provide a JWT token when using JWT authentication" )
8294 super ().__init__ (site_id , user_id_to_impersonate )
8395 self .jwt = jwt
8496
8597 @property
86- def credentials (self ):
98+ def credentials (self ) -> Dict [ str , str ] :
8799 return {"jwt" : self .jwt }
88100
89101 def __repr__ (self ):
0 commit comments