A Python module providing `PyOptional`, a Java-like `Optional` type for Python 3.9+.
Project description
PyJOptional
A Python module providing the PyOptional class/type, a Java-like Optional wrapper for Python values.
HOWTO
user@machine:~$ pip install pyjoptional
from pyoptional.pyoptional import PyOptional
p: PyOptional[int] = PyOptional.of(1)
p1: PyOptional = PyOptional.of_nullable(None)
p2: PyOptional = PyOptional.empty()
Comparison with the Java Optional
PyOptional.of()corresponds toOptional.of().PyOptional.of_nullable()corresponds toOptional.ofNullable().PyOptional.empty()corresponds toOptional.empty().PyOptional.is_empty()corresponds toOptional.isEmpty().PyOptional.is_present()corresponds toOptional.isPresent().PyOptional.filter()corresponds toOptional.filter().PyOptional.get()corresponds toOptional.get().PyOptional.or_else()corresponds toOptional.orElse().PyOptional.or_else_get()corresponds toOptional.orElseGet().PyOptional.or_else_raise()corresponds toOptional.orElseThrow()(both with and without a suppliedException).PyOptional.or_else_throwis an alias ofOptional.or_else_raise.PyOptional.or_new_pyoptional()corresponds toOptional.or()(becauseoris a Python keyword).PyOptional.if_present()corresponds toOptional.ifPresent().PyOptional.if_present_or_else()corresponds toOptional.ifPresentOrElse().PyOptional.map()corresponds toOptional.map().PyOptional.flatMap()corresponds toOptional.flatMap().
Additionally, PyOptional.__eq__, PyOptional.__hash__, PyOptional.__str__, and PyOptional.__repr__ override the default Python implementation of such methods, much like the Java Optional.equals(), Optional.hashCode(), and Optional.toString() methods.
Finally, there is no correspondent of the Java Optional.stream() method, as Python has no native Stream class.
Comparison with the Python Optional
The native Python Optional[SomeType] type is just syntactic sugar for SomeType | None. Therefore, it does not provide any of the API methods of PyOptional.
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
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 pyjoptional-1.1.3.tar.gz.
File metadata
- Download URL: pyjoptional-1.1.3.tar.gz
- Upload date:
- Size: 18.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3520655c04bb63839ad52a68960179a5c74c4f03dc8d1f74dc578f7ffbd05bfd
|
|
| MD5 |
3623b831739f251ca18232f87e3351ec
|
|
| BLAKE2b-256 |
813ac595e4d5df6a1fb0af30dcb402bc4bb7e9247ba2789ff3dcf0a7f99a58b1
|
File details
Details for the file pyjoptional-1.1.3-py3-none-any.whl.
File metadata
- Download URL: pyjoptional-1.1.3-py3-none-any.whl
- Upload date:
- Size: 18.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79dac11b714fa53d3ad8bbff38f208f7801455cbab329837aa9827d45ffd427b
|
|
| MD5 |
c8109a1e157956f5af7ad6656f6f6121
|
|
| BLAKE2b-256 |
781783c0d7cd9bae57515e91928f60aa81d3d81301db0b8dc67981d29ec1818c
|