)]}'
{"ovsdbapp/backend/ovs_idl/idlutils.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"c97fb37b0506c2241ca43b3b2804ac0d8a15be32","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"def table_lookup(table, column, match):"},{"line_number":85,"context_line":"    return next(table_lookup_all(talbe, column, match))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def rows_by_value(idl_, table, column, match):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_bca7c90b","line":85,"updated":"2020-05-27 04:39:53.000000000","message":"pep8: F821 undefined name \u0027talbe\u0027","commit_id":"4fd0ce7e8868a76df7a1cd922005e731a8d2527e"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"ece4dbe791e5fb7938323c88459675b0dfdb7566","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            cut_off \u003d val"},{"line_number":273,"context_line":"            matches \u003d 1"},{"line_number":274,"context_line":"        else:"},{"line_number":275,"context_line":"            matches +\u003d 1"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"def condition_index_columns(table, *conditions):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_de2cea03","line":275,"updated":"2020-06-22 12:36:19.000000000","message":"Potential dumb question from me:\n\nIs there a reason why we can\u0027t use the built-in intersection() from python ? \n\nI assume it\u0027s for better memory management since yours gonna return an iterator instead of a list/set ?\n\nMaybe we can add some comment or docstring with the reasoning behind implementing it in a different way.\n\ne.g:\n\nset([1,2,3]) \u0026 set([3,4,5]) \u0026 set([3,6,7]) \u003d\u003d set([3])\nset([1,2,3]) \u0026 set([4,5,6]) \u003d\u003d set() # empty\n\nAnd so on.","commit_id":"8a5b23527ee90ccd2592a3565dd43bfc7af3fd9c"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b5e51c96409bac019e0032672c54f22730e17923","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            cut_off \u003d val"},{"line_number":273,"context_line":"            matches \u003d 1"},{"line_number":274,"context_line":"        else:"},{"line_number":275,"context_line":"            matches +\u003d 1"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"def condition_index_columns(table, *conditions):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_debfca5e","line":275,"in_reply_to":"bf51134e_de2cea03","updated":"2020-06-22 12:50:52.000000000","message":"This is all generators/iterators. _index_lookup_internal() returns an irange() iterator, so we end up with several of those and merge_intersection() iterates over all of those exactly once, skipping any duplicates but without creating any intermediate objects and yields those values. It\u0027s the only way I could think of doing things w/o at some point storing the whole list of things in memory. If I\u0027m missing something obvious, let me know! :D\n\nIf not, I\u0027ll add some documentation to this.","commit_id":"8a5b23527ee90ccd2592a3565dd43bfc7af3fd9c"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"a19549953db88f8b9b1f31a7e70cbd3b77c31a06","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            cut_off \u003d val"},{"line_number":273,"context_line":"            matches \u003d 1"},{"line_number":274,"context_line":"        else:"},{"line_number":275,"context_line":"            matches +\u003d 1"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"def condition_index_columns(table, *conditions):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_eb6920f9","line":275,"in_reply_to":"bf51134e_debfca5e","updated":"2020-06-23 08:31:18.000000000","message":"Hi,\n\nThanks for the explanation, it makes sense! Usually I prefer using built-in methods I agree this is a bit different cause we can avoid storing things in memory.\n\n++ for the docstrings, as others may have the same doubts in the future when reading this code :D","commit_id":"8a5b23527ee90ccd2592a3565dd43bfc7af3fd9c"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cadbaec31b4e2bc20ea4caa9849e73f5f0d96336","unresolved":false,"context_lines":[{"line_number":260,"context_line":"    memory."},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    :param sorted_gens pre-sorted iterators"},{"line_number":263,"context_line":"    \"\"\""},{"line_number":264,"context_line":"    len_sorted_gens \u003d len(sorted_gens)"},{"line_number":265,"context_line":"    sorted_gens \u003d circular(*sorted_gens)"},{"line_number":266,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf51134e_8275b4fc","line":263,"updated":"2020-06-25 14:15:55.000000000","message":"thanks","commit_id":"d340536fb041ceac02f9d378ff9a802f083c4d11"}]}
