Dependency Injection powered framework


License
MIT
Install
pip install pyfony==0.2.0

Documentation

Pyfony framework

Pyfony is a Dependency Injection (DI) powered framework written in Python greatly inspired by the Symfony Framework in PHP & Spring Framework in Java.

The DI functionality is provided by the Injecta Dependency Injection Container.

Pyfony = Injecta + bundles (extensions) API

Installation

$ pip install pyfony

Pyfony initialization

(The following steps are covered in the BaseKernelTest)

To start using Pyfony, create a simple config_dev.yaml file to define your DI services:

parameters:
  api:
    endpoint: 'https://api.mycompany.com'

services:
    mycompany.api.ApiClient:
      arguments:
        - '@mycompany.api.Authenticator'

    mycompany.api.Authenticator:
      class: mycompany.authenticator.RestAuthenticator
      arguments:
        - '%api.endpoint%'
        - '%env(API_TOKEN)%'

Then, initialize the container:

from injecta.config.YamlConfigReader import YamlConfigReader
from pyfony.kernel.BaseKernel import BaseKernel

appEnv = 'dev'

kernel = BaseKernel(
    appEnv,
    '/config/dir/path', # must be directory, not the config_dev.yaml file path!
    YamlConfigReader()
)

container = kernel.initContainer()

Use container.get() to finally retrieve your service:

from mycompany.api.ApiClient import ApiClient

apiClient = container.get('mycompany.api.ApiClient') # type: ApiClient   
apiClient.get('/foo/bar')

Advanced examples

  1. Advanced services configuration using Injecta
  2. Extending Pyfony with bundles