You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Python3 library for checking code compatibility with different Python versions.
is a tool designed to help verify the compatibility of Python code with versions older than Python 3.8. Specifically, this tool analyzes Python files for features introduced after Python 3.7 and provides refactoring suggestions to ensure that the code can run on older versions.
Features
The pycompatibility detects and reports the use of the following features introduced after Python 3.7:
Walrus Operator (:=): Introduced in Python 3.8, this operator allows variable assignment within expressions. The tool detects its usage and suggests refactoring to avoid its use if maintaining compatibility with older versions is necessary.
Positional-Only Parameters: Introduced in Python 3.8, these parameters are defined with the / syntax. The tool alerts you to their use and recommends refactoring to ensure compatibility with Python 3.7.
Assignment Expressions in Comprehensions: Introduced in Python 3.9, these expressions allow variable assignment within comprehensions. The tool identifies these expressions and suggests alternatives.
Type Union Operator (|): Introduced in Python 3.10, this operator allows combining types in annotations. The tool detects the use of this operator and suggests replacing it with Optional from the typing module.
Structural Pattern Matching (match-case): Introduced in Python 3.10, structural pattern matching allows code to be organized based on patterns. The tool identifies this construct and suggests avoiding its use if compatibility with older versions is required.
Enhanced F-strings: F-strings were enhanced in Python 3.8. The tool detects the use of f-strings and provides refactoring suggestions if needed.
Install
pip install pycompatibility
Command line just pass the name of the script as an argument which will show compatibility
pycompatibility example_code.py
In this example you can test a script that contains features that were introduced after version 3.7 of Python, this helps you maintain compatibility with older versions
script for testing "example_code.py"
defexample_function():
x=10y= (z:=x+5) # Walrus operator (3.8+)print(f"The value of z is: {z}") # f-string (3.6+)definner_function(a: int|None): # Type union operator (3.10+)ifaisNone:
return"a is None"returnf"a is {a}"result=inner_function(None)
print(result)
matchresult: # Structural pattern matching (3.10+)case"a is None":
print("Matched None")
case _:
print("Matched something else")
items= [1, 2, 3, 4, 5]
ifany((n:=x) >3forxinitems): # Walrus operator in comprehensions (3.9+)print(f"Found an item greater than 3: {n}")
context= (open("file1.txt"), open("file2.txt")) # Parenthesized context managers (3.9+)withcontextas (f1, f2):
print(f1.read(), f2.read())
defpositional_only_func(a, b, /, c): # Positional-only parameters (3.8+)print(a, b, c)
positional_only_func(1, 2, 3)
Now just test the script as in the instruction below