Skip to content

Commit a527ceb

Browse files
CoinFactory dependency injection.
1 parent d19d161 commit a527ceb

14 files changed

+53
-45
lines changed

app.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
2-
from app_tools.logger import StdoutRedirector, stdout_redirector
1+
from app_tools.logger import stdout_redirector
32
from scan_states.context import Context
43
from ui.main_widget import MainWidget
54

aws_lambda.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import json
22

3-
from coin_factory_inject import coinFactory
3+
from crypto_coin_factory import CoinFactoryExtended
44

55

66
def lambda_handler(event, context):
@@ -9,7 +9,7 @@ def lambda_handler(event, context):
99
quantity = requestBody["quantity"]
1010

1111
coin = blockchain.upper()
12-
factory = coinFactory
12+
factory = CoinFactoryExtended()
1313
crypto_keygen_service = factory.get_coin_service(coin)
1414

1515
coins = crypto_keygen_service.generate_list(quantity)

coin_factory_inject.py

Lines changed: 0 additions & 5 deletions
This file was deleted.

controller/coin_checker_controller.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
import asynctkinter as at
22
import pygame
3+
from dependency_injector.wiring import Provide
34

4-
from coin_factory_inject import coinFactory
5+
from keygen.crypto_coin_factory import CoinFactory
56
from scan_states.context import Context
67
from scan_states.state_factory import get_state
78
from scan_states.states_enum import States
89
import logging
910

1011

1112
class CoinCheckerController(Context):
12-
def __init__(self, root, window):
13+
def __init__(self, root, window, coin_factory: CoinFactory = Provide['coin_factory']):
1314
super().__init__()
15+
self.coin_factory = coin_factory
1416
self.logger = logging.getLogger(f'{self.__class__.__name__}', )
1517
self.root = root
1618
self.window = window
@@ -24,7 +26,7 @@ def __init__(self, root, window):
2426
self.snip = None
2527

2628
def init(self):
27-
currencies = coinFactory.get_available_currencies()
29+
currencies = self.coin_factory.get_available_currencies()
2830
self.currency = currencies[0]
2931

3032
self.select_currency(self.currency)
@@ -37,7 +39,7 @@ def on_refreshed(self):
3739

3840
def select_currency(self, currency):
3941
self.currency = currency
40-
self.coin_service = coinFactory.get_coin_service(self.currency)
42+
self.coin_service = self.coin_factory.get_coin_service(self.currency)
4143
self.change_state(States.SCAN_COIN_STATE)
4244
self.root.set_currency(currency)
4345
self.logger.info("Selected currency: %s", self.currency)

controller/recovery_controller.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11

22
import asynctkinter as at
33
import pygame
4+
from dependency_injector.wiring import Provide
45

5-
from coin_factory_inject import coinFactory
6+
from keygen.crypto_coin_factory import CoinFactory
67
from logic.recovery import RecoveryProcessor
78
from scan_states.recovery.context import Context
89
from scan_states.recovery.state_factory import get_state
@@ -11,8 +12,9 @@
1112

1213

1314
class RecoveryController(Context):
14-
def __init__(self, root, window):
15+
def __init__(self, root, window, coin_factory: CoinFactory = Provide['coin_factory']):
1516
super().__init__()
17+
self.coin_factory = coin_factory
1618
self.logger = logging.getLogger(f'{self.__class__.__name__}', )
1719
self.recovery_processor = RecoveryProcessor()
1820

@@ -32,7 +34,7 @@ def __init__(self, root, window):
3234
self.coins = []
3335

3436
def init(self):
35-
currencies = coinFactory.get_available_currencies()
37+
currencies = self.coin_factory.get_available_currencies()
3638
self.currency = currencies[0]
3739

3840
self.select_currency(self.currency)
@@ -53,7 +55,7 @@ def on_qr_code_scanned(self, qr_code_text):
5355

5456
def select_currency(self, currency):
5557
self.currency = currency
56-
self.coin_service = coinFactory.get_coin_service(self.currency)
58+
self.coin_service = self.coin_factory.get_coin_service(self.currency)
5759
self.change_state(States.SCAN_COIN_STATE)
5860
self.root.set_currency(currency)
5961
self.logger.info("Selected currency: %s", self.currency)

csc-manager.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
import tkinter
2-
31
import sys
4-
5-
from app import App
2+
import tkinter
63
import pygame
7-
4+
from app import App
85
from app_tools.logger import stdout_redirector
96
from di.containers import MyContainer
107
import ui
8+
import controller
119

1210

1311
def main():
@@ -22,5 +20,5 @@ def main():
2220
container = MyContainer()
2321
container.init_resources()
2422
container.config.from_ini('config.ini')
25-
container.wire(modules=[sys.modules[__name__]], packages=[ui])
23+
container.wire(modules=[sys.modules[__name__]], packages=[ui, controller])
2624
main()

di/containers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import logging.config
44

55
from dependency_injector import containers, providers
6-
76
from app_tools.my_video_capture import MyVideoCapture
7+
from crypto_coin_factory import CoinFactoryExtended
88

99

1010
class MyContainer(containers.DeclarativeContainer):
@@ -18,4 +18,5 @@ class MyContainer(containers.DeclarativeContainer):
1818

1919
default_video_capture = providers.Singleton(MyVideoCapture)
2020

21+
coin_factory = providers.Singleton(CoinFactoryExtended)
2122

logic/keygen.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1-
from coin_factory_inject import coinFactory
21
import json
32

43
import logging
54

5+
from dependency_injector.wiring import Provide
6+
7+
from keygen.crypto_coin_factory import CoinFactory
8+
69

