)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"968ef8da5958a67c16ea768d6fa49c96d80d280d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b8ba7371_35168dc4","updated":"2021-11-16 14:50:31.000000000","message":"Can you squeeze this into the patch that actually uses them? They\u0027re meaningless without this","commit_id":"4fcc8023dcbac2361890f84f3103b5220e2418d1"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"ed1c6786715f1a94e54b5dc1c595a2836f4d0f32","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"06c717b4_06a124c5","updated":"2021-12-01 11:55:03.000000000","message":"Done","commit_id":"9e69b6d9fc35877f45ea625868abdc6a8de2c71d"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"f29081dbb670f9da582ef4a7935436397817e064","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"9ce14a46_529b144e","updated":"2021-12-01 15:31:41.000000000","message":"recheck","commit_id":"9e69b6d9fc35877f45ea625868abdc6a8de2c71d"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"2eceb6c1923ed740a04dd315672ccf8dce3ebe75","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"5cf3ac9a_0ba7b2dc","updated":"2021-12-03 08:55:28.000000000","message":"recheck","commit_id":"29335883252e379b3819c66ebec23b8b289b5e57"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"b197dfbc10e4ddddfa2e3fe6fb793d9c325e269f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"af86c5ce_c52f478b","updated":"2021-12-14 13:23:31.000000000","message":"recheck","commit_id":"29335883252e379b3819c66ebec23b8b289b5e57"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1f96a4c7f120289d7872dcb77dd985fb57193a76","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"c20dc952_e2fefb13","updated":"2021-12-20 19:14:19.000000000","message":"The -1 is for the import that isn\u0027t optional but should be. The rest are nits but would be nice to fix while you\u0027re respinning this.","commit_id":"ecd0c32df53b764deed683c0a3a4b2c7f230771a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"91efe59879ff7eb9847171d1a3d8ba7b33cbe22d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"e2bd384e_28e86861","updated":"2021-12-20 19:13:50.000000000","message":"Whoops","commit_id":"ecd0c32df53b764deed683c0a3a4b2c7f230771a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"27506872bec04594d3ce271b40aee186a537393d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"910b31b0_baf84aa9","updated":"2022-01-24 17:25:35.000000000","message":"Much improved 😊","commit_id":"f4fa6aa6fa2aca23a8f4f9e63c5a57dbcd2d1166"}],"oslo_cache/_opts.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"33dd05fcbfedecb9179265644c72604d69cae084","unresolved":true,"context_lines":[{"line_number":149,"context_line":"        cfg.BoolOpt(\u0027enable_socket_keepalive\u0027,"},{"line_number":150,"context_line":"                    default\u003dFalse,"},{"line_number":151,"context_line":"                    help\u003d\"Global toggle for the socket keepalive of dogpile\u0027s\""},{"line_number":152,"context_line":"                    \u0027 pymemcache backend\u0027),"},{"line_number":153,"context_line":"        cfg.IntOpt(\u0027socket_keepalive_idle\u0027,"},{"line_number":154,"context_line":"                   default\u003d1,"},{"line_number":155,"context_line":"                   help\u003d\u0027The time (in seconds) the connection needs to remain\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"d5c93eaa_03a1d18f","line":152,"updated":"2021-11-16 15:05:01.000000000","message":"I know the rest of the options have been done like this, but can we remove the large indent and put spaces at the end of the line? We can fix the others later. Leading spaces are uncommon and therefore it\u0027s easy to miss mistakes\n\n  cfg.BoolOpt(\n      \u0027enable_socket_keepalive\u0027,\n      default\u003dFalse,\n      help\u003d(\n          \"Global toggle for the socket keepalive of dogpile\u0027s \"\n          \"pymemcache backend\"\n      ),\n  ),","commit_id":"4fcc8023dcbac2361890f84f3103b5220e2418d1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"33dd05fcbfedecb9179265644c72604d69cae084","unresolved":true,"context_lines":[{"line_number":155,"context_line":"                   help\u003d\u0027The time (in seconds) the connection needs to remain\u0027"},{"line_number":156,"context_line":"                   \u0027 idle before TCP starts sending keepalive probes. Should\u0027"},{"line_number":157,"context_line":"                   \u0027 be a positive integer most greater than zero.\u0027),"},{"line_number":158,"context_line":"        cfg.IntOpt(\u0027socket_keepalive_intvl\u0027,"},{"line_number":159,"context_line":"                   default\u003d1,"},{"line_number":160,"context_line":"                   help\u003d\u0027The time (in seconds) between individual keepalive\u0027"},{"line_number":161,"context_line":"                   \u0027 probes. Should be a positive integer most greater\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"8281a60a_85058d8d","line":158,"range":{"start_line":158,"start_character":37,"end_line":158,"end_character":42},"updated":"2021-11-16 15:05:01.000000000","message":"let\u0027s not abbreviate this\n\n  interval","commit_id":"4fcc8023dcbac2361890f84f3103b5220e2418d1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"968ef8da5958a67c16ea768d6fa49c96d80d280d","unresolved":true,"context_lines":[{"line_number":158,"context_line":"        cfg.IntOpt(\u0027socket_keepalive_intvl\u0027,"},{"line_number":159,"context_line":"                   default\u003d1,"},{"line_number":160,"context_line":"                   help\u003d\u0027The time (in seconds) between individual keepalive\u0027"},{"line_number":161,"context_line":"                   \u0027 probes. Should be a positive integer most greater\u0027"},{"line_number":162,"context_line":"                   \u0027 than zero.\u0027),"},{"line_number":163,"context_line":"        cfg.IntOpt(\u0027socket_keepalive_cnt\u0027,"},{"line_number":164,"context_line":"                   default\u003d1,"}],"source_content_type":"text/x-python","patch_set":3,"id":"afc1a5d7_71fc8a4a","line":161,"range":{"start_line":161,"start_character":58,"end_line":161,"end_character":62},"updated":"2021-11-16 14:50:31.000000000","message":"strike","commit_id":"4fcc8023dcbac2361890f84f3103b5220e2418d1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"33dd05fcbfedecb9179265644c72604d69cae084","unresolved":true,"context_lines":[{"line_number":160,"context_line":"                   help\u003d\u0027The time (in seconds) between individual keepalive\u0027"},{"line_number":161,"context_line":"                   \u0027 probes. Should be a positive integer most greater\u0027"},{"line_number":162,"context_line":"                   \u0027 than zero.\u0027),"},{"line_number":163,"context_line":"        cfg.IntOpt(\u0027socket_keepalive_cnt\u0027,"},{"line_number":164,"context_line":"                   default\u003d1,"},{"line_number":165,"context_line":"                   help\u003d\u0027The maximum number of keepalive probes TCP should\u0027"},{"line_number":166,"context_line":"                   \u0027 send before dropping the connection. Should be a\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3297d89b_dcc49b29","line":163,"range":{"start_line":163,"start_character":37,"end_line":163,"end_character":40},"updated":"2021-11-16 15:05:01.000000000","message":"count","commit_id":"4fcc8023dcbac2361890f84f3103b5220e2418d1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"968ef8da5958a67c16ea768d6fa49c96d80d280d","unresolved":true,"context_lines":[{"line_number":164,"context_line":"                   default\u003d1,"},{"line_number":165,"context_line":"                   help\u003d\u0027The maximum number of keepalive probes TCP should\u0027"},{"line_number":166,"context_line":"                   \u0027 send before dropping the connection. Should be a\u0027"},{"line_number":167,"context_line":"                   \u0027 positive integer most greater than zero.\u0027),"},{"line_number":168,"context_line":"    ],"},{"line_number":169,"context_line":"}"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"494687f5_ca4559c4","line":167,"range":{"start_line":167,"start_character":38,"end_line":167,"end_character":42},"updated":"2021-11-16 14:50:31.000000000","message":"strike","commit_id":"4fcc8023dcbac2361890f84f3103b5220e2418d1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d43505d169e3d4192260492ee5ea9906b40a8741","unresolved":true,"context_lines":[{"line_number":153,"context_line":"            \"dogpile\u0027s pymemcache backend\"),"},{"line_number":154,"context_line":"        cfg.IntOpt("},{"line_number":155,"context_line":"            \u0027socket_keepalive_idle\u0027,"},{"line_number":156,"context_line":"            default\u003d1,"},{"line_number":157,"context_line":"            help\u003d\u0027The time (in seconds) the connection needs to \u0027"},{"line_number":158,"context_line":"            \u0027remain idle before TCP starts sending keepalive probes. \u0027"},{"line_number":159,"context_line":"            \u0027Should be a positive integer most greater than zero.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"96c43c38_b81966a0","line":156,"updated":"2021-11-25 16:20:49.000000000","message":"You\u0027re missing a \u0027min\u003d0\u0027 argument here","commit_id":"99bcbce2fa59bdf0daf63d605ebb45bc59712f54"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d43505d169e3d4192260492ee5ea9906b40a8741","unresolved":true,"context_lines":[{"line_number":159,"context_line":"            \u0027Should be a positive integer most greater than zero.\u0027),"},{"line_number":160,"context_line":"        cfg.IntOpt("},{"line_number":161,"context_line":"            \u0027socket_keepalive_interval\u0027,"},{"line_number":162,"context_line":"            default\u003d1,"},{"line_number":163,"context_line":"            help\u003d\u0027The time (in seconds) between individual keepalive \u0027"},{"line_number":164,"context_line":"            \u0027probes. Should be a positive integer greater \u0027"},{"line_number":165,"context_line":"            \u0027than zero.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f78ba12_bb7deb71","line":162,"updated":"2021-11-25 16:20:49.000000000","message":"Here too","commit_id":"99bcbce2fa59bdf0daf63d605ebb45bc59712f54"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d43505d169e3d4192260492ee5ea9906b40a8741","unresolved":true,"context_lines":[{"line_number":165,"context_line":"            \u0027than zero.\u0027),"},{"line_number":166,"context_line":"        cfg.IntOpt("},{"line_number":167,"context_line":"            \u0027socket_keepalive_count\u0027,"},{"line_number":168,"context_line":"            default\u003d1,"},{"line_number":169,"context_line":"            help\u003d\u0027The maximum number of keepalive probes TCP should \u0027"},{"line_number":170,"context_line":"            \u0027send before dropping the connection. Should be a \u0027"},{"line_number":171,"context_line":"            \u0027positive integer greater than zero.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"e940de36_d0e4b41c","line":168,"updated":"2021-11-25 16:20:49.000000000","message":"and here","commit_id":"99bcbce2fa59bdf0daf63d605ebb45bc59712f54"}],"oslo_cache/core.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62ae3935f63d91249d239456111b70a480d650bd","unresolved":true,"context_lines":[{"line_number":42,"context_line":"from dogpile.cache import util"},{"line_number":43,"context_line":"from oslo_log import log"},{"line_number":44,"context_line":"from oslo_utils import importutils"},{"line_number":45,"context_line":"import pymemcache"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"from oslo_cache._i18n import _"},{"line_number":48,"context_line":"from oslo_cache import _opts"}],"source_content_type":"text/x-python","patch_set":14,"id":"5901f861_062138a4","line":45,"updated":"2021-12-20 19:13:45.000000000","message":"Let\u0027s not import this without question. Instead, we should optionally import it if the user has configured \u0027[cache] enable_socket_keepalive\u003dTrue\u0027. We could also use \u0027importutils.try_import\u0027 for this, if you check for \u0027pymemcache is None\u0027 below","commit_id":"ecd0c32df53b764deed683c0a3a4b2c7f230771a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62ae3935f63d91249d239456111b70a480d650bd","unresolved":true,"context_lines":[{"line_number":110,"context_line":"    conf_dict \u003d {}"},{"line_number":111,"context_line":"    conf_dict[\u0027%s.backend\u0027 % prefix] \u003d _opts._DEFAULT_BACKEND"},{"line_number":112,"context_line":"    if conf.cache.enabled is True:"},{"line_number":113,"context_line":"        conf_dict[\u0027%s.backend\u0027 % prefix] \u003d conf.cache.backend"},{"line_number":114,"context_line":"    conf_dict[\u0027%s.expiration_time\u0027 % prefix] \u003d conf.cache.expiration_time"},{"line_number":115,"context_line":"    for argument in conf.cache.backend_argument:"},{"line_number":116,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":14,"id":"e652e479_dd894d9c","line":113,"updated":"2021-12-20 19:13:45.000000000","message":"Unrelated, but why do we check if this is enabled before setting this configuration?","commit_id":"ecd0c32df53b764deed683c0a3a4b2c7f230771a"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"346ec1028a70082258b2344764c624bb044f7059","unresolved":true,"context_lines":[{"line_number":110,"context_line":"    conf_dict \u003d {}"},{"line_number":111,"context_line":"    conf_dict[\u0027%s.backend\u0027 % prefix] \u003d _opts._DEFAULT_BACKEND"},{"line_number":112,"context_line":"    if conf.cache.enabled is True:"},{"line_number":113,"context_line":"        conf_dict[\u0027%s.backend\u0027 % prefix] \u003d conf.cache.backend"},{"line_number":114,"context_line":"    conf_dict[\u0027%s.expiration_time\u0027 % prefix] \u003d conf.cache.expiration_time"},{"line_number":115,"context_line":"    for argument in conf.cache.backend_argument:"},{"line_number":116,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":14,"id":"10a9a0c1_c0ae6245","line":113,"in_reply_to":"e652e479_dd894d9c","updated":"2022-01-07 13:45:41.000000000","message":"Apprently this is used to force dogpile to use the null backend if caching is globally disabled.\n\nhttps://opendev.org/openstack/oslo.cache/commit/ea191cacb14818989564ffe1f3727f28be3c3a21","commit_id":"ecd0c32df53b764deed683c0a3a4b2c7f230771a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62ae3935f63d91249d239456111b70a480d650bd","unresolved":true,"context_lines":[{"line_number":203,"context_line":"        # As with the TLS context above, the config dict below will be"},{"line_number":204,"context_line":"        # consumed by dogpile.cache that will be used as a proxy between"},{"line_number":205,"context_line":"        # oslo.cache and pymemcache."},{"line_number":206,"context_line":"        conf_dict[\u0027%s.arguments.socket_keepalive\u0027 % prefix] \u003d socket_keepalive"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    return conf_dict"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"81aff267_51e44dc1","line":206,"updated":"2021-12-20 19:13:45.000000000","message":"Do we want to warn if the user isn\u0027t using the pymemcache backend? Something like:\n\n    if conf.cache.enable_socket_keepalive:\n        if conf.cache.backend !\u003d \u0027dogpile.cache.pymemcache\u0027:\n            msg \u003d _(\n                \"Socket keepalive is only supported by the \"\n                \"\u0027dogpile.cache.pymemcache\u0027 backend.\"\n            )\n            raise exception.ConfigurationError(msg)\n\n        import pymemcache\n\n        socket_keepalive \u003d ...","commit_id":"ecd0c32df53b764deed683c0a3a4b2c7f230771a"}],"oslo_cache/tests/unit/test_cache_basics.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62ae3935f63d91249d239456111b70a480d650bd","unresolved":true,"context_lines":[{"line_number":384,"context_line":"            self.config_fixture.conf.cache.enable_socket_keepalive)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        self.assertTrue("},{"line_number":387,"context_line":"            isinstance("},{"line_number":388,"context_line":"                config_dict[\u0027test_prefix.arguments.socket_keepalive\u0027],"},{"line_number":389,"context_line":"                KeepaliveOpts)"},{"line_number":390,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":14,"id":"8b28062e_b266e1e0","line":387,"updated":"2021-12-20 19:13:45.000000000","message":"nit:\n\n  self.assertIsInstance(...)","commit_id":"ecd0c32df53b764deed683c0a3a4b2c7f230771a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62ae3935f63d91249d239456111b70a480d650bd","unresolved":true,"context_lines":[{"line_number":406,"context_line":"            self.config_fixture.conf.cache.enable_socket_keepalive)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        self.assertTrue("},{"line_number":409,"context_line":"            isinstance("},{"line_number":410,"context_line":"                config_dict[\u0027test_prefix.arguments.socket_keepalive\u0027],"},{"line_number":411,"context_line":"                KeepaliveOpts)"},{"line_number":412,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":14,"id":"87242a16_c2aa77eb","line":409,"updated":"2021-12-20 19:13:45.000000000","message":"nit:\n\n  self.assertIsInstance(...)","commit_id":"ecd0c32df53b764deed683c0a3a4b2c7f230771a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62ae3935f63d91249d239456111b70a480d650bd","unresolved":true,"context_lines":[{"line_number":414,"context_line":"        self.assertEqual("},{"line_number":415,"context_line":"            config_dict[\u0027test_prefix.arguments.socket_keepalive\u0027].idle,"},{"line_number":416,"context_line":"            12"},{"line_number":417,"context_line":"        )"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        self.assertEqual("},{"line_number":420,"context_line":"            config_dict[\u0027test_prefix.arguments.socket_keepalive\u0027].intvl,"}],"source_content_type":"text/x-python","patch_set":14,"id":"60fda01d_d8c7d935","line":417,"updated":"2021-12-20 19:13:45.000000000","message":"nit: these are backwards. You put expected value first. Also, super nit: can you remove the newline between all these assertions, please? 0:)","commit_id":"ecd0c32df53b764deed683c0a3a4b2c7f230771a"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"985a2f22af356536910c1dee1192f5b2f1db04e1","unresolved":true,"context_lines":[{"line_number":360,"context_line":"        self.config_fixture.config(group\u003d\u0027cache\u0027,"},{"line_number":361,"context_line":"                                   enabled\u003dTrue,"},{"line_number":362,"context_line":"                                   config_prefix\u003d\u0027test_prefix\u0027,"},{"line_number":363,"context_line":"                                   backend\u003d\u0027oslo_cache.dict\u0027,"},{"line_number":364,"context_line":"                                   enable_socket_keepalive\u003dTrue)"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        self.assertRaises("}],"source_content_type":"text/x-python","patch_set":15,"id":"f34918d4_3a2aefbd","line":363,"range":{"start_line":363,"start_character":44,"end_line":363,"end_character":59},"updated":"2022-01-13 15:52:01.000000000","message":"I voluntarily use a wrong backend to trigger the configurationError exception.","commit_id":"f4fa6aa6fa2aca23a8f4f9e63c5a57dbcd2d1166"}],"requirements.txt":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d43505d169e3d4192260492ee5ea9906b40a8741","unresolved":true,"context_lines":[{"line_number":2,"context_line":"# of appearance. Changing the order has an impact on the overall integration"},{"line_number":3,"context_line":"# process, which may cause wedges in the gate later."},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"pymemcache\u003e\u003d3.5.0 # Apache-2.0"},{"line_number":6,"context_line":"dogpile.cache\u003e\u003d1.1.4 # BSD"},{"line_number":7,"context_line":"oslo.config\u003e\u003d8.1.0 # Apache-2.0"},{"line_number":8,"context_line":"oslo.i18n\u003e\u003d5.0.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":7,"id":"cdaa757d_9a31bb16","line":5,"updated":"2021-11-25 16:20:49.000000000","message":"Why are we adding this here? Isn\u0027t it enough to install from extras like we do python-memcached?","commit_id":"99bcbce2fa59bdf0daf63d605ebb45bc59712f54"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"44aa3721f530c89929717e28e8e7b4d70a205567","unresolved":true,"context_lines":[{"line_number":7,"context_line":"oslo.i18n\u003e\u003d5.0.0 # Apache-2.0"},{"line_number":8,"context_line":"oslo.log\u003e\u003d4.2.1 # Apache-2.0"},{"line_number":9,"context_line":"oslo.utils\u003e\u003d4.2.0 # Apache-2.0"},{"line_number":10,"context_line":"pymemcache\u003e\u003d3.5.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":12,"id":"174345e7_8eca00e1","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":10},"updated":"2021-12-03 08:57:36.000000000","message":"Without this line tempest fail at importing pymemcache...\nI was thinking that adding it to the test-requirements and setup.cfg would enough, but apparently no...\n\n@Stephen: Do you know how to deal with tempest concerning this point?","commit_id":"29335883252e379b3819c66ebec23b8b289b5e57"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"edd99376d627b25d0fc797c598f978e623e448bc","unresolved":true,"context_lines":[{"line_number":7,"context_line":"oslo.i18n\u003e\u003d5.0.0 # Apache-2.0"},{"line_number":8,"context_line":"oslo.log\u003e\u003d4.2.1 # Apache-2.0"},{"line_number":9,"context_line":"oslo.utils\u003e\u003d4.2.0 # Apache-2.0"},{"line_number":10,"context_line":"pymemcache\u003e\u003d3.5.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":14,"id":"a00faf85_8d6f76bf","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":30},"updated":"2021-12-15 10:46:02.000000000","message":"Without adding this line tempest tests fails importing pymemcache:\n\n```\n2021-12-15 09:16:10.321231 | controller | + functions-common:time_start:2393         :   _TIME_START[$name]\u003d1639559770316\n2021-12-15 09:16:10.325193 | controller | + lib/keystone:init_keystone:473           :   /usr/local/bin/keystone-manage --config-file /etc/keystone/keystone.conf db_sync\n2021-12-15 09:16:11.093488 | controller | Traceback (most recent call last):\n2021-12-15 09:16:11.093537 | controller |   File \"/usr/local/bin/keystone-manage\", line 6, in \u003cmodule\u003e\n2021-12-15 09:16:11.093551 | controller |     from keystone.cmd.manage import main\n2021-12-15 09:16:11.093566 | controller |   File \"/opt/stack/keystone/keystone/cmd/manage.py\", line 20, in \u003cmodule\u003e\n2021-12-15 09:16:11.093594 | controller |     from keystone.cmd import cli\n2021-12-15 09:16:11.093625 | controller |   File \"/opt/stack/keystone/keystone/cmd/cli.py\", line 28, in \u003cmodule\u003e\n2021-12-15 09:16:11.093654 | controller |     from keystone.cmd import bootstrap\n2021-12-15 09:16:11.093683 | controller |   File \"/opt/stack/keystone/keystone/cmd/bootstrap.py\", line 17, in \u003cmodule\u003e\n2021-12-15 09:16:11.093712 | controller |     from keystone.common import driver_hints\n2021-12-15 09:16:11.093742 | controller |   File \"/opt/stack/keystone/keystone/common/driver_hints.py\", line 18, in \u003cmodule\u003e\n2021-12-15 09:16:11.093771 | controller |     from keystone import exception\n2021-12-15 09:16:11.093801 | controller |   File \"/opt/stack/keystone/keystone/exception.py\", line 19, in \u003cmodule\u003e\n2021-12-15 09:16:11.093830 | controller |     import keystone.conf\n2021-12-15 09:16:11.093860 | controller |   File \"/opt/stack/keystone/keystone/conf/__init__.py\", line 15, in \u003cmodule\u003e\n2021-12-15 09:16:11.093955 | controller |     from oslo_cache import core as cache\n2021-12-15 09:16:11.093981 | controller |   File \"/opt/stack/oslo.cache/oslo_cache/__init__.py\", line 14, in \u003cmodule\u003e\n2021-12-15 09:16:11.093997 | controller |     from oslo_cache.core import *  # noqa\n2021-12-15 09:16:11.094013 | controller |   File \"/opt/stack/oslo.cache/oslo_cache/core.py\", line 45, in \u003cmodule\u003e\n2021-12-15 09:16:11.094093 | controller |     import pymemcache\n2021-12-15 09:16:11.094120 | controller | ModuleNotFoundError: No module named \u0027pymemcache\u0027\n```","commit_id":"ecd0c32df53b764deed683c0a3a4b2c7f230771a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62ae3935f63d91249d239456111b70a480d650bd","unresolved":true,"context_lines":[{"line_number":7,"context_line":"oslo.i18n\u003e\u003d5.0.0 # Apache-2.0"},{"line_number":8,"context_line":"oslo.log\u003e\u003d4.2.1 # Apache-2.0"},{"line_number":9,"context_line":"oslo.utils\u003e\u003d4.2.0 # Apache-2.0"},{"line_number":10,"context_line":"pymemcache\u003e\u003d3.5.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":14,"id":"0b6bac86_a549a4c3","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":30},"in_reply_to":"a00faf85_8d6f76bf","updated":"2021-12-20 19:13:45.000000000","message":"Okay, but if we\u0027re doing this then we need to drop it from the \u0027extras\u0027 section of \u0027setup.cfg\u0027. I don\u0027t think we should be doing that though. Instead, we should only import the module if it\u0027s needed since it\u0027s optional.","commit_id":"ecd0c32df53b764deed683c0a3a4b2c7f230771a"}],"setup.cfg":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d43505d169e3d4192260492ee5ea9906b40a8741","unresolved":true,"context_lines":[{"line_number":35,"context_line":"[extras]"},{"line_number":36,"context_line":"dogpile \u003d"},{"line_number":37,"context_line":"  python-memcached\u003e\u003d1.56 # PSF"},{"line_number":38,"context_line":"  pymemcache\u003e\u003d3.5.0 # Apache-2.0"},{"line_number":39,"context_line":"mongo \u003d"},{"line_number":40,"context_line":"  pymongo!\u003d3.1,\u003e\u003d3.0.2 # Apache-2.0"},{"line_number":41,"context_line":"etcd3gw \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":7,"id":"19d8c05d_28e6a545","line":38,"updated":"2021-11-25 16:20:49.000000000","message":"You\u0027ve also added this in requirements.txt. It should only be one or the other. Here makes more sense, IMO","commit_id":"99bcbce2fa59bdf0daf63d605ebb45bc59712f54"}]}
