Adds the Optional type-hint to arguments where the default value is None
Project description
auto-optional
auto-optional: adds the Optional type-hint to arguments where the default value is None
Documentation: auto-optional.daanluttik.nl
Source Code: github.com/luttik/auto-optional
What does auto-optional do
The basic purpose of auto-optional is ensuring that whenever a default argument is None
the type annotation is Optional.
For example:
def foo(bar: str = None):
...
Would turn into
from typing import Optional
def foo(bar: Optional[str] = None):
...
Why would you want this
- Easily modify external libraries that didn't pay attention to proper use of optional to improve mypy lintingf.
- Force consistency in your own code-base:
Enforcing that
None
parameter implies anOptional
type. - Explicit is better than implicit — pep 20
In the media:
auto-optional was covered on PythonBytes #251
I love these little tools that you can run against your code that will just reformat them to be better.
— Michael Kennedy
Install
Install with pip install auto-optional
.
Run
After installing you can run auto-optional using auto-optional [paths...]
(if no path is provided it'll process the current working directory).
pre-commit
You can run auto-optional via pre-commit.
Add the following text to your repositories .pre-commit-config.yaml
:
repos:
- repo: https://github.com/luttik/auto-optional
rev: v0.3.1 # The version of auto-optional to use
hooks:
- id: auto-optional
Things of note
Things that are handled well
- The alternatives to
Optional
are supported, that means both;Union[X, None]
x | None
(allowed since python 3.10+).
- Existing imports are reused.
import as
andfrom typing import ...
statements are properly handled.
Things that need improvement
For all these points you can leave a thumbs-up if you want it. Also, I welcome pull-requests for these issues.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file auto-optional-0.3.2.tar.gz
.
File metadata
- Download URL: auto-optional-0.3.2.tar.gz
- Upload date:
- Size: 7.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.12 CPython/3.8.12 Linux/5.11.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dcd2af973badd67a89f1bef021a50b298882fc95935739a8818b43c5942118d8 |
|
MD5 | 05557555a29e624f80d8842018ba5f3a |
|
BLAKE2b-256 | 8f006b9c939c097e7d0ed0235213c87055807e29dad031b6e27a0f2e82e3cc54 |
File details
Details for the file auto_optional-0.3.2-py3-none-any.whl
.
File metadata
- Download URL: auto_optional-0.3.2-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.12 CPython/3.8.12 Linux/5.11.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19f9a368b1397db46bbb96701315c9799e11811c3a9a295a62282a4b68a1e01e |
|
MD5 | 6fc4f48ff546d17ebb5e4d777498cf6d |
|
BLAKE2b-256 | fdf82a44b9120478af2cbf3da9171e2979290c3560cae55bbb4b9381229a87f6 |