Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .coverage
Binary file not shown.
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
apikey=Здесь должен быть Ваш API ключ от сервиса https://api.apilayer.com/
98 changes: 95 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,44 @@
python = "^3.13"
poetry-core = "^2.1.3"
shell = "^1.0.1"
python-dotenv = "^1.1.1"


[tool.poetry.group.dev.dependencies]
requests = "^2.32.3"
pytest = "^8.3.5"
pytest-cov = "^6.1.1"


[tool.poetry.group.lint.dependencies]
flake8 = "^7.2.0"
mypy = "^1.15.0"
black = "^25.1.0"
isort = "^6.0.1"


[tool.black]
# Максимальная длина строки
line-length = 119
# Файлы, которые не нужно форматировать
exclude = """ \\.git """


[tool.isort]
# максимальная длина строки
line_length = 119


[tool.mypy]
disallow_untyped_defs = true
warn_return_any = true
exclude = 'venv'


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

```

## Использование:
Expand Down Expand Up @@ -65,6 +92,13 @@ print(temp_result)
```
**3145
```
14.04.2025 00:15
Добавлено логирование работы функций

20.07.2025 23:20
в функцию внесены изменения связанные с указанием правильного пути к записи логов
почему-то стала вылетать ошибка при общем тесте


### widget.py
В данном модуле описаны функции:
Expand Down Expand Up @@ -98,8 +132,8 @@ print(get_date("2024-03-11T02:26:18.671407"))
```


### proctssing.py
proctssing.py так же содержит две функции как и предыдущие модули:
### processing.py
processing.py так же содержит две функции как и предыдущие модули:

*filter_by_state* - Функция возвращает новый список словарей, содержащий только те словари, у которых
ключ state соответствует указанному значению.
Expand Down Expand Up @@ -154,8 +188,55 @@ sort [{'id': 41428829, 'state': 'EXECUTED', 'date': '2019-07-03T18:35:29.512364
{'id': 594226727, 'state': 'CANCELED', 'date': '2018-09-12T21:27:25.241689'}, {'id': 939719570, 'state': 'EXECUTED', 'date': '2018-06-30T02:08:58.425572'}]
```


## generators.py
generatrors.py - добавлены новые функции

filter_by_currency(date_list: list, currency: str)
transaction_descriptions(date_list: list)
card_number_generator(start_value: int, end_value: int)

filter_by_currency - фильтрует выводимые данные по коду валюты
transaction_descriptions - выводит поочереди все транзакции из списка
card_number_generator - генерирует номера кредитных карт в указанном диапазоне


## utils.py
transaction_loader(file_path: str = "")

transaction_loader - загружает JSON файл содержащий данные о транзакциях и конвертирует в список

14.04.2025 00:15
Добавлено логирование работы функций

20.07.2025 23:20
в функцию внесены изменения связанные с указанием правильного пути к записи логов
почему-то стала вылетать ошибка при общем тесте



14.04.2025 00:15
Добавлено логирование работы функций

## external_api.py
currency_converter(transactions: list[Dict], id_transaction: int | None = None)

currency_converter - принимает в качестве аргумента список транзакций и номер транзакции
после чего проверяет в какой валюте была произведена транзакция и если не в рублях,
тогда функция проверяет на сервисе https://api.apilayer.com/ текущий курс и конвертирует его в рубли
на выходе результат сумма в рублях

## transactions_loader.py
csv_loader(file_path: str = "", delimit: str = ";") -> list[Dict]
exel_loader(file_path: str = "") -> list[Dict]

обе функции принимают в качестве аргумента путь к файлу и его имя и на выходе получаем
список словарей с транзакциями.



## Тесты
Добавлены тестовые файлы test_widget.py, test_masks.pym test_processing.py
Добавлены тестовые файлы test_widget.py, test_masks.py, test_processing.py, test_generators.py
которые проверяют ранее написанные функции.
В них реализованы функции:
1. test_mask_account_card,
Expand All @@ -165,6 +246,17 @@ sort [{'id': 41428829, 'state': 'EXECUTED', 'date': '2019-07-03T18:35:29.512364
5. test_sort_by_date,
6. test_get_mask_card_number,
7. test_get_mask_account
8. test_filter_by_currency_valid
9. test_empty_input
10. test_transaction_descriptions
11. test_transaction_descriptions_empty
12. test_card_number_generator
13. test_transaction_loader_not_file
14. test_transaction_loader
15. test_currency_converter
16. test_csv_loader
17. test_excel_loader


Тест запускается из командной строки, командой **pytest**

Expand Down
Loading