storage module

storage.ensure_data_dir()[исходный код]

Проверяет наличие директории для хранения данных и создает её при отсутствии.

Функция использует путь, указанный в глобальной переменной DATA_DIR. Если целевая папка (и все промежуточные директории) отсутствует в файловой системе, она будет создана автоматически.

Примечание

Функция опирается на внешнюю константу DATA_DIR, которая должна быть определена в модуле.

Исключение:

OSError – Если создание директории невозможно из-за ограничений прав доступа или системных ошибок.

storage.load_transactions()[исходный код]

Загружает список транзакций из CSV-файла и преобразует их в объекты Transaction.

Функция считывает данные из хранилища, выполняет десериализацию каждой строки и восстанавливает объекты класса Transaction. Если директория данных или сам файл отсутствуют, возвращается пустой список.

Результат:

Список восстановленных объектов транзакций. В случае отсутствия файла или возникновения ошибки чтения возвращается пустой список [].

Тип результата:

list[Transaction]

Примечание

  • Опирается на глобальные константы DATA_DIR и CSV_FILE.

  • Предполагает, что CSV-файл имеет корректные заголовки: „amount“, „category“, „date“, „description“, „transaction_type“.

Исключение:

Exception – Если возникает ошибка при чтении файла или парсинге данных (например, поврежден формат CSV). Ошибка перехватывается, выводится в консоль, и функция возвращает пустой список.

storage.save_transactions(transactions)[исходный код]

Сохраняет список транзакций в CSV-файл.

Функция выполняет дозапись (append) данных в файл. Если файл не существует, он создается вместе с заголовками столбцов. При пустом входном списке запись не производится.

Параметры:

transactions (list[Transaction]) – Список объектов транзакций для сохранения. Каждый объект должен иметь метод to_dict().

Примечание

  • Использует глобальную константу CSV_FILE для определения пути к файлу.

  • Автоматически вызывает ensure_data_dir() перед началом записи.

  • Данные сохраняются в кодировке UTF-8.

Исключение:

Exception – Если возникает ошибка при открытии файла или процессе записи (ошибка перехватывается внутри функции и выводится в консоль).

Пример

>>> tx = Transaction(100.0, "Еда", "2026-01-06", "Хлеб", "expense")
>>> save_transactions([tx])