Add Cartcomm communicator and Comm.Create_cart method in fake_mpi module.
Allow proxy operators to have different shapes. Improve __str__.
Morph MPIDistributionIdentityOperator into IdentityOperator is comm size is 1.
Allow proxies to access operator attributes.
Remove unnecessary flags, since they are inherited.
Ensure flags are preserved in the the composition of operators with identity operator.
Reduction rules with ZeroOperator should return a fresh ZeroOperator. Improved testing.
Never reuse an array if the requested buffer has zero elements.
Add settingerr context manager.
Improve error messages.
Explicitly make the MPI reduction in-place.
Make IntegrationTrapezeOperator to be composed with the integrand operator.
Add two timers to measure the time spent in Operator's __call__ method and in MPI operations.
Add environment variable PYOPERATORS_NO_MPI to prevent importing mpi4py.
Add pool_threading context manager.
Rename openmp_num_threads -> omp_num_threads.
Add MPI rank in strinfo.
Move environment handling in config.
Rename openmp_num_threads -> omp_num_threads (tests).
Update hooks.py file.