@@ -17,20 +17,23 @@ rules:
1717 examples :
1818 - " python_requires = '==3.7'"
1919 - " python_requires = '>=3.7'"
20+ - " python_requires = '>=3.7.0'"
2021 - " python_requires = '<=3.7'"
2122 - " python_requires = '>3.6'"
2223 - " python_requires = '<3.8'"
2324 rules :
2425 - |
25- python_requires\s*=\s*['"]==3\.{minor}['"]
26+ python_requires\s*=\s*['"]==3\.{minor}(?:\.\d+)? ['"]
2627 - |
27- python_requires\s*=\s*['"]>=3\.{minor}['"]
28+ python_requires\s*=\s*['"]>=3\.{minor}(?:\.\d+)? ['"]
2829 - |
29- python_requires\s*=\s*['"]<=3\.{minor}['"]
30+ python_requires\s*=\s*['"]<=3\.{minor}(?:\.\d+)?['"]
31+ # Matches >3.6 (equivalent to >=3.7)
3032 - |
31- python_requires\s*=\s*['"]>3\.{minor_minus_one}['"]
33+ python_requires\s*=\s*['"]>3\.{minor_minus_one}(?:\.\d+)?['"]
34+ # Matches <3.8 (equivalent to <=3.7)
3235 - |
33- python_requires\s*=\s*['"]<3\.{minor_plus_one}['"]
36+ python_requires\s*=\s*['"]<3\.{minor_plus_one}(?:\.\d+)? ['"]
3437
3538 - name : sys_version_info
3639 description : Finds sys.version_info checks in code.
@@ -46,15 +49,22 @@ rules:
4649 - " sys.version_info.minor <= 7"
4750 - " sys.version_info.minor > 6"
4851 - " sys.version_info.minor < 8"
52+ - " sys.version_info[1] == 7"
53+ - " sys.version_info[1] >= 7"
54+ - " sys.version_info[1] <= 7"
55+ - " sys.version_info[1] > 6"
56+ - " sys.version_info[1] < 8"
4957 rules :
5058 - |
5159 sys\.version_info\s*==\s*\(3,\s*{minor}\)
5260 - |
5361 sys\.version_info\s*>=\s*\(3,\s*{minor}\)
5462 - |
5563 sys\.version_info\s*<=\s*\(3,\s*{minor}\)
64+ # Matches sys.version_info > (3, 6) (equivalent to >=3.7)
5665 - |
5766 sys\.version_info\s*>\s*\(3,\s*{minor_minus_one}\)
67+ # Matches sys.version_info < (3, 8) (equivalent to <=3.7)
5868 - |
5969 sys\.version_info\s*<\s*\(3,\s*{minor_plus_one}\)
6070 - |
@@ -63,10 +73,24 @@ rules:
6373 sys\.version_info\.minor\s*>=\s*{minor}(?!\d)
6474 - |
6575 sys\.version_info\.minor\s*<=\s*{minor}(?!\d)
76+ # Matches sys.version_info.minor > 6 (equivalent to >=7)
6677 - |
6778 sys\.version_info\.minor\s*>\s*{minor_minus_one}(?!\d)
79+ # Matches sys.version_info.minor < 8 (equivalent to <=7)
6880 - |
6981 sys\.version_info\.minor\s*<\s*{minor_plus_one}(?!\d)
82+ - |
83+ sys\.version_info\[1\]\s*==\s*{minor}(?!\d)
84+ - |
85+ sys\.version_info\[1\]\s*>=\s*{minor}(?!\d)
86+ - |
87+ sys\.version_info\[1\]\s*<=\s*{minor}(?!\d)
88+ # Matches sys.version_info[1] > 6 (equivalent to >=7)
89+ - |
90+ sys\.version_info\[1\]\s*>\s*{minor_minus_one}(?!\d)
91+ # Matches sys.version_info[1] < 8 (equivalent to <=7)
92+ - |
93+ sys\.version_info\[1\]\s*<\s*{minor_plus_one}(?!\d)
7094
7195 - name : python_env_short
7296 description : Finds short python environment names often used in tox or nox.
@@ -99,4 +123,16 @@ rules:
99123 - |
100124 Python{major}{minor}(?!\d)
101125
126+ - name : dependency_requirement
127+ description : Finds standard dependency requirement formats (e.g., protobuf==3.7).
128+ examples :
129+ - " protobuf==3.7"
130+ - " protobuf>=3.7"
131+ - " protobuf<=3.7"
132+ - " protobuf~=3.7"
133+ - " protobuf!=3.7"
134+ rules :
135+ - |
136+ {name}\s*(?:==|>=|<=|~=|!=)\s*{version}
137+
102138
0 commit comments