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
Noneparameter implies anOptionaltype. - 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
Optionalare supported, that means both;Union[X, None]x | None(allowed since python 3.10+).
- Existing imports are reused.
import asandfrom 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.
Metadata
Release files for auto-optional 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| auto-optional-0.3.2.tar.gz | 7.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| auto_optional-0.3.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.6 kB
Release files / auto-optional-0.3.2.tar.gz
| Download URL | auto-optional-0.3.2.tar.gz |
|---|---|
| Size | 7.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dcd2af973badd67a89f1bef021a50b298882fc95935739a8818b43c5942118d8
|
|
BLAKE2b-256 checksum How to use checksums |
8f006b9c939c097e7d0ed0235213c87055807e29dad031b6e27a0f2e82e3cc54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.12 CPython/3.8.12 Linux/5.11.0-1025-azure
|
Release files / auto_optional-0.3.2-py3-none-any.whl
| Download URL | auto_optional-0.3.2-py3-none-any.whl |
|---|---|
| Size | 8.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
19f9a368b1397db46bbb96701315c9799e11811c3a9a295a62282a4b68a1e01e
|
|
BLAKE2b-256 checksum How to use checksums |
fdf82a44b9120478af2cbf3da9171e2979290c3560cae55bbb4b9381229a87f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.12 CPython/3.8.12 Linux/5.11.0-1025-azure
|
Security for auto-optional 0.3.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.