You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by pa...@apache.org on 2020/11/21 00:23:39 UTC
[beam] branch master updated: Restore original str() behaviour to
MetricName, for user counter(namespace+name) style MetricNames
This is an automated email from the ASF dual-hosted git repository.
pabloem pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new 60e0221 Restore original str() behaviour to MetricName, for user counter(namespace+name) style MetricNames
new 6851109 Merge pull request #13400 from Restore original str() behaviour to MetricName, for user counter(namespace+name) style MetricNames
60e0221 is described below
commit 60e02218b41510686ccd828f09db779d52041c48
Author: Alex Amato <aj...@google.com>
AuthorDate: Fri Nov 20 14:41:45 2020 -0800
Restore original str() behaviour to MetricName, for user counter(namespace+name) style MetricNames
---
sdks/python/apache_beam/metrics/metric_test.py | 16 ++++++++++++++++
sdks/python/apache_beam/metrics/metricbase.py | 8 ++++++--
2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/sdks/python/apache_beam/metrics/metric_test.py b/sdks/python/apache_beam/metrics/metric_test.py
index 09f1902..a0f75ed 100644
--- a/sdks/python/apache_beam/metrics/metric_test.py
+++ b/sdks/python/apache_beam/metrics/metric_test.py
@@ -137,6 +137,22 @@ class MetricsTest(unittest.TestCase):
with self.assertRaises(ValueError):
Metrics.distribution("", "names")
+ # Do not change the behaviour of str(), do tno update/delete this test case
+ # if the behaviour of str() is changed. Doing so will
+ # break end user beam code which depends on the str() behaviour.
+ def test_user_metric_name_str(self):
+ mn = MetricName("my_namespace", "my_name")
+ expected_str = 'MetricName(namespace=my_namespace, name=my_name)'
+ self.assertEqual(str(mn), expected_str)
+
+ def test_general_urn_metric_name_str(self):
+ mn = MetricName(
+ "my_namespace", "my_name", urn='my_urn', labels={'key': 'value'})
+ expected_str = (
+ "MetricName(namespace=my_namespace, name=my_name, "
+ "urn=my_urn, labels={'key': 'value'})")
+ self.assertEqual(str(mn), expected_str)
+
@attr('ValidatesRunner')
def test_user_counter_using_pardo(self):
class SomeDoFn(beam.DoFn):
diff --git a/sdks/python/apache_beam/metrics/metricbase.py b/sdks/python/apache_beam/metrics/metricbase.py
index f29641e..b89b4bb 100644
--- a/sdks/python/apache_beam/metrics/metricbase.py
+++ b/sdks/python/apache_beam/metrics/metricbase.py
@@ -87,8 +87,12 @@ class MetricName(object):
return not self == other
def __str__(self):
- return 'MetricName(namespace={}, name={}, urn={}, labels={})'.format(
- self.namespace, self.name, self.urn, self.labels)
+ if self.urn:
+ return 'MetricName(namespace={}, name={}, urn={}, labels={})'.format(
+ self.namespace, self.name, self.urn, self.labels)
+ else: # User counter case.
+ return 'MetricName(namespace={}, name={})'.format(
+ self.namespace, self.name)
def __hash__(self):
return hash((self.namespace, self.name, self.urn) +