Add .items() to Config
This commit is contained in:
parent
af0881b823
commit
e7a35d23e5
5 changed files with 86 additions and 1 deletions
|
@ -4,3 +4,4 @@
|
|||
from . import argv
|
||||
from . import aux
|
||||
from . import cfg
|
||||
from . import dt
|
||||
|
|
|
@ -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):
|
||||
|
|
64
dtk/aux.py
64
dtk/aux.py
|
@ -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)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
|
|
|
@ -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
16
dtk/dt.py
Normal 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)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue