Ver código fonte

Auto-refactored everything with ruff

Vsevolod Levitan 1 ano atrás
pai
commit
0d4ae4de82

+ 40 - 30
src/logic/start_factory.py

@@ -7,6 +7,7 @@ from src.settings.settings import settings
 from src.storage.storage import storage
 from src.validation.validator import validator
 
+
 #
 # Класс для обработки начало работы приложения
 #
@@ -14,33 +15,29 @@ class start_factory:
     __options: settings = None
     __storage: storage = None
     __vtor = validator()
-    
-    def __init__(self, _options: settings,
-                 _storage: storage = None) -> None:
-        
+
+    def __init__(self, _options: settings, _storage: storage = None) -> None:
         self.__vtor.check_type(_options, settings)
         self.__vtor.check_type(_storage, storage)
         self.__options = _options
         self.__storage = _storage
 
-    def __save(self, key:str, items: list):
+    def __save(self, key: str, items: list):
         """
             Сохранить данные
         Args:
             key (str): ключ доступ
             items (list): список
         """
-       
+
         self.__vtor.check_type(key, str)
-        
-        if self.__storage == None:
+
+        if self.__storage is None:
             self.__storage = storage()
-            
-        self.__storage.data[ key ] = items
-        
-        
-                
-    @property            
+
+        self.__storage.data[key] = items
+
+    @property
     def storage(self):
         """
              Ссылка на объект хранилище данных
@@ -48,12 +45,11 @@ class start_factory:
             _type_: _description_
         """
         return self.__storage
-    
-    
+
     @staticmethod
     def create_recipes():
         """
-            Фабричный метод Создать список рецептов
+        Фабричный метод Создать список рецептов
         """
 
         result = []
@@ -62,11 +58,24 @@ class start_factory:
         group = nomenclature_group_model("group")
 
         ingredients = [
-            ingredient_model("Мука", nomenclature_model("Мука", "Мука пшеничная", g, group), 100, g),
-            ingredient_model("Сахар", nomenclature_model("Сахар", "Сахарный песок", g, group), 80, g),
-            ingredient_model("Масло", nomenclature_model("Масло", "Масло сливочное", g, group), 70, g),
-            ingredient_model("Яйцо", nomenclature_model("Яйцо", "Яйцо куриное", pcs, group), 1, pcs),
-            ingredient_model("Ванилин", nomenclature_model("Ванилин", "Ванилин продуктовый", g, group), 5, g)
+            ingredient_model(
+                "Мука", nomenclature_model("Мука", "Мука пшеничная", g, group), 100, g
+            ),
+            ingredient_model(
+                "Сахар", nomenclature_model("Сахар", "Сахарный песок", g, group), 80, g
+            ),
+            ingredient_model(
+                "Масло", nomenclature_model("Масло", "Масло сливочное", g, group), 70, g
+            ),
+            ingredient_model(
+                "Яйцо", nomenclature_model("Яйцо", "Яйцо куриное", pcs, group), 1, pcs
+            ),
+            ingredient_model(
+                "Ванилин",
+                nomenclature_model("Ванилин", "Ванилин продуктовый", g, group),
+                5,
+                g,
+            ),
         ]
         steps = [
             "Как испечь вафли хрустящие в вафельнице? Подготовьте необходимые продукты. Из данного количества у меня получилось 8 штук диаметром около 10 см.",
@@ -76,14 +85,15 @@ class start_factory:
             "Всыпьте муку, добавьте ванилин.",
             "Перемешайте массу венчиком до состояния гладкого однородного теста.",
             "Разогрейте вафельницу по инструкции к ней. У меня очень старая, еще советских времен электровафельница. Она может и не очень красивая, но печет замечательно! Я не смазываю вафельницу маслом, в тесте достаточно жира, да и к ней уже давно ничего не прилипает. Но вы смотрите по своей модели. Выкладывайте тесто по столовой ложке. Можно класть немного меньше теста, тогда вафли будут меньше и их получится больше.",
-            "Пеките вафли несколько минут до золотистого цвета. Осторожно откройте вафельницу, она очень горячая! Снимите вафлю лопаткой. Горячая она очень мягкая, как блинчик. Но по мере остывания становится твердой и хрустящей. Такие вафли можно свернуть трубочкой. Но делать это надо сразу же после выпекания, пока она мягкая и горячая, потом у вас ничего не получится, вафля поломается. Приятного аппетита!"
+            "Пеките вафли несколько минут до золотистого цвета. Осторожно откройте вафельницу, она очень горячая! Снимите вафлю лопаткой. Горячая она очень мягкая, как блинчик. Но по мере остывания становится твердой и хрустящей. Такие вафли можно свернуть трубочкой. Но делать это надо сразу же после выпекания, пока она мягкая и горячая, потом у вас ничего не получится, вафля поломается. Приятного аппетита!",
         ]
 
