1
1
import abc
2
+ from typing import Dict , 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 = (
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" }
14
18
15
19
@abc .abstractmethod
16
20
def __repr__ (self ):
@@ -28,15 +32,17 @@ def deprecate_site_attribute():
28
32
29
33
# The traditional auth type: username/password
30
34
class 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 :
32
38
super ().__init__ (site_id , user_id_to_impersonate )
33
39
if password is None :
34
40
raise TabError ("Must provide a password when using traditional authentication" )
35
41
self .password = password
36
42
self .username = username
37
43
38
44
@property
39
- def credentials (self ):
45
+ def credentials (self ) -> Dict [ str , str ] :
40
46
return {"name" : self .username , "password" : self .password }
41
47
42
48
def __repr__ (self ):
@@ -49,15 +55,21 @@ def __repr__(self):
49
55
50
56
# A Tableau-generated Personal Access Token
51
57
class 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 :
53
65
if personal_access_token is None or token_name is None :
54
66
raise TabError ("Must provide a token and token name when using PAT authentication" )
55
67
super ().__init__ (site_id = site_id , user_id_to_impersonate = user_id_to_impersonate )
56
68
self .token_name = token_name
57
69
self .personal_access_token = personal_access_token
58
70
59
71
@property
60
- def credentials (self ):
72
+ def credentials (self ) -> Dict [ str , str ] :
61
73
return {
62
74
"personalAccessTokenName" : self .token_name ,
63
75
"personalAccessTokenSecret" : self .personal_access_token ,
@@ -76,14 +88,14 @@ def __repr__(self):
76
88
77
89
# A standard JWT generated specifically for Tableau
78
90
class 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 :
80
92
if jwt is None :
81
93
raise TabError ("Must provide a JWT token when using JWT authentication" )
82
94
super ().__init__ (site_id , user_id_to_impersonate )
83
95
self .jwt = jwt
84
96
85
97
@property
86
- def credentials (self ):
98
+ def credentials (self ) -> Dict [ str , str ] :
87
99
return {"jwt" : self .jwt }
88
100
89
101
def __repr__ (self ):
0 commit comments