Note
End-of-life for xoutil 1.9
xoutil 1.9.7 will be the last release of xoutil that adds functionality. Future releases will be strictly bug-fix only.
Warning
Due to lack of time, we have decided to release this version without proper releases of 1.7.0 and 1.6.11.
- Introduces
xoutil.compat.iteritems_
,xoutil.compat.iterkeys_
andxoutil.compat.itervalues_
. execution context <xoutil.context>
are now aware of zope.interface interfaces; so that you may ask for a context name implementing a given interface, instead of the name itself.- Improves xoutil.formatter documentation.
- Several fixes to
xoutil.aop.classical
. It has sudden backwards incompatible changes. - before and after methods may use the *args, **kwargs idiom to get the passed arguments of the weaved method.
- Several minor fixes: Invalid warning about Unset not in xoutil.types
- Adds function
xoutil.fs.rmdirs
that removes empty dirs. - Adds functions
xoutil.string.safe_join
,xoutil.string.safe_encode
,xoutil.string.safe_decode
, andxoutil.string.safe_strip
; and the classxoutil.string.SafeFormatter
. - Adds function
xoutil.cpystack.iter_frames
.
- Fixes all copyrights notices and chooses the PSF License for Python 3.2.3 as the license model for xoutil releases.
- All releases from now on will be publicly available at github.
- Improves deprecation warnings by pointing to the real calling filename
- Removes all internal use of simple_memoize since it's deprecated. We now use
~xoutil.functools.lru_cache
.
- Created the whole documentation Sphinx directory.
- Removed xoutil.future since it was not properly tested.
- Removed xoutil.annotate, since it's not portable across Python's VMs.
- Introduced module
xoutil.collections
- Deprecated modules
xoutil.default_dict
,xoutil.opendict
in favor ofxoutil.collections
. - Backported
xoutil.functools.lru_cache
from Python 3.2. - Deprecated module
xoutil.memoize
in favor ofxoutil.functools.lru_cache
.
- Introduces a new module :py`xoutil.proxy`:mod:.
- Starts working on the sphinx documentation so that we move to 1.1 release we a decent documentation.
- Introduces xoutil.iterators.slides and xoutil.aop.basic.contextualized
- Fixes normalize path and other details
- Makes validate_attrs to work with mappings as well as objects
- Improves complementors to use classes as a special case of sources
- Simplifies importing of legacy modules
- PEP8
- Removes bugs that were not checked (tested) in the previous release.
Changes in AOP classic. Now you have to rename after, before and around methods to _after, _before and _around.
It is expected that the signature of those methods change in the future.
- Introducing a default argument for
xoutil.objects.get_first_of
. - Other minor additions in the code. Refactoring and the like.
- Extends the classical AOP approach to modules. Implements an extended version with hooks.
- 1.0.25.1: Makes classical/extended AOP more reliable to TypeError's in getattr. xoonko, may raise TypeError's for TranslatableFields.
2012-04-27. Release 1.0.24.
- Introduces a classical AOP implementation: xoutil.aop.classical.
- Introduces decorators: xoutil.decorators.instantiate and xoutil.aop.complementor
Allows annotation's expressions to use defined local variables. Before this release the following code raised an error:
>>> from xoutil.annotate import annotate >>> x1 = 1 >>> @annotation('(a: x1)') ... def dummy(): ... pass Traceback (most recent call last): ... NameError: global name 'x1' is not defined
- Fixes decorators to allow args-less decorators
- Includes a new module
xoutil.annotate
that provides a way to place Python annotations in forward-compatible way.