)]}'
{"oslo_context/context.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b061a25a2352763bd0bc61bde255bf5d9186eec9","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        domain_id: str | None \u003d None,"},{"line_number":154,"context_line":"        user_domain_id: str | None \u003d None,"},{"line_number":155,"context_line":"        project_domain_id: str | None \u003d None,"},{"line_number":156,"context_line":"        is_admin: bool | None \u003d False,"},{"line_number":157,"context_line":"        read_only: bool \u003d False,"},{"line_number":158,"context_line":"        show_deleted: bool \u003d False,"},{"line_number":159,"context_line":"        request_id: str | None \u003d None,"}],"source_content_type":"text/x-python","patch_set":6,"id":"28e357f6_09930fbd","line":156,"updated":"2026-01-26 12:38:16.000000000","message":"This makes sense...","commit_id":"6535ea817f6242db58d4f4573c97cdbab968b288"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8838365ef88f478f8d3dd35526f9e2037bab9217","unresolved":true,"context_lines":[{"line_number":186,"context_line":"        :param is_admin_project: Whether the specified project is specified in"},{"line_number":187,"context_line":"                                 the token as the admin project. Defaults to"},{"line_number":188,"context_line":"                                 True for backwards compatibility."},{"line_number":189,"context_line":"        :type is_admin_project: bool"},{"line_number":190,"context_line":"        :param system_scope: The system scope of a token. The value ``all``"},{"line_number":191,"context_line":"                             represents the entire deployment system. A service"},{"line_number":192,"context_line":"                             ID represents a specific service within the"}],"source_content_type":"text/x-python","patch_set":6,"id":"5427b59b_b1de8262","line":189,"updated":"2026-01-26 12:41:42.000000000","message":"Could you drop this while you\u0027re here (rather than updating it)","commit_id":"6535ea817f6242db58d4f4573c97cdbab968b288"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"eaf683a5b211be288b2e2e39a0a0db02c4dd53cf","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        :param is_admin_project: Whether the specified project is specified in"},{"line_number":187,"context_line":"                                 the token as the admin project. Defaults to"},{"line_number":188,"context_line":"                                 True for backwards compatibility."},{"line_number":189,"context_line":"        :type is_admin_project: bool"},{"line_number":190,"context_line":"        :param system_scope: The system scope of a token. The value ``all``"},{"line_number":191,"context_line":"                             represents the entire deployment system. A service"},{"line_number":192,"context_line":"                             ID represents a specific service within the"}],"source_content_type":"text/x-python","patch_set":6,"id":"84042ac4_f6ef52b0","line":189,"in_reply_to":"5427b59b_b1de8262","updated":"2026-01-26 13:33:37.000000000","message":"Done","commit_id":"6535ea817f6242db58d4f4573c97cdbab968b288"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8838365ef88f478f8d3dd35526f9e2037bab9217","unresolved":true,"context_lines":[{"line_number":191,"context_line":"                             represents the entire deployment system. A service"},{"line_number":192,"context_line":"                             ID represents a specific service within the"},{"line_number":193,"context_line":"                             deployment system."},{"line_number":194,"context_line":"        :type system_scope: string"},{"line_number":195,"context_line":"        \"\"\""},{"line_number":196,"context_line":"        # setting to private variables to avoid triggering subclass properties"},{"line_number":197,"context_line":"        self.user_id \u003d user_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"bdf4d7f8_dbb58c09","line":194,"updated":"2026-01-26 12:41:42.000000000","message":"and maybe this too","commit_id":"6535ea817f6242db58d4f4573c97cdbab968b288"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"eaf683a5b211be288b2e2e39a0a0db02c4dd53cf","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                             represents the entire deployment system. A service"},{"line_number":192,"context_line":"                             ID represents a specific service within the"},{"line_number":193,"context_line":"                             deployment system."},{"line_number":194,"context_line":"        :type system_scope: string"},{"line_number":195,"context_line":"        \"\"\""},{"line_number":196,"context_line":"        # setting to private variables to avoid triggering subclass properties"},{"line_number":197,"context_line":"        self.user_id \u003d user_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffaeeb22_f6f26386","line":194,"in_reply_to":"bdf4d7f8_dbb58c09","updated":"2026-01-26 13:33:37.000000000","message":"Done","commit_id":"6535ea817f6242db58d4f4573c97cdbab968b288"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b061a25a2352763bd0bc61bde255bf5d9186eec9","unresolved":true,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        if overwrite or not get_current():"},{"line_number":235,"context_line":"            self.update_store()"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    @property"},{"line_number":238,"context_line":"    def is_admin(self) -\u003e bool | None:"},{"line_number":239,"context_line":"        # NOTE(tkajinam): Provide the property interface so that additional"},{"line_number":240,"context_line":"        # mechanism to detect its value from Context instance can be"},{"line_number":241,"context_line":"        # implemented by override"},{"line_number":242,"context_line":"        return self._is_admin"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    @is_admin.setter"},{"line_number":245,"context_line":"    def is_admin(self, value: bool | None) -\u003e None:"},{"line_number":246,"context_line":"        self._is_admin \u003d value"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def update_store(self) -\u003e None:"},{"line_number":249,"context_line":"        \"\"\"Store the context in the current thread.\"\"\""},{"line_number":250,"context_line":"        _request_store.context \u003d self"}],"source_content_type":"text/x-python","patch_set":6,"id":"6cbcda96_27075d3a","line":247,"range":{"start_line":236,"start_character":1,"end_line":247,"end_character":1},"updated":"2026-01-26 12:38:16.000000000","message":"...but I don\u0027t know if this is necessary. Do we have anyone overriding this currently? I couldn\u0027t find an example [on codesearch.o.o](https://codesearch.opendev.org/?q\u003ddef%20is_admin%5C(self\u0026i\u003dnope\u0026literal\u003dnope\u0026files\u003d\u0026excludeFiles\u003d\u0026repos\u003d).","commit_id":"6535ea817f6242db58d4f4573c97cdbab968b288"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"026cca7b89e3e1ed747542ae8e951e142cf8519b","unresolved":true,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        if overwrite or not get_current():"},{"line_number":235,"context_line":"            self.update_store()"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    @property"},{"line_number":238,"context_line":"    def is_admin(self) -\u003e bool | None:"},{"line_number":239,"context_line":"        # NOTE(tkajinam): Provide the property interface so that additional"},{"line_number":240,"context_line":"        # mechanism to detect its value from Context instance can be"},{"line_number":241,"context_line":"        # implemented by override"},{"line_number":242,"context_line":"        return self._is_admin"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    @is_admin.setter"},{"line_number":245,"context_line":"    def is_admin(self, value: bool | None) -\u003e None:"},{"line_number":246,"context_line":"        self._is_admin \u003d value"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def update_store(self) -\u003e None:"},{"line_number":249,"context_line":"        \"\"\"Store the context in the current thread.\"\"\""},{"line_number":250,"context_line":"        _request_store.context \u003d self"}],"source_content_type":"text/x-python","patch_set":6,"id":"f65f4194_b0fc0848","line":247,"range":{"start_line":236,"start_character":1,"end_line":247,"end_character":1},"in_reply_to":"3f24cc4e_2a3d1f78","updated":"2026-01-26 14:42:49.000000000","message":"Repeating from #openstack-oslo:\n\n\u003e \u003cstephenfin\u003e tkajinam: regarding https://review.opendev.org/c/openstack/oslo.context/+/974617/7/oslo_context/context.py, my question was not about overriding is_admin but rather the need for the property\n\u003e \u003cstephenfin\u003e (i.e. @property)\n\u003e \u003cstephenfin\u003e I was already aware of what nova was doing and it was on my list to address https://review.opendev.org/c/openstack/nova/+/705658/31/nova/context.py#117\n\u003e \u003cstephenfin\u003e but they (and others?) simply set `is_admin` once in __init__ and don\u0027t seem to touch it again, so a property + setter seems like overkill?","commit_id":"6535ea817f6242db58d4f4573c97cdbab968b288"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8a85d05fae68116d3c121fa8aec0246935278d89","unresolved":false,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        if overwrite or not get_current():"},{"line_number":235,"context_line":"            self.update_store()"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    @property"},{"line_number":238,"context_line":"    def is_admin(self) -\u003e bool | None:"},{"line_number":239,"context_line":"        # NOTE(tkajinam): Provide the property interface so that additional"},{"line_number":240,"context_line":"        # mechanism to detect its value from Context instance can be"},{"line_number":241,"context_line":"        # implemented by override"},{"line_number":242,"context_line":"        return self._is_admin"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    @is_admin.setter"},{"line_number":245,"context_line":"    def is_admin(self, value: bool | None) -\u003e None:"},{"line_number":246,"context_line":"        self._is_admin \u003d value"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def update_store(self) -\u003e None:"},{"line_number":249,"context_line":"        \"\"\"Store the context in the current thread.\"\"\""},{"line_number":250,"context_line":"        _request_store.context \u003d self"}],"source_content_type":"text/x-python","patch_set":6,"id":"ea9a75dc_78560cd8","line":247,"range":{"start_line":236,"start_character":1,"end_line":247,"end_character":1},"in_reply_to":"488fd547_1e37e594","updated":"2026-01-27 06:37:14.000000000","message":"pasting this for record\n\n```\n\u003ctkajinam\u003e stephenfin, maybe, though I don\u0027t really like the idea of using self to set is_admin within __init__.\n\u003ctkajinam\u003e stephenfin, it may work as lon as is_admin is evaluated at the last step but I can easily imagine that people can mess up that by adding new things\n\u003ctkajinam\u003e the benefit of having that dedicated interface is that we can ensure that the instance (\u003dself) is fully set up... though I\u0027m aware that this may not be fully guaranteed if is_admin is somehow called within __init__\n```","commit_id":"6535ea817f6242db58d4f4573c97cdbab968b288"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6c296a518c8614da984307c231e6198f57a09b46","unresolved":true,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        if overwrite or not get_current():"},{"line_number":235,"context_line":"            self.update_store()"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    @property"},{"line_number":238,"context_line":"    def is_admin(self) -\u003e bool | None:"},{"line_number":239,"context_line":"        # NOTE(tkajinam): Provide the property interface so that additional"},{"line_number":240,"context_line":"        # mechanism to detect its value from Context instance can be"},{"line_number":241,"context_line":"        # implemented by override"},{"line_number":242,"context_line":"        return self._is_admin"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    @is_admin.setter"},{"line_number":245,"context_line":"    def is_admin(self, value: bool | None) -\u003e None:"},{"line_number":246,"context_line":"        self._is_admin \u003d value"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def update_store(self) -\u003e None:"},{"line_number":249,"context_line":"        \"\"\"Store the context in the current thread.\"\"\""},{"line_number":250,"context_line":"        _request_store.context \u003d self"}],"source_content_type":"text/x-python","patch_set":6,"id":"7d05c9b2_d3ec3bbe","line":247,"range":{"start_line":236,"start_character":1,"end_line":247,"end_character":1},"in_reply_to":"6cbcda96_27075d3a","updated":"2026-01-26 12:44:02.000000000","message":"(specifically, idk if we need to protect this via a property versus direct property access on subclasses)","commit_id":"6535ea817f6242db58d4f4573c97cdbab968b288"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"bae0c96b4e173448ea88c5f60b284c83317f4d27","unresolved":true,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        if overwrite or not get_current():"},{"line_number":235,"context_line":"            self.update_store()"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    @property"},{"line_number":238,"context_line":"    def is_admin(self) -\u003e bool | None:"},{"line_number":239,"context_line":"        # NOTE(tkajinam): Provide the property interface so that additional"},{"line_number":240,"context_line":"        # mechanism to detect its value from Context instance can be"},{"line_number":241,"context_line":"        # implemented by override"},{"line_number":242,"context_line":"        return self._is_admin"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    @is_admin.setter"},{"line_number":245,"context_line":"    def is_admin(self, value: bool | None) -\u003e None:"},{"line_number":246,"context_line":"        self._is_admin \u003d value"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def update_store(self) -\u003e None:"},{"line_number":249,"context_line":"        \"\"\"Store the context in the current thread.\"\"\""},{"line_number":250,"context_line":"        _request_store.context \u003d self"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f24cc4e_2a3d1f78","line":247,"range":{"start_line":236,"start_character":1,"end_line":247,"end_character":1},"in_reply_to":"7d05c9b2_d3ec3bbe","updated":"2026-01-26 13:30:06.000000000","message":"https://github.com/openstack/nova/blob/e67372b33ef12e9d198aa0e2d455fe09de8537ac/nova/context.py#L94\nhttps://github.com/openstack/nova/blob/e67372b33ef12e9d198aa0e2d455fe09de8537ac/nova/context.py#L147-L148\n\nThis is an exmaple of \"override\". Actually it is worse and it over-write the value externally. What I was trying to achieve is to avoid that hack...","commit_id":"6535ea817f6242db58d4f4573c97cdbab968b288"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2d947d58e367c14f8c54c08fbc55c1f00a1ee904","unresolved":false,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        if overwrite or not get_current():"},{"line_number":235,"context_line":"            self.update_store()"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    @property"},{"line_number":238,"context_line":"    def is_admin(self) -\u003e bool | None:"},{"line_number":239,"context_line":"        # NOTE(tkajinam): Provide the property interface so that additional"},{"line_number":240,"context_line":"        # mechanism to detect its value from Context instance can be"},{"line_number":241,"context_line":"        # implemented by override"},{"line_number":242,"context_line":"        return self._is_admin"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    @is_admin.setter"},{"line_number":245,"context_line":"    def is_admin(self, value: bool | None) -\u003e None:"},{"line_number":246,"context_line":"        self._is_admin \u003d value"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def update_store(self) -\u003e None:"},{"line_number":249,"context_line":"        \"\"\"Store the context in the current thread.\"\"\""},{"line_number":250,"context_line":"        _request_store.context \u003d self"}],"source_content_type":"text/x-python","patch_set":6,"id":"488fd547_1e37e594","line":247,"range":{"start_line":236,"start_character":1,"end_line":247,"end_character":1},"in_reply_to":"f65f4194_b0fc0848","updated":"2026-01-26 15:34:27.000000000","message":"Okay, upon further discussion, this seems harmless enough and shouldn\u0027t break anything. Let\u0027s go with it.","commit_id":"6535ea817f6242db58d4f4573c97cdbab968b288"}]}
