Skip to main content

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

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pyjoptional-1.1.2.tar.gz
Algorithm Hash digest
SHA256 38dbf218027f65f4efe350d3798bb22108ea4027557cd937c83a6a8e78c828d7
MD5 0934317e9e47573b6406575fd7444356
BLAKE2b-256 5a788b721028248b9d7de3b8b60da3c486b091c5af7c2107b05e54a969ce3cc7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyjoptional-1.1.2-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.5

File hashes

Hashes for pyjoptional-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cf10b17eb2599a1d9cef4e1b6f2f5fb61e7da3acdb160fae805e5aa750db5cc8
MD5 20f30bdbfbe48cbe1755e8a50a605178
BLAKE2b-256 bee1e8dafc986d2907f38d5c816759169b9db2863e31e64d6f56d67142de6bd2

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