Skip to content

Commit

Permalink
pydantic fixes and tweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
omerXfaruq committed Feb 13, 2024
1 parent ce750f5 commit 6fec980
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 24 deletions.
4 changes: 3 additions & 1 deletion requirements.in
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
black
pytest
pytest-asyncio
asyncio
sqlmodel
sqlalchemy
Expand All @@ -9,4 +10,5 @@ uvicorn
pydantic
typing
httpx
datetime
datetime
yfinance
3 changes: 1 addition & 2 deletions src/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,7 @@
"src.listener:app",
host="0.0.0.0",
port=PORT,
reload=True,
log_level="info",
reload=False,
)
else:
print("Fail, closing the app.")
2 changes: 1 addition & 1 deletion src/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ async def create_response_message(
if len(words) == 2:
if words[0] == "package:":
fn_id = int(words[1])
text = await (Packages.functions[fn_id]())
text = await Packages.functions[fn_id]()

elif words[0] == "message_id:":
message_id = int(words[1])
Expand Down
32 changes: 16 additions & 16 deletions src/message_validations.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ class From(BaseModel):
last_name: Optional[str]
id: Optional[int]
first_name: Optional[str]
user_name: Optional[str]
user_name: Optional[str] = None
language_code: Optional[str]
is_bot: Optional[str]
is_bot: Optional[bool] = None


class ReplyMessage(BaseModel):
Expand All @@ -38,18 +38,18 @@ class NewChatMember(BaseModel):
class Message(BaseModel):
date: Optional[int]
chat: Optional[Chat]
message_id: Optional[str]
message_id: Optional[int]
from_field: Optional[From] = Field(alias="from")
forward_date: Optional[int]
forward_date: Optional[int] = None
text: Optional[str]
photo: Optional[List[File]]
document: Optional[File]
video: Optional[File]
video_note: Optional[File]
voice: Optional[File]
new_chat_member: Optional[NewChatMember]
left_chat_member: Optional[NewChatMember]
group_chat_created: Optional[bool]
photo: Optional[List[File]] = None
document: Optional[File] = None
video: Optional[File] = None
video_note: Optional[File] = None
voice: Optional[File] = None
new_chat_member: Optional[NewChatMember] = None
left_chat_member: Optional[NewChatMember] = None
group_chat_created: Optional[bool] = None


class ChatGroup(BaseModel):
Expand Down Expand Up @@ -79,8 +79,8 @@ class MyChatMember(BaseModel):
class MessageBodyModel(BaseModel):
update_id: Optional[int]
message: Optional[Message]
my_chat_member: Optional[MyChatMember]
reply_to_message: Optional[ReplyMessage]
my_chat_member: Optional[MyChatMember] = None
reply_to_message: Optional[ReplyMessage] = None


class ResponseToMessage(BaseModel):
Expand All @@ -89,7 +89,7 @@ class ResponseToMessage(BaseModel):
from_chat_id: Optional[int]
message_id: Optional[int]
text: Optional[str]
photo: Optional[str]
document: Optional[str]
photo: Optional[str] = None
document: Optional[str] = None
parse_mode: Optional[str] = "Markdown"
disable_notification: Optional[bool]
7 changes: 5 additions & 2 deletions src/packages.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from httpx import AsyncClient
import yfinance as yf


class Packages:
Expand All @@ -17,7 +18,10 @@ async def get_tr_stocks() -> str:
USDTRY = round(USDTRY, 2)
USD_DEGISIM = float(js["USD"]["degisim"])
USD_DEGISIM = round(USD_DEGISIM, 2)
XU100 = (float(js["XU100"]["satis"]) + float(js["XU100"]["alis"])) / 2
XU100 = (
float(js["XU100"]["satis"].replace(".", "").replace(",", "."))
+ float(js["XU100"]["alis"].replace(".", "").replace(",", "."))
) / 2
XU100 = round(XU100, 2)
XU100_DEGISIM = float(js["XU100"]["degisim"])
XU100_DEGISIM = round(XU100_DEGISIM, 2)
Expand Down Expand Up @@ -55,7 +59,6 @@ async def get_tr_stocks() -> str:

@staticmethod
async def get_yahoo_tr_stocks() -> str:
import yfinance as yf

key_list = {
"USDTRY": "TRY=X",
Expand Down
34 changes: 32 additions & 2 deletions tests/all_tests.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import pytest

from fastapi.testclient import TestClient
from sqlmodel import Session, SQLModel, create_engine, select
from sqlmodel.pool import StaticPool

from src.listener import app, User, UserCreate, get_session
from src.listener import app
from src.events import Events
from src.db import *
from src.message_validations import MessageBodyModel

pytest_plugins = ("pytest_asyncio",)

Expand Down Expand Up @@ -183,3 +183,33 @@ def test_print_help_message():

print()
print(Constants.Help.help_message(name, language_code))


def test_validate(client):
req = {
"update_id": 677224863,
"message": {
"message_id": 28583,
"from": {
"id": 861126057,
"is_bot": False,
"first_name": "Ömer Faruk",
"last_name": "Özdemir",
"username": "omerXfaruq",
"language_code": "en",
},
"chat": {
"id": 861126057,
"first_name": "Ömer Faruk",
"last_name": "Özdemir",
"username": "omerXfaruq",
"type": "private",
},
"date": 1707848171,
"text": "/help",
"entities": [{"offset": 0, "length": 7, "type": "bot_command"}],
},
}
message = MessageBodyModel(**req)
resp = client.post(f"/webhook/{Events.TOKEN}", json=req)
print(resp)

0 comments on commit 6fec980

Please sign in to comment.