Abacn commented on code in PR #38749:
URL: https://github.com/apache/beam/pull/38749#discussion_r3329159259


##########
sdks/python/apache_beam/metrics/metric_test.py:
##########
@@ -121,6 +123,78 @@ def test_get_namespace_error(self):
     with self.assertRaises(ValueError):
       Metrics.get_namespace(object())
 
+  def test_metrics_flag(self):
+    """Mirrors Java MetricsTest.testMetricsFlag for the three disable* 
experiments."""
+    MetricsFlag.reset()
+    self.assertFalse(MetricsFlag.counter_disabled)
+    self.assertFalse(MetricsFlag.string_set_disabled)
+    self.assertFalse(MetricsFlag.bounded_trie_disabled)
+
+    options = PipelineOptions(['--experiments=disableCounterMetrics'])
+    MetricsFlag.set_default_pipeline_options(options)
+    self.assertTrue(MetricsFlag.counter_disabled)
+    self.assertFalse(MetricsFlag.string_set_disabled)
+    self.assertFalse(MetricsFlag.bounded_trie_disabled)
+
+    MetricsFlag.reset()
+    options = PipelineOptions(['--experiments=disableStringSetMetrics'])
+    MetricsFlag.set_default_pipeline_options(options)
+    self.assertFalse(MetricsFlag.counter_disabled)
+    self.assertTrue(MetricsFlag.string_set_disabled)
+    self.assertFalse(MetricsFlag.bounded_trie_disabled)
+
+    MetricsFlag.reset()
+    options = PipelineOptions(['--experiments=disableBoundedTrieMetrics'])
+    MetricsFlag.set_default_pipeline_options(options)
+    self.assertFalse(MetricsFlag.counter_disabled)
+    self.assertFalse(MetricsFlag.string_set_disabled)
+    self.assertTrue(MetricsFlag.bounded_trie_disabled)
+
+    MetricsFlag.reset()
+    options = PipelineOptions([
+        '--experiments=disableCounterMetrics',
+        '--experiments=disableStringSetMetrics',
+        '--experiments=disableBoundedTrieMetrics',
+    ])
+    MetricsFlag.set_default_pipeline_options(options)
+    self.assertTrue(MetricsFlag.counter_disabled)
+    self.assertTrue(MetricsFlag.string_set_disabled)
+    self.assertTrue(MetricsFlag.bounded_trie_disabled)
+
+    MetricsFlag.reset()

Review Comment:
   Consider wrap the test into a try block and then
   ```
   finally:
     MetricsFlag.reset()
   ```
   as below



##########
sdks/python/apache_beam/metrics/metric.py:
##########
@@ -46,18 +46,60 @@
 from apache_beam.metrics.metricbase import Histogram
 from apache_beam.metrics.metricbase import MetricName
 from apache_beam.metrics.metricbase import StringSet
+from apache_beam.options.pipeline_options import DebugOptions
 
 if TYPE_CHECKING:
   from apache_beam.internal.metrics.metric import MetricLogger
   from apache_beam.metrics.execution import MetricKey
   from apache_beam.metrics.metricbase import Metric
+  from apache_beam.options.pipeline_options import PipelineOptions
   from apache_beam.utils.histogram import BucketType
 
 __all__ = ['Metrics', 'MetricsFilter', 'Lineage']
 
 _LOGGER = logging.getLogger(__name__)
 
 
+class MetricsFlag(object):
+  """Process-wide flags controlling which user metric kinds are emitted.
+
+  Mirrors the Java SDK ``Metrics.MetricsFlag`` behavior. The flags are read

Review Comment:
   We don't need to mention "Mirrors the Java SDK..." in Python pydoc, as we 
don't assume Beam python user have Java knowledge (or even aware of Java SDK). 
In general please simplify pydocs as MetricsFlag is internal API



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to