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.2.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

mypy_test-0.1.2-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for mypy-test-0.1.2.tar.gz
Algorithm Hash digest
SHA256 cd20009011613d1674c7c1604b9cad1eec74943330ee33b6fe80e610f25e0d60
MD5 b5157cf968cdd3a5af59fba69caea3c4
BLAKE2b-256 45489f07513d7052e31b7c557b03a55117586f44f2129d1f7641853e1b2d277d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for mypy_test-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 66f1f33d9a416926bd651f46088da9ef5d606be5246f28cbacc0576d680ef8a1
MD5 680081a17c324cc5a543ef1fce5da11c
BLAKE2b-256 c03a38bb0a04552537e0c24eeb21d110f7a0e45f670ebc8ced413c8cadc7d322

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