Skip to content

Instantly share code, notes, and snippets.

@Tishka17
Tishka17 / example.py
Created October 25, 2021 14:13
Traits
from trait import func, traited, Trait
class ListTrait(Trait, bound=list):
def do(self):
print("Another ListTrait", *self)
@traited
def another_func(data):
@Tishka17
Tishka17 / cache.py
Last active December 17, 2021 11:15
Cache protocol
from dataclasses import dataclass
from logging import getLogger
from typing import ClassVar, TypeVar, Optional, Protocol, Dict, Type
logger = getLogger(__name__)
class Cachable(Protocol):
@classmethod
def get_model_name(self) -> str:
@Tishka17
Tishka17 / async_to_sync.py
Created December 29, 2021 07:49
Async To Sync
import asyncio
from threading import Thread
class Storage:
def __init__(self):
self.data = {}
def get(self, k):
res = self.data.get(k)
import asyncio
import logging
from typing import Dict
from aiogram import Bot, Dispatcher
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher.filters.state import StatesGroup, State
from aiogram.types import Message
from aiogram_dialog import Dialog, DialogManager, DialogRegistry, Window
@Tishka17
Tishka17 / example.py
Created March 13, 2022 09:54
List Group
Window(
Const(
"Greetings! SOme very very very very very very very very very very very very very very long descr"
),
ListGroup(
Checkbox(
Format("✓ {item}"),
Format(" {item}"),
id="check",
),
@Tishka17
Tishka17 / app.py
Created March 29, 2022 07:53
Fastapi Depends example
import uuid
from fastapi import FastAPI, Depends
app = FastAPI()
class Session:
pass
@Tishka17
Tishka17 / brackets.py
Created May 3, 2022 10:43
Parse bracket exspression [x|y|[x]]
from dataclasses import dataclass, field
# Tokens
from typing import List, Iterable
import yaml
@dataclass
class Token:
text: str
@Tishka17
Tishka17 / merge.py
Created May 11, 2022 10:02
Merge with rules
def merge(rule):
def merge(a, b):
res = {}
for key in a.keys() | b.keys():
res[key] = rule[key](a.get(key), b.get(key))
return res
return merge
@Tishka17
Tishka17 / confirm.py
Last active June 6, 2022 16:34
Demo of reusable configrmation dialog
import asyncio
import logging
import operator
from typing import Any
from aiogram import Bot, Dispatcher
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher.filters.state import StatesGroup, State
from aiogram.types import CallbackQuery
@Tishka17
Tishka17 / pincode.py
Last active March 11, 2023 18:20
pincode dialog example
import asyncio
import logging
from typing import Any
from aiogram import Bot, Dispatcher
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher.filters.state import StatesGroup, State
from aiogram.types import CallbackQuery
from aiogram_dialog import Dialog, DialogManager, Window, DialogRegistry, Data