-        result.append(recipe_model.create("Вафли хрустящие в вафельнице", ingredients, steps))
+        result.append(
+            recipe_model.create("Вафли хрустящие в вафельнице", ingredients, steps)
+        )
 
         return result
-    
-    
+
     def create(self):
         """
            В зависимости от настроек, сформировать начальную номенклатуру
@@ -91,11 +101,11 @@ class start_factory:
         Returns:
             _type_: _description_
         """
-        
+
         result = []
-        if self.__options.is_first_run == True:
+        if self.__options.is_first_run:
             self.__options.is_first_run = False
-            
+
             # Формируем и зпоминаем номеклатуру
             res = self.create_recipes()
             ingredients = set()
@@ -109,7 +119,7 @@ class start_factory:
             result = nomenclatures
             munits = set([x.measurement_unit for x in nomenclatures])
             nomgroups = set([x.nomenclature_group for x in nomenclatures])
-            self.__save(storage.nomenclature_key(), nomenclatures )
+            self.__save(storage.nomenclature_key(), nomenclatures)
             self.__save(storage.measurement_unit_key(), munits)
             self.__save(storage.nomenclature_group_key(), nomgroups)
             self.__save(storage.ingredient_key(), ingredients)

+ 12 - 11
src/settings/settings_manager.py

@@ -1,11 +1,12 @@
-import os, json
+import os
+import json
 from src.settings.settings import settings
 from src.errors.instance_exception import instance_exception
 from src.validation.validator import validator
 from src.errors.file_exception import file_exception
 
 
-class settings_manager (object):
+class settings_manager(object):
     # Объект настроек
     __settings = settings()
     # Путь до файла настроек
@@ -16,7 +17,6 @@ class settings_manager (object):
     # Валидатор
     __vtor = validator()
 
-
     # Возвращаем существующий инстанс при вызове new() (singleton)
     def __new__(cls):
         if not hasattr(cls, "instance"):
@@ -26,11 +26,11 @@ class settings_manager (object):
     @property
     def data(self):
         return self.__data
-    
+
     @property
     def settings(self):
         return self.__settings
-    
+
     def __convert(self):
         """
             Заполнить объект настроек
@@ -46,7 +46,8 @@ class settings_manager (object):
         # Переносим считанные значения в инстанс настроек
         for key in self.__data.keys():
             # Пропускаем, если у settings нет соответствующего свойства
-            if not hasattr(self.__settings, key): continue
+            if not hasattr(self.__settings, key):
+                continue
             setattr(self.__settings, key, self.__data[key])
 
     def open(self, filename):
@@ -60,10 +61,10 @@ class settings_manager (object):
         """
         # Проверяем, чтобы путь был строкой
         self.__vtor.check_type(filename, str)
-        
+
         # Проверяем, чтобы путь не был пуст
         self.__vtor.check_length_greater(filename, 0)
-        
+
         # Убираем leading/trailing пробелы
         self.__filename = filename.strip()
         return self.__open()
@@ -80,12 +81,12 @@ class settings_manager (object):
         # Проверяем, существует ли файл по данному пути
         if not os.path.exists(settings_file):
             raise file_exception("Файл не найден")
-        
+
         # Открываем файл и парсим JSON
         with open(settings_file, "r", encoding="UTF-8") as read_file:
             self.__data = json.load(read_file)
-        
+
         # Заполняем объект settings прочитанными значениями
         self.__convert()
 
-        return True
+        return True

+ 1 - 1
src/validation/validator.py

@@ -220,7 +220,7 @@ class validator:
         for num, val in enumerate(value):
             try:
                 self.check_type(val, exp_type)
