added base scripts
This commit is contained in:
10
base/aoc.egg-info/PKG-INFO
Normal file
10
base/aoc.egg-info/PKG-INFO
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Metadata-Version: 1.0
|
||||||
|
Name: aoc
|
||||||
|
Version: 0.1
|
||||||
|
Summary: UNKNOWN
|
||||||
|
Home-page: UNKNOWN
|
||||||
|
Author: UNKNOWN
|
||||||
|
Author-email: UNKNOWN
|
||||||
|
License: UNKNOWN
|
||||||
|
Description: UNKNOWN
|
||||||
|
Platform: UNKNOWN
|
||||||
8
base/aoc.egg-info/SOURCES.txt
Normal file
8
base/aoc.egg-info/SOURCES.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
setup.py
|
||||||
|
aoc/__init__.py
|
||||||
|
aoc/input.py
|
||||||
|
aoc/partselector.py
|
||||||
|
aoc.egg-info/PKG-INFO
|
||||||
|
aoc.egg-info/SOURCES.txt
|
||||||
|
aoc.egg-info/dependency_links.txt
|
||||||
|
aoc.egg-info/top_level.txt
|
||||||
1
base/aoc.egg-info/dependency_links.txt
Normal file
1
base/aoc.egg-info/dependency_links.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
base/aoc.egg-info/top_level.txt
Normal file
1
base/aoc.egg-info/top_level.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
aoc
|
||||||
2
base/aoc/__init__.py
Normal file
2
base/aoc/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
from .partselector import get_logger, part_one, part_two, draw
|
||||||
|
from .input import get_input, read_single_keypress
|
||||||
68
base/aoc/input.py
Normal file
68
base/aoc/input.py
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
import sys
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
def parse_args():
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument('-s', '--sample', action='store_true')
|
||||||
|
parser.add_argument('-f', '--file', type=str, nargs='?')
|
||||||
|
parser.add_argument('input', type=str, nargs='*')
|
||||||
|
return parser.parse_known_args()
|
||||||
|
|
||||||
|
def get_input(transform):
|
||||||
|
p = parse_args()[0]
|
||||||
|
if p.input:
|
||||||
|
return transform(p.input)
|
||||||
|
inp = []
|
||||||
|
if p.file:
|
||||||
|
f = open(p.file)
|
||||||
|
elif p.sample:
|
||||||
|
f = open('data/sample.txt')
|
||||||
|
else:
|
||||||
|
f = open('data/data.txt')
|
||||||
|
for line in f.readlines():
|
||||||
|
inp.append(transform(line.strip()))
|
||||||
|
f.close()
|
||||||
|
if len(inp) == 1:
|
||||||
|
return inp[0]
|
||||||
|
return inp
|
||||||
|
|
||||||
|
|
||||||
|
def read_single_keypress():
|
||||||
|
import termios, fcntl, sys, os
|
||||||
|
fd = sys.stdin.fileno()
|
||||||
|
# save old state
|
||||||
|
flags_save = fcntl.fcntl(fd, fcntl.F_GETFL)
|
||||||
|
attrs_save = termios.tcgetattr(fd)
|
||||||
|
# make raw - the way to do this comes from the termios(3) man page.
|
||||||
|
attrs = list(attrs_save) # copy the stored version to update
|
||||||
|
# iflag
|
||||||
|
attrs[0] &= ~(termios.IGNBRK | termios.BRKINT | termios.PARMRK
|
||||||
|
| termios.ISTRIP | termios.INLCR | termios. IGNCR
|
||||||
|
| termios.ICRNL | termios.IXON )
|
||||||
|
# oflag
|
||||||
|
attrs[1] &= ~termios.OPOST
|
||||||
|
# cflag
|
||||||
|
attrs[2] &= ~(termios.CSIZE | termios. PARENB)
|
||||||
|
attrs[2] |= termios.CS8
|
||||||
|
# lflag
|
||||||
|
attrs[3] &= ~(termios.ECHONL | termios.ECHO | termios.ICANON
|
||||||
|
| termios.ISIG | termios.IEXTEN)
|
||||||
|
termios.tcsetattr(fd, termios.TCSANOW, attrs)
|
||||||
|
# turn off non-blocking
|
||||||
|
fcntl.fcntl(fd, fcntl.F_SETFL, flags_save & ~os.O_NONBLOCK)
|
||||||
|
# read a single keystroke
|
||||||
|
ret = []
|
||||||
|
try:
|
||||||
|
ret.append(sys.stdin.read(1)) # returns a single character
|
||||||
|
fcntl.fcntl(fd, fcntl.F_SETFL, flags_save | os.O_NONBLOCK)
|
||||||
|
c = sys.stdin.read(1) # returns a single character
|
||||||
|
while len(c) > 0:
|
||||||
|
ret.append(c)
|
||||||
|
c = sys.stdin.read(1)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
ret.append('\x03')
|
||||||
|
finally:
|
||||||
|
# restore old state
|
||||||
|
termios.tcsetattr(fd, termios.TCSAFLUSH, attrs_save)
|
||||||
|
fcntl.fcntl(fd, fcntl.F_SETFL, flags_save)
|
||||||
|
return tuple(ret)
|
||||||
49
base/aoc/partselector.py
Normal file
49
base/aoc/partselector.py
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
import argparse
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.WARNING)
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
args = None
|
||||||
|
def parse_args():
|
||||||
|
global args
|
||||||
|
if args is None:
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument('-A', action='store_true')
|
||||||
|
parser.add_argument('-B', action='store_true')
|
||||||
|
parser.add_argument('-G', action='store_true')
|
||||||
|
parser.add_argument('-q', action='store_true')
|
||||||
|
parser.add_argument('-v', "--verbose", dest="verbose_count",
|
||||||
|
action="count", default=0,
|
||||||
|
help="increases log verbosity for each occurence.")
|
||||||
|
args = parser.parse_known_args()
|
||||||
|
return args
|
||||||
|
|
||||||
|
def get_logger(*args, **kwargs):
|
||||||
|
p = parse_args()[0]
|
||||||
|
log = logging.getLogger(*args, **kwargs)
|
||||||
|
log.setLevel(max(3 - p.verbose_count, 1) * 10)
|
||||||
|
return log
|
||||||
|
|
||||||
|
def part_one():
|
||||||
|
p = parse_args()[0]
|
||||||
|
if p.B:
|
||||||
|
return False
|
||||||
|
if not p.q:
|
||||||
|
print('==== PART I ====')
|
||||||
|
return True
|
||||||
|
|
||||||
|
def part_two():
|
||||||
|
p = parse_args()[0]
|
||||||
|
if p.A:
|
||||||
|
return False
|
||||||
|
if not p.q:
|
||||||
|
print('==== PART II ====')
|
||||||
|
return True
|
||||||
|
|
||||||
|
def draw():
|
||||||
|
p = parse_args()[0]
|
||||||
|
if p.G:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
3
base/build/lib/aoc/__init__.py
Normal file
3
base/build/lib/aoc/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
from .partselector import get_logger, part_one, part_two, draw
|
||||||
|
from .input import get_input, read_single_keypress
|
||||||
|
from .debugger import Debugger
|
||||||
68
base/build/lib/aoc/input.py
Normal file
68
base/build/lib/aoc/input.py
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
import sys
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
def parse_args():
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument('-s', '--sample', action='store_true')
|
||||||
|
parser.add_argument('-f', '--file', type=str, nargs='?')
|
||||||
|
parser.add_argument('input', type=str, nargs='*')
|
||||||
|
return parser.parse_known_args()
|
||||||
|
|
||||||
|
def get_input(transform):
|
||||||
|
p = parse_args()[0]
|
||||||
|
if p.input:
|
||||||
|
return transform(p.input)
|
||||||
|
inp = []
|
||||||
|
if p.file:
|
||||||
|
f = open(p.file)
|
||||||
|
elif p.sample:
|
||||||
|
f = open('data/sample.txt')
|
||||||
|
else:
|
||||||
|
f = open('data/data.txt')
|
||||||
|
for line in f.readlines():
|
||||||
|
inp.append(transform(line.strip()))
|
||||||
|
f.close()
|
||||||
|
if len(inp) == 1:
|
||||||
|
return inp[0]
|
||||||
|
return inp
|
||||||
|
|
||||||
|
|
||||||
|
def read_single_keypress():
|
||||||
|
import termios, fcntl, sys, os
|
||||||
|
fd = sys.stdin.fileno()
|
||||||
|
# save old state
|
||||||
|
flags_save = fcntl.fcntl(fd, fcntl.F_GETFL)
|
||||||
|
attrs_save = termios.tcgetattr(fd)
|
||||||
|
# make raw - the way to do this comes from the termios(3) man page.
|
||||||
|
attrs = list(attrs_save) # copy the stored version to update
|
||||||
|
# iflag
|
||||||
|
attrs[0] &= ~(termios.IGNBRK | termios.BRKINT | termios.PARMRK
|
||||||
|
| termios.ISTRIP | termios.INLCR | termios. IGNCR
|
||||||
|
| termios.ICRNL | termios.IXON )
|
||||||
|
# oflag
|
||||||
|
attrs[1] &= ~termios.OPOST
|
||||||
|
# cflag
|
||||||
|
attrs[2] &= ~(termios.CSIZE | termios. PARENB)
|
||||||
|
attrs[2] |= termios.CS8
|
||||||
|
# lflag
|
||||||
|
attrs[3] &= ~(termios.ECHONL | termios.ECHO | termios.ICANON
|
||||||
|
| termios.ISIG | termios.IEXTEN)
|
||||||
|
termios.tcsetattr(fd, termios.TCSANOW, attrs)
|
||||||
|
# turn off non-blocking
|
||||||
|
fcntl.fcntl(fd, fcntl.F_SETFL, flags_save & ~os.O_NONBLOCK)
|
||||||
|
# read a single keystroke
|
||||||
|
ret = []
|
||||||
|
try:
|
||||||
|
ret.append(sys.stdin.read(1)) # returns a single character
|
||||||
|
fcntl.fcntl(fd, fcntl.F_SETFL, flags_save | os.O_NONBLOCK)
|
||||||
|
c = sys.stdin.read(1) # returns a single character
|
||||||
|
while len(c) > 0:
|
||||||
|
ret.append(c)
|
||||||
|
c = sys.stdin.read(1)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
ret.append('\x03')
|
||||||
|
finally:
|
||||||
|
# restore old state
|
||||||
|
termios.tcsetattr(fd, termios.TCSAFLUSH, attrs_save)
|
||||||
|
fcntl.fcntl(fd, fcntl.F_SETFL, flags_save)
|
||||||
|
return tuple(ret)
|
||||||
49
base/build/lib/aoc/partselector.py
Normal file
49
base/build/lib/aoc/partselector.py
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
import argparse
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.WARNING)
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
args = None
|
||||||
|
def parse_args():
|
||||||
|
global args
|
||||||
|
if args is None:
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument('-A', action='store_true')
|
||||||
|
parser.add_argument('-B', action='store_true')
|
||||||
|
parser.add_argument('-G', action='store_true')
|
||||||
|
parser.add_argument('-q', action='store_true')
|
||||||
|
parser.add_argument('-v', "--verbose", dest="verbose_count",
|
||||||
|
action="count", default=0,
|
||||||
|
help="increases log verbosity for each occurence.")
|
||||||
|
args = parser.parse_known_args()
|
||||||
|
return args
|
||||||
|
|
||||||
|
def get_logger(*args, **kwargs):
|
||||||
|
p = parse_args()[0]
|
||||||
|
log = logging.getLogger(*args, **kwargs)
|
||||||
|
log.setLevel(max(3 - p.verbose_count, 1) * 10)
|
||||||
|
return log
|
||||||
|
|
||||||
|
def part_one():
|
||||||
|
p = parse_args()[0]
|
||||||
|
if p.B:
|
||||||
|
return False
|
||||||
|
if not p.q:
|
||||||
|
print('==== PART I ====')
|
||||||
|
return True
|
||||||
|
|
||||||
|
def part_two():
|
||||||
|
p = parse_args()[0]
|
||||||
|
if p.A:
|
||||||
|
return False
|
||||||
|
if not p.q:
|
||||||
|
print('==== PART II ====')
|
||||||
|
return True
|
||||||
|
|
||||||
|
def draw():
|
||||||
|
p = parse_args()[0]
|
||||||
|
if p.G:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
7
base/setup.py
Normal file
7
base/setup.py
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
from setuptools import setup
|
||||||
|
|
||||||
|
setup(
|
||||||
|
name='aoc',
|
||||||
|
version='0.1',
|
||||||
|
packages=['aoc',],
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user