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.9.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

pyjoptional-1.0.9-py3-none-any.whl (18.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyjoptional-1.0.9.tar.gz
  • Upload date:
  • Size: 16.7 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.9.tar.gz
Algorithm Hash digest
SHA256 44a5a34f54563b393b9ff277d6fd1f35c53114ae5b7598386b2c23d8545c4cbb
MD5 11cdcf96c1cdc9e25113ebc1b4d99450
BLAKE2b-256 0cb3f8f44afd5313d9422857d6dcca1094d1ca2b6a5b3f80f0c1a635453ccf2a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyjoptional-1.0.9-py3-none-any.whl
  • Upload date:
  • Size: 18.0 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.9-py3-none-any.whl
Algorithm Hash digest
SHA256 6f01de5c1bb62e56809291bce354b24112a8947c506226a0d54a93980d20338f
MD5 cb348f492dfba7f3fd26a0b19b82fe82
BLAKE2b-256 140747c939d87d9c74e5de12e299dc7bfa27f4b0080427c4388e7456a919912a

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