Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

aspectlib

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

aspectlib

``aspectlib`` is an aspect-oriented programming, monkey-patch and decorators library. It is useful when changing

  • 2.0.0
  • PyPI
  • Socket score

Maintainers
1

======== Overview

aspectlib is an aspect-oriented programming, monkey-patch and decorators library. It is useful when changing behavior in existing code is desired. It includes tools for debugging and testing: simple mock/record and a complete capture/replay framework.

  • Free software: BSD 2-Clause License

Installation

::

pip install aspectlib

You can also install the in-development version with::

pip install https://github.com/ionelmc/python-aspectlib/archive/main.zip

Documentation

Docs are hosted at readthedocs.org: python-aspectlib docs <http://python-aspectlib.readthedocs.org/en/latest/>_.

Implementation status

Weaving functions, methods, instances and classes is completed.

Pending:

  • "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).

Similar projects

  • function_trace <https://github.com/RedHatQE/function_trace>_ - extremely simple

Changelog

2.0.0 (2022-10-20)

  • Drop support for legacy Pythons (2.7, 3.6 or older).
  • Remove Travis/Appveyor CI and switch to GitHub Actions.
  • Added support for Tornado 6 (in the test suite).

1.5.2 (2020-11-15)

  • Fixed broken import on Python 3.9. Contributed by Felix Yan in #19 <https://github.com/ionelmc/python-aspectlib/pull/19>_.

1.5.1 (2020-06-11)

  • Remove some debug leftover prints from v1.5.0.

1.5.0 (2020-04-05)

  • Fixed weave to stop reading attributes that don't match the method selector. Contributed by Jonas Maurus in #14 <https://github.com/ionelmc/python-aspectlib/pull/14>_.
  • Added support for Python 3.7 and 3.8 (async def functions and generators).

1.4.2 (2016-05-10)

  • Fix forgotten debug prints.

1.4.1 (2016-05-06)

  • Fixed weaving of objects that don't live on root-level modules.

1.4.0 (2016-04-09)

  • Corrected weaving of methods, the weaved function should be unbound.
  • Rolling back only applies undos once.
  • Added a convenience weave fixture for pytest.

1.3.3 (2015-10-02)

  • Fixed typo in ABSOLUTELLY_ALL_METHODS name (now ABSOLUTELY_ALL_METHODS). Old name is still there for backwards compatibility.

1.3.2 (2015-09-22)

  • Fixed another tricky bug in the generator advising wrappers - result was not returned if only Proceed was yielded.

1.3.1 (2015-09-12)

  • Corrected result handling when using Aspects on generators.

1.3.0 (2015-06-06)

  • Added messages property to aspectlib.test.LogCapture. Change call to have level name instead of number.
  • Fixed a bogus warning from ``aspectlib.patch_module``` when patching methods on old style classes.

1.2.2 (2014-11-25)

  • Added support for weakrefs in the __logged__ wrapper from aspectlib.debug.log decorator.

1.2.1 (2014-10-15)

  • Don't raise exceptions from Replay.__exit__ if there would be an error (makes original cause hard to debug).

1.2.0 (2014-06-24)

  • Fixed weaving methods that were defined in some baseclass (and not on the target class).
  • Fixed wrong qualname beeing used in the Story/Replay recording. Now used the alias given to the weaver instead of whatever is the realname on the current platform.

1.1.1 (2014-06-14)

  • Use ASPECTLIB_DEBUG for every logger in aspectlib.

1.1.0 (2014-06-13)

  • Added a bind option to aspectlib.Aspect so you can access the cutpoint from the advisor.
  • Replaced automatic importing in aspectlib.test.Replay with extraction of context variables (locals and globals from the calling aspectlib.test.Story). Works better than the previous inference of module from AST of the result.
  • All the methods on the replay are now properties: aspectlib.test.Story.diff, aspectlib.test.Story.unexpected and aspectlib.test.Story.missing.
  • Added aspectlib.test.Story.actual and aspectlib.test.Story.expected.
  • Added an ASPECTLIB_DEBUG environment variable option to switch on debug logging in aspectlib's internals.

1.0.0 (2014-05-03)

  • Reworked the internals aspectlib.test.Story to keep call ordering, to allow dependencies and improved the serialization (used in the diffs and the missing/unexpected lists).

0.9.0 (2014-04-16)

  • Changed aspectlib.test.record:

    • Renamed history option to calls.
    • Renamed call option to iscalled.
    • Added callback option.
    • Added extended option.
  • Changed aspectlib.weave:

    • Allow weaving everything in a module.
    • Allow weaving instances of new-style classes.
  • Added aspectlib.test.Story class for capture-replay and stub/mock testing.

0.8.1 (2014-04-01)

  • Use simpler import for the py3support.

0.8.0 (2014-03-31)

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

0.7.0 (2014-03-28)

  • Add support for decorating generators and coroutines in aspectlib.Aspect.
  • Made aspectlib raise better exceptions.

0.6.1 (2014-03-22)

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

0.6.0 (2014-03-17)

  • 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)

0.5.0 (2014-03-16)

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

0.4.1 (2014-03-08)

  • Remove junk from 0.4.0's source distribution.

0.4.0 (2014-03-08)

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

0.3.1 (2014-03-05)

  • ???

0.3.0 (2014-03-05)

  • First public release.

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc