Skip to main content

Aspect-Oriented Programming toolkit.

Project description

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.1

  • Use simpler import for the py3support.

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.

Project details


Release history Release notifications

History Node

1.4.2

History Node

1.4.1

History Node

1.4.0

History Node

1.3.3

History Node

1.3.2

History Node

1.3.1

History Node

1.3.0

History Node

1.2.2

History Node

1.2.1

History Node

1.2.0

History Node

1.1.1

History Node

1.1.0

History Node

1.0

History Node

0.9.0

This version
History Node

0.8.1

History Node

0.8.0

History Node

0.7.0

History Node

0.6.1

History Node

0.6.0

History Node

0.5.0

History Node

0.4.1

History Node

0.4.0

History Node

0.3.1

History Node

0.3.0

History Node

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
aspectlib-0.8.1.tar.gz (34.9 kB) Copy SHA256 hash SHA256 Source None Apr 1, 2014

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page