Skip to main content

A Python module providing `PyOptional`, a Java-like `Optional` type for Python 3.8+.

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 to Optional.of().
  • PyOptional.of_nullable() corresponds to Optional.ofNullable().
  • PyOptional.empty() corresponds to Optional.empty().
  • PyOptional.is_empty() corresponds to Optional.isEmpty().
  • PyOptional.is_present() corresponds to Optional.isPresent().
  • PyOptional.filter() corresponds to Optional.filter().
  • PyOptional.get() corresponds to Optional.get().
  • PyOptional.or_else() corresponds to Optional.orElse().
  • PyOptional.or_else_get() corresponds to Optional.orElseGet().
  • PyOptional.or_else_raise() corresponds to Optional.orElseThrow() (both with and without a supplied Exception).
  • PyOptional.or_else_throw is an alias of Optional.or_else_raise.
  • PyOptional.or_new_pyoptional() corresponds to Optional.or() (because or is a Python keyword).
  • PyOptional.if_present() corresponds to Optional.ifPresent().
  • PyOptional.if_present_or_else() corresponds to Optional.ifPresentOrElse().
  • PyOptional.map() corresponds to Optional.map().
  • PyOptional.flatMap() corresponds to Optional.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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyjoptional-1.0.6.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

pyjoptional-1.0.6-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

Details for the file pyjoptional-1.0.6.tar.gz.

File metadata

  • Download URL: pyjoptional-1.0.6.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for pyjoptional-1.0.6.tar.gz
Algorithm Hash digest
SHA256 e921c87bd39886b716e7bef08c1432add72da46affd758085a7749c54d92ae7f
MD5 74b97685992859c0a92a6a03219e2e3a
BLAKE2b-256 bb9b83fd260af606776afb2e0c1379b895b56af4b617f1c38c7f317cabc42322

See more details on using hashes here.

File details

Details for the file pyjoptional-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: pyjoptional-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 16.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for pyjoptional-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 cef7848809eea55bab7ae5d4491749e493fca33f982dfba0b69ca52331de3590
MD5 1117bab2339e6763c66c23b58c988e2b
BLAKE2b-256 3a958f6256a7443c484e82e525149efc09b7e97559202a4101e7e73e42c18fe4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page