)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Refactor utils"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- Move statsd client into it\u0027s own module"},{"line_number":10,"context_line":"- Move all logging functions into their own module"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ic4b5005e3efffa8dba17d91a41e46d5c68533f9a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"b3acfb4b_e677acd1","line":10,"updated":"2024-04-13 14:11:58.000000000","message":"you should mention the new config module as well","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Refactor utils"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- Move statsd client into it\u0027s own module"},{"line_number":10,"context_line":"- Move all logging functions into their own module"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ic4b5005e3efffa8dba17d91a41e46d5c68533f9a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5534c185_3c193c86","line":10,"in_reply_to":"b3acfb4b_e677acd1","updated":"2024-04-18 16:55:49.000000000","message":"Acknowledged","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d3df0a570585b19aaa8fcb1a431ec1df021f10d6","unresolved":true,"context_lines":[{"line_number":11,"context_line":"- Move all config functions into their own module"},{"line_number":12,"context_line":"- Move all helper functions into their own module"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ic4b5005e3efffa8dba17d91a41e46d5c68533f9a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"5a570233_31ea531e","line":14,"updated":"2024-04-25 20:33:51.000000000","message":"Related-Bug: #2015274","commit_id":"0f79f21164f5b6db907b9f95a905a7d73a1fd301"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"cde7115c8be3b18a7580f41fa983dad520b99289","unresolved":false,"context_lines":[{"line_number":11,"context_line":"- Move all config functions into their own module"},{"line_number":12,"context_line":"- Move all helper functions into their own module"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ic4b5005e3efffa8dba17d91a41e46d5c68533f9a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"3c225a37_35867310","line":14,"in_reply_to":"5a570233_31ea531e","updated":"2024-04-26 00:12:12.000000000","message":"Acknowledged","commit_id":"0f79f21164f5b6db907b9f95a905a7d73a1fd301"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3d3320f16fb9b8b6bbb1adcc0756b87c1ff25c83","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ceece1d6_fcef4f2b","updated":"2024-03-25 14:34:01.000000000","message":"I think this patch will constantly be in merge conflict if it touches all the files to update the get_logger import\n\nSince we import get_logger into swift.common.utils I think *most* of these diffs aren\u0027t absolutely needed.  You might consider breaking this into two (or more) patches...\n\n1) create new stats_client and utils.logs [1] modules (but make as many common.utils imports backwards compatible as possible: e.g. get_logger, PrefixedLogAdapter, get_policy_index)\n2) fix as many of the backwards compat imports in any many of the files as we want; maybe tests code first or just some really weird names that only hit a couple files)\n3) update ALL OF SWIFT to import swift.common.logs.get_logger (we\u0027ll still have to keep AT LEAST get_logger import backwards compat shim for out-of-tree code, but honestly there might already be some out-of-tree mw that\u0027s importing some of the other moved names for whatever reason - we could spot check some nvidia stuff like nvauth/nvsts, nvratelimit, s8ka, bucket-inventory)\n\nPlease consider moving get_policy_index and the get_log_line function; then leave some imports in common.utils to keep the churn to a minimum for this first patch.\n\n\n1. I\u0027m happy enough with the common.utils.logs name BTW","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"ad3ef840b2573932838f3269eac98d8a5b4a2731","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"04908fec_fc74e6bc","updated":"2024-03-26 18:01:07.000000000","message":"Since we import get_logger into swift.common.utils I think most of these diffs aren\u0027t absolutely needed. - AGREE. So, if we have as many common.utils imports backwards compatible as possible, can we do this in a single patch as current one?","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"afc0d44cd716bebf1b07eceab656eda53bba8d19","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f4122da6_e7923a08","updated":"2024-03-27 19:11:37.000000000","message":"tempest jobs are failing with an ImportError\n\n2024-03-26 23:47:33.697 | Traceback (most recent call last):\n2024-03-26 23:47:33.697 |   File \"/opt/stack/data/venv/bin/swift-ring-builder\", line 7, in \u003cmodule\u003e\n2024-03-26 23:47:33.697 |     exec(compile(f.read(), __file__, \u0027exec\u0027))\n2024-03-26 23:47:33.697 |   File \"/opt/stack/swift/bin/swift-ring-builder\", line 34, in \u003cmodule\u003e\n2024-03-26 23:47:33.697 |     from swift.cli.ringbuilder import main\n2024-03-26 23:47:33.697 |   File \"/opt/stack/swift/swift/cli/ringbuilder.py\", line 35, in \u003cmodule\u003e\n2024-03-26 23:47:33.697 |     from swift.common import exceptions\n2024-03-26 23:47:33.697 |   File \"/opt/stack/swift/swift/common/exceptions.py\", line 17, in \u003cmodule\u003e\n2024-03-26 23:47:33.697 |     import swift.common.utils\n2024-03-26 23:47:33.697 |   File \"/opt/stack/swift/swift/common/utils/__init__.py\", line 92, in \u003cmodule\u003e\n2024-03-26 23:47:33.697 |     from swift.common.utils.logs import (   # noqa\n2024-03-26 23:47:33.697 |   File \"/opt/stack/swift/swift/common/utils/logs.py\", line 45, in \u003cmodule\u003e\n2024-03-26 23:47:33.697 |     from swift.common.exceptions import MessageTimeout\n2024-03-26 23:47:33.697 | ImportError: cannot import name \u0027MessageTimeout\u0027 from partially initialized module \u0027swift.common.exceptions\u0027 (most likely due to a circular import) (/opt/stack/swift/swift/common/exceptions.py)","commit_id":"22e60512cdbe1fd6d033cc01153f44a8a27e2630"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7856451d_56236e39","updated":"2024-04-02 18:54:42.000000000","message":"ok, so I notice right away we create two new modules statsd_client and utils.logs; but we don\u0027t create two new test modules test.unit.common.test_statsd_client and test.unit.common.utils.test_logs - I assume we want to refactor logs/statsd tests out of test.unit.common.test_utils to match the new module layout; but we\u0027re trying to split that into a follow-on or pre-req change to keep the line count down on this diff; correct?\n\nI don\u0027t think we should duplicate config_true_value in common.utils.logs - I recognize we would have preferred to avoid adding *another* new common.utils.config module as out of scope but it\u0027s probably the best way to avoid the circular import without duplicating code (which would be an annoying violation of DRY).  I think pulling a few of those module level config parsing functions into their own new utils.config module would look perfectly reasonable in the context of this change and obviously necessary since you want to use one of them in utils.logs which needs to be importable to common.utils - let\u0027s just get it done.\n\nSince you\u0027re providing all the import shims in common.utils I think i\u0027d be best for this diff to avoid any unnecessary changes to import lines from the logs namespace - AFAIK only the `common.utils.StatsdClient` imports need to change to `common.statsd_client.StatsdClient` (although it\u0027s possible you could import StatsdClient into common.utils and avoid even THAT churn for now - focusing only on moving the code around and fixing any relevant mocking paths)\n\nWe can always cleanup the import lines and remove the noqa import-shims after we reorg the test module.","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1fcc46da9ce743220706f1f1db3358f5ec062769","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"2a858754_4e96aa4c","updated":"2024-04-03 14:46:45.000000000","message":"I missed that the storage server log related functions were still in common.utils - I agree with Al we should either move them to utils.logs or comment why that\u0027s not appropriate.","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"524c519dcfeba3496fa07d5109f0ed12c536e9d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f37c1dc5_71d96213","updated":"2024-04-03 11:28:23.000000000","message":"There\u0027s a few other pieces that could move to logs.py (see inline comments) - I may have missed some previous discussion as to why those shouldn\u0027t move, e.g. if logs.py is supposed to be only about *creating* a logger, rather than *using* a logger...but ``capture_stdio`` has moved and that\u0027s not strictly just about creating a logger.\n\ne.g. I think future me might assume that ``LOG_LINE_DEFAULT_FORMAT`` and ``get_log_line`` are in logs.py. I\u0027m not so sure about ``StrAnonymizer``.\n\nProbably worth soliciting opinions from other cores about ``get_log_line`` etc","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"24a3ed42_0c87961c","updated":"2024-04-13 14:11:58.000000000","message":"I think 915762: wip: sq? utils refactor | https://review.opendev.org/c/openstack/swift/+/915762 addresses most of my concerns, but if you decide to squash it, afterwards please go through these comments and verify they were addressed.\n\nAfter you publish the diff and zuul verifies your change please attempt a self review - try to ask yourself why every line in the diff is needed or helpful (yup, all \u003e3K lines, line-by-line - if you can ask a reviewer to do it for you can do it too!).  If you can spot *anything* you think you could improve - try and make it better!  If you smell something another reviewer might have questions about (duplicated code, unrelated move/formatting) - either try and fix it or post a comment describing your current thinking about the tradeoffs and ask for feedback.\n\nI think we\u0027re getting close!","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"805cae5b9d6f9f64178eb09cb0ab171456572a16","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"060ffe33_c9406d06","updated":"2024-04-15 13:05:51.000000000","message":"probe test failure needs to be looked into:\n\n\n\t\twith mock.patch(\u0027swift.common.utils.LogAdapter\u0027, CaptureLogAdapter):\n\t\t    log_adapter \u003d utils.get_logger(conf, *args, **kwargs)\n\t\u003e       log_adapter.start_capture()\n\tE       AttributeError: \u0027LogAdapter\u0027 object has no attribute \u0027start_capture\u0027\n\n\ttest/debug_logger.py:320: AttributeError","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7c9cd58e26a5014271dccd5cadf256c9b76cf21d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"d142d7c4_f254486e","updated":"2024-04-25 14:10:56.000000000","message":"I pushed a patchset to hopefully fix the probe tests.\n\nI like the direction of this. I\u0027d like to understand where ``helpers.py`` is heading.\n\n(this is a nit really) Ideally we\u0027d merge the drive-by test cleanup (better use of mocking) in test_utils first (I think it\u0027ll be a no-brainer). It\u0027ll make this diff a few lines shorter too ;-)","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9fd8e6c18e742f6cd6e22b0073bd1f2d4efe5d1f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"77dba745_3ce33b37","updated":"2024-04-29 17:14:49.000000000","message":"The devstack job failed in some Cinder-related test; ceph tests failed because of some timeout talking to object servers. Pretty sure we can ignore them for now.\n\nI still need to compare the moved code -- will get another review up later today.","commit_id":"5b49293c5267c0bf4e3e0aff1f932007c58468b0"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"993a51ee_002b05a0","updated":"2024-04-29 20:16:32.000000000","message":"I see there\u0027s a plan to [pull the statsd tests out to their own module](https://review.opendev.org/c/openstack/swift/+/914828) -- is there a similar plan for any of the others?\n\nMy main worries:\n- the base `import configparser` in utils.config should blow up on py2\n- lost comment on `LogAdapter`\n\nThe cleanups in `test_config_true_value` and `get_logger` are definitely optional.","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1fd55b0b34d46eaa705a7a75d21048fa9e96716f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"8bfb4155_00546cef","updated":"2024-04-29 21:29:58.000000000","message":"Yan, it looks like you rolled this back to patchset 8 -- did you mean to do that?","commit_id":"0bebadf20ceef1db47c36cd127099e21d0997fbb"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b025d5d6b9a3984e1776a6775ab4d76b380d8bd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"63a27489_586f0403","updated":"2024-05-01 19:49:34.000000000","message":"I see two plus 2\u0027s and no blocking issues: I click merge!","commit_id":"bc3a59bdd36fbd90554e73d419d8767a3845f9af"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"73e825f22e81d924c52a847e9423ff6fa3c5a72f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"58246f3b_79654805","updated":"2024-04-30 20:28:37.000000000","message":"Just added a launchpad reference to the commit message. LGTM","commit_id":"bc3a59bdd36fbd90554e73d419d8767a3845f9af"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"138b0b5ab03e3798a78211ae5f36cbaeba6c5eb8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"095557f4_2504f91d","updated":"2024-04-30 23:00:58.000000000","message":"recheck\n\nFunky -- looks like it maybe hanged in `test/probe/test_sharder.py::TestContainerShardingMoreUTF8::test_replication_to_empty_new_primary_from_sharding_old_primary`?\n```\n2024-04-30 21:30:29.238024 | centos-9-stream | test/probe/test_sharder.py::TestContainerShardingMoreUTF8::test_object_update_redirection PASSED [ 80%]\n2024-04-30 22:29:09.753466 | RUN END RESULT_TIMED_OUT: [untrusted : opendev.org/openstack/swift/tools/playbooks/probetests/run.yaml@master]\n```\nPassed fine on patchset 17, though, and it passes fine locally.","commit_id":"bc3a59bdd36fbd90554e73d419d8767a3845f9af"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"36dc8a8a533f3809d4ea2948c3b954f9ae04769a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"11efedfa_0b891b7b","updated":"2024-05-01 15:02:21.000000000","message":"recheck\n\nThe probe tests timed out during test_sharder.py tests, but at a different point than last time AFAICT.\n\nprobe/test_sharder.py passed OMM in ~22mins","commit_id":"bc3a59bdd36fbd90554e73d419d8767a3845f9af"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a6d9c079590080d9dbf966dfea5fec5e3e21fff5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"01935e51_09a663d0","updated":"2024-05-01 21:53:31.000000000","message":"recheck\n\nhttps://bugs.launchpad.net/swift/+bug/2028175","commit_id":"bc3a59bdd36fbd90554e73d419d8767a3845f9af"}],"swift/common/middleware/listing_formats.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":23,"context_line":"from swift.common.swob import HTTPException, HTTPNotAcceptable, Request, \\"},{"line_number":24,"context_line":"    RESPONSE_REASONS, HTTPBadRequest, wsgi_quote, wsgi_to_bytes"},{"line_number":25,"context_line":"from swift.common.utils import RESERVED, list_from_csv"},{"line_number":26,"context_line":"from swift.common.utils.logs import get_logger"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"#: Mapping of query string ``format\u003d`` values to their corresponding"}],"source_content_type":"text/x-python","patch_set":4,"id":"0c1f91e1_3eb9eedd","line":26,"updated":"2024-04-02 18:54:42.000000000","message":"not needed; we have a compatibility shim for this import","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from swift.common.swob import HTTPException, HTTPNotAcceptable, Request, \\"},{"line_number":24,"context_line":"    RESPONSE_REASONS, HTTPBadRequest, wsgi_quote, wsgi_to_bytes"},{"line_number":25,"context_line":"from swift.common.utils import RESERVED, list_from_csv"},{"line_number":26,"context_line":"from swift.common.utils.logs import get_logger"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"#: Mapping of query string ``format\u003d`` values to their corresponding"}],"source_content_type":"text/x-python","patch_set":4,"id":"5d9d3ddd_50a9137f","line":26,"in_reply_to":"0c1f91e1_3eb9eedd","updated":"2024-04-05 17:12:36.000000000","message":"Done","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"}],"swift/common/middleware/memcache.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from swift.common.memcached import load_memcache"},{"line_number":17,"context_line":"from swift.common.utils.logs import get_logger"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class MemcacheMiddleware(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"286b2081_b8e9c27a","line":17,"updated":"2024-04-02 18:54:42.000000000","message":"not needed","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from swift.common.memcached import load_memcache"},{"line_number":17,"context_line":"from swift.common.utils.logs import get_logger"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class MemcacheMiddleware(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aa9f30c_4708d124","line":17,"in_reply_to":"286b2081_b8e9c27a","updated":"2024-04-05 17:12:36.000000000","message":"Done","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"}],"swift/common/middleware/name_check.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":41,"context_line":"\u0027\u0027\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"import re"},{"line_number":44,"context_line":"from swift.common.utils.logs import get_logger"},{"line_number":45,"context_line":"from swift.common.registry import register_swift_info"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"from swift.common.swob import Request, HTTPBadRequest"}],"source_content_type":"text/x-python","patch_set":4,"id":"f5b398d7_074ad510","line":44,"updated":"2024-04-02 18:54:42.000000000","message":"not needed","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":41,"context_line":"\u0027\u0027\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"import re"},{"line_number":44,"context_line":"from swift.common.utils.logs import get_logger"},{"line_number":45,"context_line":"from swift.common.registry import register_swift_info"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"from swift.common.swob import Request, HTTPBadRequest"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a2ee556_fde9cfcb","line":44,"in_reply_to":"f5b398d7_074ad510","updated":"2024-04-05 17:12:36.000000000","message":"Done","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"}],"swift/common/middleware/proxy_logging.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":95,"context_line":"                                close_if_possible, cap_length,"},{"line_number":96,"context_line":"                                InputProxy, list_from_csv, get_policy_index,"},{"line_number":97,"context_line":"                                split_path, StrAnonymizer, StrFormatTime)"},{"line_number":98,"context_line":"from swift.common.utils.logs import get_logger"},{"line_number":99,"context_line":"from swift.common.storage_policy import POLICIES"},{"line_number":100,"context_line":"from swift.common.registry import get_sensitive_headers, \\"},{"line_number":101,"context_line":"    get_sensitive_params, register_sensitive_header"}],"source_content_type":"text/x-python","patch_set":4,"id":"48b73264_c29a510d","line":98,"updated":"2024-04-02 18:54:42.000000000","message":"not needed","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                                close_if_possible, cap_length,"},{"line_number":96,"context_line":"                                InputProxy, list_from_csv, get_policy_index,"},{"line_number":97,"context_line":"                                split_path, StrAnonymizer, StrFormatTime)"},{"line_number":98,"context_line":"from swift.common.utils.logs import get_logger"},{"line_number":99,"context_line":"from swift.common.storage_policy import POLICIES"},{"line_number":100,"context_line":"from swift.common.registry import get_sensitive_headers, \\"},{"line_number":101,"context_line":"    get_sensitive_params, register_sensitive_header"}],"source_content_type":"text/x-python","patch_set":4,"id":"c1d54d95_a9433f8a","line":98,"in_reply_to":"48b73264_c29a510d","updated":"2024-04-05 17:12:36.000000000","message":"Done","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":36606,"name":"Yan Xiao","display_name":"Yan","email":"yanxiao@nvidia.com","username":"yanxiao"},"change_message_id":"0d2dc404ec79960a807322d4b93caff0be2a0e83","unresolved":true,"context_lines":[{"line_number":96,"context_line":"                                InputProxy, list_from_csv, get_policy_index,"},{"line_number":97,"context_line":"                                split_path, StrAnonymizer, StrFormatTime,"},{"line_number":98,"context_line":"                                LogStringFormatter)"},{"line_number":99,"context_line":"from swift.common.storage_policy import POLICIES"},{"line_number":100,"context_line":"from swift.common.registry import get_sensitive_headers, \\"},{"line_number":101,"context_line":"    get_sensitive_params, register_sensitive_header"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"0e0376b9_56cb8344","line":99,"updated":"2024-04-10 17:59:29.000000000","message":"unnecessary change?","commit_id":"b3c421acbe7e1db5f57adfec855a4a77a25cd775"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"2a425d065805a57e668cf8a095677c91c0c427ba","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                                InputProxy, list_from_csv, get_policy_index,"},{"line_number":97,"context_line":"                                split_path, StrAnonymizer, StrFormatTime,"},{"line_number":98,"context_line":"                                LogStringFormatter)"},{"line_number":99,"context_line":"from swift.common.storage_policy import POLICIES"},{"line_number":100,"context_line":"from swift.common.registry import get_sensitive_headers, \\"},{"line_number":101,"context_line":"    get_sensitive_params, register_sensitive_header"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"c8d2fee2_f773babb","line":99,"in_reply_to":"0e0376b9_56cb8344","updated":"2024-04-11 17:33:27.000000000","message":"Acknowledged","commit_id":"b3c421acbe7e1db5f57adfec855a4a77a25cd775"}],"swift/common/statsd_client.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7c9cd58e26a5014271dccd5cadf256c9b76cf21d","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"import six"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class StatsdClient(object):"},{"line_number":28,"context_line":"    def __init__(self, host, port, base_prefix\u003d\u0027\u0027, tail_prefix\u003d\u0027\u0027,"},{"line_number":29,"context_line":"                 default_sample_rate\u003d1, sample_rate_factor\u003d1, logger\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff18dd42_3cff9c46","line":26,"updated":"2024-04-25 14:10:56.000000000","message":"ok, below here is identical to the code that was in ``__init__.py``","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"743e6958c13ce36ff012e9502fd4da305fda38a8","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"import six"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class StatsdClient(object):"},{"line_number":28,"context_line":"    def __init__(self, host, port, base_prefix\u003d\u0027\u0027, tail_prefix\u003d\u0027\u0027,"},{"line_number":29,"context_line":"                 default_sample_rate\u003d1, sample_rate_factor\u003d1, logger\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a3b620e_5e168158","line":26,"in_reply_to":"ff18dd42_3cff9c46","updated":"2024-04-25 23:48:49.000000000","message":"Done","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import six"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class StatsdClient(object):"},{"line_number":28,"context_line":"    def __init__(self, host, port, base_prefix\u003d\u0027\u0027, tail_prefix\u003d\u0027\u0027,"},{"line_number":29,"context_line":"                 default_sample_rate\u003d1, sample_rate_factor\u003d1, logger\u003dNone):"},{"line_number":30,"context_line":"        self._host \u003d host"}],"source_content_type":"text/x-python","patch_set":17,"id":"aed6bc7c_e6f462a0","line":27,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00271365,1505!d\u0027 ) \\\n     \u003c( \u003c swift/common/statsd_client.py sed -e \u002727,$!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"}],"swift/common/utils/__init__.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3d3320f16fb9b8b6bbb1adcc0756b87c1ff25c83","unresolved":true,"context_lines":[{"line_number":72,"context_line":"utf8_encoder \u003d codecs.getencoder(\u0027utf-8\u0027)"},{"line_number":73,"context_line":"import six"},{"line_number":74,"context_line":"if six.PY2:"},{"line_number":75,"context_line":"    from eventlet.green import httplib as green_http_client"},{"line_number":76,"context_line":"else:"},{"line_number":77,"context_line":"    from eventlet.green.http import client as green_http_client"},{"line_number":78,"context_line":"    utf16_decoder \u003d codecs.getdecoder(\u0027utf-16\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c4604153_e3d9b16f","side":"PARENT","line":75,"updated":"2024-03-25 14:34:01.000000000","message":"do we still need to support eventlet on py2?","commit_id":"27ef11ea14240d8611dd1cbadaf8412727c85f49"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"cf0e0f37a2d530e5d10b22ac6ef1fa9efe58f830","unresolved":true,"context_lines":[{"line_number":72,"context_line":"utf8_encoder \u003d codecs.getencoder(\u0027utf-8\u0027)"},{"line_number":73,"context_line":"import six"},{"line_number":74,"context_line":"if six.PY2:"},{"line_number":75,"context_line":"    from eventlet.green import httplib as green_http_client"},{"line_number":76,"context_line":"else:"},{"line_number":77,"context_line":"    from eventlet.green.http import client as green_http_client"},{"line_number":78,"context_line":"    utf16_decoder \u003d codecs.getdecoder(\u0027utf-16\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fbef0684_1dd11e5a","side":"PARENT","line":75,"in_reply_to":"c4604153_e3d9b16f","updated":"2024-03-25 15:59:38.000000000","message":"I\u0027d vastly prefer that we drop py2 support for the whole project before we start dropping it from modules piecemeal. I can freshen https://review.opendev.org/c/openstack/swift/+/853590 but I think we still need to get our controller manipulating rings on py3 first.\n\nMaybe that\u0027s a faulty assumption? I suppose we could see what happens if we try to build an RPM with that patch applied... then see whether the controller can actually use such an RPM with its py2 workerds...","commit_id":"27ef11ea14240d8611dd1cbadaf8412727c85f49"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"666f9d6e406a136ab772ea36f528cce2da3352a1","unresolved":false,"context_lines":[{"line_number":72,"context_line":"utf8_encoder \u003d codecs.getencoder(\u0027utf-8\u0027)"},{"line_number":73,"context_line":"import six"},{"line_number":74,"context_line":"if six.PY2:"},{"line_number":75,"context_line":"    from eventlet.green import httplib as green_http_client"},{"line_number":76,"context_line":"else:"},{"line_number":77,"context_line":"    from eventlet.green.http import client as green_http_client"},{"line_number":78,"context_line":"    utf16_decoder \u003d codecs.getdecoder(\u0027utf-16\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9322ad3a_a3de868f","side":"PARENT","line":75,"in_reply_to":"fbef0684_1dd11e5a","updated":"2024-03-27 19:08:51.000000000","message":"Done","commit_id":"27ef11ea14240d8611dd1cbadaf8412727c85f49"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"ad3ef840b2573932838f3269eac98d8a5b4a2731","unresolved":false,"context_lines":[{"line_number":89,"context_line":"# For backwards compatability with 3rd party middlewares"},{"line_number":90,"context_line":"from swift.common.registry import register_swift_info, get_swift_info  # noqa"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"from swift.common.utils.logs import get_logger"},{"line_number":93,"context_line":"from swift.common.utils.libc import (  # noqa"},{"line_number":94,"context_line":"    F_SETPIPE_SZ,"},{"line_number":95,"context_line":"    load_libc_function,"}],"source_content_type":"text/x-python","patch_set":1,"id":"89973d72_6ca9c760","line":92,"in_reply_to":"2edac8db_5f3b40fe","updated":"2024-03-26 18:01:07.000000000","message":"Acknowledged","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3d3320f16fb9b8b6bbb1adcc0756b87c1ff25c83","unresolved":true,"context_lines":[{"line_number":89,"context_line":"# For backwards compatability with 3rd party middlewares"},{"line_number":90,"context_line":"from swift.common.registry import register_swift_info, get_swift_info  # noqa"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"from swift.common.utils.logs import get_logger"},{"line_number":93,"context_line":"from swift.common.utils.libc import (  # noqa"},{"line_number":94,"context_line":"    F_SETPIPE_SZ,"},{"line_number":95,"context_line":"    load_libc_function,"}],"source_content_type":"text/x-python","patch_set":1,"id":"2edac8db_5f3b40fe","line":92,"in_reply_to":"de14b0d9_ebe3909b","updated":"2024-03-25 14:34:01.000000000","message":"You might have to throw a `#noqa` on this line\n\nThis could also be leveraged to limit some of the test churn; but I\u0027m ok with having OUR code at least import get_logger from the \"right\" place.","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3d3320f16fb9b8b6bbb1adcc0756b87c1ff25c83","unresolved":true,"context_lines":[{"line_number":125,"context_line":"import logging"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"utf16_decoder \u003d codecs.getdecoder(\u0027utf-16\u0027)"},{"line_number":128,"context_line":"utf16_encoder \u003d codecs.getencoder(\u0027utf-16\u0027)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"NOTICE \u003d 25"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"6168caec_7b144a03","line":128,"updated":"2024-03-25 14:34:01.000000000","message":"this diff is somehow related to the py2 handling of eventlet.green.http","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"ad3ef840b2573932838f3269eac98d8a5b4a2731","unresolved":true,"context_lines":[{"line_number":125,"context_line":"import logging"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"utf16_decoder \u003d codecs.getdecoder(\u0027utf-16\u0027)"},{"line_number":128,"context_line":"utf16_encoder \u003d codecs.getencoder(\u0027utf-16\u0027)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"NOTICE \u003d 25"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"a8f15935_54c5d8af","line":128,"in_reply_to":"6168caec_7b144a03","updated":"2024-03-26 18:01:07.000000000","message":"Yes, it is. But since we want to keep py2 support just yet, we need this for eventlet.green.http in get_valid_utf8_str.","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"666f9d6e406a136ab772ea36f528cce2da3352a1","unresolved":false,"context_lines":[{"line_number":125,"context_line":"import logging"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"utf16_decoder \u003d codecs.getdecoder(\u0027utf-16\u0027)"},{"line_number":128,"context_line":"utf16_encoder \u003d codecs.getencoder(\u0027utf-16\u0027)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"NOTICE \u003d 25"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"6ea547ae_9c85791e","line":128,"in_reply_to":"a8f15935_54c5d8af","updated":"2024-03-27 19:08:51.000000000","message":"Done","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3d3320f16fb9b8b6bbb1adcc0756b87c1ff25c83","unresolved":true,"context_lines":[{"line_number":449,"context_line":"        \u0027pid\u0027: os.getpid(),"},{"line_number":450,"context_line":"        \u0027policy_index\u0027: policy_index,"},{"line_number":451,"context_line":"    }"},{"line_number":452,"context_line":"    return LogStringFormatter(default\u003d\u0027-\u0027).format(fmt, **replacements)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"def config_read_reseller_options(conf, defaults):"}],"source_content_type":"text/x-python","patch_set":1,"id":"621e9c01_ae7f0fe8","line":452,"updated":"2024-03-25 14:34:01.000000000","message":"maybe this one function had to come back to utils to avoid moving get_policy_index (used in proxy_logging and s3api)\n\nAlternatively we could move it (and the helper classes) into utils.logs too and import it back into this module for s3api, although to be fair I think the main reason s3api is using that message is actually for proxy_logging\u0027s benifit; it could have been named \"utils.get_policy_index_for_logging\" or \"utils.logs.get_policy_index\"\n\nIf we decide we don\u0027t have to have \"get_log_line\" in utils.logs (which is probably where I\u0027d go looking for it) we should at least leave it in the same spot in this module (just after StrFormatTime)","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"666f9d6e406a136ab772ea36f528cce2da3352a1","unresolved":false,"context_lines":[{"line_number":449,"context_line":"        \u0027pid\u0027: os.getpid(),"},{"line_number":450,"context_line":"        \u0027policy_index\u0027: policy_index,"},{"line_number":451,"context_line":"    }"},{"line_number":452,"context_line":"    return LogStringFormatter(default\u003d\u0027-\u0027).format(fmt, **replacements)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"def config_read_reseller_options(conf, defaults):"}],"source_content_type":"text/x-python","patch_set":1,"id":"46326d7d_478aeac1","line":452,"in_reply_to":"2b1c7111_5b4eb97c","updated":"2024-03-27 19:08:51.000000000","message":"Done","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"ad3ef840b2573932838f3269eac98d8a5b4a2731","unresolved":true,"context_lines":[{"line_number":449,"context_line":"        \u0027pid\u0027: os.getpid(),"},{"line_number":450,"context_line":"        \u0027policy_index\u0027: policy_index,"},{"line_number":451,"context_line":"    }"},{"line_number":452,"context_line":"    return LogStringFormatter(default\u003d\u0027-\u0027).format(fmt, **replacements)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"def config_read_reseller_options(conf, defaults):"}],"source_content_type":"text/x-python","patch_set":1,"id":"2b1c7111_5b4eb97c","line":452,"in_reply_to":"621e9c01_ae7f0fe8","updated":"2024-03-26 18:01:07.000000000","message":"maybe this one function had to come back to utils to avoid moving get_policy_index (used in proxy_logging and s3api) - YES\n\nI\u0027ll change the location of that block to after StrFormatTime!","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3d3320f16fb9b8b6bbb1adcc0756b87c1ff25c83","unresolved":true,"context_lines":[{"line_number":520,"context_line":"    SysLogHandler.priority_map[\u0027NOTICE\u0027] \u003d \u0027notice\u0027"},{"line_number":521,"context_line":"    # Trying to log threads while monkey-patched can lead to deadlocks; see"},{"line_number":522,"context_line":"    # https://bugs.launchpad.net/swift/+bug/1895739"},{"line_number":523,"context_line":"    logging.logThreads \u003d 0"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"def eventlet_monkey_patch():"}],"source_content_type":"text/x-python","patch_set":1,"id":"4dafb890_1c7afc01","line":523,"updated":"2024-03-25 14:34:01.000000000","message":"this method is still here, but since common.utils.logs and logging no longer have a name conflict it should be unambigous that logging here is stdlib; so this is fine.","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"ad3ef840b2573932838f3269eac98d8a5b4a2731","unresolved":false,"context_lines":[{"line_number":520,"context_line":"    SysLogHandler.priority_map[\u0027NOTICE\u0027] \u003d \u0027notice\u0027"},{"line_number":521,"context_line":"    # Trying to log threads while monkey-patched can lead to deadlocks; see"},{"line_number":522,"context_line":"    # https://bugs.launchpad.net/swift/+bug/1895739"},{"line_number":523,"context_line":"    logging.logThreads \u003d 0"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"def eventlet_monkey_patch():"}],"source_content_type":"text/x-python","patch_set":1,"id":"bb01e916_0322270c","line":523,"in_reply_to":"4dafb890_1c7afc01","updated":"2024-03-26 18:01:07.000000000","message":"Acknowledged, Done","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":6130,"context_line":"        else:"},{"line_number":6131,"context_line":"            self.lock \u003d PipeMutex()"},{"line_number":6132,"context_line":""},{"line_number":6133,"context_line":""},{"line_number":6134,"context_line":"def round_robin_iter(its):"},{"line_number":6135,"context_line":"    \"\"\""},{"line_number":6136,"context_line":"    Takes a list of iterators, yield an element from each in a round-robin"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a12d0f3_5d8b183c","side":"PARENT","line":6133,"updated":"2024-04-02 18:54:42.000000000","message":"it\u0027s great to see all this logging related stuff getting pulled out of `utils/__init__.py` - this file was huge!  and this is a good chunk of red - kudos.","commit_id":"0e5aeb50457345801ad70aed0c367e1f9820e113"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":6130,"context_line":"        else:"},{"line_number":6131,"context_line":"            self.lock \u003d PipeMutex()"},{"line_number":6132,"context_line":""},{"line_number":6133,"context_line":""},{"line_number":6134,"context_line":"def round_robin_iter(its):"},{"line_number":6135,"context_line":"    \"\"\""},{"line_number":6136,"context_line":"    Takes a list of iterators, yield an element from each in a round-robin"}],"source_content_type":"text/x-python","patch_set":4,"id":"1bf47950_cbbbfe15","side":"PARENT","line":6133,"in_reply_to":"1a12d0f3_5d8b183c","updated":"2024-04-05 17:12:36.000000000","message":"Acknowledged","commit_id":"0e5aeb50457345801ad70aed0c367e1f9820e113"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":97,"context_line":"    SwiftLoggerAdapter,"},{"line_number":98,"context_line":"    LogAdapter,"},{"line_number":99,"context_line":"    LoggerFileObject,"},{"line_number":100,"context_line":"    PipeMutex"},{"line_number":101,"context_line":")"},{"line_number":102,"context_line":"from swift.common.utils.libc import (  # noqa"},{"line_number":103,"context_line":"    F_SETPIPE_SZ,"}],"source_content_type":"text/x-python","patch_set":4,"id":"60eed799_0f23b34f","line":100,"updated":"2024-04-02 18:54:42.000000000","message":"does anyone import PipeMutext from here?  test_utils I guess.","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    SwiftLoggerAdapter,"},{"line_number":98,"context_line":"    LogAdapter,"},{"line_number":99,"context_line":"    LoggerFileObject,"},{"line_number":100,"context_line":"    PipeMutex"},{"line_number":101,"context_line":")"},{"line_number":102,"context_line":"from swift.common.utils.libc import (  # noqa"},{"line_number":103,"context_line":"    F_SETPIPE_SZ,"}],"source_content_type":"text/x-python","patch_set":4,"id":"928ef147_ca531e1c","line":100,"in_reply_to":"60eed799_0f23b34f","updated":"2024-04-05 17:12:36.000000000","message":"Yes, TestPipeMutex in test_utils","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":98,"context_line":"    LogAdapter,"},{"line_number":99,"context_line":"    LoggerFileObject,"},{"line_number":100,"context_line":"    PipeMutex"},{"line_number":101,"context_line":")"},{"line_number":102,"context_line":"from swift.common.utils.libc import (  # noqa"},{"line_number":103,"context_line":"    F_SETPIPE_SZ,"},{"line_number":104,"context_line":"    load_libc_function,"}],"source_content_type":"text/x-python","patch_set":4,"id":"796c3517_88060f9a","line":101,"updated":"2024-04-02 18:54:42.000000000","message":"nice","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    LogAdapter,"},{"line_number":99,"context_line":"    LoggerFileObject,"},{"line_number":100,"context_line":"    PipeMutex"},{"line_number":101,"context_line":")"},{"line_number":102,"context_line":"from swift.common.utils.libc import (  # noqa"},{"line_number":103,"context_line":"    F_SETPIPE_SZ,"},{"line_number":104,"context_line":"    load_libc_function,"}],"source_content_type":"text/x-python","patch_set":4,"id":"a6eeed21_f8fb58b7","line":101,"in_reply_to":"796c3517_88060f9a","updated":"2024-04-05 17:12:36.000000000","message":"Acknowledged","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":133,"context_line":"from logging.handlers import SysLogHandler"},{"line_number":134,"context_line":"import logging"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"NOTICE \u003d 25"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"# These are lazily pulled from libc elsewhere"}],"source_content_type":"text/x-python","patch_set":4,"id":"c8a8789d_00e2a63b","line":136,"updated":"2024-04-02 18:54:42.000000000","message":"maybe unrelated formatting change","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":133,"context_line":"from logging.handlers import SysLogHandler"},{"line_number":134,"context_line":"import logging"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"NOTICE \u003d 25"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"# These are lazily pulled from libc elsewhere"}],"source_content_type":"text/x-python","patch_set":4,"id":"4d1780ff_67866c6d","line":136,"in_reply_to":"c8a8789d_00e2a63b","updated":"2024-04-05 17:12:36.000000000","message":"Done","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":2886,"context_line":"    else:"},{"line_number":2887,"context_line":"        # Apparently under py3 we need to go to utf-16 to collapse surrogates?"},{"line_number":2888,"context_line":"        utf16_decoder \u003d codecs.getdecoder(\u0027utf-16\u0027)"},{"line_number":2889,"context_line":"        utf16_encoder \u003d codecs.getencoder(\u0027utf-16\u0027)"},{"line_number":2890,"context_line":"        if isinstance(str_or_unicode, six.binary_type):"},{"line_number":2891,"context_line":"            try:"},{"line_number":2892,"context_line":"                (str_or_unicode, _len) \u003d utf8_decoder(str_or_unicode,"}],"source_content_type":"text/x-python","patch_set":4,"id":"99fcf4ce_e8e099c1","line":2889,"updated":"2024-04-02 18:54:42.000000000","message":"I think moving these getdecoder calls out of the global scope is a bit of a drive-by but maybe reasonable?","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":2886,"context_line":"    else:"},{"line_number":2887,"context_line":"        # Apparently under py3 we need to go to utf-16 to collapse surrogates?"},{"line_number":2888,"context_line":"        utf16_decoder \u003d codecs.getdecoder(\u0027utf-16\u0027)"},{"line_number":2889,"context_line":"        utf16_encoder \u003d codecs.getencoder(\u0027utf-16\u0027)"},{"line_number":2890,"context_line":"        if isinstance(str_or_unicode, six.binary_type):"},{"line_number":2891,"context_line":"            try:"},{"line_number":2892,"context_line":"                (str_or_unicode, _len) \u003d utf8_decoder(str_or_unicode,"}],"source_content_type":"text/x-python","patch_set":4,"id":"55e3c538_236a932b","line":2889,"in_reply_to":"23f874ed_f8934cf6","updated":"2024-04-13 14:11:58.000000000","message":"we just call this function A LOT and I don\u0027t know what getdecoder does - there might be a reason we tried to only create them once.\n\nSo I can\u0027t say if this move is reasonable without investigating it - if you didn\u0027t we should.\n\nmaster:\n\n\tvagrant@saio:~$ python3 -m timeit -s \"from swift.common.utils import get_valid_utf8_str\" \"get_valid_utf8_str(u\u0027asdf\u0027)\"\n\t200000 loops, best of 5: 1.51 usec per loop\n\t\nthis patch:\n\t\n\tvagrant@saio:~$ python3 -m timeit -s \"from swift.common.utils import get_valid_utf8_str\" \"get_valid_utf8_str(u\u0027asdf\u0027)\"\n\t100000 loops, best of 5: 3.61 usec per loop\n\n^ looks like this change is about 2x slower\n\n\"tests pass\" is a good start, but not generally sufficient to justify a change.\n\nIt\u0027s best to keep unrelated drive-by \"I figured it would be fine\" changes out of already huge diffs so that reviewers can spend more time on the material changes we\u0027re actually trying to achive.","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":2886,"context_line":"    else:"},{"line_number":2887,"context_line":"        # Apparently under py3 we need to go to utf-16 to collapse surrogates?"},{"line_number":2888,"context_line":"        utf16_decoder \u003d codecs.getdecoder(\u0027utf-16\u0027)"},{"line_number":2889,"context_line":"        utf16_encoder \u003d codecs.getencoder(\u0027utf-16\u0027)"},{"line_number":2890,"context_line":"        if isinstance(str_or_unicode, six.binary_type):"},{"line_number":2891,"context_line":"            try:"},{"line_number":2892,"context_line":"                (str_or_unicode, _len) \u003d utf8_decoder(str_or_unicode,"}],"source_content_type":"text/x-python","patch_set":4,"id":"a6a73519_22da2283","line":2889,"in_reply_to":"55e3c538_236a932b","updated":"2024-04-18 16:55:49.000000000","message":"Acknowledged.","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":true,"context_lines":[{"line_number":2886,"context_line":"    else:"},{"line_number":2887,"context_line":"        # Apparently under py3 we need to go to utf-16 to collapse surrogates?"},{"line_number":2888,"context_line":"        utf16_decoder \u003d codecs.getdecoder(\u0027utf-16\u0027)"},{"line_number":2889,"context_line":"        utf16_encoder \u003d codecs.getencoder(\u0027utf-16\u0027)"},{"line_number":2890,"context_line":"        if isinstance(str_or_unicode, six.binary_type):"},{"line_number":2891,"context_line":"            try:"},{"line_number":2892,"context_line":"                (str_or_unicode, _len) \u003d utf8_decoder(str_or_unicode,"}],"source_content_type":"text/x-python","patch_set":4,"id":"23f874ed_f8934cf6","line":2889,"in_reply_to":"99fcf4ce_e8e099c1","updated":"2024-04-05 17:12:36.000000000","message":"The encoders and decoders are used only here hence, I figured out that it would be fine to keep a local scope. I also checked that the unitstests and vtox do not break. Do we still keep it globally?","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"524c519dcfeba3496fa07d5109f0ed12c536e9d5","unresolved":true,"context_lines":[{"line_number":130,"context_line":"    parse_socket_string,"},{"line_number":131,"context_line":"    whataremyips,"},{"line_number":132,"context_line":")"},{"line_number":133,"context_line":"from logging.handlers import SysLogHandler"},{"line_number":134,"context_line":"import logging"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"03f204a9_ea566188","line":133,"updated":"2024-04-03 11:28:23.000000000","message":"curious that this is still needed here","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1fcc46da9ce743220706f1f1db3358f5ec062769","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    parse_socket_string,"},{"line_number":131,"context_line":"    whataremyips,"},{"line_number":132,"context_line":")"},{"line_number":133,"context_line":"from logging.handlers import SysLogHandler"},{"line_number":134,"context_line":"import logging"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f768094_13407b77","line":133,"in_reply_to":"03f204a9_ea566188","updated":"2024-04-03 14:46:45.000000000","message":"needed for logging_monkey_patch","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"524c519dcfeba3496fa07d5109f0ed12c536e9d5","unresolved":true,"context_lines":[{"line_number":171,"context_line":"RESERVED \u003d \u0027\\x00\u0027"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"LOG_LINE_DEFAULT_FORMAT \u003d \u0027{remote_addr} - - [{time.d}/{time.b}/{time.Y}\u0027 \\"},{"line_number":175,"context_line":"                          \u0027:{time.H}:{time.M}:{time.S} +0000] \u0027 \\"},{"line_number":176,"context_line":"                          \u0027\"{method} {path}\" {status} {content_length} \u0027 \\"},{"line_number":177,"context_line":"                          \u0027\"{referer}\" \"{txn_id}\" \"{user_agent}\" \u0027 \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"abbe32d2_2abade41","line":174,"updated":"2024-04-03 11:28:23.000000000","message":"this could also move","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":171,"context_line":"RESERVED \u003d \u0027\\x00\u0027"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"LOG_LINE_DEFAULT_FORMAT \u003d \u0027{remote_addr} - - [{time.d}/{time.b}/{time.Y}\u0027 \\"},{"line_number":175,"context_line":"                          \u0027:{time.H}:{time.M}:{time.S} +0000] \u0027 \\"},{"line_number":176,"context_line":"                          \u0027\"{method} {path}\" {status} {content_length} \u0027 \\"},{"line_number":177,"context_line":"                          \u0027\"{referer}\" \"{txn_id}\" \"{user_agent}\" \u0027 \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"916b0eff_325cca38","line":174,"in_reply_to":"77ef84b1_5fa900de","updated":"2024-04-05 17:12:36.000000000","message":"Acknowledged","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1fcc46da9ce743220706f1f1db3358f5ec062769","unresolved":true,"context_lines":[{"line_number":171,"context_line":"RESERVED \u003d \u0027\\x00\u0027"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"LOG_LINE_DEFAULT_FORMAT \u003d \u0027{remote_addr} - - [{time.d}/{time.b}/{time.Y}\u0027 \\"},{"line_number":175,"context_line":"                          \u0027:{time.H}:{time.M}:{time.S} +0000] \u0027 \\"},{"line_number":176,"context_line":"                          \u0027\"{method} {path}\" {status} {content_length} \u0027 \\"},{"line_number":177,"context_line":"                          \u0027\"{referer}\" \"{txn_id}\" \"{user_agent}\" \u0027 \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"77ef84b1_5fa900de","line":174,"in_reply_to":"abbe32d2_2abade41","updated":"2024-04-03 14:46:45.000000000","message":"agree, I think i pointed this out the storage server log related code should move to the new module in a previous revision.","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"524c519dcfeba3496fa07d5109f0ed12c536e9d5","unresolved":true,"context_lines":[{"line_number":477,"context_line":"    SysLogHandler.priority_map[\u0027NOTICE\u0027] \u003d \u0027notice\u0027"},{"line_number":478,"context_line":"    # Trying to log threads while monkey-patched can lead to deadlocks; see"},{"line_number":479,"context_line":"    # https://bugs.launchpad.net/swift/+bug/1895739"},{"line_number":480,"context_line":"    logging.logThreads \u003d 0"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"def eventlet_monkey_patch():"}],"source_content_type":"text/x-python","patch_set":5,"id":"15b0b8ed_5e9adb46","line":480,"updated":"2024-04-03 11:28:23.000000000","message":"this could move?","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1fcc46da9ce743220706f1f1db3358f5ec062769","unresolved":false,"context_lines":[{"line_number":477,"context_line":"    SysLogHandler.priority_map[\u0027NOTICE\u0027] \u003d \u0027notice\u0027"},{"line_number":478,"context_line":"    # Trying to log threads while monkey-patched can lead to deadlocks; see"},{"line_number":479,"context_line":"    # https://bugs.launchpad.net/swift/+bug/1895739"},{"line_number":480,"context_line":"    logging.logThreads \u003d 0"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"def eventlet_monkey_patch():"}],"source_content_type":"text/x-python","patch_set":5,"id":"f83a4461_b2a81aa2","line":480,"in_reply_to":"15b0b8ed_5e9adb46","updated":"2024-04-03 14:46:45.000000000","message":"since it\u0027s really more about monkey patching than logging I think Shreeya decided we can keep it here so that all our monkey patching is implemented in next to each other and I think I\u0027m ok with that.","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"524c519dcfeba3496fa07d5109f0ed12c536e9d5","unresolved":true,"context_lines":[{"line_number":574,"context_line":"                h.update(six.b(self.salt))"},{"line_number":575,"context_line":"            h.update(six.b(self))"},{"line_number":576,"context_line":"            return \u0027{%s%s}%s\u0027 % (\u0027S\u0027 if self.salt else \u0027\u0027, self.method.upper(),"},{"line_number":577,"context_line":"                                 h.hexdigest())"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"class StrFormatTime(object):"}],"source_content_type":"text/x-python","patch_set":5,"id":"71c8fd16_bdf43343","line":577,"updated":"2024-04-03 11:28:23.000000000","message":"move?? this is possibly only used when logging, but I haven\u0027t checked, so not 100% sure about this moving","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"c64df26b784885a10d5eb63c6da0e5fe194e7780","unresolved":false,"context_lines":[{"line_number":574,"context_line":"                h.update(six.b(self.salt))"},{"line_number":575,"context_line":"            h.update(six.b(self))"},{"line_number":576,"context_line":"            return \u0027{%s%s}%s\u0027 % (\u0027S\u0027 if self.salt else \u0027\u0027, self.method.upper(),"},{"line_number":577,"context_line":"                                 h.hexdigest())"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"class StrFormatTime(object):"}],"source_content_type":"text/x-python","patch_set":5,"id":"214fa102_14c80d86","line":577,"in_reply_to":"1132a201_68058dc9","updated":"2024-04-05 18:41:42.000000000","message":"Acknowledged","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1fcc46da9ce743220706f1f1db3358f5ec062769","unresolved":true,"context_lines":[{"line_number":574,"context_line":"                h.update(six.b(self.salt))"},{"line_number":575,"context_line":"            h.update(six.b(self))"},{"line_number":576,"context_line":"            return \u0027{%s%s}%s\u0027 % (\u0027S\u0027 if self.salt else \u0027\u0027, self.method.upper(),"},{"line_number":577,"context_line":"                                 h.hexdigest())"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"class StrFormatTime(object):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1132a201_68058dc9","line":577,"in_reply_to":"71c8fd16_bdf43343","updated":"2024-04-03 14:46:45.000000000","message":"appears to be used mostly in proxy-logging and the storage-server `get_log_line` \n\nI think all these Log/Str classes would be good candidates to move.","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"524c519dcfeba3496fa07d5109f0ed12c536e9d5","unresolved":true,"context_lines":[{"line_number":674,"context_line":"        \u0027pid\u0027: os.getpid(),"},{"line_number":675,"context_line":"        \u0027policy_index\u0027: policy_index,"},{"line_number":676,"context_line":"    }"},{"line_number":677,"context_line":"    return LogStringFormatter(default\u003d\u0027-\u0027).format(fmt, **replacements)"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"def get_trans_id_time(trans_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"d15857e4_b181b452","line":677,"updated":"2024-04-03 11:28:23.000000000","message":"move?","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1fcc46da9ce743220706f1f1db3358f5ec062769","unresolved":true,"context_lines":[{"line_number":674,"context_line":"        \u0027pid\u0027: os.getpid(),"},{"line_number":675,"context_line":"        \u0027policy_index\u0027: policy_index,"},{"line_number":676,"context_line":"    }"},{"line_number":677,"context_line":"    return LogStringFormatter(default\u003d\u0027-\u0027).format(fmt, **replacements)"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"def get_trans_id_time(trans_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"e6c3a608_0eb3275d","line":677,"in_reply_to":"d15857e4_b181b452","updated":"2024-04-03 14:46:45.000000000","message":"I think `get_policy_index` was the primary anchoring helper; but it could easily be understood as `get_policy_index_for_logging` and move as well.\n\nthis function name certainly *sounds* like it should be implemented in utils.logs","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"c64df26b784885a10d5eb63c6da0e5fe194e7780","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        \u0027pid\u0027: os.getpid(),"},{"line_number":675,"context_line":"        \u0027policy_index\u0027: policy_index,"},{"line_number":676,"context_line":"    }"},{"line_number":677,"context_line":"    return LogStringFormatter(default\u003d\u0027-\u0027).format(fmt, **replacements)"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"def get_trans_id_time(trans_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"21373fda_02e77e39","line":677,"in_reply_to":"e6c3a608_0eb3275d","updated":"2024-04-05 18:41:42.000000000","message":"Acknowledged","commit_id":"2a50f0dd6f37b3d6e0a20d1c3d46b65b85810e28"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"88660bcf41d0899e134ae0522e2264ad17deb6e9","unresolved":true,"context_lines":[{"line_number":24,"context_line":"import errno"},{"line_number":25,"context_line":"import fcntl"},{"line_number":26,"context_line":"import grp"},{"line_number":27,"context_line":"import hashlib"},{"line_number":28,"context_line":"import json"},{"line_number":29,"context_line":"import operator"},{"line_number":30,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":7,"id":"063b0130_cb9cb192","side":"PARENT","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":14},"updated":"2024-04-05 19:41:15.000000000","message":"Even though it\u0027ll give a pep8 error as unused, it\u0027s used in test_utils as         with mock.patch(\u0027swift.common.utils.hashlib\u0027) as mocklib:","commit_id":"5e13de119d3039fb097e3089edeab5e4a3ce1ac1"},{"author":{"_account_id":36606,"name":"Yan Xiao","display_name":"Yan","email":"yanxiao@nvidia.com","username":"yanxiao"},"change_message_id":"0d2dc404ec79960a807322d4b93caff0be2a0e83","unresolved":true,"context_lines":[{"line_number":24,"context_line":"import errno"},{"line_number":25,"context_line":"import fcntl"},{"line_number":26,"context_line":"import grp"},{"line_number":27,"context_line":"import hashlib"},{"line_number":28,"context_line":"import json"},{"line_number":29,"context_line":"import operator"},{"line_number":30,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":7,"id":"c2fa7cd8_84ef8341","side":"PARENT","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":14},"in_reply_to":"063b0130_cb9cb192","updated":"2024-04-10 17:59:29.000000000","message":"if add #noqa, would that prevent the error?","commit_id":"5e13de119d3039fb097e3089edeab5e4a3ce1ac1"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"2a425d065805a57e668cf8a095677c91c0c427ba","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import errno"},{"line_number":25,"context_line":"import fcntl"},{"line_number":26,"context_line":"import grp"},{"line_number":27,"context_line":"import hashlib"},{"line_number":28,"context_line":"import json"},{"line_number":29,"context_line":"import operator"},{"line_number":30,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":7,"id":"e32295d6_35717b91","side":"PARENT","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":14},"in_reply_to":"c2fa7cd8_84ef8341","updated":"2024-04-11 17:33:27.000000000","message":"Acknowledged","commit_id":"5e13de119d3039fb097e3089edeab5e4a3ce1ac1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":72,"context_line":"from six.moves import cPickle as pickle"},{"line_number":73,"context_line":"from six.moves import configparser"},{"line_number":74,"context_line":"from six.moves.configparser import (ConfigParser, NoSectionError,"},{"line_number":75,"context_line":"                                    NoOptionError, RawConfigParser)"},{"line_number":76,"context_line":"from six.moves import range"},{"line_number":77,"context_line":"from six.moves.urllib.parse import quote as _quote, unquote"},{"line_number":78,"context_line":"from six.moves.urllib.parse import urlparse"}],"source_content_type":"text/x-python","patch_set":11,"id":"91988113_96939a52","line":75,"updated":"2024-04-13 14:11:58.000000000","message":"it\u0027s kind of a smell that we have a utils.config module and all this config stuff is still imported.\n\n... but for now it\u0027s needed for the HASH_PATH_* stuff","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":72,"context_line":"from six.moves import cPickle as pickle"},{"line_number":73,"context_line":"from six.moves import configparser"},{"line_number":74,"context_line":"from six.moves.configparser import (ConfigParser, NoSectionError,"},{"line_number":75,"context_line":"                                    NoOptionError, RawConfigParser)"},{"line_number":76,"context_line":"from six.moves import range"},{"line_number":77,"context_line":"from six.moves.urllib.parse import quote as _quote, unquote"},{"line_number":78,"context_line":"from six.moves.urllib.parse import urlparse"}],"source_content_type":"text/x-python","patch_set":11,"id":"862aa05f_b9d47292","line":75,"in_reply_to":"91988113_96939a52","updated":"2024-04-18 16:55:49.000000000","message":"Acknowledged","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":104,"context_line":"    LogStringFormatter,"},{"line_number":105,"context_line":"    get_policy_index,"},{"line_number":106,"context_line":"    split_path,"},{"line_number":107,"context_line":"    md5,"},{"line_number":108,"context_line":"    ATTRIBUTES_RE,"},{"line_number":109,"context_line":"    parse_content_disposition,"},{"line_number":110,"context_line":")"}],"source_content_type":"text/x-python","patch_set":11,"id":"83053bd4_49cc2b8a","line":107,"updated":"2024-04-13 14:11:58.000000000","message":"just like you discovered we needed a config module - when you find you want to move something that depends on another helper in utils you have to consider if it belongs in that new module\n\nIn my attempt I ended up creating a utils.helpers for split_path and md5 (and quote)","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    LogStringFormatter,"},{"line_number":105,"context_line":"    get_policy_index,"},{"line_number":106,"context_line":"    split_path,"},{"line_number":107,"context_line":"    md5,"},{"line_number":108,"context_line":"    ATTRIBUTES_RE,"},{"line_number":109,"context_line":"    parse_content_disposition,"},{"line_number":110,"context_line":")"}],"source_content_type":"text/x-python","patch_set":11,"id":"cf5afd1c_63e36850","line":107,"in_reply_to":"83053bd4_49cc2b8a","updated":"2024-04-18 16:55:49.000000000","message":"Acknowledged","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":110,"context_line":")"},{"line_number":111,"context_line":"from swift.common.utils.config import ( # noqa"},{"line_number":112,"context_line":"    TRUE_VALUES,"},{"line_number":113,"context_line":"    LOG_LINE_DEFAULT_FORMAT,"},{"line_number":114,"context_line":"    config_true_value,"},{"line_number":115,"context_line":"    append_underscore,"},{"line_number":116,"context_line":"    non_negative_float,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ef739b8e_88e3d36c","line":113,"updated":"2024-04-13 14:11:58.000000000","message":"why is this is config instead of logs?","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":110,"context_line":")"},{"line_number":111,"context_line":"from swift.common.utils.config import ( # noqa"},{"line_number":112,"context_line":"    TRUE_VALUES,"},{"line_number":113,"context_line":"    LOG_LINE_DEFAULT_FORMAT,"},{"line_number":114,"context_line":"    config_true_value,"},{"line_number":115,"context_line":"    append_underscore,"},{"line_number":116,"context_line":"    non_negative_float,"}],"source_content_type":"text/x-python","patch_set":11,"id":"02ff6aa4_408d274d","line":113,"in_reply_to":"ef739b8e_88e3d36c","updated":"2024-04-18 16:55:49.000000000","message":"Acknowledged, moved","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":159,"context_line":"import logging"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"NOTICE \u003d 25"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"# These are lazily pulled from libc elsewhere"},{"line_number":165,"context_line":"_sys_fallocate \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"70d869d9_870ada62","line":162,"updated":"2024-04-13 14:11:58.000000000","message":"this is redefined in utils.logs - either import it or move the monkey_patch_logging function and just import that.","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":159,"context_line":"import logging"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"NOTICE \u003d 25"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"# These are lazily pulled from libc elsewhere"},{"line_number":165,"context_line":"_sys_fallocate \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"f282ba10_1c2e225a","line":162,"in_reply_to":"70d869d9_870ada62","updated":"2024-04-18 16:55:49.000000000","message":"Done","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":271,"context_line":"    validate_hash_conf()"},{"line_number":272,"context_line":"except (InvalidHashPathConfigError, IOError):"},{"line_number":273,"context_line":"    # could get monkey patched or lazy loaded"},{"line_number":274,"context_line":"    pass"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"def backward(f, blocksize\u003d4096):"}],"source_content_type":"text/x-python","patch_set":11,"id":"536ccdbb_3b7725ae","line":274,"updated":"2024-04-13 14:11:58.000000000","message":"all this swift.conf HASH_PATH stuff is config related\n\nbut it turned out to be non-trivial to relocate because of the HASH_PATH_* globals.  I\u0027m going to post a follow-up but I think we should keep it separte for now.","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    validate_hash_conf()"},{"line_number":272,"context_line":"except (InvalidHashPathConfigError, IOError):"},{"line_number":273,"context_line":"    # could get monkey patched or lazy loaded"},{"line_number":274,"context_line":"    pass"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"def backward(f, blocksize\u003d4096):"}],"source_content_type":"text/x-python","patch_set":11,"id":"324c8482_2bc831c2","line":274,"in_reply_to":"536ccdbb_3b7725ae","updated":"2024-04-18 16:55:49.000000000","message":"Acknowledged","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":1401,"context_line":"def readconf(conf_path, section_name\u003dNone, log_name\u003dNone, defaults\u003dNone,"},{"line_number":1402,"context_line":"             raw\u003dFalse):"},{"line_number":1403,"context_line":"    \"\"\""},{"line_number":1404,"context_line":"    Read config file(s) and return config items as a dict"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    :param conf_path: path to config file/directory, or a file-like object"},{"line_number":1407,"context_line":"                     (hasattr readline)"}],"source_content_type":"text/x-python","patch_set":11,"id":"f2745e2c_f8b1b54f","line":1404,"updated":"2024-04-13 14:11:58.000000000","message":"this is like *the* swift config function - totally would be expected to find it the new utils.config module","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":1401,"context_line":"def readconf(conf_path, section_name\u003dNone, log_name\u003dNone, defaults\u003dNone,"},{"line_number":1402,"context_line":"             raw\u003dFalse):"},{"line_number":1403,"context_line":"    \"\"\""},{"line_number":1404,"context_line":"    Read config file(s) and return config items as a dict"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    :param conf_path: path to config file/directory, or a file-like object"},{"line_number":1407,"context_line":"                     (hasattr readline)"}],"source_content_type":"text/x-python","patch_set":11,"id":"2f98fc7a_cbbaaf99","line":1404,"in_reply_to":"f2745e2c_f8b1b54f","updated":"2024-04-18 16:55:49.000000000","message":"Acknowledged","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7c9cd58e26a5014271dccd5cadf256c9b76cf21d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":14,"id":"427dccaa_292917d1","updated":"2024-04-25 14:10:56.000000000","message":"ok, I can\u0027 t see anything left in here that would obviously belong in one of the new modules, except for \u0027helpers\u0027, but I\u0027m not sure what the scope of \u0027helpers\u0027 is","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"743e6958c13ce36ff012e9502fd4da305fda38a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"3506cbfa_a9f48ce5","in_reply_to":"427dccaa_292917d1","updated":"2024-04-25 23:48:49.000000000","message":"Adding comments explaining that","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d3df0a570585b19aaa8fcb1a431ec1df021f10d6","unresolved":true,"context_lines":[{"line_number":24,"context_line":"import errno"},{"line_number":25,"context_line":"import fcntl"},{"line_number":26,"context_line":"import grp"},{"line_number":27,"context_line":"import hashlib  # noqa"},{"line_number":28,"context_line":"import json"},{"line_number":29,"context_line":"import os"},{"line_number":30,"context_line":"import pwd"}],"source_content_type":"text/x-python","patch_set":15,"id":"92d46298_4953685c","line":27,"updated":"2024-04-25 20:33:51.000000000","message":"Is there really anything that relies on there being a `swift.common.utils.hashlib`? Why can\u0027t we just drop the import?","commit_id":"0f79f21164f5b6db907b9f95a905a7d73a1fd301"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"f2e6d44954b0f8f8dcf99df92f93c0948c216495","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import errno"},{"line_number":25,"context_line":"import fcntl"},{"line_number":26,"context_line":"import grp"},{"line_number":27,"context_line":"import hashlib  # noqa"},{"line_number":28,"context_line":"import json"},{"line_number":29,"context_line":"import os"},{"line_number":30,"context_line":"import pwd"}],"source_content_type":"text/x-python","patch_set":15,"id":"a074d6ed_bac909cd","line":27,"in_reply_to":"92d46298_4953685c","updated":"2024-04-26 17:52:19.000000000","message":"Done","commit_id":"0f79f21164f5b6db907b9f95a905a7d73a1fd301"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d3df0a570585b19aaa8fcb1a431ec1df021f10d6","unresolved":true,"context_lines":[{"line_number":68,"context_line":"import six"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"from six.moves import cPickle as pickle"},{"line_number":71,"context_line":"import configparser  # noqa"},{"line_number":72,"context_line":"from six.moves.configparser import (ConfigParser, NoSectionError,"},{"line_number":73,"context_line":"                                    NoOptionError)"},{"line_number":74,"context_line":"from six.moves import range"}],"source_content_type":"text/x-python","patch_set":15,"id":"3b3012b4_ba9fbea1","line":71,"updated":"2024-04-25 20:33:51.000000000","message":"Again, why can\u0027t we just drop this? Also, I\u0027m surprised the py2 jobs are happy with this as is:\n```\n$ python2\nPython 2.7.18 (default, Jul  1 2022, 10:30:50) \n[GCC 11.2.0] on linux2\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\u003e\u003e\u003e import configparser\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nImportError: No module named configparser\n```","commit_id":"0f79f21164f5b6db907b9f95a905a7d73a1fd301"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"f2e6d44954b0f8f8dcf99df92f93c0948c216495","unresolved":false,"context_lines":[{"line_number":68,"context_line":"import six"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"from six.moves import cPickle as pickle"},{"line_number":71,"context_line":"import configparser  # noqa"},{"line_number":72,"context_line":"from six.moves.configparser import (ConfigParser, NoSectionError,"},{"line_number":73,"context_line":"                                    NoOptionError)"},{"line_number":74,"context_line":"from six.moves import range"}],"source_content_type":"text/x-python","patch_set":15,"id":"7c99ab67_add2eb4f","line":71,"in_reply_to":"1fdf8abc_0fad7618","updated":"2024-04-26 17:52:19.000000000","message":"Acknowledged","commit_id":"0f79f21164f5b6db907b9f95a905a7d73a1fd301"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"cde7115c8be3b18a7580f41fa983dad520b99289","unresolved":true,"context_lines":[{"line_number":68,"context_line":"import six"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"from six.moves import cPickle as pickle"},{"line_number":71,"context_line":"import configparser  # noqa"},{"line_number":72,"context_line":"from six.moves.configparser import (ConfigParser, NoSectionError,"},{"line_number":73,"context_line":"                                    NoOptionError)"},{"line_number":74,"context_line":"from six.moves import range"}],"source_content_type":"text/x-python","patch_set":15,"id":"e6f9e8bb_9a0bcd32","line":71,"in_reply_to":"3b3012b4_ba9fbea1","updated":"2024-04-26 00:12:12.000000000","message":"configparser is used as utils.configparser failing the below:\n\nFAILED test/unit/common/test_daemon.py::TestRunDaemon::test_run_daemon_from_conf_dir_with_duplicate_var - AttributeError: module \u0027swift.common.utils\u0027 has no attribute \u0027configparser\u0027\nFAILED test/unit/common/test_daemon.py::TestRunDaemon::test_run_daemon_from_conf_file_with_duplicate_var - AttributeError: module \u0027swift.common.utils\u0027 has no attribute \u0027configparser\u0027\nFAILED test/unit/common/test_wsgi.py::TestWSGI::test_loadapp_from_dir_with_duplicate_var - AttributeError: module \u0027swift.common.utils\u0027 has no attribute \u0027configparser\u0027\nFAILED test/unit/common/test_wsgi.py::TestWSGI::test_loadapp_from_file_with_duplicate_var - AttributeError: module \u0027swift.common.utils\u0027 has no attribute \u0027configparser\u0027\n\nWe can import configparser in those particular files as needed then! Should we do that?\n\n\nSame is the case for import hashlib in utils:\nFAILED test/unit/common/test_utils.py::TestUtils::test_str_anonymizer_python_maddness - AttributeError: \u003cmodule \u0027swift.common.utils\u0027 from \u0027/vagrant/swift/swift/common/utils/__init__.py\u0027\u003e does not have the attribute \u0027hashlib\u0027","commit_id":"0f79f21164f5b6db907b9f95a905a7d73a1fd301"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4416a1c8338b1425c0edb85e67a58539b4b4c69a","unresolved":true,"context_lines":[{"line_number":68,"context_line":"import six"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"from six.moves import cPickle as pickle"},{"line_number":71,"context_line":"import configparser  # noqa"},{"line_number":72,"context_line":"from six.moves.configparser import (ConfigParser, NoSectionError,"},{"line_number":73,"context_line":"                                    NoOptionError)"},{"line_number":74,"context_line":"from six.moves import range"}],"source_content_type":"text/x-python","patch_set":15,"id":"1fdf8abc_0fad7618","line":71,"in_reply_to":"e6f9e8bb_9a0bcd32","updated":"2024-04-26 16:10:42.000000000","message":"Yeah, I\u0027d say we should\n\n- update `test/unit/__init__.py` to have `from six.moves import configparser` and drop [the `utils.` in `assertDuplicateOptionError`](https://github.com/openstack/swift/blob/2.33.0/test/unit/__init__.py#L1451), and\n- update the patching for `test_str_anonymizer_python_maddness` from `swift.common.utils.hashlib` to `swift.common.utils.base.hashlib`","commit_id":"0f79f21164f5b6db907b9f95a905a7d73a1fd301"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9fd8e6c18e742f6cd6e22b0073bd1f2d4efe5d1f","unresolved":false,"context_lines":[{"line_number":505,"context_line":"        uuid.uuid4().hex[:21], int(time.time()), quote(trans_id_suffix))"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"def get_policy_index(req_headers, res_headers):"},{"line_number":509,"context_line":"    \"\"\""},{"line_number":510,"context_line":"    Returns the appropriate index of the storage policy for the request from"},{"line_number":511,"context_line":"    a proxy server"}],"source_content_type":"text/x-python","patch_set":16,"id":"a13c661a_4e565b69","side":"PARENT","line":508,"updated":"2024-04-29 17:14:49.000000000","message":"I was a little surprised to see this moved into `logs`... but yeah, I suppose it **is** always used in connection with logging, even in `s3api` -- it\u0027s rather indirect, though. I wonder it it would\u0027ve been better in `request_helpers` or something from the get-go.\n\nThat said, I\u0027m fine with the move as it is now, too.","commit_id":"6387949a540e871e19062de8131503a8ac2ceef7"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9fd8e6c18e742f6cd6e22b0073bd1f2d4efe5d1f","unresolved":true,"context_lines":[{"line_number":1362,"context_line":"        return self"},{"line_number":1363,"context_line":""},{"line_number":1364,"context_line":""},{"line_number":1365,"context_line":"class StatsdClient(object):"},{"line_number":1366,"context_line":"    def __init__(self, host, port, base_prefix\u003d\u0027\u0027, tail_prefix\u003d\u0027\u0027,"},{"line_number":1367,"context_line":"                 default_sample_rate\u003d1, sample_rate_factor\u003d1, logger\u003dNone):"},{"line_number":1368,"context_line":"        self._host \u003d host"}],"source_content_type":"text/x-python","patch_set":16,"id":"fd238c28_0125a901","side":"PARENT","line":1365,"updated":"2024-04-29 17:14:49.000000000","message":"Should probably also have a backwards-compat import.","commit_id":"6387949a540e871e19062de8131503a8ac2ceef7"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"1adb8eec0fd10f51c407d2b95899b99a9a8ff7e2","unresolved":false,"context_lines":[{"line_number":1362,"context_line":"        return self"},{"line_number":1363,"context_line":""},{"line_number":1364,"context_line":""},{"line_number":1365,"context_line":"class StatsdClient(object):"},{"line_number":1366,"context_line":"    def __init__(self, host, port, base_prefix\u003d\u0027\u0027, tail_prefix\u003d\u0027\u0027,"},{"line_number":1367,"context_line":"                 default_sample_rate\u003d1, sample_rate_factor\u003d1, logger\u003dNone):"},{"line_number":1368,"context_line":"        self._host \u003d host"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fd23e19_4437d206","side":"PARENT","line":1365,"in_reply_to":"fd238c28_0125a901","updated":"2024-04-29 18:18:27.000000000","message":"Acknowledged","commit_id":"6387949a540e871e19062de8131503a8ac2ceef7"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9fd8e6c18e742f6cd6e22b0073bd1f2d4efe5d1f","unresolved":true,"context_lines":[{"line_number":85,"context_line":"from .base import (  # noqa"},{"line_number":86,"context_line":"    md5, get_valid_utf8_str, quote, split_path)"},{"line_number":87,"context_line":"from swift.common.utils.logs import (   # noqa"},{"line_number":88,"context_line":"    SysLogHandler,  # t.u.helpers.setup_servers monkey patch is sketch"},{"line_number":89,"context_line":"    logging_monkey_patch,"},{"line_number":90,"context_line":"    get_logger,"},{"line_number":91,"context_line":"    PrefixLoggerAdapter,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f834d23_c8a2eacf","line":88,"updated":"2024-04-29 17:14:49.000000000","message":"We shouldn\u0027t need to do this; if we *did*, we should probably just continue importing from `logging`.\n\n\u003e t.u.helpers.setup_servers monkey patch is sketch\n\nTrue, but I think it\u0027s a sign that we need to change it -- continuing to patch `swift.common.utils.SysLogHandler` isn\u0027t going to be useful; none of the code under test would be using it. I\u0027d think that helper should need to start patching `swift.common.utils.logs.SysLogHandler`","commit_id":"5b49293c5267c0bf4e3e0aff1f932007c58468b0"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"1adb8eec0fd10f51c407d2b95899b99a9a8ff7e2","unresolved":false,"context_lines":[{"line_number":85,"context_line":"from .base import (  # noqa"},{"line_number":86,"context_line":"    md5, get_valid_utf8_str, quote, split_path)"},{"line_number":87,"context_line":"from swift.common.utils.logs import (   # noqa"},{"line_number":88,"context_line":"    SysLogHandler,  # t.u.helpers.setup_servers monkey patch is sketch"},{"line_number":89,"context_line":"    logging_monkey_patch,"},{"line_number":90,"context_line":"    get_logger,"},{"line_number":91,"context_line":"    PrefixLoggerAdapter,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9d7b38b7_ef7ab5d3","line":88,"in_reply_to":"9f834d23_c8a2eacf","updated":"2024-04-29 18:18:27.000000000","message":"Acknowledged","commit_id":"5b49293c5267c0bf4e3e0aff1f932007c58468b0"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9fd8e6c18e742f6cd6e22b0073bd1f2d4efe5d1f","unresolved":true,"context_lines":[{"line_number":96,"context_line":"    SwiftLoggerAdapter,"},{"line_number":97,"context_line":"    LogAdapter,"},{"line_number":98,"context_line":"    LoggerFileObject,"},{"line_number":99,"context_line":"    PipeMutex,"},{"line_number":100,"context_line":"    ThreadSafeSysLogHandler,"},{"line_number":101,"context_line":"    StrAnonymizer,"},{"line_number":102,"context_line":"    get_log_line,"}],"source_content_type":"text/x-python","patch_set":16,"id":"198bdaa5_3f63ef4c","line":99,"updated":"2024-04-29 17:14:49.000000000","message":"If we\u0027re going to provide `PipeMutex`, we should probably also provide `NoopMutex`","commit_id":"5b49293c5267c0bf4e3e0aff1f932007c58468b0"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"1adb8eec0fd10f51c407d2b95899b99a9a8ff7e2","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    SwiftLoggerAdapter,"},{"line_number":97,"context_line":"    LogAdapter,"},{"line_number":98,"context_line":"    LoggerFileObject,"},{"line_number":99,"context_line":"    PipeMutex,"},{"line_number":100,"context_line":"    ThreadSafeSysLogHandler,"},{"line_number":101,"context_line":"    StrAnonymizer,"},{"line_number":102,"context_line":"    get_log_line,"}],"source_content_type":"text/x-python","patch_set":16,"id":"f0b83a5d_a023ce62","line":99,"in_reply_to":"198bdaa5_3f63ef4c","updated":"2024-04-29 18:18:27.000000000","message":"Done","commit_id":"5b49293c5267c0bf4e3e0aff1f932007c58468b0"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9fd8e6c18e742f6cd6e22b0073bd1f2d4efe5d1f","unresolved":true,"context_lines":[{"line_number":108,"context_line":")"},{"line_number":109,"context_line":"from swift.common.utils.config import ( # noqa"},{"line_number":110,"context_line":"    TRUE_VALUES,"},{"line_number":111,"context_line":"    NicerInterpolation,"},{"line_number":112,"context_line":"    config_true_value,"},{"line_number":113,"context_line":"    append_underscore,"},{"line_number":114,"context_line":"    non_negative_float,"}],"source_content_type":"text/x-python","patch_set":16,"id":"f90246fd_23feda69","line":111,"updated":"2024-04-29 17:14:49.000000000","message":"Given the `Optional`-ness, IDK that we really need to provide the import, but I suppose better safe than sorry?","commit_id":"5b49293c5267c0bf4e3e0aff1f932007c58468b0"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"1adb8eec0fd10f51c407d2b95899b99a9a8ff7e2","unresolved":false,"context_lines":[{"line_number":108,"context_line":")"},{"line_number":109,"context_line":"from swift.common.utils.config import ( # noqa"},{"line_number":110,"context_line":"    TRUE_VALUES,"},{"line_number":111,"context_line":"    NicerInterpolation,"},{"line_number":112,"context_line":"    config_true_value,"},{"line_number":113,"context_line":"    append_underscore,"},{"line_number":114,"context_line":"    non_negative_float,"}],"source_content_type":"text/x-python","patch_set":16,"id":"14b4b79f_52272188","line":111,"in_reply_to":"f90246fd_23feda69","updated":"2024-04-29 18:18:27.000000000","message":"better safe than sorry :))","commit_id":"5b49293c5267c0bf4e3e0aff1f932007c58468b0"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b025d5d6b9a3984e1776a6775ab4d76b380d8bd","unresolved":true,"context_lines":[{"line_number":85,"context_line":"from .base import (  # noqa"},{"line_number":86,"context_line":"    md5, get_valid_utf8_str, quote, split_path)"},{"line_number":87,"context_line":"from swift.common.utils.logs import (   # noqa"},{"line_number":88,"context_line":"    SysLogHandler,  # t.u.helpers.setup_servers monkey patch is sketch"},{"line_number":89,"context_line":"    logging_monkey_patch,"},{"line_number":90,"context_line":"    get_logger,"},{"line_number":91,"context_line":"    PrefixLoggerAdapter,"}],"source_content_type":"text/x-python","patch_set":20,"id":"89ff91a0_1d5f56c9","line":88,"updated":"2024-05-01 19:49:34.000000000","message":"lol","commit_id":"bc3a59bdd36fbd90554e73d419d8767a3845f9af"}],"swift/common/utils/base.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from six.moves.urllib.parse import quote as _quote"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"try:"},{"line_number":31,"context_line":"    _test_md5 \u003d hashlib.md5(usedforsecurity\u003dFalse)  # nosec"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def md5(string\u003db\u0027\u0027, usedforsecurity\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":17,"id":"29b8a655_2eb680f2","line":30,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00274567,4585!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/base.py sed -e \u002730,48!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    utf16_encoder \u003d codecs.getencoder(\u0027utf-16\u0027)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def get_valid_utf8_str(str_or_unicode):"},{"line_number":60,"context_line":"    \"\"\""},{"line_number":61,"context_line":"    Get valid parts of utf-8 str from str, unicode and even invalid utf-8 str"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"00882adc_15cec233","line":59,"updated":"2024-04-29 20:16:32.000000000","message":"```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00273619,3640!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/base.py sed -e \u002759,79!d\u0027 )\n```\nshows\n```\n12d11\n\u003c         # Apparently under py3 we need to go to utf-16 to collapse surrogates?\n```\nbut that just got hoisted up a bit to where we create the coder/decoder.","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    return valid_unicode_str.encode(\u0027utf-8\u0027)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"def quote(value, safe\u003d\u0027/\u0027):"},{"line_number":83,"context_line":"    \"\"\""},{"line_number":84,"context_line":"    Patched version of urllib.quote that encodes utf-8 strings before quoting"},{"line_number":85,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"ef40cff6_3547cb32","line":82,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00274175,4182!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/base.py sed -e \u002782,89!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    return quoted"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"def split_path(path, minsegs\u003d1, maxsegs\u003dNone, rest_with_last\u003dFalse):"},{"line_number":93,"context_line":"    \"\"\""},{"line_number":94,"context_line":"    Validate and split the given HTTP request path."},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"d66c3856_44fb5bc6","line":92,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00271133,1177!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/base.py sed -e \u002792,136!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"}],"swift/common/utils/config.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":23,"context_line":"                          \u0027\"{method} {path}\" {status} {content_length} \u0027 \\"},{"line_number":24,"context_line":"                          \u0027\"{referer}\" \"{txn_id}\" \"{user_agent}\" \u0027 \\"},{"line_number":25,"context_line":"                          \u0027{trans_time:.4f} \"{additional_info}\" {pid} \u0027 \\"},{"line_number":26,"context_line":"                          \u0027{policy_index}\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def config_true_value(value):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1601e4fa_6b852b22","line":26,"updated":"2024-04-13 14:11:58.000000000","message":"why isn\u0027t this in utils.logs?  this womm:\n\n    diff --git a/swift/common/utils/__init__.py b/swift/common/utils/__init__.py\n    index e2e9d8e1b..80c639e84 100644\n    --- a/swift/common/utils/__init__.py\n    +++ b/swift/common/utils/__init__.py\n    @@ -106,11 +106,11 @@ from swift.common.utils.logs import (   # noqa\n         split_path,\n         md5,\n         ATTRIBUTES_RE,\n    +    LOG_LINE_DEFAULT_FORMAT,\n         parse_content_disposition,\n     )\n     from swift.common.utils.config import ( # noqa\n         TRUE_VALUES,\n    -    LOG_LINE_DEFAULT_FORMAT,\n         config_true_value,\n         append_underscore,\n         non_negative_float,\n    diff --git a/swift/common/utils/config.py b/swift/common/utils/config.py\n    index 43b870f38..6564081bc 100644\n    --- a/swift/common/utils/config.py\n    +++ b/swift/common/utils/config.py\n    @@ -18,13 +18,6 @@ import six\n     # Used when reading config values\n     TRUE_VALUES \u003d {\u0027true\u0027, \u00271\u0027, \u0027yes\u0027, \u0027on\u0027, \u0027t\u0027, \u0027y\u0027}\n     \n    -LOG_LINE_DEFAULT_FORMAT \u003d \u0027{remote_addr} - - [{time.d}/{time.b}/{time.Y}\u0027 \\\n    -                          \u0027:{time.H}:{time.M}:{time.S} +0000] \u0027 \\\n    -                          \u0027\"{method} {path}\" {status} {content_length} \u0027 \\\n    -                          \u0027\"{referer}\" \"{txn_id}\" \"{user_agent}\" \u0027 \\\n    -                          \u0027{trans_time:.4f} \"{additional_info}\" {pid} \u0027 \\\n    -                          \u0027{policy_index}\u0027\n    -\n     \n     def config_true_value(value):\n         \"\"\"\n    diff --git a/swift/common/utils/logs.py b/swift/common/utils/logs.py\n    index 41d46922a..19bf597ce 100644\n    --- a/swift/common/utils/logs.py\n    +++ b/swift/common/utils/logs.py\n    @@ -49,6 +49,13 @@ from logging.handlers import SysLogHandler\n     \n     NOTICE \u003d 25\n     \n    +LOG_LINE_DEFAULT_FORMAT \u003d \u0027{remote_addr} - - [{time.d}/{time.b}/{time.Y}\u0027 \\\n    +                          \u0027:{time.H}:{time.M}:{time.S} +0000] \u0027 \\\n    +                          \u0027\"{method} {path}\" {status} {content_length} \u0027 \\\n    +                          \u0027\"{referer}\" \"{txn_id}\" \"{user_agent}\" \u0027 \\\n    +                          \u0027{trans_time:.4f} \"{additional_info}\" {pid} \u0027 \\\n    +                          \u0027{policy_index}\u0027\n    +\n     \n     class PipeMutex(object):\n         \"\"\"","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":23,"context_line":"                          \u0027\"{method} {path}\" {status} {content_length} \u0027 \\"},{"line_number":24,"context_line":"                          \u0027\"{referer}\" \"{txn_id}\" \"{user_agent}\" \u0027 \\"},{"line_number":25,"context_line":"                          \u0027{trans_time:.4f} \"{additional_info}\" {pid} \u0027 \\"},{"line_number":26,"context_line":"                          \u0027{policy_index}\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def config_true_value(value):"}],"source_content_type":"text/x-python","patch_set":11,"id":"d9db3e7c_482e6729","line":26,"in_reply_to":"1601e4fa_6b852b22","updated":"2024-04-18 16:55:49.000000000","message":"Acknowledged","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7c9cd58e26a5014271dccd5cadf256c9b76cf21d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5a92cd24_ec15afd3","updated":"2024-04-25 14:10:56.000000000","message":"ok, this all seems like an identical copy from __init__.py, just some re-ordering","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"743e6958c13ce36ff012e9502fd4da305fda38a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"0ff5fa98_9027aa0c","in_reply_to":"5a92cd24_ec15afd3","updated":"2024-04-25 23:48:49.000000000","message":"Done","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":true,"context_lines":[{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import operator"},{"line_number":19,"context_line":"import re"},{"line_number":20,"context_line":"import configparser  # BasicInterpolation is py3 only"},{"line_number":21,"context_line":"from six.moves.configparser import (ConfigParser, RawConfigParser)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Used when reading config values"}],"source_content_type":"text/x-python","patch_set":17,"id":"513a11f6_e3532940","line":20,"updated":"2024-04-29 20:16:32.000000000","message":"I still don\u0027t understand why this doesn\u0027t cause `ImportError`s on py2... I was really expecting it to be `from six.moves import configparser`","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"39fd71d98d53bebefcf22b6f1035a16067c248f7","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import operator"},{"line_number":19,"context_line":"import re"},{"line_number":20,"context_line":"import configparser  # BasicInterpolation is py3 only"},{"line_number":21,"context_line":"from six.moves.configparser import (ConfigParser, RawConfigParser)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Used when reading config values"}],"source_content_type":"text/x-python","patch_set":17,"id":"c62d0ffe_9890be59","line":20,"in_reply_to":"513a11f6_e3532940","updated":"2024-04-30 20:38:35.000000000","message":"Changing it to from six.moves import configparser, being safe!","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from six.moves.configparser import (ConfigParser, RawConfigParser)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Used when reading config values"},{"line_number":24,"context_line":"TRUE_VALUES \u003d {\u0027true\u0027, \u00271\u0027, \u0027yes\u0027, \u0027on\u0027, \u0027t\u0027, \u0027y\u0027}"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def config_true_value(value):"}],"source_content_type":"text/x-python","patch_set":17,"id":"85903b10_67456074","line":24,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u0027284!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/config.py sed -e \u002724!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":24,"context_line":"TRUE_VALUES \u003d {\u0027true\u0027, \u00271\u0027, \u0027yes\u0027, \u0027on\u0027, \u0027t\u0027, \u0027y\u0027}"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def config_true_value(value):"},{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    Returns True if the value is either True or a string in TRUE_VALUES."},{"line_number":30,"context_line":"    Returns False otherwise."}],"source_content_type":"text/x-python","patch_set":17,"id":"40d9cb02_6c9f2546","line":27,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u0027320,326!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/config.py sed -e \u002727,33!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        (isinstance(value, six.string_types) and value.lower() in TRUE_VALUES)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def non_negative_float(value):"},{"line_number":37,"context_line":"    \"\"\""},{"line_number":38,"context_line":"    Check that the value casts to a float and is non-negative."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"6f0d611e_abb1af2f","line":36,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u0027287,317!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/config.py sed -e \u002736,66!d\u0027 )\n```\n(Also covers `non_negative_int`)","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    return int_value"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def config_positive_int_value(value):"},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    Returns positive int value if it can be cast by int() and it\u0027s an"},{"line_number":72,"context_line":"    integer \u003e 0. (not including zero) Raises ValueError otherwise."}],"source_content_type":"text/x-python","patch_set":17,"id":"eb76a046_4754457a","line":69,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u0027329,396!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/config.py sed -e \u002769,136!d\u0027 )\n```\nAlso covers:\n- `config_float_value`\n- `config_auto_int_value`\n- `config_percent_value`\n- `config_request_node_count_value`","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        \u0027Invalid request_node_count value: %r\u0027 % value)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"def config_fallocate_value(reserve_value):"},{"line_number":140,"context_line":"    \"\"\""},{"line_number":141,"context_line":"    Returns fallocate reserve_value as an int or float."},{"line_number":142,"context_line":"    Returns is_percent as a boolean."}],"source_content_type":"text/x-python","patch_set":17,"id":"455fd754_3b2e2f1e","line":139,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u0027683,699!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/config.py sed -e \u0027139,155!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    return reserve_value, is_percent"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"def config_read_prefixed_options(conf, prefix_name, defaults):"},{"line_number":159,"context_line":"    \"\"\""},{"line_number":160,"context_line":"    Read prefixed options from configuration"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"c9a4c28f_de445dd1","line":158,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u0027442,462!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/config.py sed -e \u0027158,178!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    return params"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"def append_underscore(prefix):"},{"line_number":182,"context_line":"    if prefix and not prefix.endswith(\u0027_\u0027):"},{"line_number":183,"context_line":"        prefix +\u003d \u0027_\u0027"},{"line_number":184,"context_line":"    return prefix"}],"source_content_type":"text/x-python","patch_set":17,"id":"44d5ebd7_4159725b","line":181,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u0027399,402!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/config.py sed -e \u0027181,184!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    return prefix"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"def config_read_reseller_options(conf, defaults):"},{"line_number":188,"context_line":"    \"\"\""},{"line_number":189,"context_line":"    Read reseller_prefix option and associated options from configuration"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"415a5803_e87d3c9c","line":187,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u0027405,439!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/config.py sed -e \u0027187,221!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":221,"context_line":"    return reseller_prefixes, associated_options"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"def affinity_key_function(affinity_str):"},{"line_number":225,"context_line":"    \"\"\"Turns an affinity config value into a function suitable for passing to"},{"line_number":226,"context_line":"    sort(). After doing so, the array will be sorted with respect to the given"},{"line_number":227,"context_line":"    ordering."}],"source_content_type":"text/x-python","patch_set":17,"id":"7fc05779_d4b866e9","line":224,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00273258,3361!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/config.py sed -e \u0027224,327!d\u0027 )\n```\n(Also covers `affinity_locality_predicate`)","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":327,"context_line":"    return is_local"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"def read_conf_dir(parser, conf_dir):"},{"line_number":331,"context_line":"    conf_files \u003d []"},{"line_number":332,"context_line":"    for f in os.listdir(conf_dir):"},{"line_number":333,"context_line":"        if f.endswith(\u0027.conf\u0027) and not f.startswith(\u0027.\u0027):"}],"source_content_type":"text/x-python","patch_set":17,"id":"167df217_a9c83524","line":330,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00272521,2631!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/config.py sed -e \u0027330,440!d\u0027 )\n```\nAlso covers:\n- `NicerInterpolation`\n- `readconf`\n- `parse_prefixed_conf`","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"}],"swift/common/utils/helpers.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7c9cd58e26a5014271dccd5cadf256c9b76cf21d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":14,"id":"dafb32e2_b4c0d362","updated":"2024-04-25 14:10:56.000000000","message":"It wasn\u0027t clear to me what functions qualified to move here. Is \u0027helpers\u0027 meant to capture \u0027everything that didn\u0027t find a more specific home\u0027?  There\u0027s still a lot of \"helpers\" in __init__.py, but I can also scope to group many of them into modules (e.g. system/os call related stuff, multipart doc stuff, sharding stuff, ...)\n\nIs this new module here as a stake in the ground for future movement?","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"743e6958c13ce36ff012e9502fd4da305fda38a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"b2ec9c35_7e55b124","in_reply_to":"dafb32e2_b4c0d362","updated":"2024-04-25 23:48:49.000000000","message":"Acknowledged","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"}],"swift/common/utils/logs.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3d3320f16fb9b8b6bbb1adcc0756b87c1ff25c83","unresolved":true,"context_lines":[{"line_number":40,"context_line":"from eventlet.green import threading"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"from swift.common import statsd_client"},{"line_number":44,"context_line":"from logging.handlers import SysLogHandler"},{"line_number":45,"context_line":"from swift.common.exceptions import MessageTimeout"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"49fb7620_25a257bb","line":43,"updated":"2024-03-25 14:34:01.000000000","message":"probably not going to be avoided; all the daemon/wsgi-server assume get_logger configures statsd client.","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"ad3ef840b2573932838f3269eac98d8a5b4a2731","unresolved":false,"context_lines":[{"line_number":40,"context_line":"from eventlet.green import threading"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"from swift.common import statsd_client"},{"line_number":44,"context_line":"from logging.handlers import SysLogHandler"},{"line_number":45,"context_line":"from swift.common.exceptions import MessageTimeout"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5df42c90_f9b58cf7","line":43,"in_reply_to":"49fb7620_25a257bb","updated":"2024-03-26 18:01:07.000000000","message":"Acknowledged","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3d3320f16fb9b8b6bbb1adcc0756b87c1ff25c83","unresolved":true,"context_lines":[{"line_number":393,"context_line":"    decrement \u003d statsd_delegate(\u0027decrement\u0027)"},{"line_number":394,"context_line":"    timing \u003d statsd_delegate(\u0027timing\u0027)"},{"line_number":395,"context_line":"    timing_since \u003d statsd_delegate(\u0027timing_since\u0027)"},{"line_number":396,"context_line":"    transfer_rate \u003d statsd_delegate(\u0027transfer_rate\u0027)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"class SwiftLogFormatter(logging.Formatter):"}],"source_content_type":"text/x-python","patch_set":1,"id":"db66d431_e28d47a7","line":396,"updated":"2024-03-25 14:34:01.000000000","message":"it will be interesting to see how much of this statsd configuration we can eventually move into statsd_client.","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"666f9d6e406a136ab772ea36f528cce2da3352a1","unresolved":false,"context_lines":[{"line_number":393,"context_line":"    decrement \u003d statsd_delegate(\u0027decrement\u0027)"},{"line_number":394,"context_line":"    timing \u003d statsd_delegate(\u0027timing\u0027)"},{"line_number":395,"context_line":"    timing_since \u003d statsd_delegate(\u0027timing_since\u0027)"},{"line_number":396,"context_line":"    transfer_rate \u003d statsd_delegate(\u0027transfer_rate\u0027)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"class SwiftLogFormatter(logging.Formatter):"}],"source_content_type":"text/x-python","patch_set":1,"id":"760c0673_fa8ab65f","line":396,"in_reply_to":"db66d431_e28d47a7","updated":"2024-03-27 19:08:51.000000000","message":"Acknowledged","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3d3320f16fb9b8b6bbb1adcc0756b87c1ff25c83","unresolved":true,"context_lines":[{"line_number":633,"context_line":"        log_statsd_port \u003d 8125"},{"line_number":634,"context_line":"        log_statsd_default_sample_rate \u003d 1.0"},{"line_number":635,"context_line":"        log_statsd_sample_rate_factor \u003d 1.0"},{"line_number":636,"context_line":"        log_statsd_metric_prefix \u003d (empty-string)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"    :param conf: Configuration dict to read settings from"},{"line_number":639,"context_line":"    :param name: This value is used to populate the ``server`` field in the log"}],"source_content_type":"text/x-python","patch_set":1,"id":"f470015c_30f9eddc","line":636,"updated":"2024-03-25 14:34:01.000000000","message":"I think the hope is that most of this will eventually move into the statsd_client module as a configuration helper of some kind.","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"ad3ef840b2573932838f3269eac98d8a5b4a2731","unresolved":false,"context_lines":[{"line_number":633,"context_line":"        log_statsd_port \u003d 8125"},{"line_number":634,"context_line":"        log_statsd_default_sample_rate \u003d 1.0"},{"line_number":635,"context_line":"        log_statsd_sample_rate_factor \u003d 1.0"},{"line_number":636,"context_line":"        log_statsd_metric_prefix \u003d (empty-string)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"    :param conf: Configuration dict to read settings from"},{"line_number":639,"context_line":"    :param name: This value is used to populate the ``server`` field in the log"}],"source_content_type":"text/x-python","patch_set":1,"id":"320b9d0a_07ab29b0","line":636,"in_reply_to":"f470015c_30f9eddc","updated":"2024-03-26 18:01:07.000000000","message":"Acknowledged","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3d3320f16fb9b8b6bbb1adcc0756b87c1ff25c83","unresolved":true,"context_lines":[{"line_number":737,"context_line":"                                                    logger\u003dlogger)"},{"line_number":738,"context_line":"        logger.statsd_client \u003d statsd_client1"},{"line_number":739,"context_line":"    else:"},{"line_number":740,"context_line":"        logger.statsd_client \u003d None"},{"line_number":741,"context_line":""},{"line_number":742,"context_line":"    adapted_logger \u003d LogAdapter(logger, name)"},{"line_number":743,"context_line":"    other_handlers \u003d conf.get(\u0027log_custom_handlers\u0027, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"875b2c6e_6ee0b7ac","line":740,"updated":"2024-03-25 14:34:01.000000000","message":"even more weird and gross now to have this statsd logic in common.utils.logs","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"666f9d6e406a136ab772ea36f528cce2da3352a1","unresolved":false,"context_lines":[{"line_number":737,"context_line":"                                                    logger\u003dlogger)"},{"line_number":738,"context_line":"        logger.statsd_client \u003d statsd_client1"},{"line_number":739,"context_line":"    else:"},{"line_number":740,"context_line":"        logger.statsd_client \u003d None"},{"line_number":741,"context_line":""},{"line_number":742,"context_line":"    adapted_logger \u003d LogAdapter(logger, name)"},{"line_number":743,"context_line":"    other_handlers \u003d conf.get(\u0027log_custom_handlers\u0027, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"8fb6210d_b5aa3e80","line":740,"in_reply_to":"875b2c6e_6ee0b7ac","updated":"2024-03-27 19:08:51.000000000","message":"Acknowledged","commit_id":"f3085c50a57988ad3a7d719dea1eaef518c03521"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5d845e97549c4cf336d1b6d0ac0ff1f9b6480fe7","unresolved":true,"context_lines":[{"line_number":35,"context_line":"else:"},{"line_number":36,"context_line":"    from eventlet.green.http import client as green_http_client"},{"line_number":37,"context_line":"    utf16_decoder \u003d codecs.getdecoder(\u0027utf-16\u0027)"},{"line_number":38,"context_line":"    utf16_encoder \u003d codecs.getencoder(\u0027utf-16\u0027)"},{"line_number":39,"context_line":"from six.moves import http_client"},{"line_number":40,"context_line":"from eventlet.green import threading"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ee21463_997d5dc6","line":38,"updated":"2024-04-01 20:25:54.000000000","message":"these decoders aren\u0027t used","commit_id":"22e60512cdbe1fd6d033cc01153f44a8a27e2630"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"8f199cf48ed0bdc5fa6c4d68dd8856946646ca54","unresolved":false,"context_lines":[{"line_number":35,"context_line":"else:"},{"line_number":36,"context_line":"    from eventlet.green.http import client as green_http_client"},{"line_number":37,"context_line":"    utf16_decoder \u003d codecs.getdecoder(\u0027utf-16\u0027)"},{"line_number":38,"context_line":"    utf16_encoder \u003d codecs.getencoder(\u0027utf-16\u0027)"},{"line_number":39,"context_line":"from six.moves import http_client"},{"line_number":40,"context_line":"from eventlet.green import threading"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"b8c6e2cf_3f934a51","line":38,"in_reply_to":"7ee21463_997d5dc6","updated":"2024-04-02 17:43:57.000000000","message":"Removed them from logs.py. Also rearranged decoders and encoders in utils wrt py2 and py3","commit_id":"22e60512cdbe1fd6d033cc01153f44a8a27e2630"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"289c723dce2b98be284dbceea3ac0f313788a021","unresolved":true,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"from swift.common import statsd_client"},{"line_number":44,"context_line":"from logging.handlers import SysLogHandler"},{"line_number":45,"context_line":"from swift.common.exceptions import MessageTimeout"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"NOTICE \u003d 25"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c47cf1d8_0d35cd01","line":45,"updated":"2024-03-28 00:24:41.000000000","message":"I think we might need to `import swift.common.exceptions` then reference `swift.common.exceptions.MessageTimeout` directly (like in `utils/__init__.py` on master) to avoid the circular import trouble.","commit_id":"22e60512cdbe1fd6d033cc01153f44a8a27e2630"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5d845e97549c4cf336d1b6d0ac0ff1f9b6480fe7","unresolved":true,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"from swift.common import statsd_client"},{"line_number":44,"context_line":"from logging.handlers import SysLogHandler"},{"line_number":45,"context_line":"from swift.common.exceptions import MessageTimeout"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"NOTICE \u003d 25"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c70707e3_1fc0b2fd","line":45,"in_reply_to":"c47cf1d8_0d35cd01","updated":"2024-04-01 20:25:54.000000000","message":"good idea!\n\n\tdiff --git a/swift/common/utils/logs.py b/swift/common/utils/logs.py\n\tindex 53e1e0419..a161b9666 100644\n\t--- a/swift/common/utils/logs.py\n\t+++ b/swift/common/utils/logs.py\n\t@@ -42,7 +42,7 @@ from eventlet.green import threading\n\t \n\t from swift.common import statsd_client\n\t from logging.handlers import SysLogHandler\n\t-from swift.common.exceptions import MessageTimeout\n\t+import swift.common.exceptions\n\t \n\t NOTICE \u003d 25\n\t \n\t@@ -343,7 +343,7 @@ class LogAdapter(logging.LoggerAdapter, object):\n\t\t     if hasattr(exc, \u0027created_at\u0027):\n\t\t\t detail +\u003d \u0027 after %0.2fs\u0027 % (time.time() - exc.created_at)\n\t\t     emsg +\u003d \u0027 (%s)\u0027 % detail\n\t-            if isinstance(exc, MessageTimeout):\n\t+            if isinstance(exc, swift.common.exceptions.MessageTimeout):\n\t\t\t if exc.msg:\n\t\t\t     emsg +\u003d \u0027 %s\u0027 % exc.msg\n\t\t else:","commit_id":"22e60512cdbe1fd6d033cc01153f44a8a27e2630"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"8f199cf48ed0bdc5fa6c4d68dd8856946646ca54","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"from swift.common import statsd_client"},{"line_number":44,"context_line":"from logging.handlers import SysLogHandler"},{"line_number":45,"context_line":"from swift.common.exceptions import MessageTimeout"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"NOTICE \u003d 25"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"4ab2a7c3_a1a1459b","line":45,"in_reply_to":"c70707e3_1fc0b2fd","updated":"2024-04-02 17:43:57.000000000","message":"Done","commit_id":"22e60512cdbe1fd6d033cc01153f44a8a27e2630"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":26,"context_line":"import warnings"},{"line_number":27,"context_line":"import fcntl"},{"line_number":28,"context_line":"import eventlet"},{"line_number":29,"context_line":"import codecs"},{"line_number":30,"context_line":"import six"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"if six.PY2:"}],"source_content_type":"text/x-python","patch_set":4,"id":"19a2f66b_335f83ea","line":29,"updated":"2024-04-02 18:54:42.000000000","message":"my editor pops this as un-used","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"import warnings"},{"line_number":27,"context_line":"import fcntl"},{"line_number":28,"context_line":"import eventlet"},{"line_number":29,"context_line":"import codecs"},{"line_number":30,"context_line":"import six"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"if six.PY2:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ebf0964f_ba2cef3d","line":29,"in_reply_to":"19a2f66b_335f83ea","updated":"2024-04-05 17:12:36.000000000","message":"Acknowledged","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    Returns False otherwise."},{"line_number":53,"context_line":"    \"\"\""},{"line_number":54,"context_line":"    return value is True or \\"},{"line_number":55,"context_line":"        (isinstance(value, six.string_types) and value.lower() in TRUE_VALUES)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class PipeMutex(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"aa01c311_854d8bf8","line":55,"updated":"2024-04-02 18:54:42.000000000","message":"I really hate seeing this duplicated between `utils/__init__.py` and here.\n\nYou will probably need to create a new utils.config module and have both import from there.","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"524c519dcfeba3496fa07d5109f0ed12c536e9d5","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    Returns False otherwise."},{"line_number":53,"context_line":"    \"\"\""},{"line_number":54,"context_line":"    return value is True or \\"},{"line_number":55,"context_line":"        (isinstance(value, six.string_types) and value.lower() in TRUE_VALUES)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class PipeMutex(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"e3efc489_e5db7c09","line":55,"in_reply_to":"aa01c311_854d8bf8","updated":"2024-04-03 11:28:23.000000000","message":"+1 yes, please let\u0027s move the conf stuff too: there\u0027s the various value checkers like config_true_value, non_negative_float, and also readconf() etc","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    Returns False otherwise."},{"line_number":53,"context_line":"    \"\"\""},{"line_number":54,"context_line":"    return value is True or \\"},{"line_number":55,"context_line":"        (isinstance(value, six.string_types) and value.lower() in TRUE_VALUES)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class PipeMutex(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"20adf54b_2a61d525","line":55,"in_reply_to":"e3efc489_e5db7c09","updated":"2024-04-05 17:12:36.000000000","message":"Acknowledged.","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":842,"context_line":"        if m:"},{"line_number":843,"context_line":"            attrs \u003d attrs[len(m.group(0)):]"},{"line_number":844,"context_line":"            attributes[m.group(1)] \u003d m.group(2).strip(\u0027\"\u0027)"},{"line_number":845,"context_line":"    return header, attributes"},{"line_number":846,"context_line":""},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf20e76c_3d74e054","line":845,"updated":"2024-04-13 14:11:58.000000000","message":"I couldn\u0027t figure out why this moved - it\u0027s doc string clearly says it\u0027s for parsing headers and it\u0027s not used in this module - I think it should get put back.","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":842,"context_line":"        if m:"},{"line_number":843,"context_line":"            attrs \u003d attrs[len(m.group(0)):]"},{"line_number":844,"context_line":"            attributes[m.group(1)] \u003d m.group(2).strip(\u0027\"\u0027)"},{"line_number":845,"context_line":"    return header, attributes"},{"line_number":846,"context_line":""},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"a17ef32a_f0250943","line":845,"in_reply_to":"bf20e76c_3d74e054","updated":"2024-04-18 16:55:49.000000000","message":"Acknowledged","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":863,"context_line":"        For python distributions that do not yet support this keyword"},{"line_number":864,"context_line":"        parameter, we drop the parameter"},{"line_number":865,"context_line":"        \"\"\""},{"line_number":866,"context_line":"        return hashlib.md5(string)  # nosec"},{"line_number":867,"context_line":""},{"line_number":868,"context_line":""},{"line_number":869,"context_line":"class StrAnonymizer(str):"}],"source_content_type":"text/x-python","patch_set":11,"id":"152b56ff_7ae75702","line":866,"updated":"2024-04-13 14:11:58.000000000","message":"I know this is used by StrAnonymizer - but it\u0027s also used in hash_path.  It doesn\u0027t belong in this module.","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":863,"context_line":"        For python distributions that do not yet support this keyword"},{"line_number":864,"context_line":"        parameter, we drop the parameter"},{"line_number":865,"context_line":"        \"\"\""},{"line_number":866,"context_line":"        return hashlib.md5(string)  # nosec"},{"line_number":867,"context_line":""},{"line_number":868,"context_line":""},{"line_number":869,"context_line":"class StrAnonymizer(str):"}],"source_content_type":"text/x-python","patch_set":11,"id":"d95caaa1_c323813c","line":866,"in_reply_to":"152b56ff_7ae75702","updated":"2024-04-18 16:55:49.000000000","message":"Acknowledged, moved it to helpers module","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":1031,"context_line":"                return log"},{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"def split_path(path, minsegs\u003d1, maxsegs\u003dNone, rest_with_last\u003dFalse):"},{"line_number":1035,"context_line":"    \"\"\""},{"line_number":1036,"context_line":"    Validate and split the given HTTP request path."},{"line_number":1037,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"f61f86a9_7bec0a7d","line":1034,"updated":"2024-04-13 14:11:58.000000000","message":"this doesn\u0027t belong in logs - it\u0027s a general path utility it\u0027s used all of the place.","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":1031,"context_line":"                return log"},{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"def split_path(path, minsegs\u003d1, maxsegs\u003dNone, rest_with_last\u003dFalse):"},{"line_number":1035,"context_line":"    \"\"\""},{"line_number":1036,"context_line":"    Validate and split the given HTTP request path."},{"line_number":1037,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fbdbc1ce_0c530ce7","line":1034,"in_reply_to":"f61f86a9_7bec0a7d","updated":"2024-04-18 16:55:49.000000000","message":"Acknowledged","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"NOTICE \u003d 25"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"LOG_LINE_DEFAULT_FORMAT \u003d \u0027{remote_addr} - - [{time.d}/{time.b}/{time.Y}\u0027 \\"},{"line_number":51,"context_line":"                          \u0027:{time.H}:{time.M}:{time.S} +0000] \u0027 \\"},{"line_number":52,"context_line":"                          \u0027\"{method} {path}\" {status} {content_length} \u0027 \\"},{"line_number":53,"context_line":"                          \u0027\"{referer}\" \"{txn_id}\" \"{user_agent}\" \u0027 \\"}],"source_content_type":"text/x-python","patch_set":17,"id":"a21f47b9_b4979454","line":50,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u0027167,172!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/logs.py sed -e \u002750,55!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                          \u0027{policy_index}\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"def logging_monkey_patch():"},{"line_number":59,"context_line":"    # explicitly patch the logging lock"},{"line_number":60,"context_line":"    logging._lock \u003d logging.threading.RLock()"},{"line_number":61,"context_line":"    # setup notice level logging"}],"source_content_type":"text/x-python","patch_set":17,"id":"7050f5ad_f95d5a4a","line":58,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u0027465,473!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/logs.py sed -e \u002758,66!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    logging.logThreads \u003d 0"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class PipeMutex(object):"},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    Mutex using a pipe. Works across both greenlets and real threads, even"},{"line_number":72,"context_line":"    at the same time."}],"source_content_type":"text/x-python","patch_set":17,"id":"54e022ff_e58a7a1c","line":69,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00275978,6131!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/logs.py sed -e \u002769,222!d\u0027 )\n```\nAlso covers:\n- `NoopMutex`\n- `ThreadSafeSysLogHandler`","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":true,"context_lines":[{"line_number":222,"context_line":"            self.lock \u003d PipeMutex()"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"class LogAdapter(logging.LoggerAdapter, object):"},{"line_number":226,"context_line":"    \"\"\""},{"line_number":227,"context_line":"    A Logger like object which performs some reformatting on calls to"},{"line_number":228,"context_line":"    :meth:`exception`.  Can be used to store a threadlocal transaction id and"}],"source_content_type":"text/x-python","patch_set":17,"id":"01328a04_39e9c2ee","line":225,"updated":"2024-04-29 20:16:32.000000000","message":"Lost the comment about\n```\n# double inheritance to support property with setter\n```\nAside from that,\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00271628,1856!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/logs.py sed -e \u0027225,453!d\u0027 )\n```\n(which also covers `SwiftLogFormatter`) shows\n```\n129c129\n\u003c             if isinstance(exc, swift.common.exceptions.MessageTimeout):\n---\n\u003e             if isinstance(exc, exceptions.MessageTimeout):\n165c165\n\u003c         func \u003d getattr(StatsdClient, statsd_func_name)\n---\n\u003e         func \u003d getattr(statsd_client.StatsdClient, statsd_func_name)\n```\nwhich seems fine.","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"39fd71d98d53bebefcf22b6f1035a16067c248f7","unresolved":false,"context_lines":[{"line_number":222,"context_line":"            self.lock \u003d PipeMutex()"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"class LogAdapter(logging.LoggerAdapter, object):"},{"line_number":226,"context_line":"    \"\"\""},{"line_number":227,"context_line":"    A Logger like object which performs some reformatting on calls to"},{"line_number":228,"context_line":"    :meth:`exception`.  Can be used to store a threadlocal transaction id and"}],"source_content_type":"text/x-python","patch_set":17,"id":"e535c228_0d419d15","line":225,"in_reply_to":"01328a04_39e9c2ee","updated":"2024-04-30 20:38:35.000000000","message":"Acknowledged","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":453,"context_line":"        return msg"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"class LoggerFileObject(object):"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    # Note: this is greenthread-local storage"},{"line_number":459,"context_line":"    _cls_thread_local \u003d threading.local()"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ebce7fb_32400f7f","line":456,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00271283,1362!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/logs.py sed -e \u0027456,535!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        return self"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"class SwiftLoggerAdapter(logging.LoggerAdapter):"},{"line_number":539,"context_line":"    \"\"\""},{"line_number":540,"context_line":"    A logging.LoggerAdapter subclass that also passes through StatsD method"},{"line_number":541,"context_line":"    calls."}],"source_content_type":"text/x-python","patch_set":17,"id":"44568aae_81005939","line":538,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00271560,1624!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/logs.py sed -e \u0027538,602!d\u0027 )\n```\nwhich also covers `PrefixLoggerAdapter`","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":602,"context_line":"        return (msg, kwargs)"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"class LogLevelFilter(object):"},{"line_number":606,"context_line":"    \"\"\""},{"line_number":607,"context_line":"    Drop messages for the logger based on level."},{"line_number":608,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3b1b642d_1abd32f5","line":605,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00271859,1876!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/logs.py sed -e \u0027605,622!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":true,"context_lines":[{"line_number":622,"context_line":"        return 1"},{"line_number":623,"context_line":""},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"def get_logger(conf, name\u003dNone, log_to_console\u003dFalse, log_route\u003dNone,"},{"line_number":626,"context_line":"               fmt\u003d\"%(server)s: %(message)s\", statsd_tail_prefix\u003dNone):"},{"line_number":627,"context_line":"    \"\"\""},{"line_number":628,"context_line":"    Get the current system logger using config settings."}],"source_content_type":"text/x-python","patch_set":17,"id":"55238256_b4e1dce0","line":625,"updated":"2024-04-29 20:16:32.000000000","message":"```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00271879,2018!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/logs.py sed -e \u0027625,767!d\u0027 )\n```\nshows\n```\n115,118c115,121\n\u003c         statsd_client \u003d StatsdClient(statsd_host, statsd_port, base_prefix,\n\u003c                                      statsd_tail_prefix, default_sample_rate,\n\u003c                                      sample_rate_factor, logger\u003dlogger)\n\u003c         logger.statsd_client \u003d statsd_client\n---\n\u003e         statsd_client1 \u003d statsd_client.StatsdClient(statsd_host, statsd_port,\n\u003e                                                     base_prefix,\n\u003e                                                     statsd_tail_prefix,\n\u003e                                                     default_sample_rate,\n\u003e                                                     sample_rate_factor,\n\u003e                                                     logger\u003dlogger)\n\u003e         logger.statsd_client \u003d statsd_client1\n```\nbut that\u0027s mostly just the transition to `statsd_client.StatsdClient` and re-wrapping lines.\n\n`statsd_client1` is a little funny -- maybe better as just `client`? Or drop the temp var entirely; that\u0027s the only place we use it.","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"39fd71d98d53bebefcf22b6f1035a16067c248f7","unresolved":false,"context_lines":[{"line_number":622,"context_line":"        return 1"},{"line_number":623,"context_line":""},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"def get_logger(conf, name\u003dNone, log_to_console\u003dFalse, log_route\u003dNone,"},{"line_number":626,"context_line":"               fmt\u003d\"%(server)s: %(message)s\", statsd_tail_prefix\u003dNone):"},{"line_number":627,"context_line":"    \"\"\""},{"line_number":628,"context_line":"    Get the current system logger using config settings."}],"source_content_type":"text/x-python","patch_set":17,"id":"524c5600_e79a58cc","line":625,"in_reply_to":"55238256_b4e1dce0","updated":"2024-04-30 20:38:35.000000000","message":"Dropping the temp variable entirely!","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":767,"context_line":"    return adapted_logger"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"class NullLogger(object):"},{"line_number":771,"context_line":"    \"\"\"A no-op logger for eventlet wsgi.\"\"\""},{"line_number":772,"context_line":""},{"line_number":773,"context_line":"    def write(self, *args):"}],"source_content_type":"text/x-python","patch_set":17,"id":"821ef4c3_3ba6c73c","line":770,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00271254,1280!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/logs.py sed -e \u0027770,796!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":796,"context_line":"        pass"},{"line_number":797,"context_line":""},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"def capture_stdio(logger, **kwargs):"},{"line_number":800,"context_line":"    \"\"\""},{"line_number":801,"context_line":"    Log unhandled exceptions, close stdio, capture stdout and stderr."},{"line_number":802,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"2cd3c8af_8cdf2f3a","line":799,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u00272098,2132!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/logs.py sed -e \u0027799,833!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":833,"context_line":"        sys.stderr \u003d LoggerFileObject(logger, \u0027STDERR\u0027)"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":""},{"line_number":836,"context_line":"class StrAnonymizer(str):"},{"line_number":837,"context_line":"    \"\"\""},{"line_number":838,"context_line":"    Class that permits to get a string anonymized or simply quoted."},{"line_number":839,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"acfb720f_de3184da","line":836,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u0027542,670!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/logs.py sed -e \u0027836,964!d\u0027 )\n```\nAlso covers:\n- `StrFormatTime`\n- `get_log_line`","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":964,"context_line":"    return LogStringFormatter(default\u003d\u0027-\u0027).format(fmt, **replacements)"},{"line_number":965,"context_line":""},{"line_number":966,"context_line":""},{"line_number":967,"context_line":"def get_policy_index(req_headers, res_headers):"},{"line_number":968,"context_line":"    \"\"\""},{"line_number":969,"context_line":"    Returns the appropriate index of the storage policy for the request from"},{"line_number":970,"context_line":"    a proxy server"}],"source_content_type":"text/x-python","patch_set":17,"id":"7f412b6d_3444eaa4","line":967,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u0027508,522!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/logs.py sed -e \u0027967,981!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":false,"context_lines":[{"line_number":981,"context_line":"    return str(policy_index) if policy_index is not None else None"},{"line_number":982,"context_line":""},{"line_number":983,"context_line":""},{"line_number":984,"context_line":"class LogStringFormatter(string.Formatter):"},{"line_number":985,"context_line":"    def __init__(self, default\u003d\u0027\u0027, quote\u003dFalse):"},{"line_number":986,"context_line":"        super(LogStringFormatter, self).__init__()"},{"line_number":987,"context_line":"        self.default \u003d default"}],"source_content_type":"text/x-python","patch_set":17,"id":"8bdfa4fa_2d29e666","line":984,"updated":"2024-04-29 20:16:32.000000000","message":"Check:\n```\ndiff \u003c( git show @~:swift/common/utils/__init__.py | sed -e \u0027525,539!d\u0027 ) \\\n     \u003c( \u003c swift/common/utils/logs.py sed -e \u0027984,998!d\u0027 )\n```","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"}],"test/debug_logger.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from swift.common import utils"},{"line_number":23,"context_line":"from swift.common.utils import NOTICE"},{"line_number":24,"context_line":"from swift.common.statsd_client import StatsdClient"},{"line_number":25,"context_line":"from swift.common.utils.logs import LogAdapter, SwiftLogFormatter"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"c709b9fa_e79563e0","line":24,"updated":"2024-04-02 18:54:42.000000000","message":"AFAIK we can\u0027t/don\u0027t attempt an import compatibility shim for utils.StatsdClient so these changes are always needed.","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from swift.common import utils"},{"line_number":23,"context_line":"from swift.common.utils import NOTICE"},{"line_number":24,"context_line":"from swift.common.statsd_client import StatsdClient"},{"line_number":25,"context_line":"from swift.common.utils.logs import LogAdapter, SwiftLogFormatter"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"82aeab26_4e21c147","line":24,"in_reply_to":"c709b9fa_e79563e0","updated":"2024-04-05 17:12:36.000000000","message":"Acknowledged","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":22,"context_line":"from swift.common import utils"},{"line_number":23,"context_line":"from swift.common.utils import NOTICE"},{"line_number":24,"context_line":"from swift.common.statsd_client import StatsdClient"},{"line_number":25,"context_line":"from swift.common.utils.logs import LogAdapter, SwiftLogFormatter"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class WARN_DEPRECATED(Exception):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ec9a8443_2f4ea78e","line":25,"updated":"2024-04-02 18:54:42.000000000","message":"I\u0027m pretty sure these names are still available off utils; so it probably don\u0027t make sense to change some places and not others.","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from swift.common import utils"},{"line_number":23,"context_line":"from swift.common.utils import NOTICE"},{"line_number":24,"context_line":"from swift.common.statsd_client import StatsdClient"},{"line_number":25,"context_line":"from swift.common.utils.logs import LogAdapter, SwiftLogFormatter"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class WARN_DEPRECATED(Exception):"}],"source_content_type":"text/x-python","patch_set":4,"id":"124f6551_8d4e3098","line":25,"in_reply_to":"ec9a8443_2f4ea78e","updated":"2024-04-05 17:12:36.000000000","message":"Acknowledged","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":315,"context_line":"    accessor methods (e.g. get_lines_for_level) directly on the logger"},{"line_number":316,"context_line":"    instance."},{"line_number":317,"context_line":"    \"\"\""},{"line_number":318,"context_line":"    with mock.patch(\u0027swift.common.LogAdapter\u0027, CaptureLogAdapter):"},{"line_number":319,"context_line":"        log_adapter \u003d utils.get_logger(conf, *args, **kwargs)"},{"line_number":320,"context_line":"    log_adapter.start_capture()"},{"line_number":321,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"56b38674_5dee34f5","line":318,"updated":"2024-04-02 18:54:42.000000000","message":"how can this be right?\n\n```\n\u003e\u003e\u003e from swift.common import LogAdapter\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nImportError: cannot import name \u0027LogAdapter\u0027 from \u0027swift.common\u0027 (/vagrant/swift/swift/common/__init__.py)\n```","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":315,"context_line":"    accessor methods (e.g. get_lines_for_level) directly on the logger"},{"line_number":316,"context_line":"    instance."},{"line_number":317,"context_line":"    \"\"\""},{"line_number":318,"context_line":"    with mock.patch(\u0027swift.common.LogAdapter\u0027, CaptureLogAdapter):"},{"line_number":319,"context_line":"        log_adapter \u003d utils.get_logger(conf, *args, **kwargs)"},{"line_number":320,"context_line":"    log_adapter.start_capture()"},{"line_number":321,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"c43337f3_a06e086a","line":318,"in_reply_to":"56b38674_5dee34f5","updated":"2024-04-05 17:12:36.000000000","message":"Makes sense, I don\u0027t know why I made that change but none of the unittests failed. I\u0027ll revert it back :))","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":36606,"name":"Yan Xiao","display_name":"Yan","email":"yanxiao@nvidia.com","username":"yanxiao"},"change_message_id":"0d2dc404ec79960a807322d4b93caff0be2a0e83","unresolved":true,"context_lines":[{"line_number":22,"context_line":"from swift.common import utils"},{"line_number":23,"context_line":"from swift.common.utils import NOTICE"},{"line_number":24,"context_line":"from swift.common.statsd_client import StatsdClient"},{"line_number":25,"context_line":"from swift.common.utils import LogAdapter, SwiftLogFormatter"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class WARN_DEPRECATED(Exception):"}],"source_content_type":"text/x-python","patch_set":8,"id":"88d062fe_3984e43c","line":25,"updated":"2024-04-10 17:59:29.000000000","message":"For new imports, it seems should be better to import directly from logs.py instead of using import shim?","commit_id":"b3c421acbe7e1db5f57adfec855a4a77a25cd775"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from swift.common import utils"},{"line_number":23,"context_line":"from swift.common.utils import NOTICE"},{"line_number":24,"context_line":"from swift.common.statsd_client import StatsdClient"},{"line_number":25,"context_line":"from swift.common.utils import LogAdapter, SwiftLogFormatter"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class WARN_DEPRECATED(Exception):"}],"source_content_type":"text/x-python","patch_set":8,"id":"85b9b431_4a4445d2","line":25,"in_reply_to":"43b9a812_c205f319","updated":"2024-04-18 16:55:49.000000000","message":"Done","commit_id":"b3c421acbe7e1db5f57adfec855a4a77a25cd775"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"2a425d065805a57e668cf8a095677c91c0c427ba","unresolved":true,"context_lines":[{"line_number":22,"context_line":"from swift.common import utils"},{"line_number":23,"context_line":"from swift.common.utils import NOTICE"},{"line_number":24,"context_line":"from swift.common.statsd_client import StatsdClient"},{"line_number":25,"context_line":"from swift.common.utils import LogAdapter, SwiftLogFormatter"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class WARN_DEPRECATED(Exception):"}],"source_content_type":"text/x-python","patch_set":8,"id":"b7993a33_5af836f5","line":25,"in_reply_to":"88d062fe_3984e43c","updated":"2024-04-11 17:33:27.000000000","message":"Clay and Alistair feel that having backwards compatibility is better and also there are fewer file changes and hence smaller patch changes.","commit_id":"b3c421acbe7e1db5f57adfec855a4a77a25cd775"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":22,"context_line":"from swift.common import utils"},{"line_number":23,"context_line":"from swift.common.utils import NOTICE"},{"line_number":24,"context_line":"from swift.common.statsd_client import StatsdClient"},{"line_number":25,"context_line":"from swift.common.utils import LogAdapter, SwiftLogFormatter"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class WARN_DEPRECATED(Exception):"}],"source_content_type":"text/x-python","patch_set":8,"id":"43b9a812_c205f319","line":25,"in_reply_to":"b7993a33_5af836f5","updated":"2024-04-13 14:11:58.000000000","message":"We want the backwards compatibility to avoid having to change *existing* imports.  Since we\u0027re adding these imports it\u0027s better do it consistently.\n\nHere the new import of StatsdClient is from new location (good, there\u0027s no backwards compat for StatsdClient) but the new import of LogAdapter/SwiftLogFormatter is from utils instead of utils.logs (bad)","commit_id":"b3c421acbe7e1db5f57adfec855a4a77a25cd775"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":250,"context_line":"        self.records[record.levelname].append(formatted)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"class DebugLogAdapter(LogAdapter):"},{"line_number":254,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":255,"context_line":"        super(DebugLogAdapter, self).__init__(*args, **kwargs)"},{"line_number":256,"context_line":"        self.txn_id \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a626556_716c6fa2","line":253,"updated":"2024-04-13 14:11:58.000000000","message":"honestly it would probably be better to just NOT change this line and let them continue to use the backwards compatible utils.LogAdapter path.","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        self.records[record.levelname].append(formatted)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"class DebugLogAdapter(LogAdapter):"},{"line_number":254,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":255,"context_line":"        super(DebugLogAdapter, self).__init__(*args, **kwargs)"},{"line_number":256,"context_line":"        self.txn_id \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"53648a31_b636c801","line":253,"in_reply_to":"9a626556_716c6fa2","updated":"2024-04-18 16:55:49.000000000","message":"Acknowledged","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7c9cd58e26a5014271dccd5cadf256c9b76cf21d","unresolved":true,"context_lines":[{"line_number":20,"context_line":"from collections import defaultdict"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from swift.common import utils, statsd_client"},{"line_number":23,"context_line":"from swift.common.utils import NOTICE"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class WARN_DEPRECATED(Exception):"}],"source_content_type":"text/x-python","patch_set":14,"id":"cf1cce9f_96cba998","line":23,"updated":"2024-04-25 14:10:56.000000000","message":"there\u0027s only a handful of uses of utils.\u003clog stuff\u003e in this module, so might be worth just importing from utils.logs directly - BUT that can come as a follow up to keep this patch from bloating.","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"743e6958c13ce36ff012e9502fd4da305fda38a8","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from collections import defaultdict"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from swift.common import utils, statsd_client"},{"line_number":23,"context_line":"from swift.common.utils import NOTICE"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class WARN_DEPRECATED(Exception):"}],"source_content_type":"text/x-python","patch_set":14,"id":"74832ec4_4d460d18","line":23,"in_reply_to":"cf1cce9f_96cba998","updated":"2024-04-25 23:48:49.000000000","message":"Acknowledged","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"}],"test/unit/__init__.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b025d5d6b9a3984e1776a6775ab4d76b380d8bd","unresolved":true,"context_lines":[{"line_number":1449,"context_line":""},{"line_number":1450,"context_line":"    def assertDuplicateOptionError(self, app_config, option_name):"},{"line_number":1451,"context_line":"        with self.assertRaises("},{"line_number":1452,"context_line":"                configparser.DuplicateOptionError) as ctx:"},{"line_number":1453,"context_line":"            app_config()"},{"line_number":1454,"context_line":"        msg \u003d str(ctx.exception)"},{"line_number":1455,"context_line":"        self.assertIn(option_name, msg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"a2e6f13d_84f3c95b","line":1452,"updated":"2024-05-01 19:49:34.000000000","message":"ok nice - it doesn\u0027t look like utils actaully has a configparser attribute anymore","commit_id":"bc3a59bdd36fbd90554e73d419d8767a3845f9af"}],"test/unit/common/middleware/s3api/test_s3api.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":226,"context_line":"        self.assertIsNone(s3api.logger.logger.statsd_client)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        with mock.patch(\u0027swift.common.statsd_client.StatsdClient\u0027,"},{"line_number":229,"context_line":"                        FakeStatsdClient):"},{"line_number":230,"context_line":"            s3api \u003d S3ApiMiddleware(None, {\u0027log_name\u0027: \u0027proxy-server\u0027,"},{"line_number":231,"context_line":"                                           \u0027log_statsd_host\u0027: \u00271.2.3.4\u0027})"},{"line_number":232,"context_line":"            s3api.logger.increment(\u0027test-metric\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"2e558600_920bf514","line":229,"updated":"2024-04-13 14:11:58.000000000","message":"right, that has to change.","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        self.assertIsNone(s3api.logger.logger.statsd_client)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        with mock.patch(\u0027swift.common.statsd_client.StatsdClient\u0027,"},{"line_number":229,"context_line":"                        FakeStatsdClient):"},{"line_number":230,"context_line":"            s3api \u003d S3ApiMiddleware(None, {\u0027log_name\u0027: \u0027proxy-server\u0027,"},{"line_number":231,"context_line":"                                           \u0027log_statsd_host\u0027: \u00271.2.3.4\u0027})"},{"line_number":232,"context_line":"            s3api.logger.increment(\u0027test-metric\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"6a9df5d3_8c6d4094","line":229,"in_reply_to":"2e558600_920bf514","updated":"2024-04-18 16:55:49.000000000","message":"Done","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"}],"test/unit/common/middleware/test_proxy_logging.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":22,"context_line":"from six.moves.urllib.parse import unquote"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from swift.common.utils import get_logger, split_path"},{"line_number":25,"context_line":"from swift.common.statsd_client import StatsdClient"},{"line_number":26,"context_line":"from swift.common.middleware import proxy_logging"},{"line_number":27,"context_line":"from swift.common.registry import register_sensitive_header, \\"},{"line_number":28,"context_line":"    register_sensitive_param, get_sensitive_headers"}],"source_content_type":"text/x-python","patch_set":11,"id":"6bd0b03f_78505e63","line":25,"updated":"2024-04-13 14:11:58.000000000","message":"yup, has to change.","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from six.moves.urllib.parse import unquote"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from swift.common.utils import get_logger, split_path"},{"line_number":25,"context_line":"from swift.common.statsd_client import StatsdClient"},{"line_number":26,"context_line":"from swift.common.middleware import proxy_logging"},{"line_number":27,"context_line":"from swift.common.registry import register_sensitive_header, \\"},{"line_number":28,"context_line":"    register_sensitive_param, get_sensitive_headers"}],"source_content_type":"text/x-python","patch_set":11,"id":"f8df363b_a6677583","line":25,"in_reply_to":"6bd0b03f_78505e63","updated":"2024-04-18 16:55:49.000000000","message":"Done","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"}],"test/unit/common/middleware/test_tempauth.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":25,"context_line":"from swift.common.middleware.acl import format_acl"},{"line_number":26,"context_line":"from swift.common.swob import Request, Response, bytes_to_wsgi"},{"line_number":27,"context_line":"from swift.common.statsd_client import StatsdClient"},{"line_number":28,"context_line":"from swift.common.utils import split_path"},{"line_number":29,"context_line":"from test.unit import FakeMemcache"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"NO_CONTENT_RESP \u003d ((\u0027204 No Content\u0027, {}, \u0027\u0027),)   # mock server response"}],"source_content_type":"text/x-python","patch_set":11,"id":"af19bf11_2e62aa3e","line":28,"updated":"2024-04-13 14:11:58.000000000","message":"yup.","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from swift.common.middleware.acl import format_acl"},{"line_number":26,"context_line":"from swift.common.swob import Request, Response, bytes_to_wsgi"},{"line_number":27,"context_line":"from swift.common.statsd_client import StatsdClient"},{"line_number":28,"context_line":"from swift.common.utils import split_path"},{"line_number":29,"context_line":"from test.unit import FakeMemcache"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"NO_CONTENT_RESP \u003d ((\u0027204 No Content\u0027, {}, \u0027\u0027),)   # mock server response"}],"source_content_type":"text/x-python","patch_set":11,"id":"4b55505e_4f9b8c65","line":28,"in_reply_to":"af19bf11_2e62aa3e","updated":"2024-04-18 16:55:49.000000000","message":"Done","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"}],"test/unit/common/test_internal_client.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":32,"context_line":"from swift.common.middleware.proxy_logging import ProxyLoggingMiddleware"},{"line_number":33,"context_line":"from swift.common.middleware.gatekeeper import GatekeeperMiddleware"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"from test.debug_logger import debug_logger"},{"line_number":37,"context_line":"from test.unit import with_tempdir, write_fake_ring, patch_policies"},{"line_number":38,"context_line":"from test.unit.common.middleware.helpers import FakeSwift, LeakTrackingIter"}],"source_content_type":"text/x-python","patch_set":4,"id":"80476bee_275f8760","line":35,"updated":"2024-04-02 18:54:42.000000000","message":"unrelated","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from swift.common.middleware.proxy_logging import ProxyLoggingMiddleware"},{"line_number":33,"context_line":"from swift.common.middleware.gatekeeper import GatekeeperMiddleware"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"from test.debug_logger import debug_logger"},{"line_number":37,"context_line":"from test.unit import with_tempdir, write_fake_ring, patch_policies"},{"line_number":38,"context_line":"from test.unit.common.middleware.helpers import FakeSwift, LeakTrackingIter"}],"source_content_type":"text/x-python","patch_set":4,"id":"8b66f3ef_d5e393a2","line":35,"in_reply_to":"80476bee_275f8760","updated":"2024-04-05 17:12:36.000000000","message":"Done","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"}],"test/unit/common/test_utils.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":2067,"context_line":"            self.assertFalse(isinstance(utils.sys.stdout,"},{"line_number":2068,"context_line":"                                        utils.logs.LoggerFileObject))"},{"line_number":2069,"context_line":"            self.assertFalse(isinstance(utils.sys.stderr,"},{"line_number":2070,"context_line":"                                        utils.logs.LoggerFileObject))"},{"line_number":2071,"context_line":""},{"line_number":2072,"context_line":"    @reset_logger_state"},{"line_number":2073,"context_line":"    def test_get_logger_console(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"839eb837_7a3b3347","line":2070,"updated":"2024-04-02 18:54:42.000000000","message":"now that the whole of this implementation lives in utils.logs I don\u0027t think it makes sense to continue to patch utils.os and utils.sys or assert they\u0027re \"changed\" just because we made the same object as the utils.logs.os and utils.logs.sys objects the UUT is actually acting on.\n\n    diff --git a/test/unit/common/test_utils.py b/test/unit/common/test_utils.py\n    index 6141fcda8..5b8df010e 100644\n    --- a/test/unit/common/test_utils.py\n    +++ b/test/unit/common/test_utils.py\n    @@ -2017,56 +2017,52 @@ log_name \u003d %(yarr)s\u0027\u0027\u0027\n             # mock utils system modules\n             mock_os \u003d MockOs()\n             mock_sys \u003d MockSys()\n    -        with mock.patch.object(utils, \u0027os\u0027, mock_os), \\\n    -                mock.patch.object(utils.logs, \u0027os\u0027, mock_os), \\\n    -                mock.patch.object(utils, \u0027sys\u0027, mock_sys), \\\n    +        with mock.patch.object(utils.logs, \u0027os\u0027, mock_os), \\\n                     mock.patch.object(utils.logs, \u0027sys\u0027, mock_sys):\n                 # basic test\n                 utils.logs.capture_stdio(logger)\n    -            self.assertTrue(utils.sys.excepthook is not None)\n    -            self.assertEqual(utils.os.closed_fds, utils.sys.stdio_fds)\n    -            self.assertIsInstance(utils.sys.stdout,\n    +            self.assertTrue(utils.logs.sys.excepthook is not None)\n    +            self.assertEqual(utils.logs.os.closed_fds,\n    +                             utils.logs.sys.stdio_fds)\n    +            self.assertIsInstance(utils.logs.sys.stdout,\n                                       utils.logs.LoggerFileObject)\n    -            self.assertIsInstance(utils.sys.stderr,\n    +            self.assertIsInstance(utils.logs.sys.stderr,\n                                       utils.logs.LoggerFileObject)\n     \n             # reset; test same args, but exc when trying to close stdio\n             mock_os \u003d MockOs(raise_funcs\u003d(\u0027dup2\u0027,))\n             mock_sys \u003d MockSys()\n    -        with mock.patch.object(utils, \u0027os\u0027, mock_os), \\\n    -                mock.patch.object(utils.logs, \u0027os\u0027, mock_os), \\\n    -                mock.patch.object(utils, \u0027sys\u0027, mock_sys), \\\n    +        with mock.patch.object(utils.logs, \u0027os\u0027, mock_os), \\\n                     mock.patch.object(utils.logs, \u0027sys\u0027, mock_sys):\n                 # test unable to close stdio\n                 utils.logs.capture_stdio(logger)\n    -            self.assertTrue(utils.sys.excepthook is not None)\n    -            self.assertEqual(utils.os.closed_fds, [])\n    -            self.assertIsInstance(utils.sys.stdout,\n    +            self.assertTrue(utils.logs.sys.excepthook is not None)\n    +            self.assertEqual(utils.logs.os.closed_fds, [])\n    +            self.assertIsInstance(utils.logs.sys.stdout,\n                                       utils.logs.LoggerFileObject)\n    -            self.assertIsInstance(utils.sys.stderr,\n    +            self.assertIsInstance(utils.logs.sys.stderr,\n                                       utils.logs.LoggerFileObject)\n     \n             # reset; test some other args\n             mock_os \u003d MockOs()\n             mock_sys \u003d MockSys()\n    -        with mock.patch.object(utils, \u0027os\u0027, mock_os), \\\n    -                mock.patch.object(utils.logs, \u0027os\u0027, mock_os), \\\n    -                mock.patch.object(utils, \u0027sys\u0027, mock_sys), \\\n    +        with mock.patch.object(utils.logs, \u0027os\u0027, mock_os), \\\n                     mock.patch.object(utils.logs, \u0027sys\u0027, mock_sys):\n                 logger \u003d utils.logs.get_logger(None, log_to_console\u003dTrue)\n     \n                 # test console log\n                 utils.logs.capture_stdio(logger, capture_stdout\u003dFalse,\n                                          capture_stderr\u003dFalse)\n    -            self.assertTrue(utils.sys.excepthook is not None)\n    +            self.assertTrue(utils.logs.sys.excepthook is not None)\n                 # when logging to console, stderr remains open\n    -            self.assertEqual(utils.os.closed_fds, utils.sys.stdio_fds[:2])\n    +            self.assertEqual(utils.logs.os.closed_fds,\n    +                             utils.logs.sys.stdio_fds[:2])\n                 reset_loggers()\n     \n                 # stdio not captured\n    -            self.assertFalse(isinstance(utils.sys.stdout,\n    +            self.assertFalse(isinstance(utils.logs.sys.stdout,\n                                             utils.logs.LoggerFileObject))\n    -            self.assertFalse(isinstance(utils.sys.stderr,\n    +            self.assertFalse(isinstance(utils.logs.sys.stderr,\n                                             utils.logs.LoggerFileObject))\n     \n         @reset_logger_state","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":2067,"context_line":"            self.assertFalse(isinstance(utils.sys.stdout,"},{"line_number":2068,"context_line":"                                        utils.logs.LoggerFileObject))"},{"line_number":2069,"context_line":"            self.assertFalse(isinstance(utils.sys.stderr,"},{"line_number":2070,"context_line":"                                        utils.logs.LoggerFileObject))"},{"line_number":2071,"context_line":""},{"line_number":2072,"context_line":"    @reset_logger_state"},{"line_number":2073,"context_line":"    def test_get_logger_console(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"43505a17_eba354ea","line":2070,"in_reply_to":"839eb837_7a3b3347","updated":"2024-04-05 17:12:36.000000000","message":"Acknowledged","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":2482,"context_line":"            self.assertTrue(utils.config_true_value(None) is False)"},{"line_number":2483,"context_line":"        finally:"},{"line_number":2484,"context_line":"            utils.config.TRUE_VALUES \u003d orig_trues"},{"line_number":2485,"context_line":""},{"line_number":2486,"context_line":"    def test_non_negative_float(self):"},{"line_number":2487,"context_line":"        self.assertEqual(0, utils.non_negative_float(\u00270.0\u0027))"},{"line_number":2488,"context_line":"        self.assertEqual(0, utils.non_negative_float(0.0))"}],"source_content_type":"text/x-python","patch_set":11,"id":"fca276b3_1e0fb36c","line":2485,"updated":"2024-04-13 14:11:58.000000000","message":"since we\u0027re creating a diff here anywhere IMHO we should feel free to update this test to use a modern mock.patch.object pattern.","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":2482,"context_line":"            self.assertTrue(utils.config_true_value(None) is False)"},{"line_number":2483,"context_line":"        finally:"},{"line_number":2484,"context_line":"            utils.config.TRUE_VALUES \u003d orig_trues"},{"line_number":2485,"context_line":""},{"line_number":2486,"context_line":"    def test_non_negative_float(self):"},{"line_number":2487,"context_line":"        self.assertEqual(0, utils.non_negative_float(\u00270.0\u0027))"},{"line_number":2488,"context_line":"        self.assertEqual(0, utils.non_negative_float(0.0))"}],"source_content_type":"text/x-python","patch_set":11,"id":"82f2d625_8fc42350","line":2485,"in_reply_to":"fca276b3_1e0fb36c","updated":"2024-04-18 16:55:49.000000000","message":"Acknowledged","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7c9cd58e26a5014271dccd5cadf256c9b76cf21d","unresolved":true,"context_lines":[{"line_number":2062,"context_line":"            self.assertFalse(isinstance(mock_sys.stdout,"},{"line_number":2063,"context_line":"                                        utils.logs.LoggerFileObject))"},{"line_number":2064,"context_line":"            self.assertFalse(isinstance(mock_sys.stderr,"},{"line_number":2065,"context_line":"                                        utils.logs.LoggerFileObject))"},{"line_number":2066,"context_line":""},{"line_number":2067,"context_line":"    @reset_logger_state"},{"line_number":2068,"context_line":"    def test_get_logger_console(self):"}],"source_content_type":"text/x-python","patch_set":14,"id":"4947f4f5_0162b367","line":2065,"updated":"2024-04-25 14:10:56.000000000","message":"this is a huge improvement, but I\u0027d prefer to see the test improvements in a preceding patch, so that this patch remains primarily about refactor/movement","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"743e6958c13ce36ff012e9502fd4da305fda38a8","unresolved":false,"context_lines":[{"line_number":2062,"context_line":"            self.assertFalse(isinstance(mock_sys.stdout,"},{"line_number":2063,"context_line":"                                        utils.logs.LoggerFileObject))"},{"line_number":2064,"context_line":"            self.assertFalse(isinstance(mock_sys.stderr,"},{"line_number":2065,"context_line":"                                        utils.logs.LoggerFileObject))"},{"line_number":2066,"context_line":""},{"line_number":2067,"context_line":"    @reset_logger_state"},{"line_number":2068,"context_line":"    def test_get_logger_console(self):"}],"source_content_type":"text/x-python","patch_set":14,"id":"f6d0bef5_98c0235c","line":2065,"in_reply_to":"4947f4f5_0162b367","updated":"2024-04-25 23:48:49.000000000","message":"Acknowledged","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7c9cd58e26a5014271dccd5cadf256c9b76cf21d","unresolved":true,"context_lines":[{"line_number":2468,"context_line":"        for v in utils.TRUE_VALUES:"},{"line_number":2469,"context_line":"            self.assertEqual(v, v.lower())"},{"line_number":2470,"context_line":""},{"line_number":2471,"context_line":"    @mock.patch.object(utils.config, \u0027TRUE_VALUES\u0027, \u0027hello world\u0027.split())"},{"line_number":2472,"context_line":"    def test_config_true_value(self):"},{"line_number":2473,"context_line":"        orig_trues \u003d utils.config.TRUE_VALUES"},{"line_number":2474,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":14,"id":"00724d31_5d967a21","line":2471,"updated":"2024-04-25 14:10:56.000000000","message":"with this mock being added we shouldn\u0027t need the orig_trues/try/finally stuff any more\n\nAlso, as above, this cleanup change could be in a pre-patch, it\u0027s not strictly due to the refactor (although obvs the target of the mock is impacted by the refactor)","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"743e6958c13ce36ff012e9502fd4da305fda38a8","unresolved":false,"context_lines":[{"line_number":2468,"context_line":"        for v in utils.TRUE_VALUES:"},{"line_number":2469,"context_line":"            self.assertEqual(v, v.lower())"},{"line_number":2470,"context_line":""},{"line_number":2471,"context_line":"    @mock.patch.object(utils.config, \u0027TRUE_VALUES\u0027, \u0027hello world\u0027.split())"},{"line_number":2472,"context_line":"    def test_config_true_value(self):"},{"line_number":2473,"context_line":"        orig_trues \u003d utils.config.TRUE_VALUES"},{"line_number":2474,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":14,"id":"e2ab5c16_190ade38","line":2471,"in_reply_to":"00724d31_5d967a21","updated":"2024-04-25 23:48:49.000000000","message":"Done","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7c9cd58e26a5014271dccd5cadf256c9b76cf21d","unresolved":true,"context_lines":[{"line_number":2475,"context_line":"            utils.config.TRUE_VALUES \u003d \u0027hello world\u0027.split()"},{"line_number":2476,"context_line":"            for val in \u0027hello world HELLO WORLD\u0027.split():"},{"line_number":2477,"context_line":"                self.assertTrue(utils.config_true_value(val) is True)"},{"line_number":2478,"context_line":"            self.assertTrue(utils.config_true_value(True) is True)"},{"line_number":2479,"context_line":"            self.assertTrue(utils.config_true_value(\u0027foo\u0027) is False)"},{"line_number":2480,"context_line":"            self.assertTrue(utils.config_true_value(False) is False)"},{"line_number":2481,"context_line":"            self.assertTrue(utils.config_true_value(None) is False)"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a20da54_66a5aca6","line":2478,"updated":"2024-04-25 14:10:56.000000000","message":"off-topic: I think ``self.assertIs(True, utils.config_true_value(True))`` works here","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"743e6958c13ce36ff012e9502fd4da305fda38a8","unresolved":false,"context_lines":[{"line_number":2475,"context_line":"            utils.config.TRUE_VALUES \u003d \u0027hello world\u0027.split()"},{"line_number":2476,"context_line":"            for val in \u0027hello world HELLO WORLD\u0027.split():"},{"line_number":2477,"context_line":"                self.assertTrue(utils.config_true_value(val) is True)"},{"line_number":2478,"context_line":"            self.assertTrue(utils.config_true_value(True) is True)"},{"line_number":2479,"context_line":"            self.assertTrue(utils.config_true_value(\u0027foo\u0027) is False)"},{"line_number":2480,"context_line":"            self.assertTrue(utils.config_true_value(False) is False)"},{"line_number":2481,"context_line":"            self.assertTrue(utils.config_true_value(None) is False)"}],"source_content_type":"text/x-python","patch_set":14,"id":"64d2fd8a_b1832297","line":2478,"in_reply_to":"1a20da54_66a5aca6","updated":"2024-04-25 23:48:49.000000000","message":"Acknowledged","commit_id":"89b027d821f79a3d1cd886e0503091f9996511ff"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9fd8e6c18e742f6cd6e22b0073bd1f2d4efe5d1f","unresolved":true,"context_lines":[{"line_number":2471,"context_line":"    @mock.patch.object(utils.config, \u0027TRUE_VALUES\u0027, \u0027hello world\u0027.split())"},{"line_number":2472,"context_line":"    def test_config_true_value(self):"},{"line_number":2473,"context_line":"        orig_trues \u003d utils.config.TRUE_VALUES"},{"line_number":2474,"context_line":"        utils.config.TRUE_VALUES \u003d \u0027hello world\u0027.split()"},{"line_number":2475,"context_line":"        for val in \u0027hello world HELLO WORLD\u0027.split():"},{"line_number":2476,"context_line":"            self.assertTrue(utils.config_true_value(val) is True)"},{"line_number":2477,"context_line":"        self.assertTrue(utils.config_true_value(True) is True)"}],"source_content_type":"text/x-python","patch_set":16,"id":"0b173a2c_3caad235","line":2474,"updated":"2024-04-29 17:14:49.000000000","message":"This shouldn\u0027t be needed any more, now that we\u0027ve got the decorator, yeah?","commit_id":"5b49293c5267c0bf4e3e0aff1f932007c58468b0"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"1adb8eec0fd10f51c407d2b95899b99a9a8ff7e2","unresolved":false,"context_lines":[{"line_number":2471,"context_line":"    @mock.patch.object(utils.config, \u0027TRUE_VALUES\u0027, \u0027hello world\u0027.split())"},{"line_number":2472,"context_line":"    def test_config_true_value(self):"},{"line_number":2473,"context_line":"        orig_trues \u003d utils.config.TRUE_VALUES"},{"line_number":2474,"context_line":"        utils.config.TRUE_VALUES \u003d \u0027hello world\u0027.split()"},{"line_number":2475,"context_line":"        for val in \u0027hello world HELLO WORLD\u0027.split():"},{"line_number":2476,"context_line":"            self.assertTrue(utils.config_true_value(val) is True)"},{"line_number":2477,"context_line":"        self.assertTrue(utils.config_true_value(True) is True)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7b4cfa4d_26a5f6b7","line":2474,"in_reply_to":"0b173a2c_3caad235","updated":"2024-04-29 18:18:27.000000000","message":"Done","commit_id":"5b49293c5267c0bf4e3e0aff1f932007c58468b0"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"fea1e8daddf19f2c71683953efbc31b42ec498ab","unresolved":true,"context_lines":[{"line_number":2470,"context_line":""},{"line_number":2471,"context_line":"    @mock.patch.object(utils.config, \u0027TRUE_VALUES\u0027, \u0027hello world\u0027.split())"},{"line_number":2472,"context_line":"    def test_config_true_value(self):"},{"line_number":2473,"context_line":"        orig_trues \u003d utils.config.TRUE_VALUES"},{"line_number":2474,"context_line":"        for val in \u0027hello world HELLO WORLD\u0027.split():"},{"line_number":2475,"context_line":"            self.assertTrue(utils.config_true_value(val) is True)"},{"line_number":2476,"context_line":"        self.assertTrue(utils.config_true_value(True) is True)"}],"source_content_type":"text/x-python","patch_set":17,"id":"245a5a6d_c5653bfa","line":2473,"updated":"2024-04-29 20:16:32.000000000","message":"This can get dropped, too -- with the patching, we don\u0027t need `orig_trues` at all.","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"39fd71d98d53bebefcf22b6f1035a16067c248f7","unresolved":false,"context_lines":[{"line_number":2470,"context_line":""},{"line_number":2471,"context_line":"    @mock.patch.object(utils.config, \u0027TRUE_VALUES\u0027, \u0027hello world\u0027.split())"},{"line_number":2472,"context_line":"    def test_config_true_value(self):"},{"line_number":2473,"context_line":"        orig_trues \u003d utils.config.TRUE_VALUES"},{"line_number":2474,"context_line":"        for val in \u0027hello world HELLO WORLD\u0027.split():"},{"line_number":2475,"context_line":"            self.assertTrue(utils.config_true_value(val) is True)"},{"line_number":2476,"context_line":"        self.assertTrue(utils.config_true_value(True) is True)"}],"source_content_type":"text/x-python","patch_set":17,"id":"0e11e89a_aca422fd","line":2473,"in_reply_to":"245a5a6d_c5653bfa","updated":"2024-04-30 20:38:35.000000000","message":"Acknowledged","commit_id":"e38bfedd4d1851f444a7665cb6a1042f5f69b281"}],"test/unit/helpers.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b025d5d6b9a3984e1776a6775ab4d76b380d8bd","unresolved":true,"context_lines":[{"line_number":336,"context_line":"    for server in context[\"test_coros\"]:"},{"line_number":337,"context_line":"        server.kill()"},{"line_number":338,"context_line":"    rmtree(os.path.dirname(context[\"testdir\"]))"},{"line_number":339,"context_line":"    utils.logs.SysLogHandler \u003d context[\"orig_SysLogHandler\"]"},{"line_number":340,"context_line":"    storage_policy._POLICIES \u003d context[\"orig_POLICIES\"]"}],"source_content_type":"text/x-python","patch_set":20,"id":"1bc54401_18e90c23","line":339,"updated":"2024-05-01 19:49:34.000000000","message":"maybe this patching is reasonable now?  maybe it\u0027s still kind of sus.","commit_id":"bc3a59bdd36fbd90554e73d419d8767a3845f9af"}],"test/unit/obj/test_ssync_receiver.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5b0cf45e611135d8dc167c790c1cf2156a3242dc","unresolved":true,"context_lines":[{"line_number":2321,"context_line":"        self.rx_ip \u003d \u0027127.0.0.1\u0027"},{"line_number":2322,"context_line":"        self.sock \u003d listen_zero()"},{"line_number":2323,"context_line":"        self.rx_server \u003d eventlet.spawn(eventlet.wsgi.server, self.sock,"},{"line_number":2324,"context_line":"                                        rx_server, utils.NullLogger())"},{"line_number":2325,"context_line":"        self.rx_port \u003d self.sock.getsockname()[1]"},{"line_number":2326,"context_line":"        self.tx_logger \u003d debug_logger(\u0027test-reconstructor\u0027)"},{"line_number":2327,"context_line":"        self.daemon \u003d ObjectReconstructor(self.conf, self.tx_logger)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9116efca_3d80445d","line":2324,"updated":"2024-04-02 18:54:42.000000000","message":"unrelated formatting change","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"86962ff07395fde539de7a15dfbedcf1d41ff36b","unresolved":false,"context_lines":[{"line_number":2321,"context_line":"        self.rx_ip \u003d \u0027127.0.0.1\u0027"},{"line_number":2322,"context_line":"        self.sock \u003d listen_zero()"},{"line_number":2323,"context_line":"        self.rx_server \u003d eventlet.spawn(eventlet.wsgi.server, self.sock,"},{"line_number":2324,"context_line":"                                        rx_server, utils.NullLogger())"},{"line_number":2325,"context_line":"        self.rx_port \u003d self.sock.getsockname()[1]"},{"line_number":2326,"context_line":"        self.tx_logger \u003d debug_logger(\u0027test-reconstructor\u0027)"},{"line_number":2327,"context_line":"        self.daemon \u003d ObjectReconstructor(self.conf, self.tx_logger)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ced0306_29c879c4","line":2324,"in_reply_to":"9116efca_3d80445d","updated":"2024-04-05 17:12:36.000000000","message":"Acknowledged","commit_id":"f1bd573c3a833cd11b5e10826f982a48986240a2"}],"tox.ini":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"40dbf650051312b4362217c2eb0c280f0a38cfb8","unresolved":true,"context_lines":[{"line_number":1,"context_line":"[tox]"},{"line_number":2,"context_line":"envlist \u003d py37,py27,pep8"},{"line_number":3,"context_line":"toxworkdir \u003d /home/vagrant/.tox-swift"},{"line_number":4,"context_line":"minversion \u003d 3.18.0"},{"line_number":5,"context_line":"requires \u003d"},{"line_number":6,"context_line":"  # required to support py27/py36 envs"}],"source_content_type":"text/x-properties","patch_set":11,"id":"dbd78f9d_4b59d7bd","line":3,"updated":"2024-04-13 14:11:58.000000000","message":"this shouldn\u0027t be commited.  Please review your own diffs when you push them up - if you see a file changed that you didn\u0027t expect to have edited you should be able to notice that pretty quickly","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"},{"author":{"_account_id":35790,"name":"Shreeya Deshpande","email":"shreeyad@nvidia.com","username":"shreeyad"},"change_message_id":"69c0760c5e225b5f348485e4b0ee3e5a7dd85736","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[tox]"},{"line_number":2,"context_line":"envlist \u003d py37,py27,pep8"},{"line_number":3,"context_line":"toxworkdir \u003d /home/vagrant/.tox-swift"},{"line_number":4,"context_line":"minversion \u003d 3.18.0"},{"line_number":5,"context_line":"requires \u003d"},{"line_number":6,"context_line":"  # required to support py27/py36 envs"}],"source_content_type":"text/x-properties","patch_set":11,"id":"6024d074_25b90023","line":3,"in_reply_to":"dbd78f9d_4b59d7bd","updated":"2024-04-18 16:55:49.000000000","message":"Acknowledged","commit_id":"d998bc81d45bfda7baaa85e5a6915b7b4d660dde"}]}
