Copyright:Juti Noppornpitak
Author:Juti Noppornpitak

Imagination is a reusable component and aspect-oriented programming framework which encapsulates an object into a single object, called containers, inspired by many frameworks, e.g., Symfony Framework in PHP and Spring Framework in Java.


This documentation is backward compatible from version 2.0 to 3.x. Version 1.x is no longer supported.

Why do you want to consider using this framework?

  • Your code always requires to instantiate a large number of objects and maintain the dependencies between objects and the order of instantiations. In the other words, your have to manage the order of dependency injection manually
  • You want to instantiate a set of objects but do not want to put them in the scope of the module that your code instantiates.
  • You want to implement the aspect-oriented programming (AOP), which allows you to write a simple, clean, testable, and maintainable code.

Understand why you need this?

If you get confused, please check out the presentation How to write maintainable code without tests at PyCon Canada 2016 for more information.

Please note that some terms are slightly different as this library is made before I got a little bit smarter.

Entity:A service
Core:An injector

How to Install

With PIP:pip install imagination
With Make:make install
With install