Add .items() to Config

This commit is contained in:
Martin Sekera 2019-10-07 01:49:59 +02:00
parent af0881b823
commit e7a35d23e5
5 changed files with 86 additions and 1 deletions

View file

@ -4,3 +4,4 @@
from . import argv
from . import aux
from . import cfg
from . import dt

View file

@ -131,7 +131,8 @@ class Invocation:
else:
raise BadKeywordArg(arg)
def execute(self):
def execute(self, context=None):
self.action.context = context
self.action(self.cmd, **self.args)
def help(self, stream=sys.stdout):

View file

@ -1,6 +1,8 @@
#! /usr/bin/env python3
# encoding: utf-8
# ----------------------------------------------------------------
def flatten_dict(root, glue=" ", prefix=[]):
lines = []
@ -13,3 +15,65 @@ def flatten_dict(root, glue=" ", prefix=[]):
lines.append((glue.join(new_prefix), v))
return lines
# ----------------------------------------------------------------
import random
PASSPHRASE_VOWELS = "aeiuAEU"
PASSPHRASE_CONSONANTS = "bcdfghjkmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ23456789"
def random_bytes(length):
return open("/dev/urandom", "rb").read(length)
def random_syllable():
return random.choice(PASSPHRASE_CONSONANTS) + random.choice(PASSPHRASE_VOWELS) + random.choice(PASSPHRASE_CONSONANTS)
def random_word(syllables=3):
parts = []
for _ in range(syllables):
parts.append(random_syllable())
return "".join(parts)
# ----------------------------------------------------------------
import hashlib
def hash_password(p, hexdigest=True):
h = hashlib.blake2b()
h.update(p.encode("utf-8"))
return h.hexdigest() if hexdigest else h.digest()
# ----------------------------------------------------------------
def raw_to_hex(raw, separator=" "):
"""
Converts a bytearray (or bytes) into its textual hexadecimal representation.
"""
output = []
for o in raw:
output.append(hex(o)[2:].zfill(2))
return separator.join(output)
def hex_to_raw(text, separator=" "):
"""
Converts a hexadecimal representation of a byte array into a bytearray.
"""
output = []
text = text.replace(separator, "")
for i in range(len(text)//2):
output.append(int(text[2*i:2*i+2], 16))
return bytearray(output)
# ----------------------------------------------------------------

View file

@ -30,6 +30,9 @@ class Config:
def values(self):
return self.raw.values()
def items(self):
return self.raw.items()
def __getitem__(self, name):
return self.raw[name]

16
dtk/dt.py Normal file
View file

@ -0,0 +1,16 @@
#! /usr/bin/env python3
# encoding: utf-8
# ----------------------------------------------------------------
import datetime
import pytz
def now(tz_name="UTC"):
t = datetime.datetime.now()
tz = pytz.timezone(tz_name)
return tz.localize(t)
# ----------------------------------------------------------------