Replace `Optional[T]` by `Union[T, None]`! 🎉
Project description
no-optional
This codemod replaces typing.Optional[T] by typing.Union[T, None] in the codebase.
Why?
This tool was inspired by a tweet from Sebastián Ramírez (as you see below), and a conversation between us.
As the tweet says, we have two reasons for doing this:
- It's more explicit to write
Union[str, None]thanOptional[str]. Mainly becauseOptional[str]doesn't mean that the attribute is optional. It only means that it acceptsNoneas a possible value. - On Python 3.10+ you can type annotate as
str | Noneinstead of the above two. Which is more similar toUnion[str, None]thanOptional[str].
Installation
pip install no-optional
Usage
Run the following on the repository you want to format:
python -m no_optional <files>
You can also use the pre-commit. Add the following to your .pre-commit-config.yaml file:
- repo: https://github.com/Kludex/no-optional
rev: 0.4.0
hooks:
- id: no_optional
License
This project is licensed under the terms of the MIT license.
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 Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file no_optional-0.4.0-py3-none-any.whl.
File metadata
- Download URL: no_optional-0.4.0-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4a625f7abbbaeef3b77ed88f53a44134c6f2d5a365378bb4a0197d94b95c998
|
|
| MD5 |
adb551020e7b385aab619005b4450e2a
|
|
| BLAKE2b-256 |
9a64b6d3d2e446c7c0b7d815359c2991724253be769a4e744ae4658a3caf8540
|