@@ -71,7 +71,8 @@ def __init__(self):
7171
7272 @classmethod
7373 def build (cls , variables : JSONDict | None ):
74- variables = cls ._transform_variables (variables )
74+ if variables is None :
75+ variables = {}
7576
7677 if cls .snippet :
7778 split_snippet = list (filter (None , cls .snippet .split ("\n " )))
@@ -105,9 +106,8 @@ def build(cls, variables: JSONDict | None):
105106 return d
106107
107108 @classmethod
108- def _transform_variables (cls , variables : JSONDict | None ) -> JSONDict :
109- if not variables :
110- return {}
109+ def transform_variables (cls , variables : JSONDict | None ) -> JSONDict :
110+ variables = variables .copy () if variables else {}
111111
112112 for name , value in variables .items ():
113113 if transformer := cls .variable_transformers .get (name ):
@@ -162,22 +162,32 @@ def __init__(self, api: str, token: str):
162162 }
163163 )
164164
165- def run (self , name : str , variables : JSONDict | None = None ) -> JSONDict :
166- """Run a named graphql snippet."""
165+ def run (
166+ self , name : str , variables : JSONDict | None = None , transform_variables : bool = False
167+ ) -> JSONDict :
168+ """Run a named graphql snippet by name."""
167169 snippet = GRAPHQL_SNIPPETS .get (name )
168170 if not snippet :
169171 raise UnknownSnippet (name )
170172
171- return self ._run_snippet (snippet , variables = variables )
173+ return self .run_snippet (
174+ snippet , variables = variables , transform_variables = transform_variables
175+ )
172176
173177 def run_query (self , query : str ) -> JSONDict :
174178 """Run a literal GraphQL query string."""
175179 snippet = type ("AdHocSnippet" , (AdHocSnippet ,), {"snippet" : query })
176- return self ._run_snippet (snippet )
180+ return self .run_snippet (snippet )
177181
178- def _run_snippet (
179- self , snippet : type [StackletGraphqlSnippet ], variables : JSONDict | None = None
182+ def run_snippet (
183+ self ,
184+ snippet : type [StackletGraphqlSnippet ],
185+ variables : JSONDict | None = None ,
186+ transform_variables : bool = False ,
180187 ) -> JSONDict :
188+ """Run a graphql snippet."""
189+ if transform_variables :
190+ variables = snippet .transform_variables (variables )
181191 request = snippet .build (variables )
182192 self .log .debug ("Request: %s" % json .dumps (request , indent = 2 ))
183193 res = self .session .post (self .api , json = request )
0 commit comments