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

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyjoptional-1.0.7.tar.gz
  • Upload date:
  • Size: 16.3 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.7.tar.gz
Algorithm Hash digest
SHA256 e4e5e69e21130b4eb737e9678e9b7f990cf51665349537e58b31622bc3ab2f76
MD5 364f7e90fc5ceafae75d23a3cebb66f5
BLAKE2b-256 59ff3dcd32e748030691f2c2198489e1dc29322195259e25cf154cd5a3052775

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyjoptional-1.0.7-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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 beb93a8602f8670d547134fb84d9d8d37e808327e631f3c355c461cba0423351
MD5 c17b20f1e18e1b994667bf48dd6544ac
BLAKE2b-256 1735e603ab5a27083dd4eac76b06f1d62db0efe0bc9dac406ed66438aeeaa4c8

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