Skip to content

Commit cfe4b1b

Browse files
committed
Client init improvements
* Source `PIPEDREAM_*` env variables for config data such as project ID, environment, credentials, etc. * Add support for static access tokens
1 parent e5396a6 commit cfe4b1b

File tree

1 file changed

+26
-12
lines changed

1 file changed

+26
-12
lines changed

src/pipedream/pipedream.py

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,21 @@ class Pipedream(Client):
1414
def __init__(
1515
self,
1616
*,
17-
client_id: Optional[str] = None,
18-
client_secret: Optional[str] = None,
19-
project_id: Optional[str] = None,
20-
project_environment: ProjectEnvironment = "production",
17+
access_token: Optional[str] = os.getenv("PIPEDREAM_ACCESS_TOKEN"),
18+
client_id: Optional[str] = os.getenv("PIPEDREAM_CLIENT_ID"),
19+
client_secret: Optional[str] = os.getenv("PIPEDREAM_CLIENT_SECRET"),
20+
project_id: Optional[str] = os.getenv("PIPEDREAM_PROJECT_ID"),
21+
project_environment: ProjectEnvironment = os.getenv(
22+
"PIPEDREAM_PROJECT_ENVIRONMENT",
23+
"production",
24+
),
2125
environment: PipedreamEnvironment = PipedreamEnvironment.PROD,
2226
):
23-
project_id = project_id or os.getenv("PIPEDREAM_PROJECT_ID")
2427
if not project_id:
2528
raise ValueError("Project ID is required")
2629

2730
super().__init__(
31+
_token_getter_override=_new_token_getter(access_token),
2832
base_url=_get_base_url(environment),
2933
client_id=client_id,
3034
client_secret=client_secret,
@@ -38,24 +42,27 @@ class AsyncPipedream(AsyncClient):
3842
def __init__(
3943
self,
4044
*,
41-
client_id: Optional[str] = None,
42-
client_secret: Optional[str] = None,
43-
project_id: Optional[str] = None,
44-
project_environment: ProjectEnvironment = "production",
45+
access_token: Optional[str] = os.getenv("PIPEDREAM_ACCESS_TOKEN"),
46+
client_id: Optional[str] = os.getenv("PIPEDREAM_CLIENT_ID"),
47+
client_secret: Optional[str] = os.getenv("PIPEDREAM_CLIENT_SECRET"),
48+
project_id: Optional[str] = os.getenv("PIPEDREAM_PROJECT_ID"),
49+
project_environment: ProjectEnvironment = os.getenv(
50+
"PIPEDREAM_PROJECT_ENVIRONMENT",
51+
"production",
52+
),
4553
environment: PipedreamEnvironment = PipedreamEnvironment.PROD,
46-
**kwargs,
4754
):
48-
project_id = project_id or os.getenv("PIPEDREAM_PROJECT_ID")
55+
project_id = project_id
4956
if not project_id:
5057
raise ValueError("Project ID is required")
5158

5259
super().__init__(
60+
_token_getter_override=_new_token_getter(access_token),
5361
base_url=_get_base_url(environment),
5462
client_id=client_id,
5563
client_secret=client_secret,
5664
project_id=project_id,
5765
project_environment=project_environment,
58-
**kwargs,
5966
)
6067

6168

@@ -64,3 +71,10 @@ def _get_base_url(environment: PipedreamEnvironment) -> str:
6471
Returns the base URL for the given environment.
6572
"""
6673
return os.path.expandvars(environment.value)
74+
75+
76+
def _new_token_getter(access_token: Optional[str] = None):
77+
"""
78+
Returns a new token getter function that retrieves the access token.
79+
"""
80+
return (lambda: access_token) if access_token else None

0 commit comments

Comments
 (0)