@@ -204,7 +204,78 @@ class SubprocessCommand(SkipDefaultFieldsReprMixin):
204
204
encoding : Optional [str ] = None
205
205
errors : Optional [str ] = None
206
206
207
- def Popen (self , ** kwargs ) -> subprocess .Popen :
207
+ # user, group, extra_groups, umask were added in 3.9
208
+ @overload
209
+ def Popen (
210
+ self ,
211
+ args : Optional [_CMD ] = ...,
212
+ universal_newlines : bool = ...,
213
+ * ,
214
+ text : Optional [bool ] = ...,
215
+ encoding : str ,
216
+ errors : Optional [str ] = ...,
217
+ ) -> subprocess .Popen [str ]:
218
+ ...
219
+
220
+ @overload
221
+ def Popen (
222
+ self ,
223
+ args : Optional [_CMD ] = ...,
224
+ universal_newlines : bool = ...,
225
+ * ,
226
+ text : Optional [bool ] = ...,
227
+ encoding : Optional [str ] = ...,
228
+ errors : str ,
229
+ ) -> subprocess .Popen [str ]:
230
+ ...
231
+
232
+ @overload
233
+ def Popen (
234
+ self ,
235
+ args : Optional [_CMD ] = ...,
236
+ * ,
237
+ universal_newlines : Literal [True ],
238
+ # where the *real* keyword only args start
239
+ text : Optional [bool ] = ...,
240
+ encoding : Optional [str ] = ...,
241
+ errors : Optional [str ] = ...,
242
+ ) -> subprocess .Popen [str ]:
243
+ ...
244
+
245
+ @overload
246
+ def Popen (
247
+ self ,
248
+ args : Optional [_CMD ] = ...,
249
+ universal_newlines : bool = ...,
250
+ * ,
251
+ text : Literal [True ],
252
+ encoding : Optional [str ] = ...,
253
+ errors : Optional [str ] = ...,
254
+ ) -> subprocess .Popen [str ]:
255
+ ...
256
+
257
+ @overload
258
+ def Popen (
259
+ self ,
260
+ args : Optional [_CMD ] = ...,
261
+ universal_newlines : Literal [False ] = ...,
262
+ * ,
263
+ text : Literal [None , False ] = ...,
264
+ encoding : None = ...,
265
+ errors : None = ...,
266
+ ) -> subprocess .Popen [bytes ]:
267
+ ...
268
+
269
+ def Popen (
270
+ self ,
271
+ args : Optional [_CMD ] = None ,
272
+ universal_newlines : Optional [bool ] = None ,
273
+ * ,
274
+ text : Optional [bool ] = None ,
275
+ encoding : Optional [str ] = None ,
276
+ errors : Optional [str ] = None ,
277
+ ** kwargs ,
278
+ ) -> subprocess .Popen [Any ]:
208
279
"""Run commands :class:`subprocess.Popen`, optionally overrides via kwargs.
209
280
210
281
Parameters
@@ -218,7 +289,17 @@ def Popen(self, **kwargs) -> subprocess.Popen:
218
289
>>> proc = cmd.Popen(stdout=subprocess.PIPE)
219
290
>>> proc.communicate() # doctest: +SKIP
220
291
"""
221
- return subprocess .Popen (** dataclasses .replace (self , ** kwargs ).__dict__ )
292
+ return subprocess .Popen (
293
+ ** dataclasses .replace (
294
+ self ,
295
+ args = args or self .args ,
296
+ encoding = encoding ,
297
+ errors = errors ,
298
+ text = text ,
299
+ universal_newlines = universal_newlines ,
300
+ ** kwargs ,
301
+ ).__dict__ ,
302
+ )
222
303
223
304
def check_call (self , ** kwargs ) -> int :
224
305
"""Run command :func:`subprocess.check_call`, optionally overrides via kwargs.
0 commit comments