diff mbox series

[ovs-dev,v3] py-requirements: Remove hacking dependency and use recent flake8.

Message ID 20231114113852.886473-1-dceara@redhat.com
State Accepted
Headers show
Series [ovs-dev,v3] py-requirements: Remove hacking dependency and use recent flake8. | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/github-robot-_ovn-kubernetes success github build: passed

Commit Message

Dumitru Ceara Nov. 14, 2023, 11:38 a.m. UTC
Without this, when using Python 3.12 and flake8 5.0.4, the following
errors are flagged:
  tests/check_acl_log.py:97:25: E231 missing whitespace after ':'
  tests/check_acl_log.py:102:71: E231 missing whitespace after ':'

This was reported and discussed in a couple of contexts:
https://mail.openvswitch.org/pipermail/ovs-dev/2023-November/409325.html
https://mail.openvswitch.org/pipermail/ovs-dev/2023-November/409277.html

And it's fixed in recent flake8/pycodestyle versions:
https://github.com/PyCQA/flake8/issues/1845#issuecomment-1766073353

Unfortunately we have to remove the 'hacking' requirement because that
introduces a dependency on 'flake8<4.0.0 and >=3.6.0'.  On the other
hand the currently enabled hacking checks were only applicable to
Python 2 code.  OVN has stopped supporting Python 2 for a while now,
since 0c042c2d28d8 ("Require Python 3 and remove support for Python
2.").

Signed-off-by: Dumitru Ceara <dceara@redhat.com>
---
NOTE: this patch should be backported to all supported branches.

V3:
- Addressed Ilya's comments:
  - keep hacking checks on flake8 ignore list for the case when hacking
    is installed.

V2:
- Addressed Ilya's comments:
  - removed remaining hacking references
- updated commit log
---
 Documentation/intro/install/general.rst  | 5 +----
 Makefile.am                              | 6 ------
 utilities/containers/py-requirements.txt | 4 ++--
 3 files changed, 3 insertions(+), 12 deletions(-)

Comments

Ales Musil Nov. 14, 2023, 2:36 p.m. UTC | #1
On Tue, Nov 14, 2023 at 12:38 PM Dumitru Ceara <dceara@redhat.com> wrote:

> Without this, when using Python 3.12 and flake8 5.0.4, the following
> errors are flagged:
>   tests/check_acl_log.py:97:25: E231 missing whitespace after ':'
>   tests/check_acl_log.py:102:71: E231 missing whitespace after ':'
>
> This was reported and discussed in a couple of contexts:
> https://mail.openvswitch.org/pipermail/ovs-dev/2023-November/409325.html
> https://mail.openvswitch.org/pipermail/ovs-dev/2023-November/409277.html
>
> And it's fixed in recent flake8/pycodestyle versions:
> https://github.com/PyCQA/flake8/issues/1845#issuecomment-1766073353
>
> Unfortunately we have to remove the 'hacking' requirement because that
> introduces a dependency on 'flake8<4.0.0 and >=3.6.0'.  On the other
> hand the currently enabled hacking checks were only applicable to
> Python 2 code.  OVN has stopped supporting Python 2 for a while now,
> since 0c042c2d28d8 ("Require Python 3 and remove support for Python
> 2.").
>
> Signed-off-by: Dumitru Ceara <dceara@redhat.com>
> ---
> NOTE: this patch should be backported to all supported branches.
>
> V3:
> - Addressed Ilya's comments:
>   - keep hacking checks on flake8 ignore list for the case when hacking
>     is installed.
>
> V2:
> - Addressed Ilya's comments:
>   - removed remaining hacking references
> - updated commit log
> ---
>  Documentation/intro/install/general.rst  | 5 +----
>  Makefile.am                              | 6 ------
>  utilities/containers/py-requirements.txt | 4 ++--
>  3 files changed, 3 insertions(+), 12 deletions(-)
>
> diff --git a/Documentation/intro/install/general.rst
> b/Documentation/intro/install/general.rst
> index 5895188462..4ace64f6ec 100644
> --- a/Documentation/intro/install/general.rst
> +++ b/Documentation/intro/install/general.rst
> @@ -134,10 +134,7 @@ following to obtain better warnings:
>
>  - clang, version 3.4 or later
>
> -- flake8 along with the hacking flake8 plugin (for Python code). The
> automatic
> -  flake8 check that runs against Python code has some warnings enabled
> that
> -  come from the "hacking" flake8 plugin. If it's not installed, the
> warnings
> -  just won't occur until it's run on a system with "hacking" installed.
> +- flake8, version 6.1.0 or later
>
>  You may find the ovs-dev script found in ``ovs/utilities/ovs-dev.py``
> useful.
>
> diff --git a/Makefile.am b/Makefile.am
> index 06045760a0..b5c163f95e 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -415,16 +415,10 @@ ALL_LOCAL += flake8-check
>  #   F811 redefinition of unused <name> from line <N> (only from flake8
> v2.0)
>  # D*** -- warnings from flake8-docstrings plugin
>  # H*** -- warnings from flake8 hacking plugin (custom style checks beyond
> PEP8)
> -#   H231 Python 3.x incompatible 'except x,y:' construct
> -#   H232 Python 3.x incompatible octal 077 should be written as 0o77
> -#   H233 Python 3.x incompatible use of print operator
> -#   H238 old style class declaration, use new style (inherit from
> `object`)
> -FLAKE8_SELECT = H231,H232,H233,H238
>  FLAKE8_IGNORE =
> E121,E123,E125,E126,E127,E128,E129,E131,E722,W503,W504,F811,D,H,I
>  flake8-check: $(FLAKE8_PYFILES)
>         $(FLAKE8_WERROR)$(AM_V_GEN) \
>           src='$^' && \
> -         flake8 $$src --select=$(FLAKE8_SELECT) $(FLAKE8_FLAGS) && \
>           flake8 $$src --ignore=$(FLAKE8_IGNORE) $(FLAKE8_FLAGS) && \
>           touch $@
>  endif
> diff --git a/utilities/containers/py-requirements.txt
> b/utilities/containers/py-requirements.txt
> index 0d90765c97..a8e8f17da3 100644
> --- a/utilities/containers/py-requirements.txt
> +++ b/utilities/containers/py-requirements.txt
> @@ -1,7 +1,7 @@
> -flake8
> -hacking>=3.0
> +flake8>=6.1.0
>  scapy
>  sphinx
>  setuptools
>  pyelftools
>  pyOpenSSL
> +pycodestyle>=2.11.0
> --
> 2.39.3
>
>

