Skip to main content

After spring it comes the summer.

Project description

summer-boot

After spring it comes the summer.

Installation

pip install python-summer-boot

Inversion of control

summer-boot provides an easy dependency injection by splitting classes between services and injectors. A service is a dependency and an injector is a class that consumes dependencies.

You can discover services with the disvover_services function. It is recommended to create a setup file located in your sources root and call discover services function there, once. Here you have an example:

import os

from summer.inversion_of_control.service_locator import get_executable_parent_path, discover_services

executable_parent_path = get_executable_parent_path(os.getcwd())


def setup():
    discover_services(executable_parent_path)

⚠️ Remember to call setup function before use any injection. ⚠️

You can define services using the @service decorator at class level.

from summer.inversion_of_control.dependencies import service

from src.mock_entity.core.i_repository import IRepository


@service()
class PostgreRepository(IRepository):
    def custom_method(self):
        return "Postgre repository"

Here the code of IRepository:

from abc import ABC, abstractmethod


class IRepository(ABC):
    @abstractmethod
    def custom_method(self) -> str:
        raise NotImplementedError

Finally, you can consume injected dependencies with the @autowired decorator, upside the function that needs dependencies. In most of the cases it will be the __init__ function:

from summer.inversion_of_control.dependencies import autowired

from src.mock_entity.core.i_repository import IRepository


class UseCase:
    @autowired
    def __init__(self, repository: IRepository):
        self.repository = repository

    def my_use_case(self) -> str:
        return self.repository.custom_method()

Models

⚠️ It is necessary to install pydantic in order to use this module. ⚠️

SummerBoot implements some models using inheritance from pydantic.

CamelModel

A model which every attribute is represented as camelCase perhaps is coded as snake_case. I.e.:

from summer.models.camel.camel_model import CamelModel


class MockCamelModel(CamelModel):
    mock_attribute: str = "mock"

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

python-summer-boot-1.0.13.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

python_summer_boot-1.0.13-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file python-summer-boot-1.0.13.tar.gz.

File metadata

  • Download URL: python-summer-boot-1.0.13.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for python-summer-boot-1.0.13.tar.gz
Algorithm Hash digest
SHA256 da1184d697afc5195199e5184e13a245815538c93d4a0c006470fa48b5b9bfc9
MD5 63cbf7cefab1a97b5ff5117fb55e6543
BLAKE2b-256 88c5dd427b349030dba39544d7ec29bdb8a576708c61a3968222d2a36ee23c54

See more details on using hashes here.

File details

Details for the file python_summer_boot-1.0.13-py3-none-any.whl.

File metadata

File hashes

Hashes for python_summer_boot-1.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 7f49d1c1ea1b194f52bda1a826ebde8afa0011db032bedd15de561241b3c2e93
MD5 cb64221b229289e8aeeeaa86b1835008
BLAKE2b-256 eaaa354cc248f38fdb599f448b1abef12606d6e989e06d8d21f3fe74531578fc

See more details on using hashes here.

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