def rot13_encrypt(message): message = message.lower().encode() lower_chars = bytes.maketrans( ascii_lowercase.encode(), ascii_lowercase[13:].encode() + ascii_lowercase[:13].encode()) #upper_chars = makestrans(ascii_uppercase,ascii_lowercase[13:]) # If upper case chars must stay. return message.translate(lower_chars) #.translate(upper_chars)
def test_stream_part_above_read_size(): stream = StreamChain(ascii_lowercase.encode()) assert stream.read(4) == b"abcd" assert stream.read(8) == b"efghijkl" assert stream.read(2) == b"mn" assert stream.read(8) == b"opqrstuv" assert stream.read(1) == b"w" assert stream.read(8) == b"xyz" assert stream.read(8) == b""
import re from string import ascii_letters, ascii_lowercase, digits from typing import Optional, TYPE_CHECKING, cast BASCII_LOWERCASE = ascii_lowercase.encode("ascii") BPCT_ALLOWED = {"%{:02X}".format(i).encode("ascii") for i in range(256)} GEN_DELIMS = ":/?#[]@" SUB_DELIMS_WITHOUT_QS = "!$'()*," SUB_DELIMS = SUB_DELIMS_WITHOUT_QS + "+&=;" RESERVED = GEN_DELIMS + SUB_DELIMS UNRESERVED = ascii_letters + digits + "-._~" ALLOWED = UNRESERVED + SUB_DELIMS_WITHOUT_QS _IS_HEX = re.compile(b"[A-Z0-9][A-Z0-9]") class _Quoter: def __init__( self, *, safe: str = "", protected: str = "", qs: bool = False ) -> None: self._safe = safe self._protected = protected self._qs = qs def __call__(self, val: Optional[str]) -> Optional[str]: if val is None: return None if not isinstance(val, str): raise TypeError("Argument should be str") if not val:
import os import re import sys from string import ascii_letters, ascii_lowercase, digits from typing import Optional, TYPE_CHECKING, cast NO_EXTENSIONS = bool(os.environ.get("YARL_NO_EXTENSIONS")) # type: bool if sys.implementation.name != "cpython": NO_EXTENSIONS = True BASCII_LOWERCASE = ascii_lowercase.encode("ascii") BPCT_ALLOWED = {"%{:02X}".format(i).encode("ascii") for i in range(256)} GEN_DELIMS = ":/?#[]@" SUB_DELIMS_WITHOUT_QS = "!$'()*," SUB_DELIMS = SUB_DELIMS_WITHOUT_QS + "+&=;" RESERVED = GEN_DELIMS + SUB_DELIMS UNRESERVED = ascii_letters + digits + "-._~" ALLOWED = UNRESERVED + SUB_DELIMS_WITHOUT_QS _IS_HEX = re.compile(b"[A-Z0-9][A-Z0-9]") class _Quoter: def __init__( self, *, safe: str = "",
if c in ignore: continue if len(l) and c ^ l[-1] == 0x20: l.pop() else: l.append(c) return l advent.setup(2018, 5) fin = advent.get_input(mode='rb') polymer = fin.read().rstrip() trimmed = react_fast(polymer) reacted_len = len(trimmed) advent.print_answer(1, reacted_len) best_reacted_len = reacted_len for l, L in zip(ascii_lowercase.encode(), ascii_uppercase.encode()): reacted_len = len(react_fast(trimmed, {l, L})) if reacted_len < best_reacted_len: best_reacted_len = reacted_len advent.print_answer(2, best_reacted_len)
# -*- coding: utf-8 -*- from string import ascii_letters, ascii_lowercase, digits BIN_ASCII_LOWERCASE = ascii_lowercase.encode('ascii') BIN_PERCENTAGE_ALLOWED = {f'%{index:02X}'.encode('ascii') for index in range(256)} GEN_DELIMS = ':/?#[]@' SUB_DELIMS_WO_QS = '!$\'()*,;' QUERY_STRING_NOT_SAFE = '+&=' SUB_DELIMS = f'{SUB_DELIMS_WO_QS}{QUERY_STRING_NOT_SAFE}' RESERVED = f'{GEN_DELIMS}{SUB_DELIMS}' UNRESERVED = f'{ascii_letters}{digits}-._~' ALLOWED = f'{UNRESERVED}{SUB_DELIMS_WO_QS}' def quote(value, safe='', protected='', query_string=False): """ Http quotes the given `value`. Parameters ---------- value : `str` The value to quote. safe : `str`, Optional Additional percentage encoding safe characters. Defaults to empty string. protected : `str`, Optional Additional character to have percentage encoding preference. Defaults to empty string. query_string : `bool`, Optional Whether the generated value is a query string key or value. Defaults to `False` Returns -------
from string import ascii_letters, ascii_lowercase, digits BASCII_LOWERCASE = ascii_lowercase.encode('ascii') BPCT_ALLOWED = {'%{:02X}'.format(i).encode('ascii') for i in range(256)} GEN_DELIMS = ":/?#[]@" SUB_DELIMS_WITHOUT_QS = "!$'()*," SUB_DELIMS = SUB_DELIMS_WITHOUT_QS + '+&=;' RESERVED = GEN_DELIMS + SUB_DELIMS UNRESERVED = ascii_letters + digits + '-._~' ALLOWED = UNRESERVED + SUB_DELIMS_WITHOUT_QS def _py_quote(val, *, safe='', protected='', qs=False, strict=True): if val is None: return None if not isinstance(val, str): raise TypeError("Argument should be str") if not val: return '' val = val.encode('utf8', errors='strict' if strict else 'ignore') ret = bytearray() pct = b'' safe += ALLOWED if not qs: safe += '+&=;' safe += protected bsafe = safe.encode('ascii') idx = 0 while idx < len(val): ch = val[idx] idx += 1