Skip to main content

Mypy plugin to prevent passing float type to Decimal to avoid imprecisions.

Project description

Mypy non-float Decimal plugin

Restricts passing float numbers to Decimal

Why?

The implementation of floating point numbers can cause imprecisions in results. To avoid this problem you can use Decimal type, however you still need to avoid passing float as its parameter:

>>> Decimal(1.02)
Decimal("1.020000000000000017763568394002504646778106689453125")
>>> Decimal("1.02")
Decimal("1.02")

This plugin is meant to spot occurrences where float is passed to Decimal in your code.

Usage

  • install plugin
pip install mypy-nonfloat-decimal
  • add it into list of mypy plugins in your mypy config (mypy.ini)
[mypy]
plugins=mypy_nonfloat_decimal
  • upon running mypy will detect float passed to Decimal and report it as an error (example.py):
from decimal import Decimal
Decimal(1.02)
$ mypy --config-file ./mypy.ini ./example.py

example.py:2: error: Invalid type passed to Decimal (expected "Union[int, str, Decimal]"), got float instead

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-nonfloat-decimal-0.1.7.tar.gz (3.5 kB view details)

Uploaded Source

Built Distribution

mypy_nonfloat_decimal-0.1.7-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

Details for the file mypy-nonfloat-decimal-0.1.7.tar.gz.

File metadata

  • Download URL: mypy-nonfloat-decimal-0.1.7.tar.gz
  • Upload date:
  • Size: 3.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.9.1 Darwin/20.6.0

File hashes

Hashes for mypy-nonfloat-decimal-0.1.7.tar.gz
Algorithm Hash digest
SHA256 19f5f0273b9bd9d57ea681a8cb5731304a002118ca21f1ab5631c65731ad0a75
MD5 b0087998bae2d0b782f67ab1939422a8
BLAKE2b-256 146f4191a510d4cf4a27a67bc8776f4ee2cd005c85d4bde3890659f757017dde

See more details on using hashes here.

File details

Details for the file mypy_nonfloat_decimal-0.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for mypy_nonfloat_decimal-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 5a8faf497bf0ee07702627474bd629d864ca17f83e287db50c6dd968c94b3af7
MD5 32450aa84ad3d33339140670d1fa6037
BLAKE2b-256 9830c3fc73cab0451e815427a138fc07224276f47e29f9fe5e54c7da6ec13c1c

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