We follow Semantic Versions since the 1.0.0
release.
Versions before 1.0.0
are 0Ver
-based:
incremental in minor, bugfixes only are patches.
See (0Ver)[https://0ver.org/].
Breaking: now @pipeline
requires a container type when created:
@pipeline(Result)
or @pipeline(Maybe)
Maybe
and Result
now has success_type
and failure_type
aliases
Adds Result.unify
utility method for better error type composition
We now support dry-python/classes
as a first-class citizen
Adds io_squash
to squash several IO
containers into one container
with a tuple inside, currently works with 9
containers max at a time
Adds untap
function which does convert return type to None
Fixes that containers were not usable with multiprocessing
Changes the inheritance order, now BaseContainer
is the first child
Fixes that Nothing
had incorrect docstrings
Now generated
package is protected
Updates poetry
to 1.0
Breaking: now pipe()
does not require argument to be the first value,
instead it is required to use: pipe(f1, f2, f3, f4)(value)
Breaking: dropped everything from returns/__init__.py
,
because we now have quite a lot of stuff
Breaking: dropped support of zero argument functions for Nothing.fix
Breaking: dropped support of zero argument functions for Nothing.rescue
Maybe
now has .failure()
to match the same API as Result
Adds identity
function
Adds tap
function
Now pipe
allows to pipe 8 steps
Adds coalesce_result
and coalesce_maybe
coverters
Fixes that code inside .fix
and .rescue
of Maybe
might be called twice
Now all methods have doctests
Updates docs about Success
and _Success
, Failure
and _Failure
Updates docs about @pipeline
Typechecks async functions and decorators inside typesafety/
tests
Breaking: python>=3.7,<=3.7.2
are not supported anymore,
because of a bug inside typing
module
Breaking: Now bind
does not change the type of an error
Breaking: Now rescue
does not change the type of a value
Breaking: Renames map_failure
to alt
Adds box()
function with the ability
to box function for direct container composition like:
a -> Container[b]
to Container[a] -> Container[b]
Adds IO.lift()
function to lift a -> a
to IO[a] -> IO[a]
Adds pipe()
function to pipeline.py
Adds __hash__()
magic methods to all containers
Changes Any
to NoReturn
in Success
and Failure
Now all type parameters in Result
, Maybe
, and IO
are covariant
Massive docs rewrite
Updates mypy
version
Updates wemake-python-styleguide
and introduces nitpick
Updates pytest-plugin-mypy
, all tests now use yml
Provides a bunch of primitive interfaces to write your own containers
Adds .map_failure()
method
Adds join()
function to join nested containers
Fixes type of Maybe.fix
and Maybe.rescue
to work with both lambda: 1
and lambda _: 1
Improves README
Reintroduces the Maybe
container, typed!
Introduces converters from one type to another
Adds mypy
plugin to type decorators
Complete rewrite of Result
types
Partial API change, now Success
and Failure
are not types, but functions
New internal types introduced: FixableContainer
and ValueUnwrapContainer
Fixes issue when you could return IO
container from Result.bind
Fixes @pipeline
return type
Reapplied all types to .py
files
Improved docs about IO
and Container
concept
Adds docs about container composition
Moves from Alpha
to Beta
Adds IO
marker
Adds unsafe
module with unsafe functions
Changes how functions are located inside the project
Fixes container type in @pipeline
Now is_successful
is public
Now raise_exception
is public
Changes how str()
function works for container types
Total rename to “container” in the source code
safe
and pipeline
now supports asyncio
is_successful
now returns Literal
types if possible
Adds compose
helper function
Adds public API to import returns
Adds raise_exception
helper function
Adds full traceback to .unwrap()
Updates multiple dev-dependencies, including mypy
Now search in the docs is working again
Relicenses this project to BSD
Fixes copyright notice in the docs
Moves all types to .pyi
files
Renames all classes according to new naming pattern
HUGE improvement of types
Renames fmap
to map
Renames do_notation
to pipeline
, moves it to functions.py
Renames ebind
to rescue
Renames efmap
to fix
Renames container
to Container
Removes Maybe
container, since typing does not have NonNullable
type
returns
¶The project is renamed to returns
and moved to dry-python
org.
Adds .pyi
files for all modules,
to enable mypy
support for 3rd party users
Adds Maybe
container
Adds immutability and __slots__
to all containers
Adds methods to work with failures
Adds safe
decorator to convert exceptions to Result
container
Adds is_successful()
function to detect if your result is a success
Adds failure()
method to unwrap values from failed containers
Changes the type of .bind
method for Success
container
Changes how equality works, so now Failure(1) != Success(1)
Changes how new instances created on unused methods
Improves docs
Changes how PyPI
renders package’s page
Improves README
with new badges and installation steps
Initial release. Featuring only Result
and do_notation
.