)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"48a4f633a9793535fce44cb85480b05e0a50abe2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ad88cd3b_44d7261f","updated":"2026-03-11 18:50:17.000000000","message":"Thanks for including a good README, I gave it a spin and it all went smoothly.","commit_id":"cb6c7578226f72872e818bd92115d8024ce98477"}],"src/cpp_core_enums.hxx":[{"author":{"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"b1e56790580b858567073d6b70dc579d73965eb5","unresolved":true,"context_lines":[{"line_number":35,"context_line":"  X(warn, 30, __VA_ARGS__)                                                                         \\"},{"line_number":36,"context_line":"  X(err, 40, __VA_ARGS__)                                                                          \\"},{"line_number":37,"context_line":"  X(critical, 50, __VA_ARGS__)                                                                     \\"},{"line_number":38,"context_line":"  X(off, 0, __VA_ARGS__)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"PYCBC_DEFINE_INT_ENUM_CONVERSION(couchbase::core::logger::level, off, LEVEL_MAPPINGS)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":7,"id":"4a05d3e6_5ba71536","line":38,"updated":"2026-03-24 13:45:18.000000000","message":"According to the [Python docs](https://docs.python.org/3/library/logging.html#logging-levels), NOTSET (0) doesn\u0027t correspond to `off`. It\u0027s meant to use the parent logger to determine the level (which we might need to handle in `configure_logging()` in `couchbase/__init__.py`.\n\nI think that means that NOTSET could be omitted - it should never reach the core. The wrapper code should be handling the inheritance of the log level from the parent logger, and the log level in the C++ core is always known.\n\nLogging levels in Python are not necessarily discrete, we might need to handle any possible integer value (Users could have more granular log levels in their environment). So instead of mapping 20 to info, 30 to warn and so on, we might need to do:\n\n```\n\u003c\u003d 5      -\u003e trace\n\u003c\u003d 10     -\u003e debug\n\u003c\u003d 20     -\u003e info\n\u003c\u003d 30     -\u003e warn\n\u003c\u003d 40     -\u003e err\n\u003c\u003d 50     -\u003e critical\notherwise -\u003e off\n```\n\nHowever, this seems to have been the pre-existing behavior, so maybe this is not the right commit for this and we should just file a PYCBC.","commit_id":"9ea38990758493d14a6a2afab037b7b3a054ef9b"},{"author":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"e855d421ff6e419d92bd0fb56bfff8ede87cd979","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  X(warn, 30, __VA_ARGS__)                                                                         \\"},{"line_number":36,"context_line":"  X(err, 40, __VA_ARGS__)                                                                          \\"},{"line_number":37,"context_line":"  X(critical, 50, __VA_ARGS__)                                                                     \\"},{"line_number":38,"context_line":"  X(off, 0, __VA_ARGS__)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"PYCBC_DEFINE_INT_ENUM_CONVERSION(couchbase::core::logger::level, off, LEVEL_MAPPINGS)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":7,"id":"348c1faa_aeeaded1","line":38,"in_reply_to":"4a05d3e6_5ba71536","updated":"2026-03-24 15:59:06.000000000","message":"Copied this comment over to the logging improvement change (PYCBC-1754).","commit_id":"9ea38990758493d14a6a2afab037b7b3a054ef9b"},{"author":{"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"a907a475a4810b049c417f71b76afcc41e87fcc8","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  X(warn, 30, __VA_ARGS__)                                                                         \\"},{"line_number":36,"context_line":"  X(err, 40, __VA_ARGS__)                                                                          \\"},{"line_number":37,"context_line":"  X(critical, 50, __VA_ARGS__)                                                                     \\"},{"line_number":38,"context_line":"  X(off, 0, __VA_ARGS__)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"PYCBC_DEFINE_INT_ENUM_CONVERSION(couchbase::core::logger::level, off, LEVEL_MAPPINGS)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":7,"id":"80d2d8cf_505d2897","line":38,"in_reply_to":"4a05d3e6_5ba71536","updated":"2026-03-24 15:58:45.000000000","message":"Thanks for moving this to https://review.couchbase.org/c/couchbase-python-client/+/242146, it fits better there.","commit_id":"9ea38990758493d14a6a2afab037b7b3a054ef9b"}],"tools/autogen/QUICK_START.md":[{"author":{"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"48a4f633a9793535fce44cb85480b05e0a50abe2","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"- Python 3.9+"},{"line_number":8,"context_line":"- LLVM/Clang (installed via Homebrew on macOS: `brew install llvm`)"},{"line_number":9,"context_line":"- Dependencies installed: `pip install -r tools/autogen/tools_requirements.txt`"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"## Basic Usage"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":4,"id":"65899991_c4830d72","line":9,"updated":"2026-03-11 18:50:17.000000000","message":"The tool also assumes that the CPM cache is populated","commit_id":"cb6c7578226f72872e818bd92115d8024ce98477"},{"author":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"5397413ba35f9ddfc2a56ee684a1ffd03314ed4e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"- Python 3.9+"},{"line_number":8,"context_line":"- LLVM/Clang (installed via Homebrew on macOS: `brew install llvm`)"},{"line_number":9,"context_line":"- Dependencies installed: `pip install -r tools/autogen/tools_requirements.txt`"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"## Basic Usage"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":4,"id":"15dff24b_de5acb35","line":9,"in_reply_to":"65899991_c4830d72","updated":"2026-03-21 23:25:58.000000000","message":"Done","commit_id":"cb6c7578226f72872e818bd92115d8024ce98477"}],"tools/autogen/commands/bindings.py":[{"author":{"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"48a4f633a9793535fce44cb85480b05e0a50abe2","unresolved":true,"context_lines":[{"line_number":123,"context_line":"    click.echo(\"Starting C++ Binding Generation...\")"},{"line_number":124,"context_line":"    if dry_run:"},{"line_number":125,"context_line":"        click.secho(\"MODE: DRY RUN\", fg\u003d\u0027yellow\u0027, bold\u003dTrue)"},{"line_number":126,"context_line":"    click.echo(\"{\u0027\u003d\u0027*60}\")"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    try:"},{"line_number":129,"context_line":"        # Load schema"}],"source_content_type":"text/x-python","patch_set":4,"id":"22f1f849_f0a8766b","line":126,"updated":"2026-03-11 18:50:17.000000000","message":"Purely a cosmetic issue - This and the one above need to be f-strings, it\u0027s printing `{\u0027\u003d\u0027*60}` at the moment","commit_id":"cb6c7578226f72872e818bd92115d8024ce98477"},{"author":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"5397413ba35f9ddfc2a56ee684a1ffd03314ed4e","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    click.echo(\"Starting C++ Binding Generation...\")"},{"line_number":124,"context_line":"    if dry_run:"},{"line_number":125,"context_line":"        click.secho(\"MODE: DRY RUN\", fg\u003d\u0027yellow\u0027, bold\u003dTrue)"},{"line_number":126,"context_line":"    click.echo(\"{\u0027\u003d\u0027*60}\")"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    try:"},{"line_number":129,"context_line":"        # Load schema"}],"source_content_type":"text/x-python","patch_set":4,"id":"e5a24635_854c15a8","line":126,"in_reply_to":"22f1f849_f0a8766b","updated":"2026-03-21 23:25:58.000000000","message":"Done","commit_id":"cb6c7578226f72872e818bd92115d8024ce98477"}],"tools/autogen/core/validators.py":[{"author":{"_account_id":1005035,"name":"Dimitris Christodoulou","email":"dimitris.christodoulou@couchbase.com","username":"DemetrisChr","avatars":[{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/4291f7baa025a5558b77019a9c264ab2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"48a4f633a9793535fce44cb85480b05e0a50abe2","unresolved":true,"context_lines":[{"line_number":50,"context_line":"HINT: If you encounter \u0027libclang\u0027 loading errors or parsing issues, ensure your system LLVM version is \u003e\u003d your pip \u0027clang\u0027 package version."},{"line_number":51,"context_line":"You can either:"},{"line_number":52,"context_line":"  1. Upgrade your system LLVM (e.g., \u0027brew upgrade llvm\u0027)"},{"line_number":53,"context_line":"  2. Downgrade your pip package (e.g., \u0027pip install clang\u003d\u003d{system_ver[0]}.0.0\u0027)\"\"\"  # noqa: E501"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    return None"}],"source_content_type":"text/x-python","patch_set":4,"id":"43b80d94_a8298414","line":53,"updated":"2026-03-11 18:50:17.000000000","message":"A package for the x.0.0 `clang` version isn\u0027t always available. Since only the major is compared, we could make this hint say `pip install clang~\u003d{system_ver[0]}.0` instead.","commit_id":"cb6c7578226f72872e818bd92115d8024ce98477"},{"author":{"_account_id":1004568,"name":"Jared Casey","email":"jared.casey@couchbase.com","username":"thejcfactor","avatars":[{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/20ac69da8a1fb4cc11bdd1c880389132.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"5397413ba35f9ddfc2a56ee684a1ffd03314ed4e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"HINT: If you encounter \u0027libclang\u0027 loading errors or parsing issues, ensure your system LLVM version is \u003e\u003d your pip \u0027clang\u0027 package version."},{"line_number":51,"context_line":"You can either:"},{"line_number":52,"context_line":"  1. Upgrade your system LLVM (e.g., \u0027brew upgrade llvm\u0027)"},{"line_number":53,"context_line":"  2. Downgrade your pip package (e.g., \u0027pip install clang\u003d\u003d{system_ver[0]}.0.0\u0027)\"\"\"  # noqa: E501"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    return None"}],"source_content_type":"text/x-python","patch_set":4,"id":"7785d263_04099ff3","line":53,"in_reply_to":"43b80d94_a8298414","updated":"2026-03-21 23:25:58.000000000","message":"Done","commit_id":"cb6c7578226f72872e818bd92115d8024ce98477"}]}