-            except argument_exception as exc:
+            except argument_exception:
                 raise argument_exception(f"Один из членов коллекции не соответствует типу {exp_type} \
                                          (excepted {exp_type}, got {type(val)} on element #{num})")
             

+ 13 - 19
tests/test_errors.py

@@ -3,12 +3,10 @@ import unittest
 from src.errors.argument_exception import argument_exception
 
 
-
 class test_errors(unittest.TestCase):
-    
     def test_check_argument_exception(self):
         # Подготовка
-        
+
         # Действие
         try:
             raise argument_exception("Test")
@@ -16,34 +14,30 @@ class test_errors(unittest.TestCase):
             # Проверка
             print(ex.error.error_text)
             print(ex.error.error_source)
-            
-            
+
             assert ex.error.is_error
             return
-            
-        assert False  
-        
-    
+
+        assert False
+
     def test_check_set_exception(self):
         # Подготовка
         error = error_proxy()
-              
-        
+
         # Действие
         try:
-            result = 1 / 0
-        except Exception as ex  :
+            pass
+        except Exception as ex:
             error.set_error(ex)
-            
+
         # Проверки
         assert error.is_error
-        
-    
+
     def test_check_set_error_text(self):
         # Подготовка
         error = error_proxy("Test", "Test")
-        
+
         # Действие
-        
+
         # Проверки
-        assert error.is_error
+        assert error.is_error

+ 1 - 1
tests/test_factory.py

@@ -72,7 +72,7 @@ class test_factory(unittest.TestCase):
         result = factory.create()
 
         # Проверка
-        if manager.settings.is_first_run == True:
+        if manager.settings.is_first_run:
             assert len(result) > 0
             return
 

+ 0 - 2
tests/test_models.py

@@ -6,9 +6,7 @@ from src.settings.settings_manager import settings_manager
 from src.models.measurement_unit_model import measurement_unit_model
 from src.models.nomenclature_group_model import nomenclature_group_model
 from src.models.nomenclature_model import nomenclature_model
-from src.models.warehouse_model import warehouse_model
 from src.models.abstract_reference import abstract_reference
-from src.errors.argument_exception import argument_exception
 from os import path
 
 

+ 12 - 11
tests/test_settings.py

@@ -1,20 +1,21 @@
 from src.settings.settings import settings
 from src.settings.settings_manager import settings_manager
-import unittest, os, random
-    
+import unittest
+import os
+import random
+
 
 class test_settings(unittest.TestCase):
     projdir = os.path.dirname(__file__) + "/.."
-    
-    
+
     def test_first_name_setter(self):
         """Проверить корректность заполнения поля first_name"""
         # Подготовка
         item = settings()
-        
+
         # Действие
         item.first_name = "a  "
-        
+
         # Проверка
         assert item.first_name == "a"
 
@@ -33,12 +34,12 @@ class test_settings(unittest.TestCase):
         """Проверить корректность загрузки настроек"""
         # Подготовка
         man = settings_manager()
-        
+
         # Действие
         result = man.open(f"{self.projdir}/config/settings.json")
 
         # Проверка
-        assert result == True
+        assert result
 
     def test_settings_fields_nonempty(self):
         """Проверить, что все поля настроек не пусты после считывания настроек"""
@@ -54,7 +55,7 @@ class test_settings(unittest.TestCase):
         # Проверка
         for key in dict.keys():
             assert len(str(dict[key])) != 0
-            
+
     def test_settings_any_filename(self):
         """Проверить, что менеджер настроек может открыть файл с любым названием и в любой папке"""
         # Подготовка
@@ -62,9 +63,9 @@ class test_settings(unittest.TestCase):
             os.mkdir(f"{self.projdir}/.test_data")
         alp = "abcdefghijklmnopqrstuvwxyz"
         dirname = f"{self.projdir}/.test_data/"
-        dirname += ''.join(random.choice(alp) for _ in range(6))
+        dirname += "".join(random.choice(alp) for _ in range(6))
         filename = f"{dirname}/"
-        filename += ''.join(random.choice(alp) for _ in range(6)) + ".json"
+        filename += "".join(random.choice(alp) for _ in range(6)) + ".json"
         os.mkdir(dirname)
         print(filename)
         f = open(filename, "w", encoding="UTF-8")