Python's None Wrapper, inspired by java.util.Optional
Project description
py_nullable
Introduction
Python's None Wrapper, inspired by java.util.Optional
Getting Started
Installing
install from PyPI with:
python -m pip install py_nullable
install from source with:
git clone https://github.com/miyamo2theppl/py_nullable.git
cd py_nullable
python -m pip install .
Simple usage
if you want to get value.
from py_nullable import Nullable
nullable: Nullable[str] = Nullable[str]("some string")
if nullable.isPresent()
print(nullable.get()) # Prints some string
if you want to generate a new Nullable from an existing Nullable with the mapping function.
from typing import Callable
from py_nullable import Nullable
nullable: Nullable[str] = Nullable[str]("1234")
callback: Callable[[str], int] = lambda x: int(x) * 2
result: Nullable[int] = nullable.map(callback)
print(result.get()) # Prints 2468
if you want to refactor the return value from Optional[T] to Nullable[T].
from yourpackage import YourClass
from py_nullable import Nullable, nullable_wrap
in_memory_db: dict[str, YourClass] = {"A001": YourClass("foo")}
@nullable_wrap
def find_by_id(id: str) -> Optional[YourClass]:
return in_memory_db.get(id)
nullable: Nullable[YourClass] = find_by_id("B001")
print(nullable.isEmpty()) # Prints True
Contributing
Create a feature branch
git checkout -b feature_{example}
Set up your environment
python -m venv .venv
.venv/bin/activate
pip install -r dev_requirements.txt
pip install -e .
Running Tests
pytest --cov py_nullable --cov-branch --cov-report=html
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
py_nullable-0.3.tar.gz
(10.4 kB
view hashes)
Built Distribution
Close
Hashes for py_nullable-0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0be36debf2834c8dae8f5f6197b14f700964581dcddd85828f7869b7a92f7f1 |
|
MD5 | 7e3481fc827145297cdacad8a6322eeb |
|
BLAKE2b-256 | 743ec705724ac65837ba1cc71b0ab844455f27a7ce8fc18f33c81e3471a57b73 |