mypy-upgrade


Namemypy-upgrade JSON
Version 0.0.1b6 PyPI version JSON
download
home_page
Summaryautomatic error suppression for mypy
upload_time2024-01-01 07:30:41
maintainer
docs_urlNone
author
requires_python>=3.7
licenseMIT License Copyright (c) 2023-present Ugochukwu Nwosu <ugognw@gmail.com> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords type checking
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # `mypy-upgrade`

[![PyPI - Version](https://img.shields.io/pypi/v/mypy-upgrade.svg)](https://pypi.org/project/mypy-upgrade)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mypy-upgrade.svg)](https://pypi.org/project/mypy-upgrade)
[![Wheel Support](https://img.shields.io/pypi/wheel/mypy-upgrade.svg)](https://pypi.org/project/mypy-upgrade)
[![Supported Implementations](https://img.shields.io/pypi/implementation/mypy-upgrade.svg)](https://pypi.org/project/mypy-upgrade)
[![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch)
[![linting - Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![code style - Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![types - Mypy](https://img.shields.io/badge/types-Mypy-blue.svg)](https://github.com/python/mypy)
[![Tests](https://github.com/ugognw/mypy-upgrade/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/ugognw/mypy-upgrade/actions)
[![Coverage](https://coveralls.io/repos/github/ugognw/mypy-upgrade/badge.svg?branch=main)](https://coveralls.io/github/ugognw/mypy-upgrade?branch=main)
[![License - MIT](https://img.shields.io/badge/license-MIT-9400d3.svg)](https://spdx.org/licenses/)

-----

**Table of Contents**

- [What is `mypy-upgrade`?](#what-is-mypy-upgrade)
- [Features](#features)
- [Quick Start](#quick-start)
- [Basic Usage](#basic-usage)
- [Advanced Usage](#advanced-usage)
- [Using the API](#using-the-api)
- [Recommended Mypy Flags](#recommended-mypy-flags)
- [Known Limitations](#known-limitations)
- [Similar Projects](#similar-projects)

## What is `mypy-upgrade`?

`mypy-upgrade` provides automatic error suppression for
[`mypy`](http://mypy.readthedocs.io/) (analogous to
[`pyre-upgrade`](https://pyre-check.org/docs/types-in-python/#upgrade) and
[`pylint-silent`](https://github.com/udifuchs/pylint-silent/)). In addition,
`mypy-upgrade` exposes an API with the same functionality.

Given a type checking report from `mypy`, `mypy-upgrade` will silence
the listed errors using error suppression comments. For example, with
the following output from mypy:

    package/subpackage/module.py:13: error: Incompatible default for argument "filename" (default has type "None", argument has type "str") [assignment]

`mypy-upgrade` will place a `# type: ignore[assignment] # FIX ME` comment at the
end of line 13 in `package/subpackage/module.py`. If error codes are not
present in the `mypy` report (e.g., the `--hide-error-codes` flag is set when
`mypy` was invoked), then a non-specific `# type: ignore # FIX ME` comment will be
added instead.

## Features

* Removal of unused `type: ignore` comments

* Replacement of blanket `type: ignore` comments with error code-specific
comments

* Support for suppressing multiple mypy errors per-line

* Preservation of existing in-line comments

* Optional inclusion of `mypy` error description messages

* Selective suppression of type errors by file, directory, package, module,
  or mypy error codes

## Quick Start

`mypy-upgrade` can be installed via `pip`.

    python3 -m pip install mypy-upgrade

If you want to run the latest version of the code, you can install from the
repo directly:

    python3 -m pip install -U git+https://github.com/ugognw/mypy-upgrade.git@development
    # or if you don't have 'git' installed
    python3 -m pip install -U https://github.com/ugognw/mypy-upgrade/tree/development

## Basic Usage

There are two idioms for invocation. To silence all errors in a package, one
can:

1. pipe `mypy`'s output directly to `mypy-upgrade`

        mypy --strict -p my_package | mypy-upgrade

2. create a `mypy` type checking report text file

        mypy --strict -p my_package > mypy_report.txt

    and then pass the file to `mypy-upgrade`

        mypy-upgrade --report mypy_report.txt

## Advanced Usage

You may want to include the error messages provided by `mypy` in the
suppression comments so that you can fix them later. You can do so using
the `-d` (or `--description-style`) option

    mypy-upgrade --report mypy_report.txt -d full -p package

You can also customize the "fix me" message placed after the error suppression
comment using the `--fix-me` option

    mypy-upgrade --report mypy_report.txt --fix-me "FIX THIS" -p package

To selectively silence errors in packages and modules, use the `-p`
(`--package`) and `-m` (`--module`) options along with the fully qualified
module/package name, respectively:

    mypy-upgrade --report mypy_report.txt -p package1 -p package2 -m package1.module1 -m package2.module2

Similarly, to selectively silence errors in files and directories,
pass them in as positional arguments:

    mypy-upgrade --report mypy_report.txt path/to/a/package/ path/to/a/module.py

To selectively silence a particular kind of type error, use the `--silence-error` option:

    mypy-upgrade --report mypy_report.txt --silence-error "type-arg"

For a full list of all options and their descriptions, run `mypy-upgrade --help`

    usage: mypy-upgrade [-h] [-v] [-V] [more options; see below]
                        [-m MODULE] [-p PACKAGE] [-r REPORT] [-s ERROR_CODE] [files ...]

    Place in-line comments into files to silence mypy errors.


    options:
    -h, --help            show this help message and exit
    -V, --version         Show program's version number and exit.
    --dry-run             Don't actually silence anything, just print what would
                          be.

    Printing:
    Control what information is printed and how.

    -v, --verbose         Control the verbosity. 0=Print warnings and messages
                          for each unsilenced error. 1=Also print messages for
                          each silenced error. 2=Used for debugging. Defaults to
                          0.
    -q, --quiet, --suppress-warnings
                          Suppress all warnings. Disabled by default.
    -S, --summarize       Print a summary after running. If the verbosity is
                          greater than zero, a detailed summary will also be
                          printed.
    -c, --colours         Enable coloured output.

    Comment Formatting:
    Format how error suppression comments are placed.

    -d {full,none}, --description-style {full,none}
                          Specify the style in which mypy error descriptions are
                          expressed in the error suppression comment. Defaults
                          to "none".
    --fix-me FIX_ME       Specify a custom 'Fix Me' message to be placed after
                          the error suppression comment. Pass " " to omit a 'Fix
                          Me' message altogether. Defaults to "FIX ME".

    Error Filtering:
    Specify which errors will be silenced.

    -r REPORT, --report REPORT
                          The path to a text file containing a mypy type
                          checking report. If not specified, input is read from
                          standard input.
    -m MODULE, --module MODULE
                          Silence errors from the provided (importable) module.
                          This flag may be repeated multiple times.
    -p PACKAGE, --package PACKAGE
                          Silence errors from the provided (importable) package.
                          This flag may be repeated multiple times.
    -s ERROR_CODE, --silence-error ERROR_CODE
                          Silence mypy errors by error code. This flag may be
                          repeated multiple times.
    files                 Silence errors from the provided files/directories.

## Using the API

Identical functionality to the command-line utility can be obtained using the
API. In addition, one obtains detailed information on the results of running
`mypy-upgrade`.  Assuming the `mypy` type checking report is saved as
`mypy_report.txt`, we have

```python
import pathlib

from mypy_upgrade.silence import silence_errors_in_report

mypy_report = pathlib.Path("mypy_report.txt")

with mypy_report.open(mode="r", encoding="utf-8") as report:
    result = silence_errors_in_report(
        report=report,
        packages=["package1", "package2"],
        modules=["package1.module1", "package2.module2"],
        files=["path/to/a/package/", "path/to/a/module.py"],
        description_style="full",
        fix_me="FIX THIS",
        codes_to_silence=["arg-type", "no-untyped-def"],
        dry_run=False,
    )

silenced, failures, ignored = result
```

## Recommended Mypy Flags

To enable all checks utilized by `mypy-upgrade` to silence as many errors as possible, the
following flags should be set when creating the type checking report to pass to `mypy-upgrade`:

* `--show-absolute-path`

    * Required if running `mypy-upgrade` in a separate directory than `mypy`

* `--strict`

    * Enables `mypy-upgrade` to silence all possible mypy errors
    (see [Known Limitations](#known-limitations) for exceptions)

* `--show-error-codes`

    * Ensures that error-code specific comments are added instead of blanket `type: ignore`
    comments

* `--warn-unused-ignores`

    * Ensures that unused `type: ignore` comments are removed

* `ignore-without-code`

    * When used with `--show-error-codes`, permits `mypy-upgrade` to replace existing
    `type: ignore` comments with code-specific `type: ignore` comments (enable from the
    command line with the `mypy` option `--enable-error-code`)

## Known Limitations

The following limitations derive mainly from Python syntax issues and are unable to be handled
by `mypy-upgrade`. If you can't resolve the error directly, please consider refactoring to permit
error suppression.

* Type errors on lines ending in line continuation characters or within multiline f-strings

    * Comments are not permitted within multiline strings or following line continuation characters
    and Mypy only recognizes inline `type: ignore` comments (see
    [#3448](https://github.com/python/mypy/issues/3448))

    * Pre-formatting your code with a PEP8 adherent formatter
    (e.g., [`black`](http://black.readthedocs.io)) to replace such lines with parentheses is
    recommended.

* Improperly specified type hints within comments

    * `mypy` will report a type error if a type hint is improperly specified;
    for example, given the following code:

            x = {}  # type: set

    `mypy` will produce a `type-arg` error in column 1 and `mypy-upgrade` will
    place a `# type: ignore[type-arg]` comment at the end, which will, in turn,
    negate the effectiveness of the `# type: set` commment and eliminate the
    need for the `# type: ignore[type-arg]` comment

* `mypy` `"syntax"` errors are not silenced

    * It is recommended that you fix your code such that it is syntactically valid prior to using `mypy-upgrade`

## Similar Projects

If this doesn't fit your use-case, maybe one of these other projects will!

* [`geo7/mypy_clean_slate`](https://github.com/geo7/mypy_clean_slate/tree/main): `mypy`
reports are generated internally in `--strict` mode; includes
support for suppressing multiple errors on a single line; an inspiration for
much of `mypy-upgrade`'s implementation

* [`whtsky/mypy-silent`](https://github.com/whtsky/mypy-silent/tree/master):
relies solely on [`typer`](https://typer.tiangolo.com) + the standard
library; includes support for removing unused `type: ignore` comments but no
support for suppressing multiple errors on a single line; another inspiration
for much of `mypy-upgrade`'s implementation

* [`patrick91/mypy-silent`](https://github.com/patrick91/mypy-silent/tree/feature/multiple-errors): a
fork of `whtsky/mypy-silent` with support for
suppressing multiple errors on a single line (on the `feature/multiple-errors` branch)

* [`uptickmetachu/mypy-silent`](https://github.com/uptickmetachu/mypy-silent/tree/main): a fork
of `whtsky/mypy-silent` with support for suppressing multiple errors on a single line

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "mypy-upgrade",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "type checking",
    "author": "",
    "author_email": "Ugochukwu Nwosu <ugognw@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/49/f5/30230e363d2ffa02e8d3d30356ab76e92d9fd0f525a03ecb527906e46ff1/mypy_upgrade-0.0.1b6.tar.gz",
    "platform": null,
    "description": "# `mypy-upgrade`\n\n[![PyPI - Version](https://img.shields.io/pypi/v/mypy-upgrade.svg)](https://pypi.org/project/mypy-upgrade)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mypy-upgrade.svg)](https://pypi.org/project/mypy-upgrade)\n[![Wheel Support](https://img.shields.io/pypi/wheel/mypy-upgrade.svg)](https://pypi.org/project/mypy-upgrade)\n[![Supported Implementations](https://img.shields.io/pypi/implementation/mypy-upgrade.svg)](https://pypi.org/project/mypy-upgrade)\n[![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch)\n[![linting - Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![code style - Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![types - Mypy](https://img.shields.io/badge/types-Mypy-blue.svg)](https://github.com/python/mypy)\n[![Tests](https://github.com/ugognw/mypy-upgrade/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/ugognw/mypy-upgrade/actions)\n[![Coverage](https://coveralls.io/repos/github/ugognw/mypy-upgrade/badge.svg?branch=main)](https://coveralls.io/github/ugognw/mypy-upgrade?branch=main)\n[![License - MIT](https://img.shields.io/badge/license-MIT-9400d3.svg)](https://spdx.org/licenses/)\n\n-----\n\n**Table of Contents**\n\n- [What is `mypy-upgrade`?](#what-is-mypy-upgrade)\n- [Features](#features)\n- [Quick Start](#quick-start)\n- [Basic Usage](#basic-usage)\n- [Advanced Usage](#advanced-usage)\n- [Using the API](#using-the-api)\n- [Recommended Mypy Flags](#recommended-mypy-flags)\n- [Known Limitations](#known-limitations)\n- [Similar Projects](#similar-projects)\n\n## What is `mypy-upgrade`?\n\n`mypy-upgrade` provides automatic error suppression for\n[`mypy`](http://mypy.readthedocs.io/) (analogous to\n[`pyre-upgrade`](https://pyre-check.org/docs/types-in-python/#upgrade) and\n[`pylint-silent`](https://github.com/udifuchs/pylint-silent/)). In addition,\n`mypy-upgrade` exposes an API with the same functionality.\n\nGiven a type checking report from `mypy`, `mypy-upgrade` will silence\nthe listed errors using error suppression comments. For example, with\nthe following output from mypy:\n\n    package/subpackage/module.py:13: error: Incompatible default for argument \"filename\" (default has type \"None\", argument has type \"str\") [assignment]\n\n`mypy-upgrade` will place a `# type: ignore[assignment] # FIX ME` comment at the\nend of line 13 in `package/subpackage/module.py`. If error codes are not\npresent in the `mypy` report (e.g., the `--hide-error-codes` flag is set when\n`mypy` was invoked), then a non-specific `# type: ignore # FIX ME` comment will be\nadded instead.\n\n## Features\n\n* Removal of unused `type: ignore` comments\n\n* Replacement of blanket `type: ignore` comments with error code-specific\ncomments\n\n* Support for suppressing multiple mypy errors per-line\n\n* Preservation of existing in-line comments\n\n* Optional inclusion of `mypy` error description messages\n\n* Selective suppression of type errors by file, directory, package, module,\n  or mypy error codes\n\n## Quick Start\n\n`mypy-upgrade` can be installed via `pip`.\n\n    python3 -m pip install mypy-upgrade\n\nIf you want to run the latest version of the code, you can install from the\nrepo directly:\n\n    python3 -m pip install -U git+https://github.com/ugognw/mypy-upgrade.git@development\n    # or if you don't have 'git' installed\n    python3 -m pip install -U https://github.com/ugognw/mypy-upgrade/tree/development\n\n## Basic Usage\n\nThere are two idioms for invocation. To silence all errors in a package, one\ncan:\n\n1. pipe `mypy`'s output directly to `mypy-upgrade`\n\n        mypy --strict -p my_package | mypy-upgrade\n\n2. create a `mypy` type checking report text file\n\n        mypy --strict -p my_package > mypy_report.txt\n\n    and then pass the file to `mypy-upgrade`\n\n        mypy-upgrade --report mypy_report.txt\n\n## Advanced Usage\n\nYou may want to include the error messages provided by `mypy` in the\nsuppression comments so that you can fix them later. You can do so using\nthe `-d` (or `--description-style`) option\n\n    mypy-upgrade --report mypy_report.txt -d full -p package\n\nYou can also customize the \"fix me\" message placed after the error suppression\ncomment using the `--fix-me` option\n\n    mypy-upgrade --report mypy_report.txt --fix-me \"FIX THIS\" -p package\n\nTo selectively silence errors in packages and modules, use the `-p`\n(`--package`) and `-m` (`--module`) options along with the fully qualified\nmodule/package name, respectively:\n\n    mypy-upgrade --report mypy_report.txt -p package1 -p package2 -m package1.module1 -m package2.module2\n\nSimilarly, to selectively silence errors in files and directories,\npass them in as positional arguments:\n\n    mypy-upgrade --report mypy_report.txt path/to/a/package/ path/to/a/module.py\n\nTo selectively silence a particular kind of type error, use the `--silence-error` option:\n\n    mypy-upgrade --report mypy_report.txt --silence-error \"type-arg\"\n\nFor a full list of all options and their descriptions, run `mypy-upgrade --help`\n\n    usage: mypy-upgrade [-h] [-v] [-V] [more options; see below]\n                        [-m MODULE] [-p PACKAGE] [-r REPORT] [-s ERROR_CODE] [files ...]\n\n    Place in-line comments into files to silence mypy errors.\n\n\n    options:\n    -h, --help            show this help message and exit\n    -V, --version         Show program's version number and exit.\n    --dry-run             Don't actually silence anything, just print what would\n                          be.\n\n    Printing:\n    Control what information is printed and how.\n\n    -v, --verbose         Control the verbosity. 0=Print warnings and messages\n                          for each unsilenced error. 1=Also print messages for\n                          each silenced error. 2=Used for debugging. Defaults to\n                          0.\n    -q, --quiet, --suppress-warnings\n                          Suppress all warnings. Disabled by default.\n    -S, --summarize       Print a summary after running. If the verbosity is\n                          greater than zero, a detailed summary will also be\n                          printed.\n    -c, --colours         Enable coloured output.\n\n    Comment Formatting:\n    Format how error suppression comments are placed.\n\n    -d {full,none}, --description-style {full,none}\n                          Specify the style in which mypy error descriptions are\n                          expressed in the error suppression comment. Defaults\n                          to \"none\".\n    --fix-me FIX_ME       Specify a custom 'Fix Me' message to be placed after\n                          the error suppression comment. Pass \" \" to omit a 'Fix\n                          Me' message altogether. Defaults to \"FIX ME\".\n\n    Error Filtering:\n    Specify which errors will be silenced.\n\n    -r REPORT, --report REPORT\n                          The path to a text file containing a mypy type\n                          checking report. If not specified, input is read from\n                          standard input.\n    -m MODULE, --module MODULE\n                          Silence errors from the provided (importable) module.\n                          This flag may be repeated multiple times.\n    -p PACKAGE, --package PACKAGE\n                          Silence errors from the provided (importable) package.\n                          This flag may be repeated multiple times.\n    -s ERROR_CODE, --silence-error ERROR_CODE\n                          Silence mypy errors by error code. This flag may be\n                          repeated multiple times.\n    files                 Silence errors from the provided files/directories.\n\n## Using the API\n\nIdentical functionality to the command-line utility can be obtained using the\nAPI. In addition, one obtains detailed information on the results of running\n`mypy-upgrade`.  Assuming the `mypy` type checking report is saved as\n`mypy_report.txt`, we have\n\n```python\nimport pathlib\n\nfrom mypy_upgrade.silence import silence_errors_in_report\n\nmypy_report = pathlib.Path(\"mypy_report.txt\")\n\nwith mypy_report.open(mode=\"r\", encoding=\"utf-8\") as report:\n    result = silence_errors_in_report(\n        report=report,\n        packages=[\"package1\", \"package2\"],\n        modules=[\"package1.module1\", \"package2.module2\"],\n        files=[\"path/to/a/package/\", \"path/to/a/module.py\"],\n        description_style=\"full\",\n        fix_me=\"FIX THIS\",\n        codes_to_silence=[\"arg-type\", \"no-untyped-def\"],\n        dry_run=False,\n    )\n\nsilenced, failures, ignored = result\n```\n\n## Recommended Mypy Flags\n\nTo enable all checks utilized by `mypy-upgrade` to silence as many errors as possible, the\nfollowing flags should be set when creating the type checking report to pass to `mypy-upgrade`:\n\n* `--show-absolute-path`\n\n    * Required if running `mypy-upgrade` in a separate directory than `mypy`\n\n* `--strict`\n\n    * Enables `mypy-upgrade` to silence all possible mypy errors\n    (see [Known Limitations](#known-limitations) for exceptions)\n\n* `--show-error-codes`\n\n    * Ensures that error-code specific comments are added instead of blanket `type: ignore`\n    comments\n\n* `--warn-unused-ignores`\n\n    * Ensures that unused `type: ignore` comments are removed\n\n* `ignore-without-code`\n\n    * When used with `--show-error-codes`, permits `mypy-upgrade` to replace existing\n    `type: ignore` comments with code-specific `type: ignore` comments (enable from the\n    command line with the `mypy` option `--enable-error-code`)\n\n## Known Limitations\n\nThe following limitations derive mainly from Python syntax issues and are unable to be handled\nby `mypy-upgrade`. If you can't resolve the error directly, please consider refactoring to permit\nerror suppression.\n\n* Type errors on lines ending in line continuation characters or within multiline f-strings\n\n    * Comments are not permitted within multiline strings or following line continuation characters\n    and Mypy only recognizes inline `type: ignore` comments (see\n    [#3448](https://github.com/python/mypy/issues/3448))\n\n    * Pre-formatting your code with a PEP8 adherent formatter\n    (e.g., [`black`](http://black.readthedocs.io)) to replace such lines with parentheses is\n    recommended.\n\n* Improperly specified type hints within comments\n\n    * `mypy` will report a type error if a type hint is improperly specified;\n    for example, given the following code:\n\n            x = {}  # type: set\n\n    `mypy` will produce a `type-arg` error in column 1 and `mypy-upgrade` will\n    place a `# type: ignore[type-arg]` comment at the end, which will, in turn,\n    negate the effectiveness of the `# type: set` commment and eliminate the\n    need for the `# type: ignore[type-arg]` comment\n\n* `mypy` `\"syntax\"` errors are not silenced\n\n    * It is recommended that you fix your code such that it is syntactically valid prior to using `mypy-upgrade`\n\n## Similar Projects\n\nIf this doesn't fit your use-case, maybe one of these other projects will!\n\n* [`geo7/mypy_clean_slate`](https://github.com/geo7/mypy_clean_slate/tree/main): `mypy`\nreports are generated internally in `--strict` mode; includes\nsupport for suppressing multiple errors on a single line; an inspiration for\nmuch of `mypy-upgrade`'s implementation\n\n* [`whtsky/mypy-silent`](https://github.com/whtsky/mypy-silent/tree/master):\nrelies solely on [`typer`](https://typer.tiangolo.com) + the standard\nlibrary; includes support for removing unused `type: ignore` comments but no\nsupport for suppressing multiple errors on a single line; another inspiration\nfor much of `mypy-upgrade`'s implementation\n\n* [`patrick91/mypy-silent`](https://github.com/patrick91/mypy-silent/tree/feature/multiple-errors): a\nfork of `whtsky/mypy-silent` with support for\nsuppressing multiple errors on a single line (on the `feature/multiple-errors` branch)\n\n* [`uptickmetachu/mypy-silent`](https://github.com/uptickmetachu/mypy-silent/tree/main): a fork\nof `whtsky/mypy-silent` with support for suppressing multiple errors on a single line\n",
    "bugtrack_url": null,
    "license": "MIT License  Copyright (c) 2023-present Ugochukwu Nwosu <ugognw@gmail.com>  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
    "summary": "automatic error suppression for mypy",
    "version": "0.0.1b6",
    "project_urls": {
        "Changelog": "https://github.com/ugognw/mypy-upgrade/blob/main/CHANGELOG.md",
        "Documentation": "https://github.com/ugognw/mypy-upgrade#readme",
        "Issues": "https://github.com/ugognw/mypy-upgrade/issues",
        "Source": "https://github.com/ugognw/mypy-upgrade"
    },
    "split_keywords": [
        "type",
        "checking"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3f2c406029ca603856198f2260198677572bf4aebb91dcddc0f7385856ba4fc7",
                "md5": "96dd0a9f37a90d11ede99f0fa7fe243d",
                "sha256": "ea32ebb049f7271e51ca8f7f3ed22560c8bdb2a2d90834a9571120455171bfb4"
            },
            "downloads": -1,
            "filename": "mypy_upgrade-0.0.1b6-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "96dd0a9f37a90d11ede99f0fa7fe243d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 21605,
            "upload_time": "2024-01-01T07:30:39",
            "upload_time_iso_8601": "2024-01-01T07:30:39.458083Z",
            "url": "https://files.pythonhosted.org/packages/3f/2c/406029ca603856198f2260198677572bf4aebb91dcddc0f7385856ba4fc7/mypy_upgrade-0.0.1b6-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "49f530230e363d2ffa02e8d3d30356ab76e92d9fd0f525a03ecb527906e46ff1",
                "md5": "7cf56f356956834f39e50dbfa0b59e04",
                "sha256": "c3c4ea29dec3fe6a911d6ee25608fc598ec7648efb4efb4b04b39b25f494cc2b"
            },
            "downloads": -1,
            "filename": "mypy_upgrade-0.0.1b6.tar.gz",
            "has_sig": false,
            "md5_digest": "7cf56f356956834f39e50dbfa0b59e04",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 18841,
            "upload_time": "2024-01-01T07:30:41",
            "upload_time_iso_8601": "2024-01-01T07:30:41.215729Z",
            "url": "https://files.pythonhosted.org/packages/49/f5/30230e363d2ffa02e8d3d30356ab76e92d9fd0f525a03ecb527906e46ff1/mypy_upgrade-0.0.1b6.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-01 07:30:41",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ugognw",
    "github_project": "mypy-upgrade",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "mypy-upgrade"
}
        
Elapsed time: 0.15738s