Skip to content

Commit 7a8e54e

Browse files
authored
Merge pull request #1403 from jorwoods/jorwoods/typehint_auth
chore: type hint auth models
2 parents 1fc7b74 + 2adcacc commit 7a8e54e

File tree

1 file changed

+22
-10
lines changed

1 file changed

+22
-10
lines changed

tableauserverclient/models/tableau_auth.py

+22-10
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
import abc
2+
from typing import Dict, Optional
23

34

45
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:
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
3034
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:
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
5157
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:
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
7890
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:
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

Comments
 (0)