710
class KeygenProcessor:
811

9-
def __init__(self):
12+
def __init__(self, coin_factory: CoinFactory = Provide['coin_factory']):
1013
super().__init__()
14+
self.coin_factory = coin_factory
1115
self.logger = logging.getLogger(f'{self.__class__.__name__}', )
1216

1317
def generate_keys(self, count, coin, laser):
@@ -22,8 +26,7 @@ def generate_keys(self, count, coin, laser):
2226
max_iterator_count = int(count)
2327

2428
try:
25-
factory = coinFactory
26-
crypto_keygen_service = factory.get_coin_service(coin)
29+
crypto_keygen_service = self.coin_factory.get_coin_service(coin)
2730

2831
if max_iterator_count > 0:
2932
coin_list = crypto_keygen_service.generate_list(max_iterator_count)

test/test-coins-1.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
from coin_factory_inject import coinFactory
1+
from crypto_coin_factory import CoinFactoryExtended
22

33

44
def test_coin(currency, private_key, address):
5-
service = coinFactory.get_coin_service(currency)
5+
service = CoinFactoryExtended().get_coin_service(currency)
66
gen_address = service.get_address(private_key)
77
assert gen_address == address
88

test/test-coins-2.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
from coin_factory_inject import coinFactory
1+
from crypto_coin_factory import CoinFactoryExtended
22

33

44
def test_coin(currency, private_key, address):
5-
service = coinFactory.get_coin_service(currency)
5+
service = CoinFactoryExtended().get_coin_service(currency)
66
gen_address = service.get_address(private_key)
77
assert gen_address == address
88

test/test-coins-4.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from coin_factory_inject import coinFactory
1+
from crypto_coin_factory import CoinFactoryExtended
22

33

44
def test_coin():
55
currency = "ETH"
6-
service = coinFactory.get_coin_service(currency)
6+
service = CoinFactoryExtended().get_coin_service(currency)
77
coin = service.generate()
88
print(currency)
99
print(coin)

ui/coin_checker_widget.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11
import tkinter
22

3-
from coin_factory_inject import coinFactory
3+
from dependency_injector.wiring import Provide
4+
45
from controller.coin_checker_controller import CoinCheckerController
6+
from keygen.crypto_coin_factory import CoinFactory
57
from ui.footer_widget import FooterWidget
68
from ui.header_widget import HeaderWidget
79
import logging
810

911

1012
class CoinCheckerWidget:
11-
def __init__(self, coin_checker_frame):
13+
def __init__(self, coin_checker_frame,
14+
coin_factory: CoinFactory = Provide['coin_factory'], ):
15+
self.coin_factory = coin_factory
1216
self.logger = logging.getLogger(f'{self.__class__.__name__}', )
1317

1418
self.coin_checker_frame = coin_checker_frame
1519

1620
top_frame = tkinter.Frame(self.coin_checker_frame, borderwidth=3)
1721

18-
currencies = coinFactory.get_available_currencies()
22+
currencies = self.coin_factory.get_available_currencies()
1923
self.currencies = currencies
2024

2125
self.coin_checker_controller = CoinCheckerController(self, coin_checker_frame)
@@ -66,5 +70,3 @@ def init_camera(self):
6670
def release_camera(self):
6771
self.logger.info("release coin_checker camera")
6872
self.footer_widget.camera_widget.pause()
69-
70-

ui/keygen_widget.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@
22
from tkinter import ttk, messagebox
33
from tkinter.ttk import Progressbar
44

5-
from coin_factory_inject import coinFactory
5+
from dependency_injector.wiring import Provide
6+
67
from controller.keygen_controller import KeygenController
78

89
import json
910
import logging
1011

12+
from keygen.crypto_coin_factory import CoinFactory
13+
1114

1215
def load_lasers():
1316
with open('config.json') as json_file:
@@ -18,10 +21,10 @@ def load_lasers():
1821

1922
class KeygenWidget:
2023

21-
def __init__(self, root):
24+
def __init__(self, root, coin_factory: CoinFactory = Provide['coin_factory']):
2225
self.logger = logging.getLogger(f'{self.__class__.__name__}', )
2326
self.root = root
24-
self.currencies = coinFactory.get_available_currencies()
27+
self.currencies = coin_factory.get_available_currencies()
2528

2629
combo_frame = tkinter.Frame(root, pady=15)
2730
tkinter.Label(combo_frame, text="Select currency").pack()

ui/recovery_widget.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import tkinter
22

3-
from coin_factory_inject import coinFactory
3+
from dependency_injector.wiring import Provide
4+
45
from controller.recovery_controller import RecoveryController
6+
from keygen.crypto_coin_factory import CoinFactory
57
from ui.recovery.header_widget import HeaderWidget
68
from ui.recovery.footer_widget import FooterWidget
79
import logging
@@ -10,13 +12,14 @@
1012

1113

1214
class RecoveryWidget:
13-
def __init__(self, recovery_frame):
15+
def __init__(self, recovery_frame,
16+
coin_factory: CoinFactory = Provide['coin_factory']):
1417
self.recovery_frame = recovery_frame
1518
self.logger = logging.getLogger(f'{self.__class__.__name__}', )
1619

1720
top_frame = tkinter.Frame(self.recovery_frame, borderwidth=3)
1821

19-
currencies = coinFactory.get_available_currencies()
22+
currencies = coin_factory.get_available_currencies()
2023
self.currencies = currencies
2124

2225
self.recovery_controller = RecoveryController(self, recovery_frame)

0 commit comments

Comments
 (0)