From bbe85a62fc5cb9ca661ab1070cf0a74dfa332acb Mon Sep 17 00:00:00 2001 From: jkerdreux-imt <jerome.kerdreux@imt-atlantique.fr> Date: Mon, 25 Nov 2024 17:59:53 +0100 Subject: [PATCH] Type hints for tools.py is Ok At least one piece is Ok ;) --- libs/lib/xaal/lib/tools.py | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/libs/lib/xaal/lib/tools.py b/libs/lib/xaal/lib/tools.py index ccd5e0b3..8a44964f 100644 --- a/libs/lib/xaal/lib/tools.py +++ b/libs/lib/xaal/lib/tools.py @@ -20,6 +20,7 @@ import os import re +from typing import Optional, Union import pysodium @@ -32,7 +33,7 @@ from .bindings import UUID XAAL_DEVTYPE_PATTERN = '^[a-zA-Z][a-zA-Z0-9_-]*\\.[a-zA-Z][a-zA-Z0-9_-]*$' -def get_cfg_filename(name, cfg_dir=config.conf_dir): +def get_cfg_filename(name: str, cfg_dir: str = config.conf_dir) -> str: if name.startswith('xaal.'): name = name[5:] filename = '%s.ini' % name @@ -40,71 +41,71 @@ def get_cfg_filename(name, cfg_dir=config.conf_dir): print("Your configuration directory doesn't exist: [%s]" % cfg_dir) return os.path.join(cfg_dir, filename) -def load_cfg_file(filename): +def load_cfg_file(filename: str) -> Optional[ConfigObj]: """ load .ini file and return it as dict""" if os.path.isfile(filename): return ConfigObj(filename,indent_type=' ',encoding="utf8") return None -def load_cfg(app_name): +def load_cfg(app_name: str) -> Optional[ConfigObj]: filename = get_cfg_filename(app_name) return load_cfg_file(filename) -def load_cfg_or_die(app_name): +def load_cfg_or_die(app_name: str) -> ConfigObj: cfg = load_cfg(app_name) if not cfg: print("Unable to load config file %s" % get_cfg_filename(app_name)) sys.exit(-1) return cfg -def new_cfg(app_name): +def new_cfg(app_name: str) -> ConfigObj: filename = get_cfg_filename(app_name) cfg = ConfigObj(filename,indent_type=' ') cfg['config'] = {} cfg['config']['addr']=get_random_uuid().str return cfg -def get_random_uuid(): +def get_random_uuid() -> UUID: return UUID.random() -def get_random_base_uuid(digit=2): +def get_random_base_uuid(digit=2) -> UUID: return UUID.random_base(digit) -def get_uuid(val): +def get_uuid(val: Union[UUID, str, None]) -> Optional[UUID]: if isinstance(val,UUID): return val if isinstance(val,str): return str_to_uuid(val) return None -def str_to_uuid(val): +def str_to_uuid(val: str) -> Optional[UUID]: """ return an xAAL address for a given string""" try: return UUID(val) except ValueError: return None -def bytes_to_uuid(val): +def bytes_to_uuid(val: bytes) -> Optional[UUID]: try: return UUID(bytes=val) except ValueError: return None -def is_valid_uuid(val): +def is_valid_uuid(val: Union[UUID, str]) -> bool: return isinstance(val,UUID) -def is_valid_address(val): +def is_valid_address(val: Union[UUID, str]) -> bool: return is_valid_uuid(val) @functools.lru_cache(maxsize=128) -def is_valid_dev_type(val): +def is_valid_dev_type(val: str) -> bool: if not isinstance(val,str): return False if re.match(XAAL_DEVTYPE_PATTERN,val): return True return False -def pass2key(passphrase): +def pass2key(passphrase: str) -> bytes: """Generate key from passphrase using libsodium crypto_pwhash_scryptsalsa208sha256 func salt: buffer of zeros @@ -123,7 +124,7 @@ def pass2key(passphrase): return key @functools.lru_cache(maxsize=128) -def reduce_addr(addr): +def reduce_addr(addr: UUID) -> str: """return a string based addred without all digits""" tmp = addr.str return tmp[:5] + '..' + tmp[-5:] -- GitLab