aspectlib 0.8.0


pip install aspectlib==0.8.0

Project Links

Meta
Author: Ionel Cristian Mărieș

Classifiers

Development Status
  • 4 - Beta

Intended Audience
  • Developers

License
  • OSI Approved :: BSD License

Operating System
  • Unix
  • POSIX
  • Microsoft :: Windows

Programming Language
  • Python :: 2.6
  • Python :: 2.7
  • Python :: 3
  • Python :: Implementation :: CPython
  • Python :: Implementation :: PyPy

Topic
  • Utilities
Build Status Coverage Status PYPI Package PYPI Package

aspectlib is an aspect-oriented programming, monkey-patch and decorators library. It is useful when changing behavior in existing code is desired.

Documentation

Docs are hosted at readthedocs.org: python-aspectlib docs.

Implementation status

Weaving functions, methods, instances and classes is completed.

Pending:

  • Whole-module weaving

  • Concerns (see docs/todo.rst)

If aspectlib.weave doesn’t work for your scenario please report a bug !

Requirements

OS:

Any

Runtime:

Python 2.6, 2.7, 3.3, 3.4 or PyPy

Python 3.2, 3.1 and 3.0 are NOT supported (some objects are too crippled).

Changelog

Version 0.8.0

  • Change aspectlib.debug.log to use aspectlib.Aspect and work as expected with coroutines or generators.

  • Fixed aspectlib.debug.log to work on Python 3.4.

  • Remove the undocumented aspectlib.Yield advice. It was only usable when decorating generators.

Version 0.7.0

  • Add support for decorating generators and coroutines in aspectlib.Aspect.

  • Made aspectlib raise better exceptions.

Version 0.6.1

  • Fix checks inside aspectlib.debug.log that would inadvertently call __bool__/__nonzero.

Version 0.6.0

  • Don’t include __getattribute__ in ALL_METHODS - it’s too dangerous dangerous dangerous dangerous dangerous dangerous … ;)

  • Do a more reliable check for old-style classes in debug.log

  • When weaving a class don’t weave attributes that are callable but are not actually routines (functions, methods etc)

Version 0.5.0

  • Changed aspectlib.debug.log:

    • Renamed arguments to call_args.

    • Renamed arguments_repr to call_args_repr.

    • Added call option.

    • Fixed issue with logging from old-style methods (object name was a generic “instance”).

  • Fixed issues with weaving some types of builtin methods.

  • Allow to apply multiple aspects at the same time.

  • Validate string targets before weaving. aspectlib.weave('mod.invalid name', aspect) now gives a clear error (invalid name is not a valid identifier)

  • Various documentation improvements and examples.

Version 0.4.1

  • Remove junk from 0.4.0’s source distribution.

Version 0.4.0

  • Changed aspectlib.weave:

    • Replaced only_methods, skip_methods, skip_magicmethods options with methods.

    • Renamed on_init option to lazy.

    • Added aliases option.

    • Replaced skip_subclasses option with subclasses.

  • Fixed weaving methods from a string target.

No dependencies