Skip to content

Commit

Permalink
feat: Add PDM as package manager (#42)
Browse files Browse the repository at this point in the history
* Add PDM package manager

* update action

* bump
  • Loading branch information
makisukurisu authored Jun 21, 2024
1 parent 9148556 commit 5061e4e
Show file tree
Hide file tree
Showing 30 changed files with 580 additions and 63 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/pylint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11"]
python-version: ["3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
Expand All @@ -17,8 +17,8 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pylint
pip install -r requirements.txt
- name: Analysing the code with pylint
pip install pdm
pdm install --no-lock
- name: Linting code with Pylint
run: |
pylint $(git ls-files '*.py')
pdm run lint
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -130,4 +130,5 @@ dmypy.json

.vscode/
persistance_cache
logs/*
logs/*
.pdm-python
473 changes: 473 additions & 0 deletions pdm.lock

Large diffs are not rendered by default.

34 changes: 34 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[project]
name = "ontu-schedule-bot"
version = "1.0.0"
description = "Default template for PDM package"
authors = [
{name = "Pavlo Pohorieltsev", email = "49622129+makisukurisu@users.noreply.github.com"},
]
dependencies = [
"python-telegram-bot==21.3",
"python-telegram-bot[job-queue]==21.3",
"python-telegram-bot[callback-data]==21.3",
"requests==2.32.3",
"python-decouple==3.8",
]
requires-python = ">=3.11"
readme = "README.md"
license = {text = "MIT"}


[project.optional-dependencies]
dev = [
"pylint>=3.2.3",
"isort>=5.13.2",
"black>=24.4.2",
]
[tool.pdm]
distribution = false

[tool.pdm.scripts]
_isort="isort src/ontu_schedule_bot"
_black="black src/ontu_schedule_bot"
_pylint="pylint src/ontu_schedule_bot"
lint={ composite=["_isort", "_black", "_pylint"], keep_going=true }
bot={ call="ontu_schedule_bot.bot:main", working_dir="src" }
11 changes: 0 additions & 11 deletions requirements.txt

This file was deleted.

3 changes: 0 additions & 3 deletions run_lint.bat

This file was deleted.

3 changes: 0 additions & 3 deletions run_lint.sh

This file was deleted.

6 changes: 6 additions & 0 deletions src/example.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# From BotFather
API_TOKEN="123456789:ABCDEFghijklmnopqrstuvwxYZ1234567890"
# URL Of ONTU-schedule-bot-admin
API_URL=http://127.0.0.1:8000
# Your Telegram ID
DEBUG_CHAT_ID=1234567890
Empty file.
11 changes: 7 additions & 4 deletions ontu_schedule_bot/bot.py → src/ontu_schedule_bot/bot.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
"""Contains the 'heart' of the bot. Here it's initialized and configured"""

import datetime
import logging
import os

import classes
import commands
import patterns
import pytz
from secret_config import API_TOKEN
from telegram.ext import (
Application,
CallbackQueryHandler,
Expand All @@ -15,6 +13,11 @@
PicklePersistence,
)

from ontu_schedule_bot import classes, commands, patterns
from ontu_schedule_bot.secret_config import API_TOKEN

os.makedirs("logs", exist_ok=True)

# Enable logging
logging.basicConfig(
format="%(asctime)s - %(name)s - %(funcName)s - %(levelname)s - %(message)s",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Imports for classes"""

from .base import BaseClass
from .chat import Chat
from .day import Day
Expand All @@ -25,4 +26,5 @@
"Day",
"TeacherForSchedule",
"Department",
"MessageCampaign",
]
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""This module contains chat classes"""

from classes.base import BaseClass
from classes.subscription import Subscription
from ontu_schedule_bot.classes.base import BaseClass
from ontu_schedule_bot.classes.subscription import Subscription


class Chat(BaseClass):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
from collections import OrderedDict
from operator import attrgetter

from classes.base import BaseClass
from classes.lesson import Lesson
from classes.pair import Pair
from ontu_schedule_bot.classes.base import BaseClass
from ontu_schedule_bot.classes.lesson import Lesson
from ontu_schedule_bot.classes.pair import Pair

SUMMARY = "{day} - {pairs} пари ({first} - {last})"

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Describes department"""

from classes.base import BaseClass
from ontu_schedule_bot.classes.base import BaseClass


class Department(BaseClass):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""This module defines faculty class"""

from classes.base import BaseClass
from ontu_schedule_bot.classes.base import BaseClass


class Faculty(BaseClass):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""This module defines group class"""

from classes.base import BaseClass
from classes.faculty import Faculty
from ontu_schedule_bot.classes.base import BaseClass
from ontu_schedule_bot.classes.faculty import Faculty


class Group(BaseClass):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
"""Describes Lesson"""

import datetime
import re

from classes.base import BaseClass
from classes.teacher import Teacher
from ontu_schedule_bot.classes.base import BaseClass
from ontu_schedule_bot.classes.teacher import Teacher


class Lesson(BaseClass):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
"""Describes a MessageCampaign - mass-sending object for Administrators"""
from classes.base import BaseClass

from ontu_schedule_bot.classes.base import BaseClass


class MessageCampaign(BaseClass):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""Describes pair"""
from classes.base import BaseClass, pair_end_times, pair_times
from classes.lesson import Lesson, TeachersLesson

from ontu_schedule_bot.classes.base import BaseClass, pair_end_times, pair_times
from ontu_schedule_bot.classes.lesson import Lesson, TeachersLesson

MESSAGE_FORMAT = """
Пара №{pair_no}, триває з {hour_0}:{minute_0} по {hour_1}:{minute_1} - {day_name}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
"""Describes schedule"""

import datetime

import pytz
from classes.base import BaseClass, pair_times
from classes.day import Day
from classes.pair import Pair

from ontu_schedule_bot.classes.base import BaseClass, pair_times
from ontu_schedule_bot.classes.day import Day
from ontu_schedule_bot.classes.pair import Pair

MAX_PAIRS = 6

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
"""This module describes subscription class"""

from classes.base import BaseClass
from classes.group import Group
from classes.teacher import TeacherForSchedule
from ontu_schedule_bot.classes.base import BaseClass
from ontu_schedule_bot.classes.group import Group
from ontu_schedule_bot.classes.teacher import TeacherForSchedule


class Subscription(BaseClass):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Describes teacher"""

from classes.base import BaseClass
from classes.department import Department
from ontu_schedule_bot.classes.base import BaseClass
from ontu_schedule_bot.classes.department import Department


class Teacher(BaseClass):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
"""This module contains all the commands bot may execute"""

import logging
import time

import classes
import decorators
import enums
import utils
from secret_config import DEBUG_CHAT_ID
from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Message, Update
from telegram.constants import ChatType, ParseMode
from telegram.error import Forbidden
from telegram.ext import ContextTypes

from ontu_schedule_bot import classes, decorators, enums, utils
from ontu_schedule_bot.secret_config import DEBUG_CHAT_ID


@decorators.reply_with_exception
async def start_command(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
"""Contains some handy decorators for bot"""

import logging
import traceback
from typing import Callable

from requests.exceptions import RequestException
from secret_config import API_TOKEN, DEBUG_CHAT_ID
from telegram import Bot, Update
from telegram.ext import ContextTypes
from utils import send_message_to_telegram, split_string

from ontu_schedule_bot.secret_config import API_TOKEN, DEBUG_CHAT_ID
from ontu_schedule_bot.utils import send_message_to_telegram, split_string


def _print(exception: Exception) -> str:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""This module contains some handy enumerators for bot"""

from enum import Enum


Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""This module loads (or sets) secrets for the bot (API_TOKEN, API_URL...)"""

from decouple import config

API_TOKEN = config("API_TOKEN", default=None)
Expand All @@ -17,10 +18,10 @@
file.write(f"API_URL={API_URL}\n")
print("Saved API_URL to .env")

DEBUG_CHAT_ID = config("DEBUG_CHAT_ID", default=None)
DEBUG_CHAT_ID = config("DEBUG_CHAT_ID", default=None, cast=int)
if not DEBUG_CHAT_ID:
print("DEBUG_CHAT_ID not found in .env")
DEBUG_CHAT_ID = input("Enter DEBUG_CHAT_ID to receive error messages: ")
DEBUG_CHAT_ID = int(input("Enter DEBUG_CHAT_ID to receive error messages: "))
with open(".env", "a+", encoding="UTF-8") as file:
file.write(f"DEBUG_CHAT_ID={DEBUG_CHAT_ID}\n")
print("Saved DEBUG_CHAT_ID to .env")
Expand Down
17 changes: 12 additions & 5 deletions ontu_schedule_bot/utils.py → src/ontu_schedule_bot/utils.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
"""This is a utils module, it contains Requests and pagination for bot"""

import logging
import math
from urllib.parse import urljoin

import classes
import requests
import telegram
from enums import Endpoints, Statuses
from secret_config import API_URL

from ontu_schedule_bot import classes
from ontu_schedule_bot.enums import Endpoints, Statuses
from ontu_schedule_bot.secret_config import API_URL


# region Requests
Expand Down Expand Up @@ -172,7 +174,9 @@ def reset_cache(self, group: classes.Group) -> bool:
answer: dict = response.json()
return answer.get("count", 0) >= 0

def get_batch_schedule(self) -> list[dict[str, classes.Schedule | str | list[int]]]:
def get_batch_schedule(
self,
) -> list[dict[str, classes.Schedule | str | list[int]]]:
"""This method gets schedule for all groups"""
response = self.make_request(
endpoint=Endpoints.SCHEDULE_BATCH_GET.value, method="GET"
Expand Down Expand Up @@ -264,7 +268,10 @@ def new_chat(self, message: telegram.Message) -> classes.Chat | dict | None:
return answer

def set_chat_group(
self, message: telegram.Message, group: classes.Group, is_active: bool = True
self,
message: telegram.Message,
group: classes.Group,
is_active: bool = True,
) -> classes.Subscription | dict:
"""Updates subscription info for chat"""
topic_id = message.message_thread_id if message.is_topic_message else None
Expand Down
Empty file added tests/__init__.py
Empty file.

0 comments on commit 5061e4e

Please sign in to comment.