Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
532c532
домашнее задание 11.1
kostya261 Jun 15, 2025
85e2fc3
дополнил домашку фикстурой и coverage
kostya261 Jun 15, 2025
96fc8aa
начинаю разбираться с декораторами
kostya261 Jun 26, 2025
92f7917
добавил декоратор log и его тесты
kostya261 Jun 28, 2025
6e23f0a
попытки разобраться с mock и patch
kostya261 Jul 8, 2025
90a91c8
Домашнее задание 12.1
kostya261 Jul 9, 2025
800d05c
добавлен файл readme.md
kostya261 Jul 9, 2025
7921515
добавлено логирование в файлы masks.py, utils.py
kostya261 Jul 13, 2025
6f2e5dc
обновил README
kostya261 Jul 13, 2025
3b97ece
домашнее задание 13.1
kostya261 Jul 20, 2025
69d2a8a
обновил README.md 13.1
kostya261 Jul 20, 2025
2611661
большими мазками накидываю домашнее задание 13.2 пока предальфа версия
kostya261 Jul 28, 2025
afc1e84
дубль два 13.2 пока альфа версия
kostya261 Jul 30, 2025
44f56df
прогнал через линтеры 13.2 пока альфа версия
kostya261 Jul 30, 2025
3ca6c8a
удалил часть новых функций так как доработал немного старые 13.2 пуст…
kostya261 Jul 31, 2025
dfe1b68
обновил README 13.2
kostya261 Jul 31, 2025
642ff8a
добавил htmlcov обновленный 13.2
kostya261 Jul 31, 2025
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/
125 changes: 122 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,58 @@

3. Зависимости указанные в файле: *pyproject.toml*
```
[tool.poetry]
name = "pythonproject"
version = "0.1.0"
description = ""
authors = ["Konstantin Kosarew <kos26193@gmail.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.13"
poetry-core = "^2.1.3"
shell = "^1.0.1"
python-dotenv = "^1.1.1"
pandas = "^2.3.1"
openpyxl = "^3.1.5"
pandas-stubs = "^2.3.0.250703"


[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 +102,13 @@ print(temp_result)
```
**3145
```
14.04.2025 00:15
Добавлено логирование работы функций

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


### widget.py
В данном модуле описаны функции:
Expand Down Expand Up @@ -98,8 +142,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 +198,70 @@ 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, json_file: bool)
transaction_descriptions(date_list: list)
card_number_generator(start_value: int, end_value: int)

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

01.08.2025
filter_by_currency - доработал немного функцию, что бы можно было выбирать,
откуда она будет брать данные. Из json или csv/ excel файлов

## 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]

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

## transactions_finder.py
process_bank_search(data: list[dict], search: str) -> list[dict]
process_bank_operations(data: list[dict], categories: list) -> dict
print_transactions(data: list[dict], json_file: bool = False) -> None

Первые две функции принимают списки словарей с транзакциями.
process_bank_search - принимает вторым параметром строку по которой отбирает транзакции
и возвращает новый список словарей с отфильтрованными значениями
process_bank_operations - принимает вторым параметром список категорий операций и
возвращает словарь с ключами из категорий и значениями в виде количества совпадений каждой
категории во входном списке
print_transactions - принимает список словарей с транзакциями и указатель какой файл выводим json
или другой и выводит информацию в консоль

## Тесты
Добавлены тестовые файлы 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 +271,19 @@ 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
18. test_process_bank_search
19. test_process_bank_operations


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

Expand Down
Loading