Metadata-Version: 2.1
Name: flake8-tidy-imports
Version: 4.0.1
Summary: A flake8 plugin that helps you write tidier imports.
Home-page: https://github.com/adamchainz/flake8-tidy-imports
Author: Adam Johnson
Author-email: me@adamj.eu
License: ISCL
Project-URL: Changelog, https://github.com/adamchainz/flake8-tidy-imports/blob/master/HISTORY.rst
Description: ===================
        flake8-tidy-imports
        ===================
        
        .. image:: https://img.shields.io/pypi/v/flake8-tidy-imports.svg
                :target: https://pypi.python.org/pypi/flake8-tidy-imports
        
        .. image:: https://img.shields.io/travis/adamchainz/flake8-tidy-imports.svg
                :target: https://travis-ci.org/adamchainz/flake8-tidy-imports
        
        .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
            :target: https://github.com/python/black
        
        A `flake8 <https://flake8.readthedocs.io/en/latest/index.html>`_ plugin that
        helps you write tidier imports.
        
        Installation
        ------------
        
        Install from ``pip`` with:
        
        .. code-block:: sh
        
             python -m pip install flake8-tidy-imports
        
        Python 3.5 to 3.8 supported.
        
        When installed it will automatically be run as part of ``flake8``; you can
        check it is being picked up with:
        
        .. code-block:: sh
        
            $ flake8 --version
            3.7.9 (flake8-tidy-imports: 3.1.0, mccabe: 0.6.1, pycodestyle: 2.5.0, pyflakes: 2.1.1) CPython 3.8.0 on Darwin
        
        Options
        -------
        
        ``banned-modules``
        ~~~~~~~~~~~~~~~~~~
        
        Config for rule I251 (see below). A map where each line is a banned import
        string, followed by '=', then the message to use when encountering that banned
        import. Note that despite the name, you can ban imported objects too, since the
        syntax is the same, such as ``decimal.Decimal``.
        
        There is also a special directive to ban a preselected list of removed/moved
        modules between Python 2 and Python 3, recommending replacements, from `six
        <https://pythonhosted.org/six/>`_ where possible. It can be turned on by adding
        ``{python2to3}`` to the list of ``banned-modules``.
        
        Whilst the option can be passed on the commandline, it's much easier to
        configure it in your config file, such as ``setup.cfg``, for example:
        
        .. code-block:: ini
        
            [flake8]
            banned-modules = mock = use unittest.mock!
                             urlparse = use six.moves.urllib.parse!
                             {python2to3}
        
        ``ban-relative-imports``
        ~~~~~~~~~~~~~~~~~~~~~~~~
        
        Enables rule I252, which bans relative imports. See below.
        
        .. code-block:: ini
        
            [flake8]
            ban-relative-imports = true
        
        
        Rules
        -----
        
        **N.B.** Before version 4.0.0, the rule codes were numbered 50 less, e.g. I250
        was I200. They were changed in `Issue #106
        <https://github.com/adamchainz/flake8-tidy-imports/issues/106>`__ due to
        conflict with ``flake8-import-order``.
        
        I250: Unnecessary import alias
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        Complains about unnecessary import aliasing of three forms:
        
        * ``import foo as foo`` -> ``import foo``
        * ``import foo.bar as bar`` -> ``from foo import bar``
        * ``from foo import bar as bar`` -> ``from foo import bar``
        
        The message includes the suggested rewrite (which may not be correct at
        current), for example:
        
        .. code-block:: sh
        
            $ flake8 file.py
            file.py:1:1: I250 Unnecessary import alias - rewrite as 'from foo import bar'.
        
        I251: Banned import 'foo' used
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        Complains about importing of banned imports. This might be useful when
        refactoring code, for example when moving from Python 2 to 3. By default there
        are no imports banned - you should configure them with ``banned-modules`` as
        described above in 'Options'.
        
        The message includes a user-defined part that comes from the configuration. For
        example:
        
        .. code-block:: sh
        
            $ flake8 file.py
            file.py:1:1: I251 Banned import 'mock' used - use unittest.mock instead.
        
        I252: Relative imports are banned.
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        Complains about use of relative imports:
        
        * ``from . import foo``
        * ``from .bar import foo``
        
        Needs enabling with ``ban-relative-imports`` configuration option.
        
        =======
        History
        =======
        
        4.0.1 (2020-03-24)
        ------------------
        
        * Fix ``cStringIO`` message for ``{python2to3}`` built-in ``banned-modules``.
          Previously it looked for ``cStringIO.cStringIO`` which seems to never have
          existed.
        
        4.0.0 (2020-01-04)
        ------------------
        
        * Add 50 to all rule codes to avoid conflict with ``flake8-import-order``. This
          means rule ``I200`` is now ``I250``, etc.
        
          If you have configured `flake8's select or ignore options
          <http://flake8.pycqa.org/en/latest/user/violations.html>`__, you may need to
          update it to keep the ``flake8-tidy-imports`` rules active.
        
        3.1.0 (2019-11-15)
        ------------------
        
        * Support Python 3.8.
        * Converted setuptools metadata to configuration file. This meant removing the
          ``__version__`` attribute from the package. If you want to inspect the
          installed version, use
          ``importlib.metadata.version("flake8-tidy-imports")``
          (`docs <https://docs.python.org/3.8/library/importlib.metadata.html#distribution-versions>`__ /
          `backport <https://pypi.org/project/importlib-metadata/>`__).
        * Add dependency on ``importlib-metadata``.
        
        3.0.0 (2019-10-15)
        ------------------
        
        * Add rule ``I202`` to ban relative imports, when activated with the new
          ``ban-relative-imports`` configuration option.
        * Update Python support to 3.5-3.7, as 3.4 has reached its end of life.
        * Update Flake8 support to 3.0+ only. 3.0.0 was released in 2016 and the plugin
          hasn't been tested with it since.
        
        2.0.0 (2019-02-02)
        ------------------
        
        * Drop Python 2 support, only Python 3.4+ is supported now.
        
        1.1.0 (2017-07-10)
        ------------------
        
        * Added a big list of python 2 to 3 import bans for I201, which can be
          activated by adding ``{python2to3}`` to the ``banned-modules`` option.
        
        1.0.6 (2017-03-07)
        ------------------
        
        * Fixed the whitespace in the help message for ``--banned-modules``.
        
        1.0.5 (2017-01-13)
        ------------------
        
        * Changed the error message for ``I201`` to be about the banned *import*
          instead of *module*.
        * Fix a bug introduced in 1.0.4 that broke parsing relative imports.
        
        1.0.4 (2017-01-12)
        ------------------
        
        * Don't allow installation with Flake8 3.2.0 which doesn't enable the plugin.
          This bug was fixed in Flake8 3.2.1.
        * Use the most specific message available for a banned import.
        
        1.0.3 (2016-11-05)
        ------------------
        
        * Fixed reading config from flake8 3+
        
        1.0.2 (2016-07-04)
        ------------------
        
        * Fixed ``I201`` rule to detect banned imports like ``from x import y``.
        
        1.0.1 (2016-07-01)
        ------------------
        
        * ``I201`` rule that allows you to configure complaining about certain modules
          being imported, e.g. if you are moving from Python 2 to 3 you could stop
          ``urlparse`` being imported in favour of ``six.moves.urllib.parse``.
        
        1.0.0 (2016-01-23)
        ------------------
        
        * First release on PyPI.
        * ``I200`` rule that complains about unnecessary import aliasing, e.g.
          ``from foo import bar as bar``.
        
Keywords: flake8_tidy_imports
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: Flake8
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: ISC License (ISCL)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Python: >=3.5
Description-Content-Type: text/x-rst
