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.2.0 # 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
Hashes for auto_optional-0.3.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 865991a0ef47f27effa1a68538d948b06f70d5230ec0cf69feb94c04fa35de15 |
|
MD5 | 7040d80809a6fa839d68fe262c50415f |
|
BLAKE2b-256 | f74a3a80e00927bbe852ea03dd40b9753d13504068b4453d6a9881da034ad868 |