)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"8ae431bbc98cb13d25afaf658a01ba0611ca7aac","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cad36244_89d9a3ec","updated":"2026-06-30 14:09:41.000000000","message":"importlib.resources is the more correct thing","commit_id":"3acaee1268c5638da88da4c6d9a5e7f657752bf4"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"a28cd405138380aad2661125286fa20c9da8ecc6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"37e1efce_1a0edea1","in_reply_to":"60852a93_eb468013","updated":"2026-07-03 07:46:21.000000000","message":"Leaving support for Python 3.8 I consider it as a mistake that needs to be corrected, we\u0027re basically lying on the support considering that some direct requirements do not work with Python 3.8 anymore.\nAFAICS explicit support for directories in importlib.resources was added in Python 3.9 with importlib.resources.files(), which returns a Traversable object https://docs.python.org/3/library/importlib.resources.html","commit_id":"3acaee1268c5638da88da4c6d9a5e7f657752bf4"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"b75ddfdcff352c01382d75dabb1e7d4eb0504411","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"60852a93_eb468013","in_reply_to":"7965cfbe_94cf5e34","updated":"2026-07-02 17:04:17.000000000","message":"It\u0027s pretty late for this version so I\u0027m indifferent. We can stick with your implementation as well. It was just a comment and not a -1. importlib.resources does support directories though. Its just a rough interface until 3.9","commit_id":"3acaee1268c5638da88da4c6d9a5e7f657752bf4"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"13fc75139818b2c8ebecaf1ea227bc4b049967d5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7965cfbe_94cf5e34","in_reply_to":"cad36244_89d9a3ec","updated":"2026-07-01 14:52:08.000000000","message":"I don\u0027t think importlib.resources supports subdirectories like metrics_information/ well in Python 3.8\nwe still have python_requires \u003d \u003e\u003d3.8 in setup.cfg\n2025.1 does not support Python 3.8 so I\u0027m fine dropping that, even this late\nwdyt?","commit_id":"3acaee1268c5638da88da4c6d9a5e7f657752bf4"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"a285601392691e06061d3b33abcf69834591bcfe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ee0e20bb_5a38430e","updated":"2026-07-06 09:48:15.000000000","message":"LGTM","commit_id":"2cccd5d9b95c4945888274bb486120f1f1c4ed64"}],"ironic_prometheus_exporter/parsers/descriptions.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9998e1672ea0154e264a328d1c2a7df5298509a9","unresolved":false,"context_lines":[{"line_number":25,"context_line":"def get_metric_description(source, metric_name):"},{"line_number":26,"context_line":"    if source not in DESCRIPTIONS:"},{"line_number":27,"context_line":"        try:"},{"line_number":28,"context_line":"            json_file \u003d _PACKAGE_DIR / \u0027metrics_information\u0027 / (source + \u0027.json\u0027)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"            with open(json_file) as fl:"},{"line_number":31,"context_line":"                DESCRIPTIONS[source] \u003d json.load(fl)"}],"source_content_type":"text/x-python","patch_set":1,"id":"47303efe_841e44e5","line":28,"updated":"2026-06-24 16:08:41.000000000","message":"pep8: E501 Line too long (81 \u003e 79)","commit_id":"6d96bbcff9accd9ff60c10fd222c7bb742a108e2"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9998e1672ea0154e264a328d1c2a7df5298509a9","unresolved":false,"context_lines":[{"line_number":25,"context_line":"def get_metric_description(source, metric_name):"},{"line_number":26,"context_line":"    if source not in DESCRIPTIONS:"},{"line_number":27,"context_line":"        try:"},{"line_number":28,"context_line":"            json_file \u003d _PACKAGE_DIR / \u0027metrics_information\u0027 / (source + \u0027.json\u0027)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"            with open(json_file) as fl:"},{"line_number":31,"context_line":"                DESCRIPTIONS[source] \u003d json.load(fl)"}],"source_content_type":"text/x-python","patch_set":1,"id":"89028420_05d501b9","line":28,"updated":"2026-06-24 16:08:41.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"6d96bbcff9accd9ff60c10fd222c7bb742a108e2"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"4866ff924335b66daac0fdcba7168decd1626be9","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import json"},{"line_number":15,"context_line":"import logging"},{"line_number":16,"context_line":"from importlib.resources import files"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"DESCRIPTIONS \u003d {}"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"c41b653c_f5bccb58","line":16,"updated":"2026-07-01 17:01:59.000000000","message":"pep8: H306: imports not in alphabetical order (logging, importlib.resources.files)","commit_id":"2fd086e3aa0532acdb6938797aff6851c70c6e5b"}],"ironic_prometheus_exporter/parsers/ipmi.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"4866ff924335b66daac0fdcba7168decd1626be9","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import json"},{"line_number":14,"context_line":"import logging"},{"line_number":15,"context_line":"from importlib.resources import files"},{"line_number":16,"context_line":"import re"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from prometheus_client import Gauge"}],"source_content_type":"text/x-python","patch_set":4,"id":"4ab70ebb_1d5b43a1","line":15,"updated":"2026-07-01 17:01:59.000000000","message":"pep8: H306: imports not in alphabetical order (logging, importlib.resources.files)","commit_id":"2fd086e3aa0532acdb6938797aff6851c70c6e5b"}]}
