Merge pull request #4539 from pabloem/static-runtimevalueprovider
[BEAM-3570] Adding a static getter for RuntimeValueProvider.
diff --git a/sdks/python/apache_beam/options/value_provider.py b/sdks/python/apache_beam/options/value_provider.py
index 291440d..09b4a44 100644
--- a/sdks/python/apache_beam/options/value_provider.py
+++ b/sdks/python/apache_beam/options/value_provider.py
@@ -78,17 +78,22 @@
def is_accessible(self):
return RuntimeValueProvider.runtime_options is not None
+ @classmethod
+ def get_value(cls, option_name, value_type, default_value):
+ candidate = RuntimeValueProvider.runtime_options.get(option_name)
+ if candidate:
+ return value_type(candidate)
+ else:
+ return default_value
+
def get(self):
if RuntimeValueProvider.runtime_options is None:
raise error.RuntimeValueProviderError(
'%s.get() not called from a runtime context' % self)
- candidate = RuntimeValueProvider.runtime_options.get(self.option_name)
- if candidate:
- value = self.value_type(candidate)
- else:
- value = self.default_value
- return value
+ return RuntimeValueProvider.get_value(self.option_name,
+ self.value_type,
+ self.default_value)
@classmethod
def set_runtime_options(cls, pipeline_options):
diff --git a/sdks/python/apache_beam/runners/worker/operations.py b/sdks/python/apache_beam/runners/worker/operations.py
index 8a072e8..3eecae0 100644
--- a/sdks/python/apache_beam/runners/worker/operations.py
+++ b/sdks/python/apache_beam/runners/worker/operations.py
@@ -288,8 +288,8 @@
assert self.side_input_maps is None
# Get experiments active in the worker to check for side input metrics exp.
- experiments = set(RuntimeValueProvider(
- 'experiments', str, '').get().split(','))
+ experiments = set(
+ RuntimeValueProvider.get_value('experiments', str, '').split(','))
# We will read the side inputs in the order prescribed by the
# tags_and_types argument because this is exactly the order needed to
diff --git a/sdks/python/apache_beam/runners/worker/sideinputs.py b/sdks/python/apache_beam/runners/worker/sideinputs.py
index 8b7e14e..cc405e0 100644
--- a/sdks/python/apache_beam/runners/worker/sideinputs.py
+++ b/sdks/python/apache_beam/runners/worker/sideinputs.py
@@ -106,7 +106,7 @@
def _reader_thread(self):
# pylint: disable=too-many-nested-blocks
experiments = set(
- RuntimeValueProvider('experiments', str, '').get().split(','))
+ RuntimeValueProvider.get_value('experiments', str, '').split(','))
try:
while True:
try: