def __new__(cls,seed=None,sid=None,on_fail='die'): if type(sid) == cls: return sid cls.arg_chk(on_fail) try: if seed: from mmgen.seed import Seed,SubSeed assert type(seed) in (Seed,SubSeed),'not a Seed or SubSeed instance' from mmgen.util import make_chksum_8 return str.__new__(cls,make_chksum_8(seed.data)) elif sid: assert set(sid) <= set(hexdigits.upper()),'not uppercase hex digits' assert len(sid) == cls.width,'not {} characters wide'.format(cls.width) return str.__new__(cls,sid) raise ValueError('no arguments provided') except Exception as e: return cls.init_fail(e,seed or sid)
def __new__(cls,seed=None,sid=None,on_fail='die'): if type(sid) == cls: return sid cls.arg_chk(on_fail) try: if seed: from .seed import SeedBase assert isinstance(seed,SeedBase),'not a subclass of SeedBase' from .util import make_chksum_8 return str.__new__(cls,make_chksum_8(seed.data)) elif sid: assert set(sid) <= set(hexdigits.upper()),'not uppercase hex digits' assert len(sid) == cls.width,'not {} characters wide'.format(cls.width) return str.__new__(cls,sid) raise ValueError('no arguments provided') except Exception as e: return cls.init_fail(e,seed or sid)
def __new__(cls,seed=None,sid=None,on_fail='die'): if type(sid) == cls: return sid cls.arg_chk(cls,on_fail) try: if seed: from mmgen.seed import Seed assert type(seed) == Seed,'not a Seed instance' from mmgen.util import make_chksum_8 return str.__new__(cls,make_chksum_8(seed.get_data())) elif sid: assert set(sid) <= set(hexdigits.upper()),'not uppercase hex digits' assert len(sid) == cls.width,'not {} characters wide'.format(cls.width) return str.__new__(cls,sid) raise ValueError,'no arguments provided' except Exception as e: m = "{!r}: value cannot be converted to SeedID ({})" return cls.init_fail(m.format(seed or sid,e[0]),on_fail)
def build_character_set(self): '''Assemble the list of acceptable characters for password generation. ''' if self.hexadecimal: # If hexadecimal output enabled, return early. # Use *only* hex in character set. # Do some manipulations here to remove lowercase `a-f` if self.upper: hexcase = hexdigits.upper() else: hexcase = hexdigits.lower() self.char_set += ''.join(list(set(hexcase))) return if self.alpha: self.char_set += ascii_lowercase if self.upper: self.char_set += ascii_uppercase if self.numerals: self.char_set += digits if self.special: self.char_set += punctuation
def is_hex_str_uc(s): return set(list(s)) <= set(list(hexdigits.upper())) def is_b58_str(s): return set(list(s)) <= set(baseconv.digits['b58'])
def is_hex_str_uc(s): return set(list(s)) <= set(list(hexdigits.upper()))
def is_hexstring_uc(s): return _is_whatstring(s,hexdigits.upper())
# цифры числа. Например, пользователь ввёл A2 и C4F. Сохранить их как [‘A’, ‘2’] # и [‘C’, ‘4’, ‘F’] соответственно. Сумма чисел из примера: [‘C’, ‘F’, ‘1’], # произведение - [‘7’, ‘C’, ‘9’, ‘F’, ‘E’]. from collections import deque from string import hexdigits from string import digits # import cProfile def hex_digit_to_int(char: str = '0') -> int: assert char in hexdigits, f'{char} not a hex digit' return int(char) if char in digits else ord(char.upper()) - ord('A') + 10 hex_numbers = list(hexdigits.upper())[:16] def int_to_hex(number: int) -> str: return hex_numbers[number] number1 = list(input("Введите первое hex: ").upper()) number2 = list(input("Введите второе hex: ").upper()) # number1 = list("a2".upper()) # number2 = list("c4f".upper()) print(number1, number2, sep='\n') def hex_sum(num1: list, num2: list) -> list: n1 = num1.copy()
def _variable_substitution(context: ParserCtx, *, var_name: str) -> Optional[str]: ctx = context.ctx row, _ = ctx.position c_lhs, c_rhs = context.info.comment_str path = PurePath(ctx.filename) if var_name == "TM_SELECTED_TEXT": return context.info.visual elif var_name == "TM_CURRENT_LINE": return ctx.line elif var_name == "TM_CURRENT_WORD": return ctx.words elif var_name == "TM_LINE_INDEX": return str(row) elif var_name == "TM_LINE_NUMBER": return str(row + 1) elif var_name == "TM_FILENAME": return path.name elif var_name == "TM_FILENAME_BASE": return path.stem elif var_name == "TM_DIRECTORY": return normcase(path.parent) elif var_name == "TM_FILEPATH": return normcase(path) elif var_name == "RELATIVE_FILEPATH": try: return normcase(path.relative_to(ctx.cwd)) except ValueError: return None elif var_name == "CLIPBOARD": return context.info.clipboard elif var_name == "WORKSPACE_NAME": return ctx.cwd.name elif var_name == "WORKSPACE_FOLDER": return normcase(ctx.cwd) # Randomv value related elif var_name == "RANDOM": return "".join(choices(digits, k=6)) elif var_name == "RANDOM_HEX": return "".join(choices(tuple({*hexdigits.upper()}), k=6)) elif var_name == "UUID": return str(uuid4()) # Date/time related elif var_name == "CURRENT_YEAR": return datetime.now().strftime("%Y") elif var_name == "CURRENT_YEAR_SHORT": return datetime.now().strftime("%y") elif var_name == "CURRENT_MONTH": return datetime.now().strftime("%m") elif var_name == "CURRENT_MONTH_NAME": return datetime.now().strftime("%B") elif var_name == "CURRENT_MONTH_NAME_SHORT": return datetime.now().strftime("%b") elif var_name == "CURRENT_DATE": return datetime.now().strftime("%d") elif var_name == "CURRENT_DAY_NAME": return datetime.now().strftime("%A") elif var_name == "CURRENT_DAY_NAME_SHORT": return datetime.now().strftime("%a") elif var_name == "CURRENT_HOUR": return datetime.now().strftime("%H") elif var_name == "CURRENT_MINUTE": return datetime.now().strftime("%M") elif var_name == "CURRENT_SECOND": return datetime.now().strftime("%S") elif var_name == "CURRENT_SECONDS_UNIX": return str(round(datetime.now().timestamp())) elif var_name == "BLOCK_COMMENT_START": return c_lhs if c_lhs and c_rhs else None elif var_name == "BLOCK_COMMENT_END": return c_rhs if c_lhs and c_rhs else None elif var_name == "LINE_COMMENT": return (c_lhs or None) if not c_rhs else None else: return None
# def hex_str_to_list(string: str) -> list: # return list(string.upper()) # # print(hex_str_to_list("a2")) # print(hex_str_to_list("C4f")) def hex_digit_to_int(char: str = 0) -> int: assert char in hexdigits return int(char) if char in digits else ord(char.upper()) - ord('A') + 10 hex_numbers = defaultdict(int) for char in set(hexdigits.upper()): hex_numbers[char] = hex_digit_to_int(char) # print(hex_numbers) def int_to_hex(number: int) -> str: for hex_digit in hex_numbers: if hex_numbers[hex_digit] == number: return hex_digit # print(int_to_hex(1)) # exit() # print(tuple(map(lambda x: f"digit_{x}", set(hexdigits.upper()))))