Skip to content

Commit 0e3bf0a

Browse files
authored
Merge pull request #4 from AlTosterino/feature/move-to-lidi
🏗️ Move injection to `lidipy`
2 parents 5e23f62 + e6ca59a commit 0e3bf0a

File tree

13 files changed

+60
-70
lines changed

13 files changed

+60
-70
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,4 +173,6 @@ poetry.toml
173173
# LSP config files
174174
pyrightconfig.json
175175

176-
# End of https://www.toptal.com/developers/gitignore/api/python
176+
# End of https://www.toptal.com/developers/gitignore/api/python
177+
178+
docs/adr

poetry.lock

Lines changed: 7 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ typer = "^0.7.0"
1515
loguru = "^0.7.0"
1616
rich = "^13.3.3"
1717
mako = "^1.2.4"
18-
injector = "^0.20.1"
18+
lidipy = "^0.1.1"
1919

2020
[tool.poetry.group.dev.dependencies]
2121
black = "^23.3.0"

src/adrpy/entrypoints/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from adrpy.injection import setup_injection
2+
3+
setup_injection()

src/adrpy/entrypoints/cli.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from typing import Optional
33

44
import typer
5-
from adrpy.injection import injector
5+
from adrpy.injection import lidi
66
from adrpy.shared_kernel.dtos import CreateADRDTO, InitializeADRDTO
77
from adrpy.shared_kernel.settings import Settings
88
from adrpy.use_cases.creating import CreatingADR
@@ -26,10 +26,9 @@ def init(
2626
"""
2727
if path:
2828
new_settings = Settings(initial_adr_dir=path)
29-
injector.binder.bind(Settings, to=new_settings)
30-
use_case = injector.get(InitializingADR)
29+
lidi.bind(Settings, new_settings, singleton=True)
3130
dto = InitializeADRDTO(path=path)
32-
use_case.execute(dto=dto)
31+
InitializingADR().execute(dto=dto)
3332

3433

3534
@app.command()
@@ -41,9 +40,8 @@ def new(
4140
"""
4241
Create new ADR with given NAME
4342
"""
44-
use_case = injector.get(CreatingADR)
4543
dto = CreateADRDTO(name=name)
46-
use_case.execute(dto=dto)
44+
CreatingADR().execute(dto=dto)
4745

4846

4947
def cli_entrypoint() -> None:

src/adrpy/injection/__init__.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
from adrpy.injection.modules import RepositoryModules, ServiceModules
2-
from adrpy.injection.settings import configure_settings
3-
from injector import Inject as Inject_Injector
4-
from injector import Injector
1+
from adrpy.injection.modules import bind_modules
2+
from adrpy.injection.settings import bind_settings
3+
from lidipy import Lidi
54

6-
injector = Injector((configure_settings, RepositoryModules(), ServiceModules()))
5+
lidi = Lidi()
76

8-
Inject = Inject_Injector
7+
8+
def setup_injection() -> None:
9+
bind_settings(lidi)
10+
bind_modules(lidi)

src/adrpy/injection/modules.py

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,11 @@
11
from adrpy.repositories.adr.base import BaseADRRepository
2+
from adrpy.repositories.adr.repository import ADRFileRepository
23
from adrpy.services.template.base import BaseTemplateService
4+
from adrpy.services.template.service import MakoTemplateService
35
from adrpy.shared_kernel.settings import Settings
4-
from injector import Module, provider, singleton
6+
from lidipy import Lidi
57

68

7-
class RepositoryModules(Module):
8-
@singleton
9-
@provider
10-
def provide_adr_repository(self, settings: Settings) -> BaseADRRepository:
11-
from adrpy.repositories.adr.repository import ADRFileRepository
12-
13-
return ADRFileRepository(settings=settings)
14-
15-
16-
class ServiceModules(Module):
17-
@singleton
18-
@provider
19-
def provide_template_service(self) -> BaseTemplateService:
20-
from adrpy.services.template.service import MakoTemplateService
21-
22-
return MakoTemplateService()
9+
def bind_modules(lidi: Lidi) -> None:
10+
lidi.bind(BaseADRRepository, ADRFileRepository(settings=lidi.resolve(Settings)))
11+
lidi.bind(BaseTemplateService, MakoTemplateService())

src/adrpy/injection/settings.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from adrpy.shared_kernel.settings import Settings
2-
from injector import Binder, singleton
2+
from lidipy import Lidi
33

44

5-
def configure_settings(binder: Binder) -> None:
6-
binder.bind(Settings, to=Settings(), scope=singleton)
5+
def bind_settings(lidi: Lidi) -> None:
6+
lidi.bind(Settings, Settings(), singleton=True)

src/adrpy/repositories/adr/repository.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import re
22

3-
from adrpy.injection import Inject
43
from adrpy.repositories.adr.base import BaseADRRepository
54
from adrpy.shared_kernel.settings import Settings
65
from adrpy.shared_kernel.value_objects.template import RenderedTemplate, Template
76

87

98
class ADRFileRepository(BaseADRRepository):
10-
def __init__(self, settings: Inject[Settings]) -> None:
9+
def __init__(self, settings: Settings) -> None:
1110
self.settings = settings
1211

1312
def get_template(self, name: str) -> Template:

src/adrpy/use_cases/creating.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
from dataclasses import dataclass
22
from datetime import datetime
33

4-
from adrpy.injection import Inject
4+
from adrpy.injection import lidi
55
from adrpy.repositories.adr.base import BaseADRRepository
66
from adrpy.services.template.base import BaseTemplateService
77
from adrpy.shared_kernel.dtos import CreateADRDTO
88

99

1010
@dataclass
1111
class CreatingADR:
12-
template_service: Inject[BaseTemplateService]
13-
adr_repository: Inject[BaseADRRepository]
12+
template_service = lidi.resolve(BaseTemplateService)
13+
adr_repository = lidi.resolve(BaseADRRepository)
1414

1515
def execute(self, dto: CreateADRDTO) -> None:
1616
template = self.adr_repository.get_template(name=dto.adr_template_name)

0 commit comments

Comments
 (0)