This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
For emotes: | |
(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff]) | |
For urls: | |
\b((?:(?:https?:\/{2})?[a-z0-9.\-]+[.][a-z]{2,6}\/?)(?:[^\s()<>]+|\\(([^\s()<>]+|(\\([^\s()<>]+\\)))*\\))*) | |
Non-english urls withour puni-code: | |
(?i)((?:(?:https?:\/{2})?[^\s()\[\]<>\/]+[.][^\s()<>\/.]{2,6}\/?)(?:[^\s()<>]+|([^\s()<>]+|([^\s()<>]+))*)*) | |
((?:(?:https?:/{2})?[^\s()\[\]<>/]+[.][^\s()<>/.]{2,6}/?)(?:[^\s()<>]+|(?:[^\s()<>]+|(?:[^\s()<>]+))*)*) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def to_float(value_as_int: int) -> float: | |
binary = bin(value_as_int) | |
binary = binary[2:].zfill(32) | |
sign = -1 if binary[0] == '1' else 1 | |
exponent = int(binary[1:9], 2) - 127 | |
mantissa_base = binary[9:] | |
mantissa_bin = '1' + mantissa_base | |
mantissa = 0 | |
val = 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from __future__ import annotations | |
import sys | |
from typing import Tuple | |
try: | |
if sys.version_info >= (3, 11): | |
from typing import LiteralString | |
else: | |
from typing_extensions import LiteralString |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# A simple config class, which is wrapping default configparser | |
# https://gist.github.com/Vorono4ka/4a70f376d33567091a0a6a68ffc1aeb7 | |
import abc | |
import configparser | |
import typing | |
class Config(abc.ABC): | |
def __init__(self): |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
UNIT_NAMES = ('ms', 'sec', 'min', 'hour', 'day', 'week') | |
UNIT_DIVIDERS = (1, 60, 60, 24, 7, 1) | |
UNIT_FORMATTERS = (lambda unit: round(unit * 1000), round, round, round, round, round) | |
def time_to_string(value: float): | |
assert value >= 0, 'Time cannot be negative.' | |
assert len(UNIT_NAMES) == len(UNIT_DIVIDERS) == len(UNIT_FORMATTERS), 'Units count does not match.' | |
times = [] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
TAG_ALPHABET = '0289PYLQGRJCUV' | |
def get_id(_tag): | |
tag_chars = list(_tag.upper()) | |
result = 0 | |
for char in tag_chars: | |
if not char in TAG_ALPHABET: | |
continue | |