@@ -138,10 +138,15 @@ def _affinity(self, other: "Provider"):
138138
139139 @functools .cache
140140 def with_extra_dependencies (self , dependencies : Iterable [str ]):
141- return self ._with_extra_dependencies (dependencies )
141+ result = self ._with_extra_dependencies (dependencies )
142+ if not hasattr (result , 'to_json' ):
143+ result .to_json = lambda : {'type' : type (result ).__name__ }
144+ return result
142145
143146 def _with_extra_dependencies (self , dependencies : Iterable [str ]):
144- raise ValueError ('This provider does not support additional dependencies.' )
147+ raise ValueError (
148+ 'This provider of type %s does not support additional dependencies.' %
149+ type (self ).__name__ )
145150
146151
147152def as_provider (name , provider_or_constructor ):
@@ -376,6 +381,8 @@ def is_path_or_urn(package):
376381 if is_path_or_urn (package ) else package for package in packages
377382 ]))
378383
384+ self ._packages = packages
385+
379386 def available (self ):
380387 return True # If we're running this script, we have Python installed.
381388
@@ -402,6 +409,10 @@ def _affinity(self, other: "Provider"):
402409 else :
403410 return super ()._affinity (other )
404411
412+ def _with_extra_dependencies (self , dependencies : Iterable [str ]):
413+ return ExternalPythonProvider (
414+ self ._urns , None , set (self ._packages ) + set (dependencies ))
415+
405416
406417@ExternalProvider .register_provider_type ('yaml' )
407418class YamlProvider (Provider ):
@@ -1013,6 +1024,11 @@ def create_transform(
10131024 yaml_create_transform : Any ) -> beam .PTransform :
10141025 return self ._transforms [typ ](self ._underlying_provider , ** config )
10151026
1027+ def _with_extra_dependencies (self , dependencies : Iterable [str ]):
1028+ return TranslatingProvider (
1029+ self ._transforms ,
1030+ self ._underlying_provider ._with_extra_dependencies (dependencies ))
1031+
10161032
10171033def create_java_builtin_provider ():
10181034 """Exposes built-in transforms from Java as well as Python to maximize
@@ -1292,6 +1308,14 @@ def underlying_provider(self):
12921308 def cache_artifacts (self ):
12931309 self ._underlying_provider .cache_artifacts ()
12941310
1311+ def _with_extra_dependencies (self , dependencies : Iterable [str ]):
1312+ return RenamingProvider (
1313+ self ._transforms ,
1314+ None ,
1315+ self ._mappings ,
1316+ self ._underlying_provider ._with_extra_dependencies (dependencies ),
1317+ self ._defaults )
1318+
12951319
12961320def _as_list (func ):
12971321 @functools .wraps (func )
0 commit comments