Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
d4c7fce
feat: create conflicts
Nov 19, 2024
edcbec4
fix: main
Nov 21, 2024
1ece50e
feat: changes
Feb 27, 2025
3fbc0fd
разрешение кофнликтов слияния
molodoymalchikbabki Sep 23, 2025
db7055a
добавлен GitHub Actions CI with ruff linter
molodoymalchikbabki Sep 23, 2025
6c7cd32
test: trigger CI
molodoymalchikbabki Sep 23, 2025
a81ace0
style: format code with ruff
molodoymalchikbabki Sep 23, 2025
ff3406f
Задание 1: Настройка и запуск FastAPI приложения
molodoymalchikbabki Sep 23, 2025
b467010
добавлена логика в main.py(get, post, put, del)
molodoymalchikbabki Sep 24, 2025
5940bd6
добавлена информация про варианты хранения состояния
molodoymalchikbabki Sep 25, 2025
74410bb
переделано хранение информации о задачах с оперативной памяти на json
molodoymalchikbabki Sep 25, 2025
fc3c7e4
написан класс для работы с файлом хранения
molodoymalchikbabki Sep 25, 2025
2f8dae6
переход на облачное хранилище, добавление новых зависимостей
molodoymalchikbabki Sep 27, 2025
4c3f3de
добавлена информация про состояние гонки
molodoymalchikbabki Sep 27, 2025
23b7fce
добавлена интеграция Cloudflare
molodoymalchikbabki Sep 27, 2025
8696428
сделан BaseHTTPClient
molodoymalchikbabki Sep 27, 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
29 changes: 29 additions & 0 deletions .github/workflows/ruff-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Ruff Code Quality

on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]

jobs:
lint:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'

- name: Install ruff
run: pip install ruff

- name: Run ruff check
run: ruff check git/src/

- name: Check formatting
run: ruff format git/src/ --check
55 changes: 34 additions & 21 deletions git/src/main.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,29 @@
import json
import os

def load_books(filename='library.json'):

def load_books(filename="library.json"):
"""
Загрузка списка книг из JSON-файла.
Возвращает список книг (каждая книга - это словарь).
"""
if not os.path.isfile(filename):
return []
with open(filename, 'r', encoding='utf-8') as file:
with open(filename, "r", encoding="utf-8") as file:
try:
return json.load(file)
except json.JSONDecodeError:
return []

def save_books(books, filename='library.json'):

def save_books(books, filename="library.json"):
"""
Сохранение списка книг в JSON-файл.
"""
with open(filename, 'w', encoding='utf-8') as file:
with open(filename, "w", encoding="utf-8") as file:
json.dump(books, file, ensure_ascii=False, indent=4)


def list_books(books):
"""
Возвращает строку со списком всех книг.
Expand All @@ -29,29 +32,30 @@ def list_books(books):
return "Библиотека пуста."
result_lines = []
for idx, book in enumerate(books, start=1):
result_lines.append(f"{idx}. {book['title']} | {book['author']} | {book['year']}")
result_lines.append(
f"{idx}. {book['title']} | {book['author']} | {book['year']}"
)
return "\n".join(result_lines)


def add_book(books, title, author, year):
"""
Принимает текущий список книг и данные о новой книге.
Возвращает новый список, в котором добавлена новая книга.
"""
new_book = {
'title': title,
'author': author,
'year': year
}
new_book = {"title": title, "author": author, "year": year}
# Создаём НОВЫЙ список, добавляя new_book
return books + [new_book]


def remove_book(books, title):
"""
Принимает текущий список книг и название книги для удаления.
Возвращает новый список без книги, у которой совпадает название.
"""
# Фильтруем список: оставляем только те книги, у которых название не совпадает с переданным
return [book for book in books if book['title'].lower() != title.lower()]
return [book for book in books if book["title"].lower() != title.lower()]


def search_books(books, keyword):
"""
Expand All @@ -60,13 +64,16 @@ def search_books(books, keyword):
"""
keyword_lower = keyword.lower()
return [
book for book in books
if keyword_lower in book['title'].lower() or keyword_lower in book['author'].lower()
book
for book in books
if keyword_lower in book["title"].lower()
or keyword_lower in book["author"].lower()
]


def main():
"""
Точка входа в программу: здесь мы загружаем книги,
Точка входа в программу: здесь мы загружаем книги,
показываем меню и обрабатываем ввод пользователя.
"""
books = load_books() # Загрузили список книг из JSON
Expand All @@ -81,11 +88,11 @@ def main():

choice = input("Выберите действие (1-5): ").strip()

if choice == '1':
if choice == "1":
print("\nСписок книг:")
print(list_books(books))

elif choice == '2':
elif choice == "2":
print("\nДобавление новой книги:")
title = input("Введите название: ").strip()
author = input("Введите автора: ").strip()
Expand All @@ -97,9 +104,11 @@ def main():
save_books(books) # Сразу сохраняем в файл
print("Книга добавлена!")

elif choice == '3':
elif choice == "3":
print("\nУдаление книги:")
title_to_remove = input("Введите название книги, которую хотите удалить: ").strip()
title_to_remove = input(
"Введите название книги, которую хотите удалить: "
).strip()

new_books = remove_book(books, title_to_remove)
if len(new_books) < len(books):
Expand All @@ -109,22 +118,26 @@ def main():
else:
print("Книга с таким названием не найдена.")

elif choice == '4':
elif choice == "4":
print("\nПоиск книг:")
keyword = input("Введите ключевое слово для поиска (в названии или авторе): ").strip()
keyword = input(
"Введите ключевое слово для поиска (в названии или авторе): "
).strip()
found_books = search_books(books, keyword)
if found_books:
print("\nНайденные книги:")
print(list_books(found_books))
else:
print("Ничего не найдено.")

elif choice == '5':
elif choice == "5":
print("Выход из программы.")
break

else:
print("Некорректный ввод. Попробуйте ещё раз.")


if __name__ == "__main__":
main()
# Test comment
4 changes: 4 additions & 0 deletions simple_backend/src/task_tracker/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.venv/
venv/
__pycache__/
*.pyc.env
Loading