Description
Library provided implementation Optional object similar to Java optional. Using this object, You will never check if x is None.
Install
pip install pyOptional
Usage
Examples
from pyOptional import Optional
optional_with_value = Optional('ABC')
optional_empty = Optional(None)
print(optional_with_value)
print(optional_empty)
output:
Optional of: ABC Optional empty
Methods:
get()
Returns value or throw NoneValueError exception on empty optional
print(optional_with_value.get())
print(optional_empty.get())
output:
ABC Traceback (most recent call last): ... pyOptional.exceptions.NoneValueError: Called get on empty optional
get_or_else(default_value)
Returns value if exists or default_value when empty
print(optional_with_value.get_or_else('XYZ'))
print(optional_empty.get_or_else('XYZ'))
output:
ABC XYZ
get_or_else_get(callable_for_generate_default_value)
Returns value if exists, otherwise result of callable_for_generate_default_value
def gen_value():
return 'QWERTY'
print(optional_with_value.get_or_else_get(gen_value))
print(optional_empty.get_or_else_get(gen_value))
print(optional_empty.get_or_else_get(lambda: 'From lambda'))
output:
ABC QWERTY From lambda
get_or_raise(exception_class, *args, **kwargs) Returns value if exists or raise provided exception
print(optional_with_value.get_or_raise(FileNotFoundError, 'Some message'))
print(optional_empty.get_or_raise(FileNotFoundError, 'Some message'))
output:
ABC Traceback (most recent call last): ... FileNotFoundError: Some message
map(callable_to_transform_value)
Returns optional of other value (result returned by callable_to_transform_value) or Optional empty if source Optional was empty
print(optional_with_value.map(lambda val: val*2))
print(optional_empty.map(lambda val: val*2))
output:
Optional of: ABCABC Optional empty
flat_map(callable_to_transform_value)
Similar to map, but if source Optional contains another Optionals, result will contain single Optional
nested_val_optional = Optional(Optional(Optional(8)))
nested_empty_optional = Optional(Optional(Optional(None)))
print(nested_val_optional.map(lambda val: val*3))
print('---------------------')
print(nested_empty_optional.map(lambda val: val*3))
print('---------------------')
print(nested_val_optional.flat_map(lambda val: val*3))
print('---------------------')
print(nested_empty_optional.flat_map(lambda val: val*3))
output:
Traceback (most recent call last): ... TypeError: unsupported operand type(s) for *: 'Optional' and 'int' --------------------- Traceback (most recent call last): ... TypeError: unsupported operand type(s) for *: 'Optional' and 'int' --------------------- Optional of: 24 --------------------- Optional empty
if_present(func)
Call func with optional value if exists. If optional is empty, do nothing.
optional_with_value.if_present(lambda val: print('found value ' + val))
optional_empty.if_present(lambda val: print('found value ' + val))
output:
found value ABC
is_present()
return True if Optional not empty, otherwise False
print(optional_with_value.is_present())
print(optional_empty.is_present())
output:
True False
Static Methods:
empty()
return an empty Optional
print(Optional.empty())
output:
Optional empty
Metadata
Release files for pyOptional 1.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pyOptional-1.1.2-py3-none-any.whl | Python 3 | none | any | Details for pyOptional-1.1.2-py3-none-any.whl |
Release files / pyOptional-1.1.2-py3-none-any.whl
| Download URL | pyOptional-1.1.2-py3-none-any.whl |
|---|---|
| Size | 6.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
48260246fd69b1a594611571dc6eba980f6c0aea6fc48d025033ef734ee7f5bb
|
|
BLAKE2b-256 checksum How to use checksums |
75668b681423d90da3297eb92831cd874f58ccd1a6e234c2b42df48f53c0ee95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for pyOptional 1.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.