Skip to content
Snippets Groups Projects
Commit bbe85a62 authored by KERDREUX Jerome's avatar KERDREUX Jerome
Browse files

Type hints for tools.py is Ok

At least one piece is Ok ;)
parent 40cf3231
Branches
No related tags found
1 merge request!1First try of type hints
......@@ -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:]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment