)]}'
{"doc/source/development_middleware.rst":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"ef9f40345d40c60c4aef895a90f3bdc24880ce4e","unresolved":true,"context_lines":[{"line_number":407,"context_line":"``X-Object-Sysmeta-Crypto-*`` namespace. You can pass ``names`` by position or"},{"line_number":408,"context_line":"keyword. It defaults to an empty tuple and accepts other iterables, except"},{"line_number":409,"context_line":"strings and mappings. At least one name is required. Registration is additive"},{"line_number":410,"context_line":"and idempotent."},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"Register only metadata that downstream components can store and return without"},{"line_number":413,"context_line":"interpreting its original name or value. Do not register fields that proxy"}],"source_content_type":"text/x-rst","patch_set":1,"id":"11c967a1_66278ce8","line":410,"updated":"2026-10-29 11:22:16.000000000","message":"there\u0027s a danger that this is duplicating the function docstring but will not be maintained in future if the docstring changes. Do we need such a full documentation of the function here?","commit_id":"34fd7a5afe397a1fb666377e80bfc57c2285d7a5"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"afb15a92f2c2b6acf04c7d15527cfa6453026350","unresolved":true,"context_lines":[{"line_number":407,"context_line":"``X-Object-Sysmeta-Crypto-*`` namespace. You can pass ``names`` by position or"},{"line_number":408,"context_line":"keyword. It defaults to an empty tuple and accepts other iterables, except"},{"line_number":409,"context_line":"strings and mappings. At least one name is required. Registration is additive"},{"line_number":410,"context_line":"and idempotent."},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"Register only metadata that downstream components can store and return without"},{"line_number":413,"context_line":"interpreting its original name or value. Do not register fields that proxy"}],"source_content_type":"text/x-rst","patch_set":1,"id":"659a4ed1_b385f35f","line":410,"in_reply_to":"11c967a1_66278ce8","updated":"2026-10-29 11:36:51.000000000","message":"Good point. In that case we should remove lines 405-411 and just use ``:func:`.register_sensitive_sysmeta`` above.\n\nThe change in this sq?-patch was just to keep this \"correct\".","commit_id":"34fd7a5afe397a1fb666377e80bfc57c2285d7a5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"a36de42c2c4e0e581e3c21c956691be9e8dac06a","unresolved":true,"context_lines":[{"line_number":407,"context_line":"``X-Object-Sysmeta-Crypto-*`` namespace. You can pass ``names`` by position or"},{"line_number":408,"context_line":"keyword. It defaults to an empty tuple and accepts other iterables, except"},{"line_number":409,"context_line":"strings and mappings. At least one name is required. Registration is additive"},{"line_number":410,"context_line":"and idempotent."},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"Register only metadata that downstream components can store and return without"},{"line_number":413,"context_line":"interpreting its original name or value. Do not register fields that proxy"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5b66c983_f2bdbd24","line":410,"in_reply_to":"659a4ed1_b385f35f","updated":"2026-10-29 12:49:26.000000000","message":"the power of referencing 🥰","commit_id":"34fd7a5afe397a1fb666377e80bfc57c2285d7a5"}],"swift/common/registry.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"ef9f40345d40c60c4aef895a90f3bdc24880ce4e","unresolved":true,"context_lines":[{"line_number":100,"context_line":"def _normalize_sensitive_sysmeta(name):"},{"line_number":101,"context_line":"    if not isinstance(name, str):"},{"line_number":102,"context_line":"        raise TypeError"},{"line_number":103,"context_line":"    name.encode(\u0027ascii\u0027)"},{"line_number":104,"context_line":"    if not _header_name_re.match(name):"},{"line_number":105,"context_line":"        raise ValueError(\u0027Invalid header name: %r\u0027 % name)"},{"line_number":106,"context_line":"    # In request headers, swob changes \u0027_\u0027 to \u0027-\u0027. The encrypter then cannot"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfa585db_c9462c0f","line":103,"range":{"start_line":103,"start_character":4,"end_line":103,"end_character":24},"updated":"2026-10-29 11:22:16.000000000","message":"wdyt about catching the UnicodeError here and translating to ValueError? The docstring can simply say that an invalid HTTP header name raises a ValueError","commit_id":"34fd7a5afe397a1fb666377e80bfc57c2285d7a5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"a36de42c2c4e0e581e3c21c956691be9e8dac06a","unresolved":true,"context_lines":[{"line_number":100,"context_line":"def _normalize_sensitive_sysmeta(name):"},{"line_number":101,"context_line":"    if not isinstance(name, str):"},{"line_number":102,"context_line":"        raise TypeError"},{"line_number":103,"context_line":"    name.encode(\u0027ascii\u0027)"},{"line_number":104,"context_line":"    if not _header_name_re.match(name):"},{"line_number":105,"context_line":"        raise ValueError(\u0027Invalid header name: %r\u0027 % name)"},{"line_number":106,"context_line":"    # In request headers, swob changes \u0027_\u0027 to \u0027-\u0027. The encrypter then cannot"}],"source_content_type":"text/x-python","patch_set":1,"id":"0b857483_758f2479","line":103,"range":{"start_line":103,"start_character":4,"end_line":103,"end_character":24},"in_reply_to":"4a868c07_1ac0af59","updated":"2026-10-29 12:49:26.000000000","message":"perfect, the unit tests threw me off by having a special case assertion for UnicodeError","commit_id":"34fd7a5afe397a1fb666377e80bfc57c2285d7a5"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"afb15a92f2c2b6acf04c7d15527cfa6453026350","unresolved":true,"context_lines":[{"line_number":100,"context_line":"def _normalize_sensitive_sysmeta(name):"},{"line_number":101,"context_line":"    if not isinstance(name, str):"},{"line_number":102,"context_line":"        raise TypeError"},{"line_number":103,"context_line":"    name.encode(\u0027ascii\u0027)"},{"line_number":104,"context_line":"    if not _header_name_re.match(name):"},{"line_number":105,"context_line":"        raise ValueError(\u0027Invalid header name: %r\u0027 % name)"},{"line_number":106,"context_line":"    # In request headers, swob changes \u0027_\u0027 to \u0027-\u0027. The encrypter then cannot"}],"source_content_type":"text/x-python","patch_set":1,"id":"4a868c07_1ac0af59","line":103,"range":{"start_line":103,"start_character":4,"end_line":103,"end_character":24},"in_reply_to":"dfa585db_c9462c0f","updated":"2026-10-29 11:36:51.000000000","message":"UnicodeError is a subclass of ValueError - should be ok?","commit_id":"34fd7a5afe397a1fb666377e80bfc57c2285d7a5"}]}
