---------------------------
- use the registration framework for epydoc to make it aware of partials.
- monkeypatch pydoc.isdata on the fly to be aware of partials. This
makes pydoc output far more useful (and matches what is expected).
- experimental py3.1 support via 2to3. setup.py automatically will
convert the source if invoked by a py3k interpretter.
- snakeoil.osutils.readlines was expanded out into multiple functions,
utf8, ascii, utf8_strict, ascii_strict, and bytes. 'Strict' means
that we always want it decoded. Non strict is useful when the file
has some utf8 in it you don't care about, and don't want to take
the codecs.open performance hit under py2k. Under py3k, it's always
decoded (required due to py3k changes).
- snakeoil.osutils.readfile was expanded out into multiple functions,
utf8, ascii, ascii_strict, and bytes. Use the appropriate one- this
will make py3k compliance far easier.
- optimization in snakeoil.osutils.readlines; for small files, it's
roughly a 4-8% speedup, for larger files (over half a meg) growing
past 25%. This puts its performance at roughly 2x over the open
equivalent for small files, and near 10-15% faster for larger files.
- snakeoil.klass grew new properties to ease common tasks;
jit_attr (invoke the target func to get the value, cache the value,
return that value till the cached value is wiped).
alias_attr (when that attr is accessed, hand the attribute the alias
targets).
- snakeoil.compatibility additions; next, cmp, file_cls, and is_py3k, next,
intern, sort_cmp (to paper over sorted no longer accepting a cmp arg), and
sort_cmp (to paper over list.sort no longer accepting a cmp arg).
- snakeoil.klass.cached_hash; decorator to automatically cache the results
of the target function. primarily intended for __hash__ implementations.
- snakeoil.klass.inject_richcmp_methods_from_cmp ; passed a class scope,
it'll automatically add __le__, __lt__, __gt__, __eq__, etc, via invoking
__cmp__ if the python version is py3k.
- snakeoil/caching_2to3.py, a caching form of 2to3 that relies on an
env var 'PY2TO3_CACHEDIR' to determine where to store cached versions
of converted source. Algorithm behind the cache is md5 based- if the
md5 of the targeted source exists in the cachedir, it reuses the results
from the previous run instead of invoking 2to3. Massive performance
speed up from this- uncached, setup.py test is ~32s. cached, ~1.9s.
That said, this is experimental- bug reports welcome however.
- setup.py test has been heavily enhanced- now it does its testing
against a standalone install of the source, should have zero
side affects on the underlying source.
- paper over a bug in cElementTree where it fails to import fully, but
doesn't raise ImportError. This address upstream python bug 3475.
- snakeoil no longer installs a bundled copy of elementtree if the
python version is 2.5 or higher (no need, python bundles its own).
- snakeoil.test.test_demandload_usage now supports blacklisting- this
is primarily useful for blocking py3k specific modules from being checked
under py2k, and vice versa.
- in test_demandload_usage helper functionality it's possible for
a file to disappear under its feet- ignore it, lock files from
trial can trigger this. Note it via logging.warn, and continue.