)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"643463713cb472cf239dd041f1b3d1946daa8556","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Rodolfo Alonso Hernandez \u003cralonsoh@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-05-12 18:11:16 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make ``MechDriverSetupBase`` metaclass"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The class ``MechDriverSetupBase`` is a base class for other testing"},{"line_number":10,"context_line":"classes. Make it explicitly a metaclass."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"33f915b3_cc705544","line":7,"range":{"start_line":7,"start_character":7,"end_line":7,"end_character":26},"updated":"2022-05-17 10:00:23.000000000","message":"Set metaclass for MechDriverSetupBase?","commit_id":"25596f07b7ae85d27baabc136f840bdf52f13b87"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7ef823450dd4b936528d417641200af4ecc79e1c","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Rodolfo Alonso Hernandez \u003cralonsoh@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-05-12 18:11:16 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make ``MechDriverSetupBase`` metaclass"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The class ``MechDriverSetupBase`` is a base class for other testing"},{"line_number":10,"context_line":"classes. Make it explicitly a metaclass."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bdaef540_6f6f962c","line":7,"range":{"start_line":7,"start_character":7,"end_line":7,"end_character":26},"in_reply_to":"33f915b3_cc705544","updated":"2022-05-18 07:46:43.000000000","message":"Sorry, I don\u0027t understand. What do you mean?\n\nWhat I\u0027m stating is that this class is now a metaclass.","commit_id":"25596f07b7ae85d27baabc136f840bdf52f13b87"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"02444049d56732393e0d8306dc9856bbcddcb749","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Rodolfo Alonso Hernandez \u003cralonsoh@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-05-12 18:11:16 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make ``MechDriverSetupBase`` metaclass"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The class ``MechDriverSetupBase`` is a base class for other testing"},{"line_number":10,"context_line":"classes. Make it explicitly a metaclass."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"8db8872f_1097569b","line":7,"range":{"start_line":7,"start_character":7,"end_line":7,"end_character":26},"in_reply_to":"76dfc666_d9eacfa3","updated":"2022-05-18 14:19:55.000000000","message":"right","commit_id":"25596f07b7ae85d27baabc136f840bdf52f13b87"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"e2ebceaeb254055cb3c44c67b3da2f438329d16c","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Rodolfo Alonso Hernandez \u003cralonsoh@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-05-12 18:11:16 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make ``MechDriverSetupBase`` metaclass"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The class ``MechDriverSetupBase`` is a base class for other testing"},{"line_number":10,"context_line":"classes. Make it explicitly a metaclass."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"76dfc666_d9eacfa3","line":7,"range":{"start_line":7,"start_character":7,"end_line":7,"end_character":26},"in_reply_to":"bdaef540_6f6f962c","updated":"2022-05-18 10:05:03.000000000","message":"metaclass is a class derived from `type`, like abc.ABCMeta. Probably you mean make it an abstract class, not metaclass?","commit_id":"25596f07b7ae85d27baabc136f840bdf52f13b87"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"24f7f66351ba5c72aaca7365664ee9b8909caafe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ebac2130_ee3a750e","updated":"2022-05-18 09:00:40.000000000","message":"Based on the explanation of why this should be an abstract class, this LGTM. Thanks!","commit_id":"25596f07b7ae85d27baabc136f840bdf52f13b87"}],"neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"643463713cb472cf239dd041f1b3d1946daa8556","unresolved":true,"context_lines":[{"line_number":76,"context_line":"    \u0027OvnRevNumberRow\u0027, [\u0027created_at\u0027])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class MechDriverSetupBase(object, metaclass\u003dabc.ABCMeta):"},{"line_number":80,"context_line":"    def setUp(self):"},{"line_number":81,"context_line":"        config.register_common_config_options()"},{"line_number":82,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":1,"id":"d9d8989f_44456338","line":79,"range":{"start_line":79,"start_character":34,"end_line":79,"end_character":55},"updated":"2022-05-17 10:00:23.000000000","message":"So what is this needed for? Usually it comes with some abstract methods but there are no such here","commit_id":"25596f07b7ae85d27baabc136f840bdf52f13b87"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"02444049d56732393e0d8306dc9856bbcddcb749","unresolved":true,"context_lines":[{"line_number":76,"context_line":"    \u0027OvnRevNumberRow\u0027, [\u0027created_at\u0027])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class MechDriverSetupBase(object, metaclass\u003dabc.ABCMeta):"},{"line_number":80,"context_line":"    def setUp(self):"},{"line_number":81,"context_line":"        config.register_common_config_options()"},{"line_number":82,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":1,"id":"09b69277_02050503","line":79,"range":{"start_line":79,"start_character":34,"end_line":79,"end_character":55},"in_reply_to":"cf9add34_b5e37511","updated":"2022-05-18 14:19:55.000000000","message":"Right. First of all, this should be an abstract class, not a metaclass. Both concepts are different and I was mixing them.\n\nSecond, I\u0027ll make this class inherit from abc.ABC. That won\u0027t prevent from instantiating an object from this class, but at least we\u0027ll define it as this, making explicit that this class must be inherited.","commit_id":"25596f07b7ae85d27baabc136f840bdf52f13b87"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7ef823450dd4b936528d417641200af4ecc79e1c","unresolved":true,"context_lines":[{"line_number":76,"context_line":"    \u0027OvnRevNumberRow\u0027, [\u0027created_at\u0027])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class MechDriverSetupBase(object, metaclass\u003dabc.ABCMeta):"},{"line_number":80,"context_line":"    def setUp(self):"},{"line_number":81,"context_line":"        config.register_common_config_options()"},{"line_number":82,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":1,"id":"f604bcc3_66a535b7","line":79,"range":{"start_line":79,"start_character":34,"end_line":79,"end_character":55},"in_reply_to":"d9d8989f_44456338","updated":"2022-05-18 07:46:43.000000000","message":"I think the answer for this question could be in this question [1]. I\u0027m making this class a metaclass to avoid instantiating an object based on it. We must first create a child class.\n\n[1]https://review.opendev.org/c/openstack/neutron/+/842068/1/neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py#81","commit_id":"25596f07b7ae85d27baabc136f840bdf52f13b87"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5152773ec82a6646917676ebcedea38d358f19ad","unresolved":true,"context_lines":[{"line_number":76,"context_line":"    \u0027OvnRevNumberRow\u0027, [\u0027created_at\u0027])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class MechDriverSetupBase(object, metaclass\u003dabc.ABCMeta):"},{"line_number":80,"context_line":"    def setUp(self):"},{"line_number":81,"context_line":"        config.register_common_config_options()"},{"line_number":82,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":1,"id":"cf9add34_b5e37511","line":79,"range":{"start_line":79,"start_character":34,"end_line":79,"end_character":55},"in_reply_to":"f604bcc3_66a535b7","updated":"2022-05-18 13:36:50.000000000","message":"but You still can make instance of that class if You want. Setting that metaclass will not prevent it AFAIK","commit_id":"25596f07b7ae85d27baabc136f840bdf52f13b87"}]}
