summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-flake8-2020.spec316
-rw-r--r--sources1
3 files changed, 318 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..56f5f7a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/flake8_2020-1.7.0.tar.gz
diff --git a/python-flake8-2020.spec b/python-flake8-2020.spec
new file mode 100644
index 0000000..45f2881
--- /dev/null
+++ b/python-flake8-2020.spec
@@ -0,0 +1,316 @@
+%global _empty_manifest_terminate_build 0
+Name: python-flake8-2020
+Version: 1.7.0
+Release: 1
+Summary: flake8 plugin which checks for misuse of `sys.version` or `sys.version_info`
+License: MIT
+URL: https://github.com/asottile/flake8-2020
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/14/e6/f16a80ec6aa195c6ab928ebe3b167303061b7755a92f6417777b9657979d/flake8_2020-1.7.0.tar.gz
+BuildArch: noarch
+
+Requires: python3-flake8
+
+%description
+flake8 plugin which checks for misuse of `sys.version` or `sys.version_info`
+this will become a problem when `python3.10` or `python4.0` exists (presumably
+during the year 2020).
+you might also find an early build of [python3.10] useful
+[python3.10]: https://github.com/asottile/python3.10
+## installation
+`pip install flake8-2020`
+## flake8 codes
+| Code | Description |
+|--------|--------------------------------------------------------|
+| YTT101 | `sys.version[:3]` referenced (python3.10) |
+| YTT102 | `sys.version[2]` referenced (python3.10) |
+| YTT103 | `sys.version` compared to string (python3.10) |
+| YTT201 | `sys.version_info[0] == 3` referenced (python4) |
+| YTT202 | `six.PY3` referenced (python4) |
+| YTT203 | `sys.version_info[1]` compared to integer (python4) |
+| YTT204 | `sys.version_info.minor` compared to integer (python4) |
+| YTT301 | `sys.version[0]` referenced (python10) |
+| YTT302 | `sys.version` compared to string (python10) |
+| YTT303 | `sys.version[:1]` referenced (python10) |
+## rationale
+lots of code incorrectly references the `sys.version` and `sys.version_info`
+members. in particular, this will cause some issues when the version of python
+after python3.9 is released. my current recommendation is 3.10 since I believe
+it breaks less code, here's a few patterns that will cause issues:
+```python
+# in python3.10 this will report as '3.1' (should be '3.10')
+python_version = sys.version[:3] # YTT101
+# in python3.10 this will report as '1' (should be '10')
+py_minor = sys.version[2]
+# in python3.10 this will be False (which goes against developer intention)
+sys.version >= '3.5' # YTT103
+# correct way to do this
+python_version = '{}.{}'.format(*sys.version_info)
+py_minor = str(sys.version_info[1])
+sys.version_info >= (3, 5)
+```
+```python
+# in python4 this will report as `False` (and suddenly run python2 code!)
+is_py3 = sys.version_info[0] == 3 # YTT201
+# in python4 this will report as `False` (six violates YTT201!)
+if six.PY3: # YTT202
+ print('python3!')
+if sys.version_info[0] >= 3 and sys.version_info[1] >= 5: # YTT203
+ print('py35+')
+if sys.version_info.major >= 3 and sys.version_info.minor >= 6: # YTT204
+ print('py36+')
+# correct way to do this
+is_py3 = sys.version_info >= (3,)
+if not six.PY2:
+ print('python3!')
+if sys.version_info >= (3, 5):
+ print('py35+')
+if sys.version_info >= (3, 6):
+ print('py36+')
+```
+```python
+# in python10 this will report as '1'
+python_major_version = sys.version[0] # YTT301
+# in python10 this will be False
+if sys.version >= '3': # YTT302
+ print('python3!')
+# in python10 this will be False
+if sys.version[:1] >= '3': # YTT303
+ print('python3!')
+# correct way to do this
+python_major_version = str(sys.version_info[0])
+if sys.version_info >= (3,):
+ print('python3!')
+if sys.version_info >= (3,):
+ print('python3!')
+```
+## as a pre-commit hook
+See [pre-commit](https://github.com/pre-commit/pre-commit) for instructions
+Sample `.pre-commit-config.yaml`:
+```yaml
+- repo: https://github.com/pycqa/flake8
+ rev: 3.7.8
+ hooks:
+ - id: flake8
+ additional_dependencies: [flake8-2020==1.6.1]
+```
+
+%package -n python3-flake8-2020
+Summary: flake8 plugin which checks for misuse of `sys.version` or `sys.version_info`
+Provides: python-flake8-2020
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-flake8-2020
+flake8 plugin which checks for misuse of `sys.version` or `sys.version_info`
+this will become a problem when `python3.10` or `python4.0` exists (presumably
+during the year 2020).
+you might also find an early build of [python3.10] useful
+[python3.10]: https://github.com/asottile/python3.10
+## installation
+`pip install flake8-2020`
+## flake8 codes
+| Code | Description |
+|--------|--------------------------------------------------------|
+| YTT101 | `sys.version[:3]` referenced (python3.10) |
+| YTT102 | `sys.version[2]` referenced (python3.10) |
+| YTT103 | `sys.version` compared to string (python3.10) |
+| YTT201 | `sys.version_info[0] == 3` referenced (python4) |
+| YTT202 | `six.PY3` referenced (python4) |
+| YTT203 | `sys.version_info[1]` compared to integer (python4) |
+| YTT204 | `sys.version_info.minor` compared to integer (python4) |
+| YTT301 | `sys.version[0]` referenced (python10) |
+| YTT302 | `sys.version` compared to string (python10) |
+| YTT303 | `sys.version[:1]` referenced (python10) |
+## rationale
+lots of code incorrectly references the `sys.version` and `sys.version_info`
+members. in particular, this will cause some issues when the version of python
+after python3.9 is released. my current recommendation is 3.10 since I believe
+it breaks less code, here's a few patterns that will cause issues:
+```python
+# in python3.10 this will report as '3.1' (should be '3.10')
+python_version = sys.version[:3] # YTT101
+# in python3.10 this will report as '1' (should be '10')
+py_minor = sys.version[2]
+# in python3.10 this will be False (which goes against developer intention)
+sys.version >= '3.5' # YTT103
+# correct way to do this
+python_version = '{}.{}'.format(*sys.version_info)
+py_minor = str(sys.version_info[1])
+sys.version_info >= (3, 5)
+```
+```python
+# in python4 this will report as `False` (and suddenly run python2 code!)
+is_py3 = sys.version_info[0] == 3 # YTT201
+# in python4 this will report as `False` (six violates YTT201!)
+if six.PY3: # YTT202
+ print('python3!')
+if sys.version_info[0] >= 3 and sys.version_info[1] >= 5: # YTT203
+ print('py35+')
+if sys.version_info.major >= 3 and sys.version_info.minor >= 6: # YTT204
+ print('py36+')
+# correct way to do this
+is_py3 = sys.version_info >= (3,)
+if not six.PY2:
+ print('python3!')
+if sys.version_info >= (3, 5):
+ print('py35+')
+if sys.version_info >= (3, 6):
+ print('py36+')
+```
+```python
+# in python10 this will report as '1'
+python_major_version = sys.version[0] # YTT301
+# in python10 this will be False
+if sys.version >= '3': # YTT302
+ print('python3!')
+# in python10 this will be False
+if sys.version[:1] >= '3': # YTT303
+ print('python3!')
+# correct way to do this
+python_major_version = str(sys.version_info[0])
+if sys.version_info >= (3,):
+ print('python3!')
+if sys.version_info >= (3,):
+ print('python3!')
+```
+## as a pre-commit hook
+See [pre-commit](https://github.com/pre-commit/pre-commit) for instructions
+Sample `.pre-commit-config.yaml`:
+```yaml
+- repo: https://github.com/pycqa/flake8
+ rev: 3.7.8
+ hooks:
+ - id: flake8
+ additional_dependencies: [flake8-2020==1.6.1]
+```
+
+%package help
+Summary: Development documents and examples for flake8-2020
+Provides: python3-flake8-2020-doc
+%description help
+flake8 plugin which checks for misuse of `sys.version` or `sys.version_info`
+this will become a problem when `python3.10` or `python4.0` exists (presumably
+during the year 2020).
+you might also find an early build of [python3.10] useful
+[python3.10]: https://github.com/asottile/python3.10
+## installation
+`pip install flake8-2020`
+## flake8 codes
+| Code | Description |
+|--------|--------------------------------------------------------|
+| YTT101 | `sys.version[:3]` referenced (python3.10) |
+| YTT102 | `sys.version[2]` referenced (python3.10) |
+| YTT103 | `sys.version` compared to string (python3.10) |
+| YTT201 | `sys.version_info[0] == 3` referenced (python4) |
+| YTT202 | `six.PY3` referenced (python4) |
+| YTT203 | `sys.version_info[1]` compared to integer (python4) |
+| YTT204 | `sys.version_info.minor` compared to integer (python4) |
+| YTT301 | `sys.version[0]` referenced (python10) |
+| YTT302 | `sys.version` compared to string (python10) |
+| YTT303 | `sys.version[:1]` referenced (python10) |
+## rationale
+lots of code incorrectly references the `sys.version` and `sys.version_info`
+members. in particular, this will cause some issues when the version of python
+after python3.9 is released. my current recommendation is 3.10 since I believe
+it breaks less code, here's a few patterns that will cause issues:
+```python
+# in python3.10 this will report as '3.1' (should be '3.10')
+python_version = sys.version[:3] # YTT101
+# in python3.10 this will report as '1' (should be '10')
+py_minor = sys.version[2]
+# in python3.10 this will be False (which goes against developer intention)
+sys.version >= '3.5' # YTT103
+# correct way to do this
+python_version = '{}.{}'.format(*sys.version_info)
+py_minor = str(sys.version_info[1])
+sys.version_info >= (3, 5)
+```
+```python
+# in python4 this will report as `False` (and suddenly run python2 code!)
+is_py3 = sys.version_info[0] == 3 # YTT201
+# in python4 this will report as `False` (six violates YTT201!)
+if six.PY3: # YTT202
+ print('python3!')
+if sys.version_info[0] >= 3 and sys.version_info[1] >= 5: # YTT203
+ print('py35+')
+if sys.version_info.major >= 3 and sys.version_info.minor >= 6: # YTT204
+ print('py36+')
+# correct way to do this
+is_py3 = sys.version_info >= (3,)
+if not six.PY2:
+ print('python3!')
+if sys.version_info >= (3, 5):
+ print('py35+')
+if sys.version_info >= (3, 6):
+ print('py36+')
+```
+```python
+# in python10 this will report as '1'
+python_major_version = sys.version[0] # YTT301
+# in python10 this will be False
+if sys.version >= '3': # YTT302
+ print('python3!')
+# in python10 this will be False
+if sys.version[:1] >= '3': # YTT303
+ print('python3!')
+# correct way to do this
+python_major_version = str(sys.version_info[0])
+if sys.version_info >= (3,):
+ print('python3!')
+if sys.version_info >= (3,):
+ print('python3!')
+```
+## as a pre-commit hook
+See [pre-commit](https://github.com/pre-commit/pre-commit) for instructions
+Sample `.pre-commit-config.yaml`:
+```yaml
+- repo: https://github.com/pycqa/flake8
+ rev: 3.7.8
+ hooks:
+ - id: flake8
+ additional_dependencies: [flake8-2020==1.6.1]
+```
+
+%prep
+%autosetup -n flake8-2020-1.7.0
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-flake8-2020 -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 1.7.0-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..fec1b25
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+e2d9e43f6d4f4f6d7b117fe128946c6b flake8_2020-1.7.0.tar.gz