Looks good to me, thanks.

Acked-by: Ales Musil <amusil@redhat.com>
Ilya Maximets Nov. 14, 2023, 2:57 p.m. UTC | #2
On 11/14/23 12:38, Dumitru Ceara wrote:
> Without this, when using Python 3.12 and flake8 5.0.4, the following
> errors are flagged:
>   tests/check_acl_log.py:97:25: E231 missing whitespace after ':'
>   tests/check_acl_log.py:102:71: E231 missing whitespace after ':'
> 
> This was reported and discussed in a couple of contexts:
> https://mail.openvswitch.org/pipermail/ovs-dev/2023-November/409325.html
> https://mail.openvswitch.org/pipermail/ovs-dev/2023-November/409277.html
> 
> And it's fixed in recent flake8/pycodestyle versions:
> https://github.com/PyCQA/flake8/issues/1845#issuecomment-1766073353
> 
> Unfortunately we have to remove the 'hacking' requirement because that
> introduces a dependency on 'flake8<4.0.0 and >=3.6.0'.  On the other
> hand the currently enabled hacking checks were only applicable to
> Python 2 code.  OVN has stopped supporting Python 2 for a while now,
> since 0c042c2d28d8 ("Require Python 3 and remove support for Python
> 2.").
> 
> Signed-off-by: Dumitru Ceara <dceara@redhat.com>
> ---
> NOTE: this patch should be backported to all supported branches.
> 
> V3:
> - Addressed Ilya's comments:
>   - keep hacking checks on flake8 ignore list for the case when hacking
>     is installed.
> 
> V2:
> - Addressed Ilya's comments:
>   - removed remaining hacking references
> - updated commit log
> ---
>  Documentation/intro/install/general.rst  | 5 +----
>  Makefile.am                              | 6 ------
>  utilities/containers/py-requirements.txt | 4 ++--
>  3 files changed, 3 insertions(+), 12 deletions(-)
> 
> diff --git a/Documentation/intro/install/general.rst b/Documentation/intro/install/general.rst
> index 5895188462..4ace64f6ec 100644
> --- a/Documentation/intro/install/general.rst
> +++ b/Documentation/intro/install/general.rst
> @@ -134,10 +134,7 @@ following to obtain better warnings:
>  
>  - clang, version 3.4 or later
>  
> -- flake8 along with the hacking flake8 plugin (for Python code). The automatic
> -  flake8 check that runs against Python code has some warnings enabled that
> -  come from the "hacking" flake8 plugin. If it's not installed, the warnings
> -  just won't occur until it's run on a system with "hacking" installed.
> +- flake8, version 6.1.0 or later

Looks fine in general, but I'm not sure if we need to call out the
version of flake8 specifically here.  It's not really a dependency
for OVN itself.  It's just an incompatibility between older flake8
and the python 3.12 that has nothing to do with OVN.

Maybe go back to a version before commit cd8747c54254 ("INSTALL.md:
Note use of "hacking" flake8 plugin.") ?  i.e.:

  - flake8 (for Python code)

Either way:

Acked-by: Ilya Maximets <i.maximets@ovn.org>
Mark Michelson Nov. 14, 2023, 9:12 p.m. UTC | #3
Thanks Dumitru,

Acked-by: Mark Michelson <mmichels@redhat.com>

On 11/14/23 06:38, Dumitru Ceara wrote:
> Without this, when using Python 3.12 and flake8 5.0.4, the following
> errors are flagged:
>    tests/check_acl_log.py:97:25: E231 missing whitespace after ':'
>    tests/check_acl_log.py:102:71: E231 missing whitespace after ':'
> 
> This was reported and discussed in a couple of contexts:
> https://mail.openvswitch.org/pipermail/ovs-dev/2023-November/409325.html
> https://mail.openvswitch.org/pipermail/ovs-dev/2023-November/409277.html
> 
> And it's fixed in recent flake8/pycodestyle versions:
> https://github.com/PyCQA/flake8/issues/1845#issuecomment-1766073353
> 
> Unfortunately we have to remove the 'hacking' requirement because that
> introduces a dependency on 'flake8<4.0.0 and >=3.6.0'.  On the other
> hand the currently enabled hacking checks were only applicable to
> Python 2 code.  OVN has stopped supporting Python 2 for a while now,
> since 0c042c2d28d8 ("Require Python 3 and remove support for Python
> 2.").
> 
> Signed-off-by: Dumitru Ceara <dceara@redhat.com>
> ---
> NOTE: this patch should be backported to all supported branches.
> 
> V3:
> - Addressed Ilya's comments:
>    - keep hacking checks on flake8 ignore list for the case when hacking
>      is installed.
> 
> V2:
> - Addressed Ilya's comments:
>    - removed remaining hacking references
> - updated commit log
> ---
>   Documentation/intro/install/general.rst  | 5 +----
>   Makefile.am                              | 6 ------
>   utilities/containers/py-requirements.txt | 4 ++--
>   3 files changed, 3 insertions(+), 12 deletions(-)
> 
> diff --git a/Documentation/intro/install/general.rst b/Documentation/intro/install/general.rst
> index 5895188462..4ace64f6ec 100644
> --- a/Documentation/intro/install/general.rst
> +++ b/Documentation/intro/install/general.rst
> @@ -134,10 +134,7 @@ following to obtain better warnings:
>   
>   - clang, version 3.4 or later
>   
> -- flake8 along with the hacking flake8 plugin (for Python code). The automatic
> -  flake8 check that runs against Python code has some warnings enabled that
> -  come from the "hacking" flake8 plugin. If it's not installed, the warnings
> -  just won't occur until it's run on a system with "hacking" installed.
> +- flake8, version 6.1.0 or later
>   
>   You may find the ovs-dev script found in ``ovs/utilities/ovs-dev.py`` useful.
>   
> diff --git a/Makefile.am b/Makefile.am
> index 06045760a0..b5c163f95e 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -415,16 +415,10 @@ ALL_LOCAL += flake8-check
>   #   F811 redefinition of unused <name> from line <N> (only from flake8 v2.0)
>   # D*** -- warnings from flake8-docstrings plugin
>   # H*** -- warnings from flake8 hacking plugin (custom style checks beyond PEP8)
> -#   H231 Python 3.x incompatible 'except x,y:' construct
> -#   H232 Python 3.x incompatible octal 077 should be written as 0o77
> -#   H233 Python 3.x incompatible use of print operator
> -#   H238 old style class declaration, use new style (inherit from `object`)
> -FLAKE8_SELECT = H231,H232,H233,H238
>   FLAKE8_IGNORE = E121,E123,E125,E126,E127,E128,E129,E131,E722,W503,W504,F811,D,H,I
>   flake8-check: $(FLAKE8_PYFILES)
>   	$(FLAKE8_WERROR)$(AM_V_GEN) \
>   	  src='$^' && \
> -	  flake8 $$src --select=$(FLAKE8_SELECT) $(FLAKE8_FLAGS) && \
>   	  flake8 $$src --ignore=$(FLAKE8_IGNORE) $(FLAKE8_FLAGS) && \
>   	  touch $@
>   endif
> diff --git a/utilities/containers/py-requirements.txt b/utilities/containers/py-requirements.txt
> index 0d90765c97..a8e8f17da3 100644
> --- a/utilities/containers/py-requirements.txt
> +++ b/utilities/containers/py-requirements.txt
> @@ -1,7 +1,7 @@
> -flake8
> -hacking>=3.0
> +flake8>=6.1.0
>   scapy
>   sphinx
>   setuptools
>   pyelftools
>   pyOpenSSL
> +pycodestyle>=2.11.0
Dumitru Ceara Nov. 15, 2023, 1:59 p.m. UTC | #4
On 11/14/23 15:57, Ilya Maximets wrote:
> On 11/14/23 12:38, Dumitru Ceara wrote:
>> Without this, when using Python 3.12 and flake8 5.0.4, the following
>> errors are flagged:
>>   tests/check_acl_log.py:97:25: E231 missing whitespace after ':'
>>   tests/check_acl_log.py:102:71: E231 missing whitespace after ':'
>>
>> This was reported and discussed in a couple of contexts:
>> https://mail.openvswitch.org/pipermail/ovs-dev/2023-November/409325.html
>> https://mail.openvswitch.org/pipermail/ovs-dev/2023-November/409277.html
>>
>> And it's fixed in recent flake8/pycodestyle versions:
>> https://github.com/PyCQA/flake8/issues/1845#issuecomment-1766073353
>>
>> Unfortunately we have to remove the 'hacking' requirement because that
>> introduces a dependency on 'flake8<4.0.0 and >=3.6.0'.  On the other
>> hand the currently enabled hacking checks were only applicable to
>> Python 2 code.  OVN has stopped supporting Python 2 for a while now,
>> since 0c042c2d28d8 ("Require Python 3 and remove support for Python
>> 2.").
>>
>> Signed-off-by: Dumitru Ceara <dceara@redhat.com>
>> ---
>> NOTE: this patch should be backported to all supported branches.
>>
>> V3:
>> - Addressed Ilya's comments:
>>   - keep hacking checks on flake8 ignore list for the case when hacking
>>     is installed.
>>
>> V2:
>> - Addressed Ilya's comments:
>>   - removed remaining hacking references
>> - updated commit log
>> ---
>>  Documentation/intro/install/general.rst  | 5 +----
>>  Makefile.am                              | 6 ------
>>  utilities/containers/py-requirements.txt | 4 ++--
>>  3 files changed, 3 insertions(+), 12 deletions(-)
>>
>> diff --git a/Documentation/intro/install/general.rst b/Documentation/intro/install/general.rst
>> index 5895188462..4ace64f6ec 100644
>> --- a/Documentation/intro/install/general.rst
>> +++ b/Documentation/intro/install/general.rst
>> @@ -134,10 +134,7 @@ following to obtain better warnings:
>>  
>>  - clang, version 3.4 or later
>>  
>> -- flake8 along with the hacking flake8 plugin (for Python code). The automatic
>> -  flake8 check that runs against Python code has some warnings enabled that
>> -  come from the "hacking" flake8 plugin. If it's not installed, the warnings
>> -  just won't occur until it's run on a system with "hacking" installed.
>> +- flake8, version 6.1.0 or later
> 
> Looks fine in general, but I'm not sure if we need to call out the
> version of flake8 specifically here.  It's not really a dependency
> for OVN itself.  It's just an incompatibility between older flake8
> and the python 3.12 that has nothing to do with OVN.
> 
> Maybe go back to a version before commit cd8747c54254 ("INSTALL.md:
> Note use of "hacking" flake8 plugin.") ?  i.e.:
> 
>   - flake8 (for Python code)

Sure, I changed it like that.

> 
> Either way:
> 
> Acked-by: Ilya Maximets <i.maximets@ovn.org>
> 

Thanks, Ales, Ilya and Mark for the reviews!  I pushed this to main and
backported it to all stable branches down to 22.03.

I did restrict flake8 to version flake8==5.0.4 on stable branches so
that we can use tagged ovs releases as submodule version.

CI is still unhappy but for a few other reasons:
a. ARM CI needs an updated container (without hacking installed): I
triggered a run manually now
b. stable branches CI, <= 23.06, need to run with python 3.11 so we need
custom container images for them; I'm trying to address that with the
other series (needs v2):

https://patchwork.ozlabs.org/project/ovn/cover/170004942125.996204.3468999446823223471.stgit@dceara.remote.csb/

Regards,
Dumitru
diff mbox series

Patch

diff --git a/Documentation/intro/install/general.rst b/Documentation/intro/install/general.rst
index 5895188462..4ace64f6ec 100644
--- a/Documentation/intro/install/general.rst
+++ b/Documentation/intro/install/general.rst
@@ -134,10 +134,7 @@  following to obtain better warnings:
 
 - clang, version 3.4 or later
 
-- flake8 along with the hacking flake8 plugin (for Python code). The automatic
-  flake8 check that runs against Python code has some warnings enabled that
-  come from the "hacking" flake8 plugin. If it's not installed, the warnings
-  just won't occur until it's run on a system with "hacking" installed.
+- flake8, version 6.1.0 or later
 
 You may find the ovs-dev script found in ``ovs/utilities/ovs-dev.py`` useful.
 
diff --git a/Makefile.am b/Makefile.am
index 06045760a0..b5c163f95e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -415,16 +415,10 @@  ALL_LOCAL += flake8-check
 #   F811 redefinition of unused <name> from line <N> (only from flake8 v2.0)
 # D*** -- warnings from flake8-docstrings plugin
 # H*** -- warnings from flake8 hacking plugin (custom style checks beyond PEP8)
-#   H231 Python 3.x incompatible 'except x,y:' construct
-#   H232 Python 3.x incompatible octal 077 should be written as 0o77
-#   H233 Python 3.x incompatible use of print operator
-#   H238 old style class declaration, use new style (inherit from `object`)
-FLAKE8_SELECT = H231,H232,H233,H238
 FLAKE8_IGNORE = E121,E123,E125,E126,E127,E128,E129,E131,E722,W503,W504,F811,D,H,I
 flake8-check: $(FLAKE8_PYFILES)
 	$(FLAKE8_WERROR)$(AM_V_GEN) \
 	  src='$^' && \
-	  flake8 $$src --select=$(FLAKE8_SELECT) $(FLAKE8_FLAGS) && \
 	  flake8 $$src --ignore=$(FLAKE8_IGNORE) $(FLAKE8_FLAGS) && \
 	  touch $@
 endif
diff --git a/utilities/containers/py-requirements.txt b/utilities/containers/py-requirements.txt
index 0d90765c97..a8e8f17da3 100644
--- a/utilities/containers/py-requirements.txt
+++ b/utilities/containers/py-requirements.txt
@@ -1,7 +1,7 @@ 
-flake8
-hacking>=3.0
+flake8>=6.1.0
 scapy
 sphinx
 setuptools
 pyelftools
 pyOpenSSL
+pycodestyle>=2.11.0