)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9683e80472c8b6ffc932ecd28de4478e622760d1","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Remove deprecated statsd label_mode"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Hopefully if we never do a release that supports signalfx no one will"},{"line_number":10,"context_line":"ever use it and we won\u0027t have to maintain it."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Drive-by: refactor label model dispatch to fix a weird bug where a"},{"line_number":13,"context_line":"config name could be a class attribute and blow up weird."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3faa912e_9bdecee3","line":10,"updated":"2025-04-04 11:33:23.000000000","message":"ok, if signalfx turns out to be a useful format then it can be added in future.","commit_id":"e83503c6ddbd81cea046f88e44ecb3bfb8716deb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9683e80472c8b6ffc932ecd28de4478e622760d1","unresolved":true,"context_lines":[{"line_number":10,"context_line":"ever use it and we won\u0027t have to maintain it."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Drive-by: refactor label model dispatch to fix a weird bug where a"},{"line_number":13,"context_line":"config name could be a class attribute and blow up weird."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I2c67b59820c5ca094077bf47628426f4b0445ba0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"6596a2c9_8d8152de","line":13,"updated":"2025-04-04 11:33:23.000000000","message":"I\u0027m sold by the drive-by 😊","commit_id":"e83503c6ddbd81cea046f88e44ecb3bfb8716deb"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9683e80472c8b6ffc932ecd28de4478e622760d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"f3caaf18_b4557d9b","updated":"2025-04-04 11:33:23.000000000","message":"Makes sense. Good catch re. the LabelsFormat attr lookup.\n\nI think the follow-on proxy-logging patch uses signalfx in its unit tests LOL","commit_id":"e83503c6ddbd81cea046f88e44ecb3bfb8716deb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"cfdcf7a87a849f90e65d50761042fdc7b83c5b90","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"13d7e10d_55284dfc","updated":"2025-04-04 12:04:15.000000000","message":"LGTM, I just fixed pep8 and docstring","commit_id":"0e2791a88a9199006880bbbe31ff4e6d27c58e88"}],"swift/common/statsd_client.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9683e80472c8b6ffc932ecd28de4478e622760d1","unresolved":true,"context_lines":[{"line_number":97,"context_line":"    except AttributeError:"},{"line_number":98,"context_line":"        label_modes \u003d ["},{"line_number":99,"context_line":"            f for f in LabeledFormats.__dict__"},{"line_number":100,"context_line":"            if not f.startswith(\u0027__\u0027)]"},{"line_number":101,"context_line":"        raise ValueError("},{"line_number":102,"context_line":"            \u0027unknown statsd_label_mode %r; \u0027"},{"line_number":103,"context_line":"            \u0027expected one of %r\u0027 % (label_mode, label_modes))"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f1b966e_28a6dee1","side":"PARENT","line":100,"updated":"2025-04-04 11:33:23.000000000","message":"FWIW, at some point I tried to encapsulate this in LabelFormats up by adding something like a ``supported_formats`` method to LabeledFormats (that ends up looking like a hacked up ``keys``), but that of course pollutes the namespace!!","commit_id":"7e5235894b4f590024d572f64ab0b3ba2b02c68b"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9683e80472c8b6ffc932ecd28de4478e622760d1","unresolved":true,"context_lines":[{"line_number":77,"context_line":"    \u0027influxdb\u0027: influxdb,"},{"line_number":78,"context_line":"    \u0027graphite\u0027: graphite,"},{"line_number":79,"context_line":"    \u0027dogstatsd\u0027: dogstatsd,"},{"line_number":80,"context_line":"}"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def _get_labeled_statsd_formatter(label_mode):"}],"source_content_type":"text/x-python","patch_set":1,"id":"84ea6231_fb6e9db1","line":80,"updated":"2025-04-04 11:33:23.000000000","message":"ok, so anyone who adds a new format in the future needs to type one more line of code here. I can live with that!","commit_id":"e83503c6ddbd81cea046f88e44ecb3bfb8716deb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9683e80472c8b6ffc932ecd28de4478e622760d1","unresolved":true,"context_lines":[{"line_number":91,"context_line":"    try:"},{"line_number":92,"context_line":"        return LABEL_MODES[label_mode]"},{"line_number":93,"context_line":"    except KeyError:"},{"line_number":94,"context_line":"        label_modes \u003d LABEL_MODES.keys()"},{"line_number":95,"context_line":"        raise ValueError("},{"line_number":96,"context_line":"            \u0027unknown statsd_label_mode %r; \u0027"},{"line_number":97,"context_line":"            \u0027expected one of %r\u0027 % (label_mode, label_modes))"}],"source_content_type":"text/x-python","patch_set":1,"id":"47af8b77_e2061544","line":94,"updated":"2025-04-04 11:33:23.000000000","message":"nit: variable isn\u0027t really necessary\n\n+1 this is so much cleaner","commit_id":"e83503c6ddbd81cea046f88e44ecb3bfb8716deb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"cfdcf7a87a849f90e65d50761042fdc7b83c5b90","unresolved":true,"context_lines":[{"line_number":433,"context_line":"    A statsd client that supports annotating metrics with labels."},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"    Labeled metrics can be emitted in the style of Graphite, Librato, InfluxDB,"},{"line_number":436,"context_line":"    DogStatsD, or SignalFX by specifying the corresponding ``label_mode`` when"},{"line_number":437,"context_line":"    constructing a client. If ``label_mode`` is ``disabled`` then no metrics"},{"line_number":438,"context_line":"    are emitted by the client."},{"line_number":439,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"a759180a_bffa2a08","line":436,"range":{"start_line":436,"start_character":18,"end_line":436,"end_character":26},"updated":"2025-04-04 12:04:15.000000000","message":"oops","commit_id":"4782f9fc55ecc516fa88fbeb294bd5bf9c27db28"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"cfdcf7a87a849f90e65d50761042fdc7b83c5b90","unresolved":true,"context_lines":[{"line_number":453,"context_line":"        value between 0 and 1."},{"line_number":454,"context_line":"    :param sample_rate_factor: A multiplier to apply to the rate at which"},{"line_number":455,"context_line":"        metrics are sampled. Should be a float value between 0 and 1."},{"line_number":456,"context_line":"    :param label_mode: one of \u0027graphite\u0027, \u0027dogstatsd\u0027, \u0027signalfx\u0027, \u0027librato\u0027,"},{"line_number":457,"context_line":"        \u0027influxdb\u0027 or \u0027disabled\u0027."},{"line_number":458,"context_line":"    :param default_labels: a dictionary of labels that will be added to every"},{"line_number":459,"context_line":"        metric emitted by the client."}],"source_content_type":"text/x-python","patch_set":2,"id":"7de7a17c_5d3fef63","line":456,"range":{"start_line":456,"start_character":55,"end_line":456,"end_character":65},"updated":"2025-04-04 12:04:15.000000000","message":"oops","commit_id":"4782f9fc55ecc516fa88fbeb294bd5bf9c27db28"}],"test/unit/common/test_statsd_client.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9683e80472c8b6ffc932ecd28de4478e622760d1","unresolved":true,"context_lines":[{"line_number":264,"context_line":"        with self.assertRaises(ValueError) as cm:"},{"line_number":265,"context_line":"            statsd_client.get_labeled_statsd_client(conf, self.logger)"},{"line_number":266,"context_line":"        self.assertIn(\"unknown statsd_label_mode \u0027__class__\u0027\","},{"line_number":267,"context_line":"                      str(cm.exception))"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def test_disabled_by_default(self):"},{"line_number":270,"context_line":"        conf \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"de8e30aa_8948cef7","line":267,"updated":"2025-04-04 11:33:23.000000000","message":"ok, weird but best to disallow","commit_id":"e83503c6ddbd81cea046f88e44ecb3bfb8716deb"}]}
