)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"bd8b23a8aafc3c1837684a77890f75f9c8c11746","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Hervé Beraud \u003chberaud@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2025-09-05 13:48:41 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add H905 hacking check to ban eventlet usage"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"OpenStack projects are migrating away from eventlet."},{"line_number":10,"context_line":"Currently, each migrated project needs to implement their own eventlet"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ac10ce9c_25390494","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":8},"updated":"2025-09-05 11:54:28.000000000","message":"Let me know if you prefer a different rule number. I hesitated to put it under the import range (30X), but if we look closely, it is not an import enforcement, so IMO it deserves to be stored in another range.","commit_id":"be7452997f8f64643b0149a7aa382a2bee783cac"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"415653a7d3f70bd087fd0e76baefcd38dc36d11d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9179959c_d8ba63dd","updated":"2025-09-29 08:54:13.000000000","message":"Hey folks, please, can I get some reviews? Thanks in advance.","commit_id":"be7452997f8f64643b0149a7aa382a2bee783cac"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"5ed4208563f9065662c8babd618b4f26d7d061f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"320af53a_a9a4793f","updated":"2025-10-23 09:04:22.000000000","message":"Hey folks, please can I get some reviews from cores? Thanks in advance.","commit_id":"d3753f929b6b9e1c8ffaa5c8f3193e519d3eab5d"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"6679adce0be114e4c9fd209ecd63f4cb8f3028ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3b56f99c_291ede5d","updated":"2025-10-26 01:54:50.000000000","message":"Nice! Looks good to merge for me.","commit_id":"d3753f929b6b9e1c8ffaa5c8f3193e519d3eab5d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d892bc6e1e7170399ea4ceddcf921c491d0fbb5d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"058d92ca_45460642","updated":"2025-10-28 19:29:21.000000000","message":"one comment about doc otherwise lgtm.\n\nI am ok to releaser this new rule as:\n- hacking new version is opt-in basis so releasing this new rule will not break anything.\n- hacking is not in u-c so new rule will not be adopted by default unless project adopt it explicitly via their requirements.txt","commit_id":"d3753f929b6b9e1c8ffaa5c8f3193e519d3eab5d"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"1809f3136825ea4cab580f3625f7a72edf3bbc89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"35f78eda_76b3f212","updated":"2025-10-31 09:48:47.000000000","message":"Thanks for your previous review","commit_id":"eb6fc092088b6e53502d0575d46913ed150a9c35"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5776d80bbf7f6a97ce6ebebec0bcb982abd5ee85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0ccf3cef_8a091fdd","updated":"2025-10-31 14:24:05.000000000","message":"thanks for update, lgtm","commit_id":"eb6fc092088b6e53502d0575d46913ed150a9c35"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"e93d31b199199a4355d25b5fb6cd50cbb4738dd3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"6b17ec96_f9cdd199","updated":"2025-11-04 20:37:59.000000000","message":"thanks for the update, but there\u0027s a regression?","commit_id":"c72411fdccf353fd2ffa458ed0f99236877c0d83"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"c18072fb99e270fbbd9ec3459410c5a2bbca67d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"fb91ea31_1a691760","in_reply_to":"6b17ec96_f9cdd199","updated":"2025-11-05 09:45:32.000000000","message":"Indeed. I just realize that I used another laptop to create PS5 and I forgot to rebase first. Will fix that.","commit_id":"c72411fdccf353fd2ffa458ed0f99236877c0d83"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"c984edbe84b4cf74b51100d8c13c993c376349cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"27033950_87cdf338","updated":"2025-11-05 09:50:38.000000000","message":"PS6 seems now ok","commit_id":"3c91e447f24b1fc234645c1bfef1152f13ea10df"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"0baf0f639c5401ea5350aa279ca988df3cf770d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"12c492b1_4507044a","updated":"2025-11-05 12:54:21.000000000","message":"lgtm now, thx","commit_id":"3c91e447f24b1fc234645c1bfef1152f13ea10df"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"651bbbc7a15faf66aee3891b16be39fd200a77b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"eae30b83_8f76bd61","updated":"2025-11-05 15:46:25.000000000","message":"lgtm, thanks for updates","commit_id":"3c91e447f24b1fc234645c1bfef1152f13ea10df"}],"HACKING.rst":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"4725b01bb8b108225363f0cdd135afeeb4355c44","unresolved":true,"context_lines":[{"line_number":93,"context_line":"  import time"},{"line_number":94,"context_line":"  import unittest"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"  import eventlet"},{"line_number":97,"context_line":"  import webob.exc"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"  import nova.api.ec2"}],"source_content_type":"text/x-rst","patch_set":2,"id":"33e73b1d_68af9b8b","side":"PARENT","line":96,"updated":"2025-09-05 11:53:27.000000000","message":"I suppose we want to remove this example since it goes against the rules that we are trying to enforce.","commit_id":"abff65f29b7b00d38bce651a546b05a3eb27b71c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d892bc6e1e7170399ea4ceddcf921c491d0fbb5d","unresolved":true,"context_lines":[{"line_number":93,"context_line":"  import time"},{"line_number":94,"context_line":"  import unittest"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"  import eventlet"},{"line_number":97,"context_line":"  import webob.exc"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"  import nova.api.ec2"}],"source_content_type":"text/x-rst","patch_set":2,"id":"a40b16dc_e9096382","side":"PARENT","line":96,"in_reply_to":"33e73b1d_68af9b8b","updated":"2025-10-28 19:29:21.000000000","message":"++","commit_id":"abff65f29b7b00d38bce651a546b05a3eb27b71c"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"1809f3136825ea4cab580f3625f7a72edf3bbc89","unresolved":false,"context_lines":[{"line_number":93,"context_line":"  import time"},{"line_number":94,"context_line":"  import unittest"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"  import eventlet"},{"line_number":97,"context_line":"  import webob.exc"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"  import nova.api.ec2"}],"source_content_type":"text/x-rst","patch_set":2,"id":"c683ed3e_bfda0aff","side":"PARENT","line":96,"in_reply_to":"a40b16dc_e9096382","updated":"2025-10-31 09:48:47.000000000","message":"Done","commit_id":"abff65f29b7b00d38bce651a546b05a3eb27b71c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d892bc6e1e7170399ea4ceddcf921c491d0fbb5d","unresolved":true,"context_lines":[{"line_number":61,"context_line":"  For the purposes of import order, OpenStack projects other than the"},{"line_number":62,"context_line":"  one to which the file belongs are considered \"third party\". Only"},{"line_number":63,"context_line":"  imports from the same Git repo are considered \"project imports\""},{"line_number":64,"context_line":"- [H905] Do not import eventlet (off by default). Eventlet usage is being"},{"line_number":65,"context_line":"  removed from OpenStack projects as part of the async migration effort."},{"line_number":66,"context_line":"  Use threading or asyncio instead."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"(*) exceptions are:"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5c72af15_eafe4b49","line":66,"range":{"start_line":64,"start_character":0,"end_line":66,"end_character":35},"updated":"2025-10-28 19:29:21.000000000","message":"as you indicated in setup.cfg, let\u0027s not put this under import rule as it is to avoid using eventlet and put it in \u0027General\u0027 @L49","commit_id":"d3753f929b6b9e1c8ffaa5c8f3193e519d3eab5d"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"1809f3136825ea4cab580f3625f7a72edf3bbc89","unresolved":false,"context_lines":[{"line_number":61,"context_line":"  For the purposes of import order, OpenStack projects other than the"},{"line_number":62,"context_line":"  one to which the file belongs are considered \"third party\". Only"},{"line_number":63,"context_line":"  imports from the same Git repo are considered \"project imports\""},{"line_number":64,"context_line":"- [H905] Do not import eventlet (off by default). Eventlet usage is being"},{"line_number":65,"context_line":"  removed from OpenStack projects as part of the async migration effort."},{"line_number":66,"context_line":"  Use threading or asyncio instead."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"(*) exceptions are:"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9c3568ce_3d206484","line":66,"range":{"start_line":64,"start_character":0,"end_line":66,"end_character":35},"in_reply_to":"5c72af15_eafe4b49","updated":"2025-10-31 09:48:47.000000000","message":"Done","commit_id":"d3753f929b6b9e1c8ffaa5c8f3193e519d3eab5d"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"e93d31b199199a4355d25b5fb6cd50cbb4738dd3","unresolved":true,"context_lines":[{"line_number":63,"context_line":"  imports from the same Git repo are considered \"project imports\""},{"line_number":64,"context_line":"- [H905] Do not import eventlet (off by default). Eventlet usage is being"},{"line_number":65,"context_line":"  removed from OpenStack projects as part of the async migration effort."},{"line_number":66,"context_line":"  Use threading or asyncio instead."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"(*) exceptions are:"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"e57a61af_dd113e79","line":66,"updated":"2025-11-04 20:37:59.000000000","message":"It looks like you accidentally moved this back to where it was in PS3","commit_id":"c72411fdccf353fd2ffa458ed0f99236877c0d83"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"c18072fb99e270fbbd9ec3459410c5a2bbca67d3","unresolved":true,"context_lines":[{"line_number":63,"context_line":"  imports from the same Git repo are considered \"project imports\""},{"line_number":64,"context_line":"- [H905] Do not import eventlet (off by default). Eventlet usage is being"},{"line_number":65,"context_line":"  removed from OpenStack projects as part of the async migration effort."},{"line_number":66,"context_line":"  Use threading or asyncio instead."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"(*) exceptions are:"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"985cce8d_547e053c","line":66,"in_reply_to":"e57a61af_dd113e79","updated":"2025-11-05 09:45:32.000000000","message":"Yes, good catch.","commit_id":"c72411fdccf353fd2ffa458ed0f99236877c0d83"}],"hacking/checks/imports.py":[{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"6679adce0be114e4c9fd209ecd63f4cb8f3028ad","unresolved":true,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    if RE_EVENTLET_IMPORT.match(logical_line):"},{"line_number":127,"context_line":"        yield (0, \"H905: eventlet usage is banned. \""},{"line_number":128,"context_line":"                  \"Use threading or asyncio instead.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"d3c2f30d_9fe45d94","line":128,"updated":"2025-10-26 01:54:50.000000000","message":"Just a little suggestion.  \nI think it can be clearer if the message says:\n\nH905: eventlet import detected. Use threading or asyncio instead.\n\nIt makes the message more explicit and consistent with other H9xx checks that describe what was \"detected\".","commit_id":"d3753f929b6b9e1c8ffaa5c8f3193e519d3eab5d"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"c18072fb99e270fbbd9ec3459410c5a2bbca67d3","unresolved":true,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    if RE_EVENTLET_IMPORT.match(logical_line):"},{"line_number":127,"context_line":"        yield (0, \"H905: eventlet usage is banned. \""},{"line_number":128,"context_line":"                  \"Use threading or asyncio instead.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"26e831d0_2b10cc91","line":128,"in_reply_to":"d3c2f30d_9fe45d94","updated":"2025-11-05 09:45:32.000000000","message":"Indeed, thanks for your suggestion, will do that.","commit_id":"d3753f929b6b9e1c8ffaa5c8f3193e519d3eab5d"}],"hacking/tests/checks/test_eventlet_imports.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"981ad1b8daa35c074d63e9073254adf14592f4ac","unresolved":true,"context_lines":[{"line_number":35,"context_line":"        (False, \u0027import concurrent.futures\u0027, None),"},{"line_number":36,"context_line":"        (False, \u0027import some_other_module\u0027, None),"},{"line_number":37,"context_line":"        (False, \u0027import not_eventlet\u0027, None),"},{"line_number":38,"context_line":"        (False, \u0027from not_eventlet import something\u0027, None),"},{"line_number":39,"context_line":"    )"},{"line_number":40,"context_line":"    def test_H905_hacking_no_eventlet(self, should_fail, line, noqa):"},{"line_number":41,"context_line":"        if should_fail:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5044e565_858779fd","line":38,"range":{"start_line":38,"start_character":22,"end_line":38,"end_character":34},"updated":"2025-11-01 11:46:26.000000000","message":"what about a fictional module having the name as prefix, like could there be an `eventletter` module that should be allowed`?","commit_id":"eb6fc092088b6e53502d0575d46913ed150a9c35"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"df2ad1287fe1cee27c65d5d2cc9bf2c5067cfb12","unresolved":true,"context_lines":[{"line_number":35,"context_line":"        (False, \u0027import concurrent.futures\u0027, None),"},{"line_number":36,"context_line":"        (False, \u0027import some_other_module\u0027, None),"},{"line_number":37,"context_line":"        (False, \u0027import not_eventlet\u0027, None),"},{"line_number":38,"context_line":"        (False, \u0027from not_eventlet import something\u0027, None),"},{"line_number":39,"context_line":"    )"},{"line_number":40,"context_line":"    def test_H905_hacking_no_eventlet(self, should_fail, line, noqa):"},{"line_number":41,"context_line":"        if should_fail:"}],"source_content_type":"text/x-python","patch_set":4,"id":"a7752aca_938b7b8f","line":38,"range":{"start_line":38,"start_character":22,"end_line":38,"end_character":34},"in_reply_to":"5044e565_858779fd","updated":"2025-11-04 10:06:46.000000000","message":"That\u0027s a good question. I think that eventletter should be allowed, but in my opinion this is a hypothetical scenario. Based on our best practices, it would first require adding a new library with that name to our global requirements, no?\n\nIf I\u0027m correct, any OpenStack service or library that creates such a submodule would prefix the import with the name of the library.","commit_id":"eb6fc092088b6e53502d0575d46913ed150a9c35"}],"releasenotes/notes/add-eventlet-ban-hacking-check-H905-ef8a441d7ab85926.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"45b9e2b7cff8c992dbec0614fa61f1ddbfc4eaf4","unresolved":true,"context_lines":[{"line_number":5,"context_line":"    projects. This check supports the ongoing eventlet removal effort across OpenStack"},{"line_number":6,"context_line":"    as part of the async migration to threading and asyncio."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    The check detects all forms of eventlet imports including:"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    * ``import eventlet``"},{"line_number":11,"context_line":"    * ``from eventlet import something``"},{"line_number":12,"context_line":"    * ``from eventlet.green import socket``"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    The check is **disabled by default** to avoid breaking existing projects that"},{"line_number":15,"context_line":"    haven\u0027t completed their eventlet migration yet. Projects that have migrated"},{"line_number":16,"context_line":"    away from eventlet can enable this check by adding ``enable-extensions \u003d H905``"},{"line_number":17,"context_line":"    to their ``tox.ini`` flake8 configuration."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"    When triggered, the check displays: ``H905: eventlet usage is banned. Use"},{"line_number":20,"context_line":"    threading or asyncio instead.``"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    This provides a standardized way for OpenStack projects to enforce eventlet"},{"line_number":23,"context_line":"    removal policies consistently across the ecosystem."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"ba420e23_077e2dbc","line":23,"range":{"start_line":8,"start_character":0,"end_line":23,"end_character":55},"updated":"2025-09-30 09:40:59.000000000","message":"nit: All of this feel superfluous. The first paragraph is all we need IMO. LLMs sure are chatty...","commit_id":"be7452997f8f64643b0149a7aa382a2bee783cac"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"93998153a1fc2258549ed49a91eed993ad380723","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    projects. This check supports the ongoing eventlet removal effort across OpenStack"},{"line_number":6,"context_line":"    as part of the async migration to threading and asyncio."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    The check detects all forms of eventlet imports including:"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    * ``import eventlet``"},{"line_number":11,"context_line":"    * ``from eventlet import something``"},{"line_number":12,"context_line":"    * ``from eventlet.green import socket``"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    The check is **disabled by default** to avoid breaking existing projects that"},{"line_number":15,"context_line":"    haven\u0027t completed their eventlet migration yet. Projects that have migrated"},{"line_number":16,"context_line":"    away from eventlet can enable this check by adding ``enable-extensions \u003d H905``"},{"line_number":17,"context_line":"    to their ``tox.ini`` flake8 configuration."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"    When triggered, the check displays: ``H905: eventlet usage is banned. Use"},{"line_number":20,"context_line":"    threading or asyncio instead.``"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    This provides a standardized way for OpenStack projects to enforce eventlet"},{"line_number":23,"context_line":"    removal policies consistently across the ecosystem."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"919a3eb2_076be5d2","line":23,"range":{"start_line":8,"start_character":0,"end_line":23,"end_character":55},"in_reply_to":"ba420e23_077e2dbc","updated":"2025-09-30 13:49:05.000000000","message":"Removed","commit_id":"be7452997f8f64643b0149a7aa382a2bee783cac"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"981ad1b8daa35c074d63e9073254adf14592f4ac","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added new hacking check **H905** to detect and ban eventlet usage in OpenStack"},{"line_number":5,"context_line":"    projects. This check supports the ongoing eventlet removal effort across OpenStack"},{"line_number":6,"context_line":"    as part of the async migration to threading and asyncio."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7a3d83ae_d890e723","line":6,"range":{"start_line":4,"start_character":4,"end_line":6,"end_character":60},"updated":"2025-11-01 11:46:26.000000000","message":"```suggestion\n    Added new hacking check ``H905`` to detect and ban ``eventlet`` usage in OpenStack\n    projects. This check supports the ongoing ``eventlet`` removal effort across OpenStack\n    as part of the async migration to ``threading`` and ``asyncio``.\n```\nI would prefer this formatting","commit_id":"eb6fc092088b6e53502d0575d46913ed150a9c35"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"b4f95f9ec39fde7404e0e6f392ab38df1c8d082e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added new hacking check **H905** to detect and ban eventlet usage in OpenStack"},{"line_number":5,"context_line":"    projects. This check supports the ongoing eventlet removal effort across OpenStack"},{"line_number":6,"context_line":"    as part of the async migration to threading and asyncio."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"915751ca_cfb7039c","line":6,"range":{"start_line":4,"start_character":4,"end_line":6,"end_character":60},"in_reply_to":"7a3d83ae_d890e723","updated":"2025-11-04 10:09:55.000000000","message":"Done","commit_id":"eb6fc092088b6e53502d0575d46913ed150a9c35"}],"setup.cfg":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"4725b01bb8b108225363f0cdd135afeeb4355c44","unresolved":true,"context_lines":[{"line_number":62,"context_line":"    H700 \u003d hacking.checks.localization:hacking_localization_strings"},{"line_number":63,"context_line":"    H903 \u003d hacking.checks.other:hacking_no_cr"},{"line_number":64,"context_line":"    H904 \u003d hacking.checks.other:hacking_delayed_string_interpolation"},{"line_number":65,"context_line":"    H905 \u003d hacking.checks.imports:hacking_no_eventlet"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"[extras]"},{"line_number":68,"context_line":"pep257 \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"a10b13b8_cf4b5cdf","line":65,"range":{"start_line":65,"start_character":4,"end_line":65,"end_character":8},"updated":"2025-09-05 11:53:27.000000000","message":"Let me know if you prefer a different rule number. I hesitated to put it under the import range (30X), but if we look closely, it is not an import enforcement, so IMO it deserves to be stored in another range.","commit_id":"be7452997f8f64643b0149a7aa382a2bee783cac"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d892bc6e1e7170399ea4ceddcf921c491d0fbb5d","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    H700 \u003d hacking.checks.localization:hacking_localization_strings"},{"line_number":63,"context_line":"    H903 \u003d hacking.checks.other:hacking_no_cr"},{"line_number":64,"context_line":"    H904 \u003d hacking.checks.other:hacking_delayed_string_interpolation"},{"line_number":65,"context_line":"    H905 \u003d hacking.checks.imports:hacking_no_eventlet"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"[extras]"},{"line_number":68,"context_line":"pep257 \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"500028b3_54803b2f","line":65,"range":{"start_line":65,"start_character":4,"end_line":65,"end_character":8},"in_reply_to":"a10b13b8_cf4b5cdf","updated":"2025-10-28 19:29:21.000000000","message":"I think it is better as it is not import rule but a rule for not to use eventlet","commit_id":"be7452997f8f64643b0149a7aa382a2bee783cac"}]}
