)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"fbf402f94eca6c06287c82331099b5f801eceb39","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"f291316a_43fe57a9","updated":"2025-12-05 10:03:13.000000000","message":"Thank you for working on this!","commit_id":"3a088040c95320e690ad0b7c66221ce93527cfd5"},{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"48cbb802ee992ba4013727c006e03eae399cd670","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"43d9766c_d8422537","updated":"2025-12-09 08:56:55.000000000","message":"Thank you for your explanation.\nWould you then add werkzeug explicitly as a requirement? It may be coincidence that it just passed CI before?","commit_id":"3a088040c95320e690ad0b7c66221ce93527cfd5"},{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"c1ce4a2fbef72fe54b7c2922a4e48bd7b7b08f88","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8525b539_02a16403","updated":"2025-12-09 08:57:28.000000000","message":"To be clear, I am fine with this patch per se, to me it totally makes sense.","commit_id":"3a088040c95320e690ad0b7c66221ce93527cfd5"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"21e484f6bafc36954c45c23a71c37c04710d0524","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"39978379_3490f324","in_reply_to":"43d9766c_d8422537","updated":"2025-12-09 10:42:42.000000000","message":"Added Werkzeug as an explicity dependency, instead of just being a seconday dependency from Flask.","commit_id":"3a088040c95320e690ad0b7c66221ce93527cfd5"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"e911e324c19772db0e1c85e10eeecca01aa1d62f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"02b00671_d2792057","updated":"2025-12-10 10:00:29.000000000","message":"This looks good to me, thanks","commit_id":"33e29d33f6ca83a3eb9e4763e6dbea02b41ddb1c"},{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"a701b15b9fd8ef8e886a38f63333f3ddbd3745e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8dc8a458_20cbc1da","updated":"2025-12-09 10:45:02.000000000","message":"thank you","commit_id":"33e29d33f6ca83a3eb9e4763e6dbea02b41ddb1c"}],"cloudkitty/storage/v2/loki/__init__.py":[{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"fbf402f94eca6c06287c82331099b5f801eceb39","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":"from oslo_log import log as oslo_logging"},{"line_number":20,"context_line":"from werkzeug import exceptions as http_exceptions"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cloudkitty import dataframe"},{"line_number":23,"context_line":"from cloudkitty.storage import v2 as v2_storage"}],"source_content_type":"text/x-python","patch_set":1,"id":"e7682714_fdbcb457","line":20,"updated":"2025-12-05 10:03:13.000000000","message":"It looks like werkzeug is a new dependency, although not included in requirements.txt?","commit_id":"3a088040c95320e690ad0b7c66221ce93527cfd5"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"e21204ba44bdced7b85ace25cf982191ab2f2320","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":"from oslo_log import log as oslo_logging"},{"line_number":20,"context_line":"from werkzeug import exceptions as http_exceptions"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cloudkitty import dataframe"},{"line_number":23,"context_line":"from cloudkitty.storage import v2 as v2_storage"}],"source_content_type":"text/x-python","patch_set":1,"id":"81d28789_31297e33","line":20,"in_reply_to":"55bb2fba_d8f76e51","updated":"2025-12-09 08:21:06.000000000","message":"Exactly the same pattern I am using for this exception is used here https://opendev.org/openstack/cloudkitty/src/branch/master/cloudkitty/api/v2/dataframes/dataframes.py#L107 with the werkzeug import here https://opendev.org/openstack/cloudkitty/src/branch/master/cloudkitty/api/v2/dataframes/dataframes.py#L18.","commit_id":"3a088040c95320e690ad0b7c66221ce93527cfd5"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"e911e324c19772db0e1c85e10eeecca01aa1d62f","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":"from oslo_log import log as oslo_logging"},{"line_number":20,"context_line":"from werkzeug import exceptions as http_exceptions"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cloudkitty import dataframe"},{"line_number":23,"context_line":"from cloudkitty.storage import v2 as v2_storage"}],"source_content_type":"text/x-python","patch_set":1,"id":"e9ec2b1e_7aa6f404","line":20,"in_reply_to":"63ef2839_39c59eba","updated":"2025-12-10 10:00:29.000000000","message":"I should\u0027ve read the other comments first, I see this has already been mentioned.","commit_id":"3a088040c95320e690ad0b7c66221ce93527cfd5"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"08f888b37b866c4c6534ff58ac5dd4547237f5f0","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":"from oslo_log import log as oslo_logging"},{"line_number":20,"context_line":"from werkzeug import exceptions as http_exceptions"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cloudkitty import dataframe"},{"line_number":23,"context_line":"from cloudkitty.storage import v2 as v2_storage"}],"source_content_type":"text/x-python","patch_set":1,"id":"63ef2839_39c59eba","line":20,"in_reply_to":"81d28789_31297e33","updated":"2025-12-10 09:55:00.000000000","message":"Werkzeug is installed alongside Flask: https://flask.palletsprojects.com/en/stable/installation/#dependencies","commit_id":"3a088040c95320e690ad0b7c66221ce93527cfd5"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"e3ff370dd3a4993051308624471c3622efe8f43b","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":"from oslo_log import log as oslo_logging"},{"line_number":20,"context_line":"from werkzeug import exceptions as http_exceptions"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cloudkitty import dataframe"},{"line_number":23,"context_line":"from cloudkitty.storage import v2 as v2_storage"}],"source_content_type":"text/x-python","patch_set":1,"id":"55bb2fba_d8f76e51","line":20,"in_reply_to":"e7682714_fdbcb457","updated":"2025-12-05 10:09:05.000000000","message":"It is true that it is not included in requirements.txt, but it just works, both in tests and live. I thought that werkzeug was included as a secondary requirement from other requirement.","commit_id":"3a088040c95320e690ad0b7c66221ce93527cfd5"},{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"fbf402f94eca6c06287c82331099b5f801eceb39","unresolved":true,"context_lines":[{"line_number":163,"context_line":"                 metric_types\u003dNone,"},{"line_number":164,"context_line":"                 offset\u003d0, limit\u003d1000, paginate\u003dTrue):"},{"line_number":165,"context_line":"        if limit \u003e 5000:"},{"line_number":166,"context_line":"            raise http_exceptions.BadRequest("},{"line_number":167,"context_line":"                f\"Limit {limit} exceeds maximum allowed limit of 5000 for \""},{"line_number":168,"context_line":"                f\"Loki storage. Please reduce the limit parameter.\")"},{"line_number":169,"context_line":"        begin, end \u003d self._local_to_utc(begin or tzutils.get_month_start(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"6eb5215a_90b6d8ed","line":166,"updated":"2025-12-05 10:03:13.000000000","message":"I\u0027d bet there is another way to raise this kind of exception without adding a new depedency?","commit_id":"3a088040c95320e690ad0b7c66221ce93527cfd5"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"9236d486645ec5dff6a78256e8391c3a2da8dce4","unresolved":true,"context_lines":[{"line_number":163,"context_line":"                 metric_types\u003dNone,"},{"line_number":164,"context_line":"                 offset\u003d0, limit\u003d1000, paginate\u003dTrue):"},{"line_number":165,"context_line":"        if limit \u003e 5000:"},{"line_number":166,"context_line":"            raise http_exceptions.BadRequest("},{"line_number":167,"context_line":"                f\"Limit {limit} exceeds maximum allowed limit of 5000 for \""},{"line_number":168,"context_line":"                f\"Loki storage. Please reduce the limit parameter.\")"},{"line_number":169,"context_line":"        begin, end \u003d self._local_to_utc(begin or tzutils.get_month_start(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"e463fe1e_0c3691bd","line":166,"in_reply_to":"6eb5215a_90b6d8ed","updated":"2025-12-05 10:05:43.000000000","message":"Yeah, it might be better to spend some more time try to figure out a way to do this without adding a new dependency.","commit_id":"3a088040c95320e690ad0b7c66221ce93527cfd5"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"c3d889d92d1a8b5f494581977741bf8ffa4cba90","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                 metric_types\u003dNone,"},{"line_number":164,"context_line":"                 offset\u003d0, limit\u003d1000, paginate\u003dTrue):"},{"line_number":165,"context_line":"        if limit \u003e 5000:"},{"line_number":166,"context_line":"            raise http_exceptions.BadRequest("},{"line_number":167,"context_line":"                f\"Limit {limit} exceeds maximum allowed limit of 5000 for \""},{"line_number":168,"context_line":"                f\"Loki storage. Please reduce the limit parameter.\")"},{"line_number":169,"context_line":"        begin, end \u003d self._local_to_utc(begin or tzutils.get_month_start(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"941def72_caa06260","line":166,"in_reply_to":"e463fe1e_0c3691bd","updated":"2025-12-22 14:36:32.000000000","message":"As discussed elsewhere, werkzeug is installed by flask.","commit_id":"3a088040c95320e690ad0b7c66221ce93527cfd5"}]}
