)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ced10bbedf2295f4edda9951a2deb39f468ea741","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Need liberasure PR https://review.opendev.org/c/openstack/liberasurecode/+/959280"},{"line_number":10,"context_line":"for LRC tests"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"sq: lrc fixups"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I0ae2657f316845cb8e3af704c32dac82b2e1fdfd"},{"line_number":15,"context_line":"Signed-off-by: Tim Burke \u003ctim.burke@gmail.com\u003e"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I742cc2eaac67fe60944f1e6f8ea941da8ee05e3c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"8658488b_d82300bb","line":16,"range":{"start_line":12,"start_character":0,"end_line":16,"end_character":0},"updated":"2025-12-07 21:41:51.000000000","message":"You don\u0027t need to include the squashed-in commit message; if you\u0027d like to credit me, you can add a\n```\nCo-Authored-By: Tim Burke \u003ctim.burke@gmail.com\u003e\n```\n(but I don\u0027t care too much either way)","commit_id":"83fc5d57f94cb37f11b9972de0874b1f89710e7d"},{"author":{"_account_id":38169,"name":"Lhoussain AIT ASSOU","display_name":"aitassou","email":"lhoussain.ait-assou@ovhcloud.com","username":"aitassou"},"change_message_id":"9acf6345ef52e2dabf654d418501f5606d721ef1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Need liberasure PR https://review.opendev.org/c/openstack/liberasurecode/+/959280"},{"line_number":10,"context_line":"for LRC tests"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"sq: lrc fixups"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I0ae2657f316845cb8e3af704c32dac82b2e1fdfd"},{"line_number":15,"context_line":"Signed-off-by: Tim Burke \u003ctim.burke@gmail.com\u003e"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I742cc2eaac67fe60944f1e6f8ea941da8ee05e3c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"784f7c90_52f364f9","line":16,"range":{"start_line":12,"start_character":0,"end_line":16,"end_character":0},"in_reply_to":"8658488b_d82300bb","updated":"2025-12-08 13:41:51.000000000","message":"Ok will do nex times 😊","commit_id":"83fc5d57f94cb37f11b9972de0874b1f89710e7d"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":38169,"name":"Lhoussain AIT ASSOU","display_name":"aitassou","email":"lhoussain.ait-assou@ovhcloud.com","username":"aitassou"},"change_message_id":"6deeb1f776b4b95ded7693c2a79445b7d8eecde1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4c7c2a58_82b8a2e5","updated":"2025-10-22 12:17:00.000000000","message":"Is there a way to branch the CI into a specefic branch in liberasurecode?\nThanks","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7c6fdad94fb9916d4d9f4f048b3cc8d9840a6446","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"caa48631_bd037e36","updated":"2025-12-03 01:42:15.000000000","message":"See what you think of https://review.opendev.org/c/openstack/pyeclib/+/969332 as some fixups.","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7c6fdad94fb9916d4d9f4f048b3cc8d9840a6446","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4c753671_17da5b52","in_reply_to":"4c7c2a58_82b8a2e5","updated":"2025-12-03 01:42:15.000000000","message":"So there\u0027s something that *could* be done if we set liberasurecode as a `required-project` in `.zuul.yaml` but I haven\u0027t looked into it much. But **if** we had it properly set up, you could (in theory) just say\n```\nDepends-On: https://review.opendev.org/c/openstack/liberasurecode/+/959280\n```\nin the commit message.\n\nAt the same time, I sometimes find it useful that we\u0027re building against not-master -- I feel like that\u0027s a not-uncommon state for packagers (and sometimes users, though probably less so now that we publish binary wheels) to find themselves in. While I love to see people running latest-and-greatest everywhere, sometimes they just want to upgrade one or the other for whatever reason, and I like to be able to support that.","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ced10bbedf2295f4edda9951a2deb39f468ea741","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"319422d2_63d58c1f","updated":"2025-12-07 21:41:51.000000000","message":"Going to push up a patch to clean up the commit message, add `--local-parity` for the `bench` and `verify` subcommands, and go back to your allowable failures for the tests.","commit_id":"83fc5d57f94cb37f11b9972de0874b1f89710e7d"},{"author":{"_account_id":38169,"name":"Lhoussain AIT ASSOU","display_name":"aitassou","email":"lhoussain.ait-assou@ovhcloud.com","username":"aitassou"},"change_message_id":"a1d3eaddae032adce69fedc1d22c235a91ffc8e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e9755cde_60330e07","updated":"2025-12-04 14:01:20.000000000","message":"Thanks for proposition, it speeds up the work","commit_id":"83fc5d57f94cb37f11b9972de0874b1f89710e7d"},{"author":{"_account_id":38169,"name":"Lhoussain AIT ASSOU","display_name":"aitassou","email":"lhoussain.ait-assou@ovhcloud.com","username":"aitassou"},"change_message_id":"9acf6345ef52e2dabf654d418501f5606d721ef1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"54e3eed5_aad91c80","in_reply_to":"319422d2_63d58c1f","updated":"2025-12-08 13:41:51.000000000","message":"Good!","commit_id":"83fc5d57f94cb37f11b9972de0874b1f89710e7d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"44234f705e8ea4e38883a43f46fe23b29fad1017","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"4082a167_51802b5b","updated":"2026-02-09 00:38:05.000000000","message":"Updated commit message some more, and fixed a few tests that weren\u0027t passing `local_parity` when trying to get an LRC instance.","commit_id":"d4114aaf139369a3eadd134555dc902855d45081"}],"pyeclib/core.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7c6fdad94fb9916d4d9f4f048b3cc8d9840a6446","unresolved":true,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __init__(self, k, m, hd, ec_type,"},{"line_number":36,"context_line":"                 chksum_type\u003dPyECLib_FRAGHDRCHKSUM_Types.none,"},{"line_number":37,"context_line":"                 validate\u003dFalse, local_parity\u003d-1):"},{"line_number":38,"context_line":"        self.k \u003d k"},{"line_number":39,"context_line":"        self.m \u003d m"},{"line_number":40,"context_line":"        self.local_parity \u003d local_parity"}],"source_content_type":"text/x-python","patch_set":3,"id":"e9fc6ac3_b4d9d8f4","line":37,"range":{"start_line":37,"start_character":46,"end_line":37,"end_character":48},"updated":"2025-12-03 01:42:15.000000000","message":"Or maybe default to zero? \\**shrug*\\*","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"44234f705e8ea4e38883a43f46fe23b29fad1017","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __init__(self, k, m, hd, ec_type,"},{"line_number":36,"context_line":"                 chksum_type\u003dPyECLib_FRAGHDRCHKSUM_Types.none,"},{"line_number":37,"context_line":"                 validate\u003dFalse, local_parity\u003d-1):"},{"line_number":38,"context_line":"        self.k \u003d k"},{"line_number":39,"context_line":"        self.m \u003d m"},{"line_number":40,"context_line":"        self.local_parity \u003d local_parity"}],"source_content_type":"text/x-python","patch_set":3,"id":"fed28f4c_f12d428d","line":37,"range":{"start_line":37,"start_character":46,"end_line":37,"end_character":48},"in_reply_to":"27c67ada_c2a7a29d","updated":"2026-02-09 00:38:05.000000000","message":"Done","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":38169,"name":"Lhoussain AIT ASSOU","display_name":"aitassou","email":"lhoussain.ait-assou@ovhcloud.com","username":"aitassou"},"change_message_id":"a1d3eaddae032adce69fedc1d22c235a91ffc8e1","unresolved":true,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __init__(self, k, m, hd, ec_type,"},{"line_number":36,"context_line":"                 chksum_type\u003dPyECLib_FRAGHDRCHKSUM_Types.none,"},{"line_number":37,"context_line":"                 validate\u003dFalse, local_parity\u003d-1):"},{"line_number":38,"context_line":"        self.k \u003d k"},{"line_number":39,"context_line":"        self.m \u003d m"},{"line_number":40,"context_line":"        self.local_parity \u003d local_parity"}],"source_content_type":"text/x-python","patch_set":3,"id":"27c67ada_c2a7a29d","line":37,"range":{"start_line":37,"start_character":46,"end_line":37,"end_character":48},"in_reply_to":"e9fc6ac3_b4d9d8f4","updated":"2025-12-04 14:01:20.000000000","message":"No that we check against backend we could set to zero","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7c6fdad94fb9916d4d9f4f048b3cc8d9840a6446","unresolved":true,"context_lines":[{"line_number":159,"context_line":"        self.k \u003d k"},{"line_number":160,"context_line":"        self.m \u003d m"},{"line_number":161,"context_line":"        self.hd \u003d hd"},{"line_number":162,"context_line":"        self.local_partiy \u003d local_parity"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def close(self):"},{"line_number":165,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"7429c562_263e18fd","line":162,"updated":"2025-12-03 01:42:15.000000000","message":"Could also just ignore the arg, like we do with `ec_type`, `chksum_type`, and `validate`","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":38169,"name":"Lhoussain AIT ASSOU","display_name":"aitassou","email":"lhoussain.ait-assou@ovhcloud.com","username":"aitassou"},"change_message_id":"a1d3eaddae032adce69fedc1d22c235a91ffc8e1","unresolved":true,"context_lines":[{"line_number":159,"context_line":"        self.k \u003d k"},{"line_number":160,"context_line":"        self.m \u003d m"},{"line_number":161,"context_line":"        self.hd \u003d hd"},{"line_number":162,"context_line":"        self.local_partiy \u003d local_parity"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def close(self):"},{"line_number":165,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"a82f11ba_1c42e651","line":162,"in_reply_to":"7429c562_263e18fd","updated":"2025-12-04 14:01:20.000000000","message":"ok","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ced10bbedf2295f4edda9951a2deb39f468ea741","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        self.k \u003d k"},{"line_number":160,"context_line":"        self.m \u003d m"},{"line_number":161,"context_line":"        self.hd \u003d hd"},{"line_number":162,"context_line":"        self.local_partiy \u003d local_parity"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def close(self):"},{"line_number":165,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"c92f38ee_ea5b57d5","line":162,"in_reply_to":"a82f11ba_1c42e651","updated":"2025-12-07 21:41:51.000000000","message":"Done","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"}],"pyeclib/ec_iface.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7c6fdad94fb9916d4d9f4f048b3cc8d9840a6446","unresolved":true,"context_lines":[{"line_number":179,"context_line":"        self.validate \u003d validate"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        if self.hd \u003d\u003d -1:"},{"line_number":182,"context_line":"            self.hd \u003d self.m + 1"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        self.library_import_str \u003d library_import_str"},{"line_number":185,"context_line":"        #"}],"source_content_type":"text/x-python","patch_set":3,"id":"d2fce32b_531b3ec3","line":182,"updated":"2025-12-03 01:42:15.000000000","message":"I\u0027m not sure about this -- on the one hand, this is more in line with how the xor codes use Hamming distance (i.e., we can recover from at most `hd - 1` failures), but on the other, we\u0027ve said things like [`hd - hamming distance (\u003dm for Reed-Solomon)`](https://github.com/openstack/liberasurecode/blob/master/doc/api_definition.md?plain\u003d1#L19) for an awfully long time....\n\nI guess the good news is, only the flat xor codes and libphazr backends seem to look at `hd`, and for them, it should get set explicitly before now.\n\nBut then again, why fix this now, in this patch?","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":38169,"name":"Lhoussain AIT ASSOU","display_name":"aitassou","email":"lhoussain.ait-assou@ovhcloud.com","username":"aitassou"},"change_message_id":"a1d3eaddae032adce69fedc1d22c235a91ffc8e1","unresolved":true,"context_lines":[{"line_number":179,"context_line":"        self.validate \u003d validate"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        if self.hd \u003d\u003d -1:"},{"line_number":182,"context_line":"            self.hd \u003d self.m + 1"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        self.library_import_str \u003d library_import_str"},{"line_number":185,"context_line":"        #"}],"source_content_type":"text/x-python","patch_set":3,"id":"bb687c31_1be026f3","line":182,"in_reply_to":"d2fce32b_531b3ec3","updated":"2025-12-04 14:01:20.000000000","message":"I think I found something suspicious about hamming distance , this why this change","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"}],"src/c/pyeclib_c/pyeclib_c.c":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7c6fdad94fb9916d4d9f4f048b3cc8d9840a6446","unresolved":true,"context_lines":[{"line_number":215,"context_line":" * @param use_inline_chksum type of inline fragment header checksum"},{"line_number":216,"context_line":" * @param use_algsig_chksum use algorithmic signature for fragment header checksum"},{"line_number":217,"context_line":" * @param validate only validate backend and params, close handle immediately"},{"line_number":218,"context_line":" * @param local_parity number of local parity (included in totla m."},{"line_number":219,"context_line":" * @return pointer to PyObject or NULL on error"},{"line_number":220,"context_line":" */"},{"line_number":221,"context_line":"static PyObject *"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"868f2487_2ea58cce","line":218,"range":{"start_line":218,"start_character":59,"end_line":218,"end_character":64},"updated":"2025-12-03 01:42:15.000000000","message":"\"total\"","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":38169,"name":"Lhoussain AIT ASSOU","display_name":"aitassou","email":"lhoussain.ait-assou@ovhcloud.com","username":"aitassou"},"change_message_id":"a1d3eaddae032adce69fedc1d22c235a91ffc8e1","unresolved":false,"context_lines":[{"line_number":215,"context_line":" * @param use_inline_chksum type of inline fragment header checksum"},{"line_number":216,"context_line":" * @param use_algsig_chksum use algorithmic signature for fragment header checksum"},{"line_number":217,"context_line":" * @param validate only validate backend and params, close handle immediately"},{"line_number":218,"context_line":" * @param local_parity number of local parity (included in totla m."},{"line_number":219,"context_line":" * @return pointer to PyObject or NULL on error"},{"line_number":220,"context_line":" */"},{"line_number":221,"context_line":"static PyObject *"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"743793b2_0570bce8","line":218,"range":{"start_line":218,"start_character":59,"end_line":218,"end_character":64},"in_reply_to":"868f2487_2ea58cce","updated":"2025-12-04 14:01:20.000000000","message":"Done","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7c6fdad94fb9916d4d9f4f048b3cc8d9840a6446","unresolved":false,"context_lines":[{"line_number":228,"context_line":"  const ec_backend_id_t backend_id;"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"  /* Obtain and validate the method parameters */"},{"line_number":231,"context_line":"  if (!PyArg_ParseTuple(args, \"iii|iiiii\","},{"line_number":232,"context_line":"                        \u0026k, \u0026m, \u0026backend_id, \u0026hd, \u0026use_inline_chksum,"},{"line_number":233,"context_line":"                        \u0026use_algsig_chksum, \u0026validate, \u0026local_parity)) {"},{"line_number":234,"context_line":"    pyeclib_c_seterr(-EINVALIDPARAMS, \"pyeclib_c_init\");"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"6f0e9d4c_333b7089","line":231,"range":{"start_line":231,"start_character":35,"end_line":231,"end_character":40},"updated":"2025-12-03 01:42:15.000000000","message":"Oh jeeze -- we\u0027ve had this wrong all this time?? At least it\u0027s right now...","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7c6fdad94fb9916d4d9f4f048b3cc8d9840a6446","unresolved":true,"context_lines":[{"line_number":246,"context_line":"  pyeclib_handle-\u003eec_args.m \u003d m;"},{"line_number":247,"context_line":"  pyeclib_handle-\u003eec_args.hd \u003d hd;"},{"line_number":248,"context_line":"  pyeclib_handle-\u003eec_args.ct \u003d use_inline_chksum ? CHKSUM_CRC32 : CHKSUM_NONE;"},{"line_number":249,"context_line":"  pyeclib_handle-\u003eec_args.priv_args1.lrc_args.l \u003d local_parity;"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"  if (validate)"},{"line_number":252,"context_line":"    redirect_stderr();"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"1e069007_18e186ff","line":249,"range":{"start_line":249,"start_character":37,"end_line":249,"end_character":47},"updated":"2025-12-03 01:42:15.000000000","message":"So if we use `.priv_args1.reserved.x` here, we should be able to continue building against older liberasurecode -- and we can move to this more-explicit construction when we\u0027re ready to bump up that minimum build version.","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ced10bbedf2295f4edda9951a2deb39f468ea741","unresolved":false,"context_lines":[{"line_number":246,"context_line":"  pyeclib_handle-\u003eec_args.m \u003d m;"},{"line_number":247,"context_line":"  pyeclib_handle-\u003eec_args.hd \u003d hd;"},{"line_number":248,"context_line":"  pyeclib_handle-\u003eec_args.ct \u003d use_inline_chksum ? CHKSUM_CRC32 : CHKSUM_NONE;"},{"line_number":249,"context_line":"  pyeclib_handle-\u003eec_args.priv_args1.lrc_args.l \u003d local_parity;"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"  if (validate)"},{"line_number":252,"context_line":"    redirect_stderr();"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"395d3051_29e6c3b1","line":249,"range":{"start_line":249,"start_character":37,"end_line":249,"end_character":47},"in_reply_to":"1e069007_18e186ff","updated":"2025-12-07 21:41:51.000000000","message":"Done","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"}],"test/test_pyeclib_api.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7c6fdad94fb9916d4d9f4f048b3cc8d9840a6446","unresolved":true,"context_lines":[{"line_number":710,"context_line":"                    decoded_string \u003d pyeclib_driver.decode(fragments)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"                    self.assertTrue(encode_input \u003d\u003d decoded_string)"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"                    #"},{"line_number":715,"context_line":"                    # Test reconstructor"},{"line_number":716,"context_line":"                    #"}],"source_content_type":"text/x-python","patch_set":3,"id":"277dcf7d_9902848c","side":"PARENT","line":713,"updated":"2025-12-03 01:42:15.000000000","message":"Stray edit?","commit_id":"1927fd43afb22e4c16e6d10affd7811da5827cc8"},{"author":{"_account_id":38169,"name":"Lhoussain AIT ASSOU","display_name":"aitassou","email":"lhoussain.ait-assou@ovhcloud.com","username":"aitassou"},"change_message_id":"a1d3eaddae032adce69fedc1d22c235a91ffc8e1","unresolved":true,"context_lines":[{"line_number":710,"context_line":"                    decoded_string \u003d pyeclib_driver.decode(fragments)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"                    self.assertTrue(encode_input \u003d\u003d decoded_string)"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"                    #"},{"line_number":715,"context_line":"                    # Test reconstructor"},{"line_number":716,"context_line":"                    #"}],"source_content_type":"text/x-python","patch_set":3,"id":"35b66b50_56976893","side":"PARENT","line":713,"in_reply_to":"277dcf7d_9902848c","updated":"2025-12-04 14:01:20.000000000","message":"yes something wen wrong with editor","commit_id":"1927fd43afb22e4c16e6d10affd7811da5827cc8"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ced10bbedf2295f4edda9951a2deb39f468ea741","unresolved":false,"context_lines":[{"line_number":710,"context_line":"                    decoded_string \u003d pyeclib_driver.decode(fragments)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"                    self.assertTrue(encode_input \u003d\u003d decoded_string)"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"                    #"},{"line_number":715,"context_line":"                    # Test reconstructor"},{"line_number":716,"context_line":"                    #"}],"source_content_type":"text/x-python","patch_set":3,"id":"bc45367a_e16d1e2a","side":"PARENT","line":713,"in_reply_to":"35b66b50_56976893","updated":"2025-12-07 21:41:51.000000000","message":"Done","commit_id":"1927fd43afb22e4c16e6d10affd7811da5827cc8"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7c6fdad94fb9916d4d9f4f048b3cc8d9840a6446","unresolved":true,"context_lines":[{"line_number":671,"context_line":"                tolerable_failures \u003d pyeclib_driver.hd - 1"},{"line_number":672,"context_line":"            elif pyeclib_driver.ec_type \u003d\u003d PyECLib_EC_Types.isa_l_rs_lrc:"},{"line_number":673,"context_line":"                tolerable_failures \u003d pyeclib_driver.m - \\"},{"line_number":674,"context_line":"                    pyeclib_driver.local_parity + 1"},{"line_number":675,"context_line":"            else:"},{"line_number":676,"context_line":"                # ... while others can tolerate more"},{"line_number":677,"context_line":"                tolerable_failures \u003d pyeclib_driver.m"}],"source_content_type":"text/x-python","patch_set":3,"id":"cceb4bab_eea4d9d4","line":674,"range":{"start_line":674,"start_character":48,"end_line":674,"end_character":51},"updated":"2025-12-03 01:42:15.000000000","message":"Not `m - local_parity`? I was expecting just `m - local_parity`...","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ced10bbedf2295f4edda9951a2deb39f468ea741","unresolved":false,"context_lines":[{"line_number":671,"context_line":"                tolerable_failures \u003d pyeclib_driver.hd - 1"},{"line_number":672,"context_line":"            elif pyeclib_driver.ec_type \u003d\u003d PyECLib_EC_Types.isa_l_rs_lrc:"},{"line_number":673,"context_line":"                tolerable_failures \u003d pyeclib_driver.m - \\"},{"line_number":674,"context_line":"                    pyeclib_driver.local_parity + 1"},{"line_number":675,"context_line":"            else:"},{"line_number":676,"context_line":"                # ... while others can tolerate more"},{"line_number":677,"context_line":"                tolerable_failures \u003d pyeclib_driver.m"}],"source_content_type":"text/x-python","patch_set":3,"id":"26290e19_f497cf7f","line":674,"range":{"start_line":674,"start_character":48,"end_line":674,"end_character":51},"in_reply_to":"c305108b_1962f8c5","updated":"2025-12-07 21:41:51.000000000","message":"What about when `local_parity \u003d 0`, and it degenerates to `isa_l_rs_vand_inv`? Or should that cause an initialization failure over in https://review.opendev.org/c/openstack/liberasurecode/+/959280?\n\nYou\u0027re right, though, for all the cases we care about _here_, `m - local_parity + 1` should work. I thought I\u0027d seen a failure here at one point, but I must\u0027ve had some weird dirty tree or something...","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":38169,"name":"Lhoussain AIT ASSOU","display_name":"aitassou","email":"lhoussain.ait-assou@ovhcloud.com","username":"aitassou"},"change_message_id":"a1d3eaddae032adce69fedc1d22c235a91ffc8e1","unresolved":true,"context_lines":[{"line_number":671,"context_line":"                tolerable_failures \u003d pyeclib_driver.hd - 1"},{"line_number":672,"context_line":"            elif pyeclib_driver.ec_type \u003d\u003d PyECLib_EC_Types.isa_l_rs_lrc:"},{"line_number":673,"context_line":"                tolerable_failures \u003d pyeclib_driver.m - \\"},{"line_number":674,"context_line":"                    pyeclib_driver.local_parity + 1"},{"line_number":675,"context_line":"            else:"},{"line_number":676,"context_line":"                # ... while others can tolerate more"},{"line_number":677,"context_line":"                tolerable_failures \u003d pyeclib_driver.m"}],"source_content_type":"text/x-python","patch_set":3,"id":"c305108b_1962f8c5","line":674,"range":{"start_line":674,"start_character":48,"end_line":674,"end_character":51},"in_reply_to":"cceb4bab_eea4d9d4","updated":"2025-12-04 14:01:20.000000000","message":"for our case it will be m - local_parity, but I hope find something that make general for all LRCS to correct up to m - local_parity + 1 systematically","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"}],"tools/pyeclib_encode.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7c6fdad94fb9916d4d9f4f048b3cc8d9840a6446","unresolved":true,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"args \u003d parser.parse_args()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"print(\"laa %s\", args)"},{"line_number":40,"context_line":"print(\"k \u003d %d, m \u003d %d\" % (args.k, args.m))"},{"line_number":41,"context_line":"print(\"ec_type \u003d %s\" % args.ec_type)"},{"line_number":42,"context_line":"print(\"filename \u003d %s\" % args.filename)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9d9fbd0d_a30f5e67","line":39,"updated":"2025-12-03 01:42:15.000000000","message":"Debugging?","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":38169,"name":"Lhoussain AIT ASSOU","display_name":"aitassou","email":"lhoussain.ait-assou@ovhcloud.com","username":"aitassou"},"change_message_id":"a1d3eaddae032adce69fedc1d22c235a91ffc8e1","unresolved":true,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"args \u003d parser.parse_args()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"print(\"laa %s\", args)"},{"line_number":40,"context_line":"print(\"k \u003d %d, m \u003d %d\" % (args.k, args.m))"},{"line_number":41,"context_line":"print(\"ec_type \u003d %s\" % args.ec_type)"},{"line_number":42,"context_line":"print(\"filename \u003d %s\" % args.filename)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ce5ac0dd_926d5d98","line":39,"in_reply_to":"9d9fbd0d_a30f5e67","updated":"2025-12-04 14:01:20.000000000","message":"forgot","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ced10bbedf2295f4edda9951a2deb39f468ea741","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"args \u003d parser.parse_args()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"print(\"laa %s\", args)"},{"line_number":40,"context_line":"print(\"k \u003d %d, m \u003d %d\" % (args.k, args.m))"},{"line_number":41,"context_line":"print(\"ec_type \u003d %s\" % args.ec_type)"},{"line_number":42,"context_line":"print(\"filename \u003d %s\" % args.filename)"}],"source_content_type":"text/x-python","patch_set":3,"id":"b608bf59_341fd4ae","line":39,"in_reply_to":"ce5ac0dd_926d5d98","updated":"2025-12-07 21:41:51.000000000","message":"Done","commit_id":"dbe19af16d3efcab268ecc5d47e2df79e4d29f74"}]}
