You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "Jarek Potiuk (Jira)" <ji...@apache.org> on 2019/09/02 01:06:00 UTC

[jira] [Created] (AIRFLOW-5373) Super fast pre-commit check for python2 compatibility (for cherry-picking)

Jarek Potiuk created AIRFLOW-5373:
-------------------------------------

             Summary: Super fast pre-commit check for python2 compatibility (for cherry-picking)
                 Key: AIRFLOW-5373
                 URL: https://issues.apache.org/jira/browse/AIRFLOW-5373
             Project: Apache Airflow
          Issue Type: Improvement
          Components: ci
    Affects Versions: 1.10.5
            Reporter: Jarek Potiuk


I thought about a super-fast way of protecting against bad python3 cherry-picks in our v1-10-test branch. From the experience, it looks like we have two types of problems most often:
 # super()
 # python3 type annotations in definition of function parameters/return values
 # python3 type annotations in variables

I tried to find some good "proper" solution to check automatically if the code is python2-compliant but surprisingly could not find anything fast and good (actually there are plenty of python3 compat checkers and auto-converters but I could not find good verification is some python3 constructs are used in python2 code).

However it came to me that we can likely do a simple grep that should be able to catch vast majority of those case with very limited (if at all) false positives. It turned out to be a good idea for 1 and 2 (which is vast majority of cases I think) :

Such simple and straigthforward regexp does the work beautifully:

".super\\(\\)|^\\s+def\\s*\\S*\\([^):]*:.*\\)|^\\sdef\\s*\\S*\\(.*\\):\\s*\\-\\>\\s*\\S*"

I managed to find two actual problems - Python3 incompatibilitites in v1-10-test this way (!!!). In master we have 830 matching lines so I think it's rather good.

 

 

 

 

 



--
This message was sent by Atlassian Jira
(v8.3.2#803003)