8000 GitHub - python-formate/flake8-encodings at v0.3.3
[go: up one dir, main page]

Skip to content

python-formate/flake8-encodings

Repository files navigation

flake8-encodings

A Flake8 plugin to identify incorrect use of encodings.

Docs Documentation Build Status Docs Check Status
Tests Linux Test Status Windows Test Status macOS Test Status Coverage
PyPI PyPI - Package Version PyPI - Supported Python Versions PyPI - Supported Implementations PyPI - Wheel
Anaconda Conda - Package Version Conda - Platform
Activity GitHub last commit GitHub commits since tagged version Maintenance PyPI - Downloads
QA CodeFactor Grade Flake8 Status mypy status pre-commit.ci status
Other License GitHub top language Requirements Status

Installation

flake8-encodings can be installed from PyPI or Anaconda.

To install with pip:

$ python -m pip install flake8-encodings

To install with conda:

  • First add the required channels
$ conda config --add channels http://conda.anaconda.org/conda-forge
$ conda config --add channels http://conda.anaconda.org/domdfcoding
  • Then install
$ conda install flake8-encodings

Motivation

Developers using macOS or Linux may forget that the default encoding is not always UTF-8.

For example, long_description = open("README.md").read() in setup.py is a common mistake. Many Windows users cannot install the package if there is at least one non-ASCII character (e.g. emoji) in the README.md file which is encoded in UTF-8.

For example, 489 packages of the 4000 most downloaded packages from PyPI used non-ASCII characters in README. And 82 packages of them cannot be installed from source package when the locale encoding is ASCII. [1] They used the default encoding to read README or TOML file.

Even Python expe 8929 rts assume that default encoding is UTF-8. It creates bugs that happen only on Windows. See [2], [3], [4], and [5] for example.

PEP 597 proposed adding a new EncodingWarning to Python, which can be used in conjunction with this tool to identify issues at runtime.

[1]"Packages can't be installed when encoding is not UTF-8" (https://github.com/methane/pep597-pypi-ascii)
[2]Packaging tutorial in packaging.python.org didn't specify encoding to read a README.md (pypa/packaging.python.org#682)
[3]json.tool had used locale encoding to read JSON files. (https://bugs.python.org/issue33684)
[4]site: Potential UnicodeDecodeError when handling pth file (https://bugs.python.org/issue33684)
[5]pypa/pip: "Installing packages fails if Python 3 installed into path with non-ASCII characters" (pypa/pip#9054)

About

A Flake8 plugin to identify incorrect use of encodings.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors 3

  •  
  •  
  •  
0