Welcome to haps documentation!

Haps [χaps] is a simple DI library, with IoC container included. It is written in pure Python with no external dependencies.

Look how easy it is to use:

from haps import Container as IoC, Inject, inject

# import interfaces
from my_application.core import IDatabase, IUserService


class MyApp:
    db: IDatabase = Inject()  # dependency as a property

    @inject  # or passed to the constructor
    def __init__(self, user_service: IUserService) -> None:
        self.user_service = user_service

IoC.autodiscover('my_application')  # find all interfaces and implementations

if __name__ == '__main__':
    app = MyApp()
    assert isinstance(app.db, IDatabase)
    assert isinstance(app.user_service, IUserService)

Features

  • IoC container
  • No XML/JSON/YAML - pure python configuration
  • No dependencies
  • Based on the Python 3.6+ annotation system

Installation

Install haps by running:

pip install haps

Contribute

  • Issue Tracker: github.com/ekiro/haps/issues
  • Source Code: github.com/ekiro/haps

Changelog

1.1.1 (2018-07-27)

  • Fix bug with optional arguments for functions decorated with @inject

1.1.0 (2018-07-26)

  • Add configuration module
  • Add application class and runner
  • Add profiles
  • Minor fixes

1.0.5 (2018-07-12)

  • @egg decorator can be used without function invocation

1.0.4 (2018-06-30)

  • Add support for python 3.7
  • Fix autodiscover sample

Support

If you are having issues, ask a question on projects issue tracker.

Indices and tables