formatted

This commit is contained in:
2024-02-03 22:55:08 +01:00
parent 3187d1e4e7
commit bc4b1cfbab
2 changed files with 44 additions and 19 deletions

View File

@@ -14,7 +14,14 @@ from typing_extensions import Annotated
import typer
from sup.main import load_ordered_supps, ORDERED_SUPPS_FP, load_config, SUPP_CONSUMPTION_FP, load_inventory, Supp
from sup.main import (
load_ordered_supps,
ORDERED_SUPPS_FP,
load_config,
SUPP_CONSUMPTION_FP,
load_inventory,
Supp,
)
app = typer.Typer()
@@ -23,13 +30,17 @@ class UnitMismatch(Exception):
pass
def get_qty_inventory(supp: Supp, inventory: dict) -> int:
inventory_order_date = dt.datetime.strptime(inventory['orderDate'][:10], "%Y-%m-%d").date()
def get_qty_inventory(supp: Supp, inventory: dict) -> int:
inventory_order_date = dt.datetime.strptime(
inventory["orderDate"][:10], "%Y-%m-%d"
).date()
num_days_since_bought = (dt.date.today() - inventory_order_date).days
if inventory['servingUnit'] != supp.units:
if inventory["servingUnit"] != supp.units:
raise UnitMismatch(inventory, supp)
return (inventory['quantity'] * inventory['numBottles']) - (supp * num_days_since_bought)
return (inventory["quantity"] * inventory["numBottles"]) - (
supp * num_days_since_bought
)
def get_num_winter_days_starting(num_days: int, starting: dt.date) -> int:
@@ -62,14 +73,18 @@ def get_num_winter_days_starting(num_days: int, starting: dt.date) -> int:
def status():
"""check if there's enough inventory for the next fill-up; if not, what to order?"""
config = load_config()
num_days_of_inventory_needed = config['FILL_EVERY_X_DAYS']
next_fill_date = config['LAST_FILL_DATE'] + dt.timedelta(num_days_of_inventory_needed)
num_days_of_inventory_needed = config["FILL_EVERY_X_DAYS"]
next_fill_date = config["LAST_FILL_DATE"] + dt.timedelta(
num_days_of_inventory_needed
)
inventory = load_inventory()
needs = []
for sup in config['supps']:
for sup in config["supps"]:
sup_inst = Supp(**sup)
if sup_inst.winter_only:
num_days_of_inventory_needed = get_num_winter_days_starting(num_days_of_inventory_needed, next_fill_date)
num_days_of_inventory_needed = get_num_winter_days_starting(
num_days_of_inventory_needed, next_fill_date
)
qty_needed = sup_inst * num_days_of_inventory_needed
try:
inv = inventory[sup_inst.name]
@@ -77,7 +92,7 @@ def status():
qty_of_inventory = 0
else:
qty_of_inventory = get_qty_inventory(sup_inst, inv)
net_need = qty_needed - qty_of_inventory
net_need = qty_needed - qty_of_inventory
if net_need > 0:
needs.append((sup_inst.name, net_need, sup_inst.units))
if needs:
@@ -92,11 +107,13 @@ def fill():
config = load_config()
today = dt.date.today()
config["LAST_FILL_DATE"] = today.strftime("%Y-%m-%d")
# TODO: make sure this toml library doesn't add quotes to this entry, it
# TODO: make sure this toml library doesn't add quotes to this entry, it
# makes it so when reading it doesn't get parsed to a date
fill_every_x_days = config['FILL_EVERY_X_DAYS']
fill_every_x_days = config["FILL_EVERY_X_DAYS"]
save_config(config)
print(f"Okay, next fill-up set to {today + dt.timedelta(days=fill_every_x_days)} (configured in `sup.toml`::FILL_EVERY_X_DAYS)")
print(
f"Okay, next fill-up set to {today + dt.timedelta(days=fill_every_x_days)} (configured in `sup.toml`::FILL_EVERY_X_DAYS)"
)
@app.command()

View File

@@ -18,11 +18,10 @@ def load_config():
return tomllib.loads(SUPP_CONSUMPTION_FP.read_text())
def load_ordered_supps() -> list[dict]:
return json.loads(ORDERED_SUPPS_FP.read_text())
CONFIG = load_config()
ALIASES = CONFIG["product_aliases"]
@@ -30,13 +29,18 @@ ordered_supps = load_ordered_supps()
for i in CONFIG["supps"]:
for ordered_supp in ordered_supps:
if i["name"].lower() in ordered_supp['name'].lower():
ALIASES[ordered_supp['name']] = i["name"]
if i["name"].lower() in ordered_supp["name"].lower():
ALIASES[ordered_supp["name"]] = i["name"]
ALIASES_REV = {v: k for k, v in ALIASES.items()}
def load_inventory():
return { ALIASES[s['name']]: s for s in load_ordered_supps() if s['name'] not in CONFIG['discontinued'] }
return {
ALIASES[s["name"]]: s
for s in load_ordered_supps()
if s["name"] not in CONFIG["discontinued"]
}
class Missing(Exception):
@@ -77,7 +81,11 @@ class Supp:
@property
def quantity_per_day(self) -> float:
return sum([self.morning, self.lunch, self.dinner, self.bedtime]) * 7 / self.days_per_week
return (
sum([self.morning, self.lunch, self.dinner, self.bedtime])
* 7
/ self.days_per_week
)
def main():