Skip to main content

Python Aspect Oriented Programming

Project description

b3j0f.aop: Aspect Oriented Programming for Python

This library aims to improve python aspects oriented programming efficiency among several existing library.

Improvements:

  1. Free and unlimited access: no limit to idea and to knowledge sharing with the license MIT.

  2. Performance:

    • less memory consumption in using the __slots__ class property.

    • less time on (un-)weaving and advice application improvement with binary python encoding and in using constants var in code.

    • (dis/en)abling advices without remove them in using dedicated Advice class.

  3. Easy to use:

    • joinpoint matching with function or regex.

    • distributed programming:

      • interception context sharing in order to ease behaviour sharing between advices.

      • uuid for advice identification in order to ease its use in a distributed context.

    • maintenable with well named variables and functions, comments and few lines.

    • extensible through pythonic code (PEP8), same logic to function code interception and concern modularisation with one module by joinpoint or advice.

    • respect of aspects vocabulary in order to ease its use among AOP users.

    • close to callable python objects in weaving all types of callable elements such as (built-in) functions, (built-in) class, (built-in) methods, callable objects, etc.

    • advices are callable objects.

    • Unit tests for all functions such as examples.

  4. Benchmark:

    • speed execution

Limitations:

  • do not weave on builtin classes

State of the art:

Related to improving criteria points (1. Free and unlimited access, etc.), a state of the art is provided here.

Library

Url

License

Execution

Use

Benchmark

Compatibility

b3j0f.aop

http://tinyurl.com/kaukuco

MIT

+++

+++

+++

+++ (>=2.6)

pyaspects

http://tinyurl.com/n7ccof5

GPL 2

+++

aspects

http://tinyurl.com/obp8t2v

LGPL 2.1

aspect

http://tinyurl.com/lpd87bd

BSD

spring

http://tinyurl.com/dmkpj3

Apache

++

++

++

pytilities

http://tinyurl.com/q49ulr5

GPL 3

pyaspects

  • Not functional approach: Aspect class definition.

  • Side effects: Not close to python API.

  • Not optimized Weaving and Time execution: use classes and generic methods.

  • Not maintenable: poor comments.

  • open-source and use limitations: GPL 2.

  • limited in weave filtering.

aspects

  • open-source and use limitations: LGPL 2.1.

  • more difficulties to understand code with no respect of the AOP vocabulary, packaged into one module and more than 600 files.

  • limited in weave filtering.

aspect

  • invert the AOP in decorating advices with joinpoint instead of weaving advices on joinpoint.

  • open-source and no use limitations: BSD.

  • Simple and functional approach with use of python tools.

  • maintenable: commented in respect of the PEP8.

  • limited in weave filtering.

spring

pytilities

  • Very complex and full library for doing aspects and other things.

  • open-source and use limitations: GPL 3.

  • not maintenable: missing documentations and not respect of the PEP8.

  • Executon time is not optimized with several classes used with generic getters without using __slots__. The only one optimization comes from the yield which requires from users to use it in their own advices (which must be a class).

Project details


Download files

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

Source Distribution

b3j0f.aop-0.1.0.tar.gz (2.8 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page