Skip to content

Commit f555d2c

Browse files
authored
Merge pull request #103 from dpguthrie/sl-client
Semantic Layer Client
2 parents 0577caf + 2d35b82 commit f555d2c

File tree

10 files changed

+1130
-32
lines changed

10 files changed

+1130
-32
lines changed

dbtc/client/admin.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,8 @@ def wrapper(self, *args, **kwargs):
6767

6868

6969
class _AdminClient(_Client):
70-
def __init__(self, **kwargs):
71-
super().__init__(**kwargs)
72-
self.session = requests.Session()
73-
self.session.headers = self.headers
70+
def __init__(self, session, **kwargs):
71+
super().__init__(session, **kwargs)
7472

7573
_path = None
7674

dbtc/client/base.py

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from typing import Callable, Optional
77

88
# third party
9+
import requests
910
import rudder_analytics
1011

1112
# first party
@@ -19,25 +20,34 @@
1920
class _Client(abc.ABC):
2021
def __init__(
2122
self,
23+
session: requests.Session,
2224
*,
2325
api_key: str = None,
2426
service_token: str = None,
2527
host: str = None,
2628
do_not_track: bool = False,
29+
environment_id: int = None,
30+
use_beta_endpoint: bool = True,
2731
):
28-
self.api_key: Optional[str] = api_key or os.getenv('DBT_CLOUD_API_KEY', None)
32+
self.api_key: Optional[str] = api_key or os.getenv("DBT_CLOUD_API_KEY", None)
2933
self.service_token: Optional[str] = service_token or os.getenv(
30-
'DBT_CLOUD_SERVICE_TOKEN', None
34+
"DBT_CLOUD_SERVICE_TOKEN", None
3135
)
3236
self._host: Optional[str] = host or os.getenv(
33-
'DBT_CLOUD_HOST', self.DEFAULT_DOMAIN
37+
"DBT_CLOUD_HOST", self.DEFAULT_DOMAIN
3438
)
39+
self.environment_id = environment_id or os.getenv(
40+
"DBT_CLOUD_ENVIRONMENT_ID", None
41+
)
42+
self._use_beta = use_beta_endpoint
3543
self.do_not_track: bool = do_not_track
3644
self._anonymous_id: str = str(uuid.uuid4())
3745
self._called_from: Optional[str] = None
3846
self.console = err_console
47+
self.session = session
48+
self.session.headers = self.headers
3949

40-
DEFAULT_DOMAIN = 'cloud.getdbt.com'
50+
DEFAULT_DOMAIN = "cloud.getdbt.com"
4151

4252
@property
4353
@abc.abstractmethod
@@ -51,29 +61,29 @@ def _header_property(self):
5161

5262
@property
5363
def _base_url(self):
54-
return f'https://{self._host}{self._path}'
64+
return f"https://{self._host}{self._path}"
5565

5666
@property
5767
def headers(self):
5868
return {
59-
'Authorization': f'Token {getattr(self, self._header_property)}',
60-
'Content-Type': 'application/json',
69+
"Authorization": f"Bearer {getattr(self, self._header_property)}",
70+
"Content-Type": "application/json",
6171
}
6272

6373
def full_url(self, path: str = None):
6474
if path is not None:
65-
return f'{self._base_url}{path}'
75+
return f"{self._base_url}{path}"
6676

6777
return self._base_url
6878

6979
def _send_track(self, event_name: str, func: Callable, *args, **kwargs):
70-
func_args = [a for a in inspect.getfullargspec(func).args if a != 'self']
80+
func_args = [a for a in inspect.getfullargspec(func).args if a != "self"]
7181
properties = {
72-
'method': func.__name__,
73-
'dbtc_version': __version__,
74-
'called_from': self._called_from,
82+
"method": func.__name__,
83+
"dbtc_version": __version__,
84+
"called_from": self._called_from,
7585
**dict(zip(func_args, args)),
7686
**kwargs,
7787
}
78-
properties = {k: v for k, v in properties.items() if not k.endswith('_id')}
88+
properties = {k: v for k, v in properties.items() if not k.endswith("_id")}
7989
rudder_analytics.track(self._anonymous_id, event_name, properties)

dbtc/client/main.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
1+
# third party
2+
import requests
3+
14
# first party
25
from dbtc.client.admin import _AdminClient
36
from dbtc.client.metadata import _MetadataClient
7+
from dbtc.client.semantic_layer import _SemanticLayerClient
48

59

610
class dbtCloudClient:
711
def __init__(self, **kwargs):
8-
self.cloud = _AdminClient(**kwargs)
9-
self.metadata = _MetadataClient(**kwargs)
12+
session = requests.Session()
13+
self.cloud = _AdminClient(session, **kwargs)
14+
self.metadata = _MetadataClient(session, **kwargs)
15+
self.sl = _SemanticLayerClient(session, **kwargs)

dbtc/client/metadata.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
# stdlib
22
from typing import Any, Dict, List, Union
33

4-
# third party
5-
import requests
6-
74
# first party
85
from dbtc.client.base import _Client
96

107

118
class _MetadataClient(_Client):
12-
def __init__(self, **kwargs):
13-
self._use_beta = kwargs.pop("use_beta_endpoint", True)
14-
super().__init__(**kwargs)
15-
self.session = requests.Session()
16-
self.session.headers = self.headers
9+
def __init__(self, session, **kwargs):
10+
super().__init__(session, **kwargs)
1711

1812
_header_property = "service_token"
1913

0 commit comments

Comments
 (0)