Package: venusifork
Venusian is a library which allows framework authors to defer
decorator actions.  Instead of taking actions when a function (or
class) decorator is executed at import time, you can defer the action
usually taken by the decorator until a separate “scan” phase.See the “docs” directory of the package or the online documentation athttp://docs.pylonsproject.org/projects/venusian/en/latest/2.0a3 (2016-01-27)Do an additional check to avoid scanning modules inserted bysixfor Python 3 compatibility.sixassumes these modules exist in
Python but some of them, likegdbm, cannot always be compiled,
so don’t scan these. This hack may actually not be strictly proper
as it is possible for an outer module to be ignored while an inner
module is allowed by anignorefunction, but we’ll not worry
about that case for now.2.0a2 (2014-07-07)NOTEThis will hopefully be in Venusian proper in Version 1.1; this
fork is just so I can make progress with the new recursive option.Add arecursiveoption to the.scan()method to allow the
scanning of packages non-recursively (scan__init__.pyonly).Some refactoring of internals from nested functions into separate
methods.1.0 (2014-06-30)Fix an issue under PyPy > 2.0 where attached decorators may not be found.Drop support of Python 2.4 / 2.5 / Jython.Addliftandonlyliftedfromclass decorators to allow for inheritance
of venusian decorators attached to superclass methods.  See the API
documentation for more information.Fix bug where otherwise undecorated subclass of a superclass that had
venusian decorators on it would inherit its superclass’ decorations.
Venusian decorators should have never been inherited implicitly.  Seehttps://github.com/Pylons/venusian/issues/11#issuecomment-49773521.0a8 (2013-04-15)Passignoreargument along recursively towalk_packagesso custom
ignore functions will ignore things recursively.  Seehttps://github.com/Pylons/venusian/pull/16Don’t run tox tests under Python 2.4 anymore (tox no longer supports 2.4).1.0a7 (2012-08-25)Venusian now works on Python 3.3b2+ (importlib-based).Use nose-exclude instead of relying on fragile module-scope code to ensure
we don’t get errors resulting from import of fixture code during
“nosetests”.Bug fix: no longer suppressImportErrorwhile scanning by default.  If
you want to suppressImportErrorwhile scanning, you’ll now need use anonerrorcallback as described in the documentation.1.0a6 (2012-04-23)Don’t ignore decorated objects within their original locations if they
happen to be imported into another module (removeseenset from invoke
in venusian scanning).  Seehttps://github.com/Pylons/venusian/pull/13.1.0a5 (2012-04-21)Slightly less sucky way to ignore objects during scanning that are only
imported into a module but not actually defined there.  See 1.0a4 change
notes for rationale.  Now instead of checking whether the module of thescanned objectmatches the module being scanned, we check whether the
module of theVenusian attachmentmatches the module being scanned.  This
allows some genuine uses of imported objects as Venusian scan targets while
preventing inappropriate double-scanning of objects that have a venusian
attachment which just happen to be imported into other scanned modules.Adddevanddocssetup.py commands (ala Pyramid).1.0a4 (2012-04-16)Attempt to ignore objects during scanning that are only imported into a
module but not actually defined there.  This is a semantics change, but
it’s the right thing to do, because I found myself facing a situation like
this:# in a module named "one"

from two import anotheradecoratedthing
@adecorator
def adecoratedthing(): pass

# and scanning both modules
scan('one')
scan('two')In this case you’d wind up with two repeated registrations for
“anotherdecoratedthing”, which isn’t what anyone expects.1.0a3 (2012-02-08)Add anignoreargument to thescanmethod of aScanner.  This
argument allows a user to ignore packages, modules, and global objects by
name during ascan.  See the “ignore Scan Argument” in the narrative
documentation for more details.1.0a2 (2011-09-02)Close ImpLoader file handle to avoid resource warnings on Python 3.1.0a1 (2011-08-27)Python 3 compatibility.Allow anonerrorcallback to be passed toScanner.scan().0.9 (2011-06-18)Prevent corner case scan-time exception when trying to introspect insane
module-scope objects.  Seehttps://github.com/Pylons/venusian/issues/5.0.8 (2011-04-30)Normal “setup.py test” can’t support running the venusian tests under py
2.4 or 2.5; when it scans the ‘classdecorators’ fixture, it barfs.  To get
around this, we used to depend onnoseinsetup_requiresand tell
“setup.py test” to use nose by setting test_suite to “nose.collector” but
we can’t anymore because folks use Venusian in systems which install from
pip bundles; pip bundles do not support setup_requires.  So, sorry, we’re
painted into a corner; at this point you just have to know to install nose
and run “setup.py nosetests” rather than “setup.py test”.  Or just run
“tox” which tests it under all Pythons.0.7 (2011-03-16)Use Pylons theme in documentation.Fix orphaned pyc test on pypy.Fix GitHub Issue #1: subclasses of decorated classes that do not
have any decorations should not inherit the decorations of their
parent classes.Fix GitHub Issue #2: scans should only “find” each object once per
scan, regardless of how many modules that object is imported into.0.6 (2011-01-09)Some metaclasses (Elixir’s) don’t raise an AttributeError when asked for a
nonexistent attribute during a scan.  We now catch all exceptions when
interrogating an object for__venusian_callbacks__rather than just
AttributeError.0.5 (2010-12-19)Makecodeinfoattribute available as an attribute of the AttachInfo
object. It will be a tuple in the form(filename, lineno, function, sourceline)representing the context of the venusian decorator.  Eg.('/home/chrism/projects/venusian/tests/test_advice.py',81, 'testCallInfo', 'add_handler(foo,bar)')0.4 (2010-09-03)Bug fix: when a venusian decorator used as a class decorator was
used against both a classanda subclass of that class, the
superclass and subclass would effectively share the same set of
callbacks.  This was not the intent: each class declaration should
have its own local set of callbacks; callbacks added via decorations
should not be inherited, and a superclass should not receive its
subclass’ decorations.Arrange test fixtures into a single directory.0.3 (2010-06-24)Ignore orphaned modules (.pycor.pyofiles without a
corresponding.pyfile) during a scan.0.2 (2010-04-18)Add the concept of scan categories (see the “Scan Categories”
section of the documentation) to allow an application to make use of
more than one Venusian-using framework simultaneously.0.1 (2010-02-15)Initial release.