Build improvements (#569)

* Black linting

* Adding Black to dev dependencies and upping minimal python to 3.6.2 for compatibility

* Updating packages

* Removing pip-tools input and exporting requirements with poetry

* Deleting old setup files and test runner

* Trying 1.3.7

* Looser extras requirements to prevent conflicts

* Sorted imports with isort

* Added iSort to dev dependencies

* Fixes localtime for naive setups
This commit is contained in:
Ilan Steemers
2021-05-30 17:10:07 +02:00
committed by GitHub
parent dc95da3a6b
commit 15155c7a99
45 changed files with 1497 additions and 4194 deletions
+266 -45
View File
@@ -4,50 +4,269 @@ humanhash: Human-readable representations of digests.
The simplest ways to use this module are the :func:`humanize` and :func:`uuid`
functions. For tighter control over the output, see :class:`HumanHasher`.
"""
from argparse import ArgumentError
import operator
import uuid as uuidlib
from argparse import ArgumentError
from functools import reduce
DEFAULT_WORDLIST = (
'ack', 'alabama', 'alanine', 'alaska', 'alpha', 'angel', 'apart', 'april',
'arizona', 'arkansas', 'artist', 'asparagus', 'aspen', 'august', 'autumn',
'avocado', 'bacon', 'bakerloo', 'batman', 'beer', 'berlin', 'beryllium',
'black', 'blossom', 'blue', 'bluebird', 'bravo', 'bulldog', 'burger',
'butter', 'california', 'carbon', 'cardinal', 'carolina', 'carpet', 'cat',
'ceiling', 'charlie', 'chicken', 'coffee', 'cola', 'cold', 'colorado',
'comet', 'connecticut', 'crazy', 'cup', 'dakota', 'december', 'delaware',
'delta', 'diet', 'don', 'double', 'early', 'earth', 'east', 'echo',
'edward', 'eight', 'eighteen', 'eleven', 'emma', 'enemy', 'equal',
'failed', 'fanta', 'fifteen', 'fillet', 'finch', 'fish', 'five', 'fix',
'floor', 'florida', 'football', 'four', 'fourteen', 'foxtrot', 'freddie',
'friend', 'fruit', 'gee', 'georgia', 'glucose', 'golf', 'green', 'grey',
'hamper', 'happy', 'harry', 'hawaii', 'helium', 'high', 'hot', 'hotel',
'hydrogen', 'idaho', 'illinois', 'india', 'indigo', 'ink', 'iowa',
'island', 'item', 'jersey', 'jig', 'johnny', 'juliet', 'july', 'jupiter',
'kansas', 'kentucky', 'kilo', 'king', 'kitten', 'lactose', 'lake', 'lamp',
'lemon', 'leopard', 'lima', 'lion', 'lithium', 'london', 'louisiana',
'low', 'magazine', 'magnesium', 'maine', 'mango', 'march', 'mars',
'maryland', 'massachusetts', 'may', 'mexico', 'michigan', 'mike',
'minnesota', 'mirror', 'mississippi', 'missouri', 'mobile', 'mockingbird',
'monkey', 'montana', 'moon', 'mountain', 'muppet', 'music', 'nebraska',
'neptune', 'network', 'nevada', 'nine', 'nineteen', 'nitrogen', 'north',
'november', 'nuts', 'october', 'ohio', 'oklahoma', 'one', 'orange',
'oranges', 'oregon', 'oscar', 'oven', 'oxygen', 'papa', 'paris', 'pasta',
'pennsylvania', 'pip', 'pizza', 'pluto', 'potato', 'princess', 'purple',
'quebec', 'queen', 'quiet', 'red', 'river', 'robert', 'robin', 'romeo',
'rugby', 'sad', 'salami', 'saturn', 'september', 'seven', 'seventeen',
'shade', 'sierra', 'single', 'sink', 'six', 'sixteen', 'skylark', 'snake',
'social', 'sodium', 'solar', 'south', 'spaghetti', 'speaker', 'spring',
'stairway', 'steak', 'stream', 'summer', 'sweet', 'table', 'tango', 'ten',
'tennessee', 'tennis', 'texas', 'thirteen', 'three', 'timing', 'triple',
'twelve', 'twenty', 'two', 'uncle', 'undress', 'uniform', 'uranus', 'utah',
'vegan', 'venus', 'vermont', 'victor', 'video', 'violet', 'virginia',
'washington', 'west', 'whiskey', 'white', 'william', 'winner', 'winter',
'wisconsin', 'wolfram', 'wyoming', 'xray', 'yankee', 'yellow', 'zebra',
'zulu')
"ack",
"alabama",
"alanine",
"alaska",
"alpha",
"angel",
"apart",
"april",
"arizona",
"arkansas",
"artist",
"asparagus",
"aspen",
"august",
"autumn",
"avocado",
"bacon",
"bakerloo",
"batman",
"beer",
"berlin",
"beryllium",
"black",
"blossom",
"blue",
"bluebird",
"bravo",
"bulldog",
"burger",
"butter",
"california",
"carbon",
"cardinal",
"carolina",
"carpet",
"cat",
"ceiling",
"charlie",
"chicken",
"coffee",
"cola",
"cold",
"colorado",
"comet",
"connecticut",
"crazy",
"cup",
"dakota",
"december",
"delaware",
"delta",
"diet",
"don",
"double",
"early",
"earth",
"east",
"echo",
"edward",
"eight",
"eighteen",
"eleven",
"emma",
"enemy",
"equal",
"failed",
"fanta",
"fifteen",
"fillet",
"finch",
"fish",
"five",
"fix",
"floor",
"florida",
"football",
"four",
"fourteen",
"foxtrot",
"freddie",
"friend",
"fruit",
"gee",
"georgia",
"glucose",
"golf",
"green",
"grey",
"hamper",
"happy",
"harry",
"hawaii",
"helium",
"high",
"hot",
"hotel",
"hydrogen",
"idaho",
"illinois",
"india",
"indigo",
"ink",
"iowa",
"island",
"item",
"jersey",
"jig",
"johnny",
"juliet",
"july",
"jupiter",
"kansas",
"kentucky",
"kilo",
"king",
"kitten",
"lactose",
"lake",
"lamp",
"lemon",
"leopard",
"lima",
"lion",
"lithium",
"london",
"louisiana",
"low",
"magazine",
"magnesium",
"maine",
"mango",
"march",
"mars",
"maryland",
"massachusetts",
"may",
"mexico",
"michigan",
"mike",
"minnesota",
"mirror",
"mississippi",
"missouri",
"mobile",
"mockingbird",
"monkey",
"montana",
"moon",
"mountain",
"muppet",
"music",
"nebraska",
"neptune",
"network",
"nevada",
"nine",
"nineteen",
"nitrogen",
"north",
"november",
"nuts",
"october",
"ohio",
"oklahoma",
"one",
"orange",
"oranges",
"oregon",
"oscar",
"oven",
"oxygen",
"papa",
"paris",
"pasta",
"pennsylvania",
"pip",
"pizza",
"pluto",
"potato",
"princess",
"purple",
"quebec",
"queen",
"quiet",
"red",
"river",
"robert",
"robin",
"romeo",
"rugby",
"sad",
"salami",
"saturn",
"september",
"seven",
"seventeen",
"shade",
"sierra",
"single",
"sink",
"six",
"sixteen",
"skylark",
"snake",
"social",
"sodium",
"solar",
"south",
"spaghetti",
"speaker",
"spring",
"stairway",
"steak",
"stream",
"summer",
"sweet",
"table",
"tango",
"ten",
"tennessee",
"tennis",
"texas",
"thirteen",
"three",
"timing",
"triple",
"twelve",
"twenty",
"two",
"uncle",
"undress",
"uniform",
"uranus",
"utah",
"vegan",
"venus",
"vermont",
"victor",
"video",
"violet",
"virginia",
"washington",
"west",
"whiskey",
"white",
"william",
"winner",
"winter",
"wisconsin",
"wolfram",
"wyoming",
"xray",
"yankee",
"yellow",
"zebra",
"zulu",
)
class HumanHasher:
@@ -70,7 +289,7 @@ class HumanHasher:
raise ArgumentError("Wordlist must have exactly 256 items")
self.wordlist = wordlist
def humanize(self, hexdigest, words=4, separator='-'):
def humanize(self, hexdigest, words=4, separator="-"):
"""
Humanize a given hexadecimal digest.
@@ -84,7 +303,10 @@ class HumanHasher:
"""
# Gets a list of byte values between 0-255.
bytes = [int(x, 16) for x in list(map(''.join, list(zip(hexdigest[::2], hexdigest[1::2]))))]
bytes = [
int(x, 16)
for x in list(map("".join, list(zip(hexdigest[::2], hexdigest[1::2]))))
]
# Compress an arbitrary number of bytes to `words`.
compressed = self.compress(bytes, words)
# Map the compressed byte values through the word list.
@@ -115,10 +337,9 @@ class HumanHasher:
# Split `bytes` into `target` segments.
seg_size = length // target
segments = [bytes[i * seg_size:(i + 1) * seg_size]
for i in range(target)]
segments = [bytes[i * seg_size : (i + 1) * seg_size] for i in range(target)]
# Catch any left-over bytes in the last segment.
segments[-1].extend(bytes[target * seg_size:])
segments[-1].extend(bytes[target * seg_size :])
# Use a simple XOR checksum-like function for compression.
checksum = lambda bytes: reduce(operator.xor, bytes, 0)
@@ -134,7 +355,7 @@ class HumanHasher:
as :meth:`humanize` (they'll be passed straight through).
"""
digest = str(uuidlib.uuid4()).replace('-', '')
digest = str(uuidlib.uuid4()).replace("-", "")
return self.humanize(digest, **params), digest