Skip to main content

Test mypy plugins, stubs, custom types.

Project description

mypy_test

Test mypy plugins, stubs, custom types.

Create a Python file, add comments to lines where you expect mypy to produce an error, run mypy_test, and it will check if actual errors are the same as you expect.

Features:

  • Flexible: supports every feature supported by mypy, does not enforce a project structure.
  • Fast: mypy gets run only once for all files at once. Also, no patching, no config generation.
  • Easy to learn: run mypy_test with the same arguments as you would run mypy, and it just works.
  • Lightweight: no dependencies except mypy.
python3 -m pip install mypy-test

Usage

  1. Write a file you want to test, add comments to the lines you expect to fail:

    a = 1
    reveal_type(a)  # R: builtins.int
    
  2. Run the tool:

    python3 -m mypy_test example.py
    

Writing the comments

  • The comments have the following format: SEVERITY: MESSAGE.
  • Severity is a one-letter violation severity as reported by mypy.
    • F for "fatal"
    • E for "error"
    • W for "warning"
    • N for "note"
    • R is a shorthand for N: Revealed type is "..."
  • Comment can be on the same line as the violation or on the line before.

Example:

var = 1.1
reveal_type(var)  # R: builtins.float

# E: Incompatible types in assignment (expression has type "str", variable has type "float")
var = ""

Tips:

  • The fastest way to know the severity and the message is to run mypy_test on the code and then copy-paste the resulting message.
  • Make separate functions for every test case, so it can have a nice description and a clean namespace.
  • Place all test files into one directory. For example, /types/ or /tests/types/.

Alternatives

  • pytest-mypy-plugins - pytest plugin, test cases described in a YAML file.
  • pytest-mypy-testing - pytest plugin, tests are described like pytest test cases (but they actually don't get run).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mypy-test-0.1.1.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

mypy_test-0.1.1-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file mypy-test-0.1.1.tar.gz.

File metadata

  • Download URL: mypy-test-0.1.1.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.25.1

File hashes

Hashes for mypy-test-0.1.1.tar.gz
Algorithm Hash digest
SHA256 556414f8dd79dce9d68608100c0c647fef78c17a708f95038631eb0cbf1bdf0c
MD5 4d587df15af3f30839783dc8f20d140f
BLAKE2b-256 029541b250b001a45ce3130c716716267b3930b6d80df0a5c1a2968469fb16c0

See more details on using hashes here.

File details

Details for the file mypy_test-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mypy_test-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.25.1

File hashes

Hashes for mypy_test-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a81feae9624fec7c41783e9da16a73938e0f06d11def635e06986143389e31f0
MD5 752fabd42d2598ab86849f737a453319
BLAKE2b-256 78d6797754af5ef0d03919b0126f9a196a5327ab0dfb712e9b677b4ee039a5e7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page