)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9907c7702d772962aa373fda8bd2b4e759e1fb5c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d01c5a9b_74652f6a","updated":"2026-03-19 10:00:27.000000000","message":"Some other things you can do now that this is typed:\n\n* Add the `Typing :: Typed` classifier to `pyproject.toml`\n* Add a `py.typed` file (this goes into the `ironicclient` dir, not the root dir)","commit_id":"bbe860deb19e4c69eb63829e302ec5745b46fc5c"}],"ironicclient/v1/chassis.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"26f9a3f264cf2e76742a532792fa8f5b870e43a2","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    def get("},{"line_number":40,"context_line":"        self,"},{"line_number":41,"context_line":"        chassis_id: str,"},{"line_number":42,"context_line":"        fields: list[str] | None \u003d None,"},{"line_number":43,"context_line":"        os_ironic_api_version: str | None \u003d None,"},{"line_number":44,"context_line":"        global_request_id: str | None \u003d None,"},{"line_number":45,"context_line":"    ) -\u003e base.Resource | None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"e3eeff6e_cef4a029","line":42,"updated":"2026-03-19 09:58:16.000000000","message":"You could be looser in what you accept here. I assume any type of interable, sizeable collection would do here?\n\n\n```suggestion\n        fields: Collection[str] | None \u003d None,\n```\n\n(you\u0027ll want from `from collections.abc import Collection` at the top, obviously)","commit_id":"bbe860deb19e4c69eb63829e302ec5745b46fc5c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"26f9a3f264cf2e76742a532792fa8f5b870e43a2","unresolved":true,"context_lines":[{"line_number":65,"context_line":"    def update("},{"line_number":66,"context_line":"        self,"},{"line_number":67,"context_line":"        chassis_id: str,"},{"line_number":68,"context_line":"        patch: list[dict[str, Any]],"},{"line_number":69,"context_line":"        os_ironic_api_version: str | None \u003d None,"},{"line_number":70,"context_line":"        global_request_id: str | None \u003d None,"},{"line_number":71,"context_line":"    ) -\u003e base.Resource | None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"0bd86143_14d9dab3","line":68,"updated":"2026-03-19 09:58:16.000000000","message":"```suggestion\n        patch: Collection[Mapping[str, Any]],\n```","commit_id":"bbe860deb19e4c69eb63829e302ec5745b46fc5c"}],"pyproject.toml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"26f9a3f264cf2e76742a532792fa8f5b870e43a2","unresolved":true,"context_lines":[{"line_number":6,"context_line":"python_version \u003d \"3.10\""},{"line_number":7,"context_line":"warn_return_any \u003d true"},{"line_number":8,"context_line":"warn_unused_configs \u003d true"},{"line_number":9,"context_line":"ignore_missing_imports \u003d true"},{"line_number":10,"context_line":"# Modules that have been fully type-annotated. Add modules here as they are"},{"line_number":11,"context_line":"# migrated to enable strict type checking for them."},{"line_number":12,"context_line":"files \u003d ["},{"line_number":13,"context_line":"    \"ironicclient/common/i18n.py\","},{"line_number":14,"context_line":"    \"ironicclient/common/filecache.py\","},{"line_number":15,"context_line":"    \"ironicclient/common/apiclient/exceptions.py\","},{"line_number":16,"context_line":"    \"ironicclient/common/apiclient/base.py\","},{"line_number":17,"context_line":"    \"ironicclient/common/base.py\","},{"line_number":18,"context_line":"    \"ironicclient/exc.py\","},{"line_number":19,"context_line":"    \"ironicclient/common/utils.py\","},{"line_number":20,"context_line":"    \"ironicclient/common/http.py\","},{"line_number":21,"context_line":"    \"ironicclient/v1/events.py\","},{"line_number":22,"context_line":"    \"ironicclient/v1/shard.py\","},{"line_number":23,"context_line":"    \"ironicclient/v1/utils.py\","},{"line_number":24,"context_line":"    \"ironicclient/v1/conductor.py\","},{"line_number":25,"context_line":"    \"ironicclient/v1/deploy_template.py\","},{"line_number":26,"context_line":"    \"ironicclient/v1/inspection_rule.py\","},{"line_number":27,"context_line":"    \"ironicclient/v1/runbook.py\","},{"line_number":28,"context_line":"    \"ironicclient/v1/volume_connector.py\","},{"line_number":29,"context_line":"    \"ironicclient/v1/volume_target.py\","},{"line_number":30,"context_line":"    \"ironicclient/v1/client.py\","},{"line_number":31,"context_line":"    \"ironicclient/v1/port.py\","},{"line_number":32,"context_line":"    \"ironicclient/v1/driver.py\","},{"line_number":33,"context_line":"    \"ironicclient/v1/allocation.py\","},{"line_number":34,"context_line":"    \"ironicclient/v1/chassis.py\","},{"line_number":35,"context_line":"]"}],"source_content_type":"text/x-toml","patch_set":4,"id":"b47e2907_538f9cfb","line":35,"range":{"start_line":9,"start_character":29,"end_line":35,"end_character":1},"updated":"2026-03-19 09:58:16.000000000","message":"This is the way I used to incrementally add type annotations but it\u0027s not a great practice since you lose the ability to catch obvious issues from the non-typed check code. Instead, it\u0027s better to turn on incremental checks for the entire code base and then opt in to stricter checks for modules (modules, not files). Look at what we\u0027re doing in e.g. tooz [1] or nova [2] for inspiration.\n\n[1] https://review.opendev.org/c/openstack/tooz/+/980107/4/pyproject.toml\n[2] https://review.opendev.org/c/openstack/nova/+/974222/10/pyproject.toml","commit_id":"bbe860deb19e4c69eb63829e302ec5745b46fc5c"}]}
