1
1
import abc
2
+ from typing import Optional
2
3
3
4
4
5
class 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 :
6
7
self .site_id = site_id or ""
7
8
self .user_id_to_impersonate = user_id_to_impersonate or None
8
9
9
10
@property
10
11
@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" }
14
16
15
17
@abc .abstractmethod
16
18
def __repr__ (self ):
@@ -28,15 +30,15 @@ def deprecate_site_attribute():
28
30
29
31
# The traditional auth type: username/password
30
32
class 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 :
32
34
super ().__init__ (site_id , user_id_to_impersonate )
33
35
if password is None :
34
36
raise TabError ("Must provide a password when using traditional authentication" )
35
37
self .password = password
36
38
self .username = username
37
39
38
40
@property
39
- def credentials (self ):
41
+ def credentials (self ) -> dict [ str , str ] :
40
42
return {"name" : self .username , "password" : self .password }
41
43
42
44
def __repr__ (self ):
@@ -49,15 +51,15 @@ def __repr__(self):
49
51
50
52
# A Tableau-generated Personal Access Token
51
53
class 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 :
53
55
if personal_access_token is None or token_name is None :
54
56
raise TabError ("Must provide a token and token name when using PAT authentication" )
55
57
super ().__init__ (site_id = site_id , user_id_to_impersonate = user_id_to_impersonate )
56
58
self .token_name = token_name
57
59
self .personal_access_token = personal_access_token
58
60
59
61
@property
60
- def credentials (self ):
62
+ def credentials (self ) -> dict [ str , str ] :
61
63
return {
62
64
"personalAccessTokenName" : self .token_name ,
63
65
"personalAccessTokenSecret" : self .personal_access_token ,
@@ -76,14 +78,14 @@ def __repr__(self):
76
78
77
79
# A standard JWT generated specifically for Tableau
78
80
class 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 :
80
82
if jwt is None :
81
83
raise TabError ("Must provide a JWT token when using JWT authentication" )
82
84
super ().__init__ (site_id , user_id_to_impersonate )
83
85
self .jwt = jwt
84
86
85
87
@property
86
- def credentials (self ):
88
+ def credentials (self ) -> dict [ str , str ] :
87
89
return {"jwt" : self .jwt }
88
90
89
91
def __repr__ (self ):
0 commit comments