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 argv
|
||||||
from . import aux
|
from . import aux
|
||||||
from . import cfg
|
from . import cfg
|
||||||
|
from . import dt
|
||||||
|
|
|
@ -131,7 +131,8 @@ class Invocation:
|
||||||
else:
|
else:
|
||||||
raise BadKeywordArg(arg)
|
raise BadKeywordArg(arg)
|
||||||
|
|
||||||
def execute(self):
|
def execute(self, context=None):
|
||||||
|
self.action.context = context
|
||||||
self.action(self.cmd, **self.args)
|
self.action(self.cmd, **self.args)
|
||||||
|
|
||||||
def help(self, stream=sys.stdout):
|
def help(self, stream=sys.stdout):
|
||||||
|
|
64
dtk/aux.py
64
dtk/aux.py
|
@ -1,6 +1,8 @@
|
||||||
#! /usr/bin/env python3
|
#! /usr/bin/env python3
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------
|
||||||
|
|
||||||
def flatten_dict(root, glue=" ", prefix=[]):
|
def flatten_dict(root, glue=" ", prefix=[]):
|
||||||
lines = []
|
lines = []
|
||||||
|
|
||||||
|
@ -13,3 +15,65 @@ def flatten_dict(root, glue=" ", prefix=[]):
|
||||||
lines.append((glue.join(new_prefix), v))
|
lines.append((glue.join(new_prefix), v))
|
||||||
|
|
||||||
return lines
|
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):
|
def values(self):
|
||||||
return self.raw.values()
|
return self.raw.values()
|
||||||
|
|
||||||
|
def items(self):
|
||||||
|
return self.raw.items()
|
||||||
|
|
||||||
def __getitem__(self, name):
|
def __getitem__(self, name):
|
||||||
return self.raw[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