From 5b5ac04643dccbf783c0f72976a43a743723d26d Mon Sep 17 00:00:00 2001 From: Piotr Gaczkowski Date: Tue, 24 Mar 2026 15:39:18 +0100 Subject: [PATCH] feat: Add basic frontend --- .dockerignore | 6 + Dockerfile | 23 +- fegen/__init__.py | 0 discourse.py => fegen/discourse.py | 11 +- fegen/docs/index.html | 7030 +++++++++++++++++++++++++++ fegen/docs/static/css/style.css | 14 + main.py => fegen/main.py | 17 +- fegen/template/_base_template.html | 150 + fegen/template/_main_layout.html | 29 + fegen/template/static/css/style.css | 14 + fonts/SourceCodePro-SemiBold.ttf | Bin 0 -> 133348 bytes labeler/adapter/fastapi_srv.py | 18 + pyproject.toml | 6 +- uv.lock | 190 +- 14 files changed, 7476 insertions(+), 32 deletions(-) create mode 100644 .dockerignore create mode 100644 fegen/__init__.py rename discourse.py => fegen/discourse.py (97%) create mode 100644 fegen/docs/index.html create mode 100644 fegen/docs/static/css/style.css rename main.py => fegen/main.py (67%) create mode 100644 fegen/template/_base_template.html create mode 100644 fegen/template/_main_layout.html create mode 100644 fegen/template/static/css/style.css create mode 100644 fonts/SourceCodePro-SemiBold.ttf diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..01f441d --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +.venv +.git +__pycache__ +*.pyc +.ruff_cache +.mypy_cache diff --git a/Dockerfile b/Dockerfile index 327c715..b99eba5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,20 @@ -FROM python:3.11 +# Build stage +FROM python:3.11 AS builder -RUN mkdir /app -COPY / /app - -COPY pyproject.toml poetry.lock /app/ +COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ WORKDIR /app +COPY pyproject.toml uv.lock ./ +RUN uv sync --frozen --no-install-project +COPY . . +RUN uv sync -ENV PYTHONPATH=${PYTHONPATH}:${PWD} -RUN pip install poetry +# Runtime stage +FROM python:3.11-slim -RUN poetry config virtualenvs.create false -RUN poetry install --only main +WORKDIR /app +COPY --from=builder /app/ /app/ +ENV PATH="/app/.venv/bin:$PATH" + +CMD ["fastapi", "dev", "--host", "0.0.0.0", "--port", "31337", "labeler/adapter/fastapi_srv.py" ] diff --git a/fegen/__init__.py b/fegen/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/discourse.py b/fegen/discourse.py similarity index 97% rename from discourse.py rename to fegen/discourse.py index dc31edc..216c11f 100644 --- a/discourse.py +++ b/fegen/discourse.py @@ -9,13 +9,7 @@ from dotenv import load_dotenv DISCOURSE_URL = "https://kb.hs3.pl" # Database is hosted here CATEGORY_ID = 9 # Database category ID -PLACES = [ - "cow-work", - "garage", - "lab", - "audiolab", - "server-room" -] + class DiscourseDatabase(): def __init__(self): data = self.get_category_data() @@ -75,7 +69,8 @@ class DiscourseDatabase(): def get_place(self, topic): """Get place of a topic""" - for place in PLACES: + places = ["cow-work", "garage", "lab"] + for place in places: if place in topic["tags"]: return f'{place}' return "unknown" diff --git a/fegen/docs/index.html b/fegen/docs/index.html new file mode 100644 index 0000000..dd1f24f --- /dev/null +++ b/fegen/docs/index.html @@ -0,0 +1,7030 @@ + + + + + + Baza Zasobów Hackerspace Trójmiasto + + + + + + + + + + + +
+
+
+
+

Baza Zasobów Hackerspace Trójmiasto

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
idtitleplacetagslabelprint
45Jak stworzyć nowy wpis do bazy zasobów Hackerspace Trójmiasto?unknown[]
20O kategorii: Baza Wiedzy Hackerspace'uunknown[]
179Sprzęt komp Desktop Dr Robotomycow-work['cow-work']
561Antena Dipol na 30mlab['lab', 'sticker-needed']
585Ścianka narzędziowalab['lab']
584Stojak ze śrubokrętamilab['lab']
583Pudełko z zapalniczkamilab['lab']
582Konwerter ATC-1000 firmy F&Flab['lab']
581Pojemnik z konektoramilab['lab']
580Pudło - rurki / koszulki termokurczliwe, różne rodzajelab['lab']
579Uchwyt na kolbę gorącego powietrza (hot-air) z magnetycznym stolikiem naprawczym W.E.R 628lab['lab']
578Myjka ultradźwiękowa 2lab['lab']
577Żywiczna drukarka 3D Elegoo Mars 2 Prolab['lab', '3d-print']
576Pudło z filamentami kolorowymi krótkimilab['lab', '3d-print']
529Projektor Optomacow-work['cow-work']
527Stacja dokująca USB-C + ładowarka bezprzewodowacow-work['cow-work']
575Pudło z materiałami do drukarek 3Dlab['lab']
574Laminator biurowy Leitz iLAM Office Pro A3lab['lab']
573Deska do krojenia, bambus, 53x46 cmlab['lab']
572Farba Akrylowa Greenishlab['lab']
571Smartphone Nexus LGlab['lab']
570Smartphone Googlelab['lab']
569Smartphone Samsunglab['lab']
568Redmi smartphonelab['lab']
567iPhonelab['lab']
566Materiały do plotera (winyl i inne) + krepalab['lab']
565Antena bazowa HamRadioShop 10 cmlab['lab']
564LORA / Meshtasticlab['lab']
563Przełącznik antenowy na 4 anteny KF ze sterownikiemlab['lab']
562DREMEL 3000lab['lab']
514Pistolet do kleju na gorącolab['lab']
560Przełącznik antenowy z kontroleremunknown[]
304Monitor LG StudioWorks 560Ncow-work['cow-work']
554ArcaderOS - Śmieciowy Arcade Charytatywny dla każdegocow-work['cow-work']
283Telewizor Funaicow-work['cow-work']
531Streamer LTO-4 HP M8609Aunknown['server-room']
285Konsola do gier Sony PlayStation 2 Slim + kontroler Namco GunConcow-work['cow-work']
456Wzmacniacz gitarowy Roland Micro Cubeunknown['audiolab']
478Gitara basowa Squier Precision Bassunknown['audiolab']
479Guitalele Ever Play GT-WBKunknown['audiolab']
481Gitara elektryczna Blond STR-1H MN SFGunknown['audiolab']
480Gitara elektryczna Blond TE-1 MN BBunknown['audiolab']
533Access Point Mikrotik cAP acunknown[]
546Kwadraty ze sklejki w drewnianych pudełkachunknown[]
545LEGO piedestał z figurkami i jednorożcemcow-work['cow-work']
541HAM QRP Szpejunknown[]
543PKL, RF7, kable koncentryczne KFunknown[]
542Antena Uda-Yagi 2m i 70 cmunknown[]
370Infiniti mirror - części, pudłolab['lab']
540Icom 706-mk2unknown[]
538Interfejs audio Line6 GXunknown['audiolab', 'sticker-needed']
537Płyta główna GIGABYTE GA-790XT-USB3cow-work['cow-work']
536Płyta główna ECS L7VMM3cow-work['cow-work']
535Płyta główna EPoX EP-8K9A7Icow-work['cow-work']
377Drukarka 3D “Elegoo Neptune 4 Pro”lab['lab', '3d-print']
92Drukarka 3D Creality K1 Maxlab['lab', 'tools', '3d-print']
530Discman SONYunknown['audiolab']
454Perkusja Alesis DM8cow-work['cow-work', 'audiolab']
273Drukarka Samsung ML-3710NDcow-work['cow-work']
476Wieża TECHNICS EH550 - kolumny głośnikoweunknown['audiolab']
286Magnetowid VHS Philips VR 471cow-work['cow-work']
482Magnetofon kasetowy Technics RS-B765unknown['audiolab']
317Sound Technology 1700B Distortion Measurement Systemcow-work['cow-work']
311Hung Chang Oscilloscope 5504 40MHzcow-work['cow-work']
279Komputer Apple Macintosh SEcow-work['cow-work']
292Wieża TECHNICS EH550 - Stereo sound processor SH-EH550cow-work['cow-work']
293Wieża TECHNICS EH550 - Stereo cassette deck RS-EH750cow-work['cow-work']
294Wieża TECHNICS EH550 - Compact disc player SL-EH750cow-work['cow-work']
291Wieża TECHNICS EH550 - Stereo tuner amplifier SA-EH550cow-work['cow-work']
532Telefon komórkowy Compas CTKE08unknown[]
357Radio samochodowe Alpineunknown['audiolab']
519Statyw Keyboardcow-work['cow-work', 'audiolab']
352Przejściówki USB-A => Power Jackcow-work['cow-work']
451Maty lutowniczecow-work['cow-work', 'lab']
490Radiomagnetofon przenośny Panasonic RQ-V77unknown['audiolab']
312Szufladka "Zestawy adapterów końcówek do zasilacza laptopa" / końcówki do zasilaniacow-work['cow-work']
526Monitoryunknown[]
528Stacja dokująca USB-C z wbudowaną klawiaturą Unitekunknown[]
61HS3 BOFHcow-work['cow-work', 'garage', 'events', 'bofh']
493Wkrętarka Niteo Toolslab['lab']
494Quad Power Supply Cobrabid KB-60-01unknown['audiolab']
495Lenco PA-45 Portable Sound System with Bluetoothunknown['audiolab']
496Głośnik gitarowy DIYunknown['audiolab']
498Wiertarka udarowa | Bosch Professional GSB 16 RElab['lab']
497Drukarka DYMO Omega S0717930lab['lab']
499Pudło "wiercimy, wkręcamy i różne inne"lab['lab']
500Pudło z chemiąlab['lab']
503Lutownica TS 80lab['lab']
507ZD-939L stacja na gorące powietrze HOT-AIRlab['lab']
513Urządzenie do wywoływania klisz polimerowych KENT Belichtungsgerät BG 250lab['lab']
501Switch Planet FSD-803unknown['audiolab']
502Switch ES-3208Punknown['audiolab']
504Access Point TP-Linkunknown['audiolab']
505Mikrofon T-Bone SC-300unknown['audiolab']
506Uchwyty biurkowe do mikrofonu/kameryunknown['audiolab']
508Bongosyunknown['audiolab']
509Dalekopis Lorenz LO133 Automatikunknown['audiolab']
515Zegar mAlab['lab']
510Soundbar Dell AX510unknown['audiolab']
511Głośniki komputerowe Creative Inspire T3100unknown['audiolab']
516Głośnik CUBElab['lab']
512Pegasus & Counknown['audiolab']
517Rozlutownicalab['lab']
518Wałek giętki do wiertarki Dremellab['lab']
520Uchwyt do telewizora / monitoracow-work['cow-work']
521Terminal MOTOROLA MC9062 (1 szt) i MC9060 (3 szt)cow-work['cow-work']
522HUB 10Mb Hewlett Packard J3188Acow-work['cow-work']
489Aparat fotograficzny Agat 18Kunknown['audiolab']
488Aparat fotograficzny Nikon Coolpix L26unknown['audiolab']
487Aparat fotograficzny Hitachi HDC-761Eunknown['audiolab']
486Aparat fotograficzny Konica Minoltaunknown['audiolab']
485Odtwarzacz przenośny Philipsunknown['audiolab']
484Komputer AiO POS CHD8700unknown['audiolab']
483Tuner Technics ST-600Lunknown['audiolab']
491Odkurzacz Zelmerlab['lab']
492Poziomica 1,50mlab['lab']
455Wzmacniacz gitarowy Peavey Rage 258unknown['audiolab']
458Słuchawki Creative Aurvana Live!unknown['audiolab']
459Słuchawki Sennheiser HD25unknown['audiolab']
460Mikrofon Grundig GDM 312unknown['audiolab']
461Looper Ditto TC Electronicunknown['audiolab']
462Mikser Behringer MX400 Micromixunknown['audiolab']
463Korg Volca Keysunknown['audiolab']
464Korg Volca Sampleunknown['audiolab']
465Korg Volca Mixunknown['audiolab']
466Korg Volca Bassunknown['audiolab']
467Korg Volca Modularunknown['audiolab']
468Yamaha DD-10 Drum Machineunknown['audiolab']
477Wzmacniacz zintegrowany Technics SU-810unknown['audiolab']
470Mikrofon Rode NT1-Aunknown['audiolab']
473Obudowa komputerowa Chieftec Tower of BBL (but SMOL)unknown['audiolab']
447Aerograf PS-22 Verkelab['lab']
475Głośniki LG CMS4340Funknown['audiolab']
474Wzmacniacz DIY 12V DCunknown['audiolab']
472Obudowa komputerowa Chieftec Tower of BBLunknown['audiolab']
471Głośniki DIY d33p w00funknown['audiolab']
469A8 Wireless Sound Transmitter/Receiverunknown['audiolab']
453Klawiatury laptopowecow-work['cow-work']
452Klawiaturycow-work['cow-work']
417Kable Audio Jack-Jack Monounknown['audiolab']
449Omnifixocow-work['cow-work', 'lab']
448Joystick Thrustmaster T.16000Mcow-work['cow-work']
206Club* Matecow-work['cow-work']
450Lutownica T12 + grotycow-work['cow-work', 'lab']
441Podnośnik samochodowe 2,5 tongarage['garage', 'tools']
443Odciąg trocin/wiórów Cormakgarage['garage']
439Mikro regały. W70xD50xH55garage['garage']
405Home Automation Switchescow-work['cow-work', 'lab', 'server-room']
431Audio Mixer XENYX 302USBcow-work['cow-work']
430Głośniki Loewe L82 Aunknown['audiolab']
429Komputer Sun Ultra 45 Workstation 500s XVR2500 ULTRAsparc IIIiunknown['audiolab']
428Hodowla gryzoni (myszki et al.)cow-work['cow-work']
426Karton "Drukarka paragonowa + etykietki"cow-work['cow-work']
415Multimetr, oscyloskop, generator sygnałów JT-OMS01lab['lab']
375Termostatycow-work['cow-work', 'lab', 'audiolab', 'server-room']
432Rode Wireless GO IIunknown[]
435Capture Card/Passthrough (black)unknown[]
434Capture Card (gray)unknown[]
438Rode Lav Micunknown[]
437MACROSILICON usb extscreenunknown[]
436HDMI Extenderunknown[]
4331->4 HDMI Splitterunknown[]
149LEDon Pink pussycow-work['cow-work']
151LEDon Bulbcow-work['cow-work']
148LEDon HS3cow-work['cow-work']
147LEDon Classy Ladycow-work['cow-work']
418Karton "Artykuły higieniczne"cow-work['cow-work']
419Karton "Akces(er)oria lutowanie"cow-work['cow-work']
421Karton "HS3 Narzędzia Warsztatowe"cow-work['cow-work']
422Karton "Taśmy samoprzylepne"cow-work['cow-work']
423Karton "Przedłużacze 230V"cow-work['cow-work']
424Rzepowiskocow-work['cow-work']
427Głośniki Creative GigaWorks T20 MultiMedia Speaker 28W MF1545unknown['audiolab']
425Repeater Zigbee Cow-workcow-work['cow-work']
420Karton "Bags"cow-work['cow-work']
208Komputer Nixdorf XT "All-in-One Portable"cow-work['cow-work']
47Cricut Maker 3 ploter tnącylab['lab', 'tools']
411Stacja W.E.R 852D+ do prac z smdlab['lab']
414Tester kabli RJ45, RJ11/12, BNC Lanberglab['lab']
416Switch zarządzalny MikroTik CRS309-1G-8S+IN 1x1GbE 8x10GbE SFP+ RS232 PoEunknown['server-room']
413Zasilacz regulowanylab['lab']
412Stacja lutownicza 937Dlab['lab']
410Stacja lutownicza LF-1660SDlab['lab']
409Stacja do rozlutowywania DS-915lab['lab']
197Sprzęt komp laptop Oden-donocow-work['cow-work']
189Sprzęt komp laptop Udon-sancow-work['cow-work']
200Sprzęt komp laptop Bogumiłcow-work['cow-work']
202Sprzęt komp laptop Amilocow-work['cow-work']
193Sprzęt komp laptop Victoriacow-work['cow-work']
188Sprzęt komp laptop mały Jaścow-work['cow-work']
199Sprzęt komp laptop Robincow-work['cow-work']
407Mikser audio Phonic MM2005cow-work['cow-work', 'audiolab']
401Telewizor LG 37LK450-ZHcow-work['cow-work']
404Kamera USB Savio CAK-02cow-work['cow-work']
397Telewizor NEC E658cow-work['cow-work']
406Klawiatura sterująca MIDI/USB AKAI MPK 61cow-work['cow-work', 'audiolab']
398Telewizor Samsung LE37C530cow-work['cow-work']
403Domofon Hikvisioncow-work['cow-work']
400Chromecast 2 NC2-6A5cow-work['cow-work']
399Klawiatura MIDI Arturia Keystepcow-work['cow-work', 'audiolab']
395Przyssawka do powierzchni płaskichlab['lab']
394Rozlutownica bez regulacji temperaturylab['lab']
393Lutownica Solomonlab['lab']
392Myjka Ultradźwiękowalab['lab']
391Kamera statyw zestaw do pracy z płytkami PCBlab['lab']
390Wyciąg stanowiska do lutowanialab['lab']
384Pojemnik FOTOcow-work['cow-work']
389Karton z częściami SMDlab['lab']
388Zasilacz 16A, 12V dclab['lab']
387Klucze płaskooczkowelab['lab']
386Suwmiarkalab['lab']
385Wiertarka Cemi statyw imadłolab['lab']
383Obudowa robota sprzątającegolab['lab']
382Drukarka 3D Photon żywicznalab['lab']
381Wiertarka statyw Dremellab['lab']
354Czujnik temperatury i wilgotnościlab['lab']
374Hot Platelab['lab']
379Drukarka 3D Creality K1MAXlab['lab']
257Gra L gamecow-work['cow-work']
376Drukarka 3D HEVO (Hypercube Evolutionlab['lab']
372Skrzynia skarbówlab['lab']
378Nitownica do nitonakręteklab['lab']
380Mikroskop Edukolab['lab']
356Karton "termostaty"cow-work['cow-work']
358Karton "wSchody"cow-work['cow-work']
359Karton "materiały plastyczne"cow-work['cow-work']
360Pojemnik "złącza, taśmy, słupki"lab['lab']
361Karton Zigbeecow-work['cow-work']
362Karton "electro"cow-work['cow-work']
363Instalacja Lasy Oliwskiecow-work['cow-work']
371Uchwyt do płytek PCBlab['lab']
364Karton Led String Lightcow-work['cow-work']
368Zgrzewarka do ogniwlab['lab']
369Lutownica gazowalab['lab']
373OPSISlab['lab']
367Przejściówki USB-C => B, micro B, mini B, micro B 3, Lightningcow-work['cow-work']
365Karton "USB"cow-work['cow-work']
366Karton "Polish C Power"cow-work['cow-work']
355Zasilacz regulowany USB-C Power Delivery Zasilacz 100W 5V/9V/12V/15V/20Vcow-work['cow-work']
351Przejściówki USB-C => Power Jackcow-work['cow-work']
353Przejściówka Power Jack => USB-Ccow-work['cow-work']
350Body Fat Scalelab['lab']
349DVD Video "Monty Python: A teraz coś z zupełnie innej beczki"cow-work['cow-work']
34814 in 1 Educational Solar Robotlab['lab']
347Gra wideo "PS3 Ridge Racer 7"cow-work['cow-work', 'video-game']
346Cyberdeck Ijonacow-work['cow-work']
345Gra wideo "PS3 Uncharted: Drake's Fortune DE"cow-work['cow-work', 'video-game']
344Szafka ze sprzętem telekomunikacyjnymcow-work['cow-work']
340Kartón z wkrętami, kołkami i pudelkamilab['lab']
343Gra wideo "PS3 Colin McRae: Dirt 2"cow-work['cow-work', 'video-game']
341Gra wideo "PS3 Ratchet & Clank Quest for Booty"cow-work['cow-work', 'video-game']
342Odtwarzacz Linn Sekrit DS-I + kolumnycow-work['cow-work']
339Gra wideo "Need for Speed: Most Wanted"cow-work['cow-work', 'video-game']
338Gra wideo "Commandos 3: Kierunek Berlin"cow-work['cow-work', 'video-game']
337Gra wideo "Heroes of Might and Magic V: Kuźnia Przeznaczenia"cow-work['cow-work', 'video-game']
336Puzzle Ptaki 500 - Politechnika Gdańskacow-work['cow-work', 'boardgame']
335Wiertarka PSR 1440 LI-2 + AL 1880 CV BOSCHlab['lab', 'tools']
3345-Port Fast Ethernet Switch Edimax 10/100Mbpscow-work['cow-work']
333Karton "ZASILACZE LAPTOP"cow-work['cow-work']
332Karton "URZĄDZENIA SIECIOWE LAN"cow-work['cow-work']
331Karton "VR"cow-work['cow-work']
330Karton "RADIO"cow-work['cow-work']
326Lampa z lupąlab['lab']
328Lampa z lupą niesprawnalab['lab']
329Karton "RÓŻNE MAŁE ZASILACZE"cow-work['cow-work']
327Karton "PRZEWODY ZASILAJACE"cow-work['cow-work']
325Karton "PRZEWODY <1MM2"cow-work['cow-work']
324Karton "AUDIO PRO"cow-work['cow-work']
323Karton "VIDEO"cow-work['cow-work']
322Karton "AUDIO JABRA"cow-work['cow-work']
321Karton "HDMI"cow-work['cow-work']
320Karton "RETRO AV SCART ET AL"cow-work['cow-work']
319Karton "LAN przewody"cow-work['cow-work']
318Gra zręcznościowa “Wooden Blocks"cow-work['cow-work', 'boardgame']
316Wavetek Universal Antenna Coupler WWG MMS-4107Scow-work['cow-work']
287Gra wideo “PC Warcraft II: Tides of Darkness”cow-work['cow-work', 'video-game']
289Gra wideo "PC Fallout 1"cow-work['cow-work', 'video-game']
297Naklejki "własność prywatna"cow-work['cow-work']
299Gra Koci Cymbergajcow-work['cow-work']
300Multifunction Printer Canon MG3150cow-work['cow-work']
302Skaner Plustek OpticPro ST24cow-work['cow-work']
305Voltage, Distortion, and Noise Meter VN-1687 Unitra Elmaszcow-work['cow-work']
306WANPTEK Programmable DC Power Supplycow-work['cow-work']
307Oscyloskop Hantek 6022BEcow-work['cow-work']
309Type SMG-1 Stereo Generator Radiometer Copenhagencow-work['cow-work']
313Karton "Słuchawki"cow-work['cow-work']
301Karton "ARTYKUŁY BIUROWE"cow-work['cow-work']
314PINTEK 20MHz oscilloscope PS-200cow-work['cow-work']
315PAL-B System?cow-work['cow-work']
296HUBy USB-Ccow-work['cow-work']
144Venuscow-work['cow-work']
52Evil Submarinecow-work['cow-work', 'projects']
295Dmuchawa do elektroniki Appiocow-work['cow-work']
288Gra wideo "Warcraft II: Battle.net Edition"cow-work['cow-work', 'video-game']
290Projektor Barco F22 SX+ Ultra Wide VizSimcow-work['cow-work']
284Robotarm SVI-2000 QuickShotcow-work['cow-work']
282Komputer ZX Spectrum +2cow-work['cow-work']
281Gra wideo “PC Mortyr 2093-1944”cow-work['cow-work', 'video-game']
280Komputer Commodore C=64cow-work['cow-work']
278Philips PM5415TX color TV Pattern Generatorcow-work['cow-work']
277Joystick QuickShot II Turbocow-work['cow-work']
276Gra wideo “PC Dragon Dice”cow-work['cow-work', 'video-game']
275Joystick Quickshotcow-work['cow-work']
274Komputer Spectravideo SVI–738cow-work['cow-work']
272Gra wideo “PC Man Of War”cow-work['cow-work', 'video-game']
271Gra wideo “PC Warcraft: Orcs & Humans”cow-work['cow-work', 'video-game']
270Gra wideo “Nowy Teenagent”cow-work['cow-work', 'video-game']
269Gra wideo "PC Requiem: Avenging Angel"cow-work['cow-work', 'video-game']
268Gra wideo “PC CLASH”cow-work['cow-work', 'video-game']
267Gra wideo "PC Baldur’s Gate: Opowieści z Wybrzeża Mieczy"cow-work['cow-work', 'video-game']
266Gra wideo “PC Fallout 2 - A Post Nuclear Role Playing Game”cow-work['cow-work', 'video-game']
265Gra wideo “PC Might & Magic: Heroes VI - Pirates of the Savage Sea”cow-work['cow-work', 'video-game']
264Gra wideo “PC Konung: Legenda Północy”cow-work['cow-work', 'video-game']
263Gra wideo “PC End of Twilight: Zaginiona tarcza wikinga”cow-work['cow-work', 'video-game']
262Gra wideo “Alien Nations”cow-work['cow-work', 'video-game']
261Gra wideo “PC Tony Hawk's Underground 2”cow-work['cow-work', 'video-game']
259Gra wideo "PC Kroniki czarnego księżyca"cow-work['cow-work', 'video-game']
260Gra wideo "PC ony Hawk's Pro Skater 3"cow-work['cow-work', 'video-game']
256Gra wideo “PC Full Spectrum Warrior”cow-work['cow-work', 'video-game']
258Gra wideo "PC Invictus: W Cieniu Olimpu"cow-work['cow-work', 'video-game']
236Gra planszowa "Carcassonne. Gra o zamkach, miastach i rycerzach.”cow-work['cow-work', 'boardgame']
237Gra zręcznościowa "Wieża"cow-work['cow-work', 'boardgame']
238Gra planszowa "Postaw na klocka"cow-work['cow-work', 'boardgame']
239Gra planszowa “Tajniacy”cow-work['cow-work', 'boardgame']
240Gra planszowa “Story Cubes: Podróże”cow-work['cow-work', 'boardgame']
253Gra wideo "PS2 Charlie and the Chocolate Factory"cow-work['cow-work', 'video-game']
254Gra wideo “ The Chronicles of Narnia: The Lion, The Witch and The Wardrobe”cow-work['cow-work', 'video-game']
255Gra wideo “PS2 Conflict: Vietnam”cow-work['cow-work', 'video-game']
248Komputer Amstrad 128k Colour Personal Computercow-work['cow-work']
249Zasilacz laboratoryjny Zhaoxincow-work['cow-work', 'tools']
250Gra karciana "Monty Python and the Holy Grail CCG Booster Pack"cow-work['cow-work', 'boardgame']
252Konsola do gier Doom.txtcow-work['cow-work']
251Konsola do gier DoomGirlcow-work['cow-work', 'video-game']
212SUN Keyboard & Mouse Collectioncow-work['cow-work']
243Gra karciana "List Miłosny"cow-work['cow-work', 'boardgame']
242Dodatek do gry “ KeyForge: Zew Archontów - Talia Archonta”cow-work['cow-work', 'boardgame']
241Gra planszowa “Developer Dilemmas”cow-work['cow-work', 'boardgame']
244Osciloscope OS-352 ZUE Unitemcow-work['cow-work']
245Dodatek do gry “KeyForge: Czas Wstąpienia - Talia Archonta”cow-work['cow-work', 'boardgame']
246Gra planszowa “Dobble: collector”cow-work['cow-work', 'boardgame']
247Gra planszowa “Cytadela”cow-work['cow-work', 'boardgame']
91Drukarka 3D Creality Ender 3lab['lab', 'tools', '3d-print']
139Drukarka Brother PT-E550WSPlab['lab']
222Gra planszowa “Spiskowcy"cow-work['cow-work', 'boardgame']
232Gra planszowa “Takie Życie - Ciekawostki"cow-work['cow-work', 'boardgame']
234Gra planszowa "Załoga: Wyprawa w głębiny"cow-work['cow-work', 'boardgame']
235Gra planszowa "Decrypto"cow-work['cow-work', 'boardgame']
233Blinkenkratecow-work['cow-work', 'projects']
231Mecanorma 9,99999MHzcow-work['cow-work']
230SECAM/PAL TV Pattern Generator Type K944cow-work['cow-work']
229TRIO 15MHz Oscilloscope CS-1560Acow-work['cow-work']
228Monitor Trinitroncow-work['cow-work']
227Oscyloskop ST-315A II KABID Radiotechnikacow-work['cow-work']
226Grundig AM/FM Generator AS4cow-work['cow-work']
225Mera tronik Digital Voltmeter Type V530cow-work['cow-work']
224Hewlett Packard 8640A Signal Generatorcow-work['cow-work']
223Sprzęt komp all-in-one krągły iMac *inandercow-work['cow-work']
221Monitor Amstrad CTM644cow-work['cow-work']
220UNITRA Unima Digital Multimeter 1331cow-work['cow-work']
219Leader LVS-5851 A PAL Vectorscopecow-work['cow-work']
218Zopan Signal Generator KZ 1623cow-work['cow-work']
217UNITRA Elmasz Miernik nierównomierności ND-1481cow-work['cow-work']
216SUN CD-ROM Caddy Loadedcow-work['cow-work']
215Xbox 360 Plaincow-work['cow-work']
214Xbox 360 Chromecow-work['cow-work']
213Xbox 360 Toothlesscow-work['cow-work']
211SUN Ultra 5 Bottomcow-work['cow-work']
210SUN Ultra 5 Topcow-work['cow-work']
209SUN Sparkstation 20cow-work['cow-work']
203Multimetr TL-4unknown[]
156Drabinkacow-work['cow-work']
155Flipchartcow-work['cow-work']
166Gra planszowa Oriflammecow-work['cow-work', 'boardgame']
168Gra planszowa "To ja go tnę"cow-work['cow-work', 'boardgame']
152Gra planszowa Dreadful Circuscow-work['cow-work', 'boardgame']
160Gra planszowa "Mage Knight Dugeons"cow-work['cow-work', 'boardgame']
169Gra planszowa Mix Turacow-work['cow-work', 'boardgame']
171Gra karciana UNOcow-work['cow-work']
140Kamizelka projektu 'Człowiek'cow-work['cow-work']
167Sprzęt komp Monitor Samsoncow-work['cow-work']
165Sprzęt komp Monitor mały Delltoncow-work['cow-work']
163Sprzęt komp all-in-one krągły iMaciejcow-work['cow-work']
162Sprzęt komp monitor Delltoncow-work['cow-work']
161Sprzęt komp All-in-one Asusełcow-work['cow-work']
159Sprzęt komp monitor Optimus Primecow-work['cow-work']
158Sprzęt komp monitor Hehe Princecow-work['cow-work']
157Sprzęt komp All-in-one Lenovaldekcow-work['cow-work']
154Sprzęt komp All-in-one Bazzitecow-work['cow-work']
143Von Countcow-work['cow-work']
142Kaktuscow-work['cow-work']
141Tramwajomatcow-work['cow-work']
170Sprzęt komp Desktop FrankenSUNcow-work['cow-work']
172Sprzęt komp Desktop Bandziorcow-work['cow-work']
173Sprzęt komp Desktop GOOD BOYcow-work['cow-work']
174Sprzęt komp Desktop Unbreak My Heartcow-work['cow-work']
175Sprzęt komp Desktop Mucha w Zupiecow-work['cow-work']
178Sprzęt komp Desktop Roxannecow-work['cow-work']
180Sprzęt komp Desktop Wronisławcow-work['cow-work']
194Sprzęt komp laptop Wonder Boycow-work['cow-work']
204Sprzęt komp laptop Lego Dellcow-work['cow-work']
181Klimatyzatorcow-work['cow-work']
205Sprzęt komp laptop HackLab-0x01cow-work['cow-work']
185Dekadowy Generator RC PW-9cow-work['cow-work']
186Sprzęt komp laptop Vojtěchcow-work['cow-work']
187PMZ-12 Automatic Distortion Metercow-work['cow-work']
190Dekadowy Generator RC PW-9 NATIONALcow-work['cow-work']
191Dekadowy Generator RC PW-9 TK2cow-work['cow-work']
192Generator RC PO-20cow-work['cow-work']
195Miernik napięć, zniekształceń i szumów VN-1064/Acow-work['cow-work']
184Sprzęt komp All-in-one Przyczajony nieobecny Bazylcow-work['cow-work']
183Sprzęt komp All-in-one Przyczajony Bazyl Lewycow-work['cow-work']
182Sprzęt komp All-in-one Przyczajony Bazyl pierwszycow-work['cow-work']
108PC Engines APU2 Router Boxcow-work['cow-work', 'networking']
150LEDon Schrödinger's pussycow-work['cow-work']
164Sprzęt komp Monitor Hapeuszunknown[]
153LEDon Duckcow-work['cow-work']
145Prince Charmingcow-work['cow-work']
93King Bobcow-work['cow-work']
90Chciejlistaunknown[]
85Komu powinien służyć Spejsunknown[]
84Budżetunknown[]
83Hackerspace Dragon Dreamingunknown[]
82Bibliotekacow-work['cow-work', 'books']
66Apteczkicow-work['cow-work', 'garage', 'bhp']
44Brayton Powergarage['garage', 'projects']
50Infinity mirror (duże)garage['garage', 'projects']
41Wiertarka PSB 500 RE BOSCHgarage['garage', 'tools']
46What the Duckcow-work['cow-work', 'wled']
+
+
+
+ + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + + + + + + + \ No newline at end of file diff --git a/fegen/docs/static/css/style.css b/fegen/docs/static/css/style.css new file mode 100644 index 0000000..fcfabb6 --- /dev/null +++ b/fegen/docs/static/css/style.css @@ -0,0 +1,14 @@ +footer { + padding: 12px; + margin-top: auto; +} + +/* || Sidenav */ +.sidenav { + width: 250px; + position: sticky; + z-index: 1; + top: 0; + overflow-x: hidden; + padding: 6px 8px 6px 16px; +} diff --git a/main.py b/fegen/main.py similarity index 67% rename from main.py rename to fegen/main.py index 1415ca2..eb8dd58 100644 --- a/main.py +++ b/fegen/main.py @@ -1,7 +1,6 @@ import os, re, shutil from jinja2 import Environment, FileSystemLoader import pandas as pd -from discourse import DiscourseDatabase def add_download_button(row): @@ -9,23 +8,22 @@ def add_download_button(row): download_button = ( f'' ) - return row + [download_button] + print_button = f'' + return row + [download_button, print_button] def generate_dashboard(): """Generate dashboard from zasoby.csv file""" print("Generating HTML dashboard") - website_folder = "docs" + website_folder = "fegen/docs" data = pd.read_csv("zasoby.csv") - env = Environment(loader=FileSystemLoader("template")) + env = Environment(loader=FileSystemLoader("fegen/template")) print("Removing old website files") - shutil.rmtree(f"./{website_folder}") - os.mkdir(f"./{website_folder}") print("Creating a new website") - shutil.copytree("template/static", f"{website_folder}/static") + shutil.copytree("fegen/template/static", f"{website_folder}/static", dirs_exist_ok=True) template = env.get_template("_main_layout.html") with open(f"{website_folder}/index.html", "w+", encoding="utf-8") as file: - header_row = data.columns.values.tolist() + ["label"] + header_row = data.columns.values.tolist() + ["label", "print"] rows = map( add_download_button, data.values.tolist(), @@ -39,7 +37,8 @@ def generate_dashboard(): if __name__ == "__main__": + from discourse import DiscourseDatabase + DiscourseDatabase() generate_dashboard() print("Done!") - diff --git a/fegen/template/_base_template.html b/fegen/template/_base_template.html new file mode 100644 index 0000000..ecf3da4 --- /dev/null +++ b/fegen/template/_base_template.html @@ -0,0 +1,150 @@ + + + + + + Baza Zasobów Hackerspace Trójmiasto + + + + + + + + + + + {% block body %}{% endblock body %} + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + + + + + + + diff --git a/fegen/template/_main_layout.html b/fegen/template/_main_layout.html new file mode 100644 index 0000000..579f45d --- /dev/null +++ b/fegen/template/_main_layout.html @@ -0,0 +1,29 @@ +{% extends "_base_template.html" %} {% block body %} +
+
+
{% block sidenav %}{% endblock sidenav %}
+
+

Baza Zasobów Hackerspace Trójmiasto

+ + + + + {% for cell in t_header %} + + {% endfor %} + + + + {% for row in t_body %} + + {% for cell in row %} + + {% endfor %} + + {% endfor %} + +
{{cell}}
{{cell}}
+
+
+
+{% endblock body %} diff --git a/fegen/template/static/css/style.css b/fegen/template/static/css/style.css new file mode 100644 index 0000000..fcfabb6 --- /dev/null +++ b/fegen/template/static/css/style.css @@ -0,0 +1,14 @@ +footer { + padding: 12px; + margin-top: auto; +} + +/* || Sidenav */ +.sidenav { + width: 250px; + position: sticky; + z-index: 1; + top: 0; + overflow-x: hidden; + padding: 6px 8px 6px 16px; +} diff --git a/fonts/SourceCodePro-SemiBold.ttf b/fonts/SourceCodePro-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..210f974ee4b7cfbf530214c6d2aea87a0b6b458a GIT binary patch literal 133348 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"] -readme = "README.md" +readme = "readme.md" requires-python = ">=3.11" dependencies = [ "brother-ql @ git+https://github.com/hbrylkowski/brother_ql@4225d13d209e8e4a2c17e87a75f42809e0da8fda", @@ -16,6 +16,10 @@ dependencies = [ "pyasn1==0.4.8,<0.5", "python-telegram-bot>=20.3,<21", "fastapi[standard]>=0.114.0", + "requests==2.32.5", + "Jinja2==3.1.6", + "pandas==2.3.3", + "python-dotenv==1.2.1", ] [tool.poetry.group.dev.dependencies] diff --git a/uv.lock b/uv.lock index 147a418..727696b 100644 --- a/uv.lock +++ b/uv.lock @@ -4,7 +4,8 @@ requires-python = ">=3.11" resolution-markers = [ "python_full_version >= '3.14'", "python_full_version == '3.13.*'", - "python_full_version < '3.13'", + "python_full_version == '3.12.*'", + "python_full_version < '3.12'", ] [[package]] @@ -418,12 +419,145 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, ] +[[package]] +name = "numpy" +version = "2.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/10/8b/c265f4823726ab832de836cdd184d0986dcf94480f81e8739692a7ac7af2/numpy-2.4.3.tar.gz", hash = "sha256:483a201202b73495f00dbc83796c6ae63137a9bdade074f7648b3e32613412dd", size = 20727743, upload-time = "2026-03-09T07:58:53.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/51/5093a2df15c4dc19da3f79d1021e891f5dcf1d9d1db6ba38891d5590f3fe/numpy-2.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:33b3bf58ee84b172c067f56aeadc7ee9ab6de69c5e800ab5b10295d54c581adb", size = 16957183, upload-time = "2026-03-09T07:55:57.774Z" }, + { url = "https://files.pythonhosted.org/packages/b5/7c/c061f3de0630941073d2598dc271ac2f6cbcf5c83c74a5870fea07488333/numpy-2.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ba7b51e71c05aa1f9bc3641463cd82308eab40ce0d5c7e1fd4038cbf9938147", size = 14968734, upload-time = "2026-03-09T07:56:00.494Z" }, + { url = "https://files.pythonhosted.org/packages/ef/27/d26c85cbcd86b26e4f125b0668e7a7c0542d19dd7d23ee12e87b550e95b5/numpy-2.4.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:a1988292870c7cb9d0ebb4cc96b4d447513a9644801de54606dc7aabf2b7d920", size = 5475288, upload-time = "2026-03-09T07:56:02.857Z" }, + { url = "https://files.pythonhosted.org/packages/2b/09/3c4abbc1dcd8010bf1a611d174c7aa689fc505585ec806111b4406f6f1b1/numpy-2.4.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:23b46bb6d8ecb68b58c09944483c135ae5f0e9b8d8858ece5e4ead783771d2a9", size = 6805253, upload-time = "2026-03-09T07:56:04.53Z" }, + { url = "https://files.pythonhosted.org/packages/21/bc/e7aa3f6817e40c3f517d407742337cbb8e6fc4b83ce0b55ab780c829243b/numpy-2.4.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a016db5c5dba78fa8fe9f5d80d6708f9c42ab087a739803c0ac83a43d686a470", size = 15969479, upload-time = "2026-03-09T07:56:06.638Z" }, + { url = "https://files.pythonhosted.org/packages/78/51/9f5d7a41f0b51649ddf2f2320595e15e122a40610b233d51928dd6c92353/numpy-2.4.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:715de7f82e192e8cae5a507a347d97ad17598f8e026152ca97233e3666daaa71", size = 16901035, upload-time = "2026-03-09T07:56:09.405Z" }, + { url = "https://files.pythonhosted.org/packages/64/6e/b221dd847d7181bc5ee4857bfb026182ef69499f9305eb1371cbb1aea626/numpy-2.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2ddb7919366ee468342b91dea2352824c25b55814a987847b6c52003a7c97f15", size = 17325657, upload-time = "2026-03-09T07:56:12.067Z" }, + { url = "https://files.pythonhosted.org/packages/eb/b8/8f3fd2da596e1063964b758b5e3c970aed1949a05200d7e3d46a9d46d643/numpy-2.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a315e5234d88067f2d97e1f2ef670a7569df445d55400f1e33d117418d008d52", size = 18635512, upload-time = "2026-03-09T07:56:14.629Z" }, + { url = "https://files.pythonhosted.org/packages/5c/24/2993b775c37e39d2f8ab4125b44337ab0b2ba106c100980b7c274a22bee7/numpy-2.4.3-cp311-cp311-win32.whl", hash = "sha256:2b3f8d2c4589b1a2028d2a770b0fc4d1f332fb5e01521f4de3199a896d158ddd", size = 6238100, upload-time = "2026-03-09T07:56:17.243Z" }, + { url = "https://files.pythonhosted.org/packages/76/1d/edccf27adedb754db7c4511d5eac8b83f004ae948fe2d3509e8b78097d4c/numpy-2.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:77e76d932c49a75617c6d13464e41203cd410956614d0a0e999b25e9e8d27eec", size = 12609816, upload-time = "2026-03-09T07:56:19.089Z" }, + { url = "https://files.pythonhosted.org/packages/92/82/190b99153480076c8dce85f4cfe7d53ea84444145ffa54cb58dcd460d66b/numpy-2.4.3-cp311-cp311-win_arm64.whl", hash = "sha256:eb610595dd91560905c132c709412b512135a60f1851ccbd2c959e136431ff67", size = 10485757, upload-time = "2026-03-09T07:56:21.753Z" }, + { url = "https://files.pythonhosted.org/packages/a9/ed/6388632536f9788cea23a3a1b629f25b43eaacd7d7377e5d6bc7b9deb69b/numpy-2.4.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:61b0cbabbb6126c8df63b9a3a0c4b1f44ebca5e12ff6997b80fcf267fb3150ef", size = 16669628, upload-time = "2026-03-09T07:56:24.252Z" }, + { url = "https://files.pythonhosted.org/packages/74/1b/ee2abfc68e1ce728b2958b6ba831d65c62e1b13ce3017c13943f8f9b5b2e/numpy-2.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7395e69ff32526710748f92cd8c9849b361830968ea3e24a676f272653e8983e", size = 14696872, upload-time = "2026-03-09T07:56:26.991Z" }, + { url = "https://files.pythonhosted.org/packages/ba/d1/780400e915ff5638166f11ca9dc2c5815189f3d7cf6f8759a1685e586413/numpy-2.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:abdce0f71dcb4a00e4e77f3faf05e4616ceccfe72ccaa07f47ee79cda3b7b0f4", size = 5203489, upload-time = "2026-03-09T07:56:29.414Z" }, + { url = "https://files.pythonhosted.org/packages/0b/bb/baffa907e9da4cc34a6e556d6d90e032f6d7a75ea47968ea92b4858826c4/numpy-2.4.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:48da3a4ee1336454b07497ff7ec83903efa5505792c4e6d9bf83d99dc07a1e18", size = 6550814, upload-time = "2026-03-09T07:56:32.225Z" }, + { url = "https://files.pythonhosted.org/packages/7b/12/8c9f0c6c95f76aeb20fc4a699c33e9f827fa0d0f857747c73bb7b17af945/numpy-2.4.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:32e3bef222ad6b052280311d1d60db8e259e4947052c3ae7dd6817451fc8a4c5", size = 15666601, upload-time = "2026-03-09T07:56:34.461Z" }, + { url = "https://files.pythonhosted.org/packages/bd/79/cc665495e4d57d0aa6fbcc0aa57aa82671dfc78fbf95fe733ed86d98f52a/numpy-2.4.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e7dd01a46700b1967487141a66ac1a3cf0dd8ebf1f08db37d46389401512ca97", size = 16621358, upload-time = "2026-03-09T07:56:36.852Z" }, + { url = "https://files.pythonhosted.org/packages/a8/40/b4ecb7224af1065c3539f5ecfff879d090de09608ad1008f02c05c770cb3/numpy-2.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:76f0f283506c28b12bba319c0fab98217e9f9b54e6160e9c79e9f7348ba32e9c", size = 17016135, upload-time = "2026-03-09T07:56:39.337Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b1/6a88e888052eed951afed7a142dcdf3b149a030ca59b4c71eef085858e43/numpy-2.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737f630a337364665aba3b5a77e56a68cc42d350edd010c345d65a3efa3addcc", size = 18345816, upload-time = "2026-03-09T07:56:42.31Z" }, + { url = "https://files.pythonhosted.org/packages/f3/8f/103a60c5f8c3d7fc678c19cd7b2476110da689ccb80bc18050efbaeae183/numpy-2.4.3-cp312-cp312-win32.whl", hash = "sha256:26952e18d82a1dbbc2f008d402021baa8d6fc8e84347a2072a25e08b46d698b9", size = 5960132, upload-time = "2026-03-09T07:56:44.851Z" }, + { url = "https://files.pythonhosted.org/packages/d7/7c/f5ee1bf6ed888494978046a809df2882aad35d414b622893322df7286879/numpy-2.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:65f3c2455188f09678355f5cae1f959a06b778bc66d535da07bf2ef20cd319d5", size = 12316144, upload-time = "2026-03-09T07:56:47.057Z" }, + { url = "https://files.pythonhosted.org/packages/71/46/8d1cb3f7a00f2fb6394140e7e6623696e54c6318a9d9691bb4904672cf42/numpy-2.4.3-cp312-cp312-win_arm64.whl", hash = "sha256:2abad5c7fef172b3377502bde47892439bae394a71bc329f31df0fd829b41a9e", size = 10220364, upload-time = "2026-03-09T07:56:49.849Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d0/1fe47a98ce0df229238b77611340aff92d52691bcbc10583303181abf7fc/numpy-2.4.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b346845443716c8e542d54112966383b448f4a3ba5c66409771b8c0889485dd3", size = 16665297, upload-time = "2026-03-09T07:56:52.296Z" }, + { url = "https://files.pythonhosted.org/packages/27/d9/4e7c3f0e68dfa91f21c6fb6cf839bc829ec920688b1ce7ec722b1a6202fb/numpy-2.4.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2629289168f4897a3c4e23dc98d6f1731f0fc0fe52fb9db19f974041e4cc12b9", size = 14691853, upload-time = "2026-03-09T07:56:54.992Z" }, + { url = "https://files.pythonhosted.org/packages/3a/66/bd096b13a87549683812b53ab211e6d413497f84e794fb3c39191948da97/numpy-2.4.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bb2e3cf95854233799013779216c57e153c1ee67a0bf92138acca0e429aefaee", size = 5198435, upload-time = "2026-03-09T07:56:57.184Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2f/687722910b5a5601de2135c891108f51dfc873d8e43c8ed9f4ebb440b4a2/numpy-2.4.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:7f3408ff897f8ab07a07fbe2823d7aee6ff644c097cc1f90382511fe982f647f", size = 6546347, upload-time = "2026-03-09T07:56:59.531Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ec/7971c4e98d86c564750393fab8d7d83d0a9432a9d78bb8a163a6dc59967a/numpy-2.4.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:decb0eb8a53c3b009b0962378065589685d66b23467ef5dac16cbe818afde27f", size = 15664626, upload-time = "2026-03-09T07:57:01.385Z" }, + { url = "https://files.pythonhosted.org/packages/7e/eb/7daecbea84ec935b7fc732e18f532073064a3816f0932a40a17f3349185f/numpy-2.4.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5f51900414fc9204a0e0da158ba2ac52b75656e7dce7e77fb9f84bfa343b4cc", size = 16608916, upload-time = "2026-03-09T07:57:04.008Z" }, + { url = "https://files.pythonhosted.org/packages/df/58/2a2b4a817ffd7472dca4421d9f0776898b364154e30c95f42195041dc03b/numpy-2.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6bd06731541f89cdc01b261ba2c9e037f1543df7472517836b78dfb15bd6e476", size = 17015824, upload-time = "2026-03-09T07:57:06.347Z" }, + { url = "https://files.pythonhosted.org/packages/4a/ca/627a828d44e78a418c55f82dd4caea8ea4a8ef24e5144d9e71016e52fb40/numpy-2.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:22654fe6be0e5206f553a9250762c653d3698e46686eee53b399ab90da59bd92", size = 18334581, upload-time = "2026-03-09T07:57:09.114Z" }, + { url = "https://files.pythonhosted.org/packages/cd/c0/76f93962fc79955fcba30a429b62304332345f22d4daec1cb33653425643/numpy-2.4.3-cp313-cp313-win32.whl", hash = "sha256:d71e379452a2f670ccb689ec801b1218cd3983e253105d6e83780967e899d687", size = 5958618, upload-time = "2026-03-09T07:57:11.432Z" }, + { url = "https://files.pythonhosted.org/packages/b1/3c/88af0040119209b9b5cb59485fa48b76f372c73068dbf9254784b975ac53/numpy-2.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:0a60e17a14d640f49146cb38e3f105f571318db7826d9b6fef7e4dce758faecd", size = 12312824, upload-time = "2026-03-09T07:57:13.586Z" }, + { url = "https://files.pythonhosted.org/packages/58/ce/3d07743aced3d173f877c3ef6a454c2174ba42b584ab0b7e6d99374f51ed/numpy-2.4.3-cp313-cp313-win_arm64.whl", hash = "sha256:c9619741e9da2059cd9c3f206110b97583c7152c1dc9f8aafd4beb450ac1c89d", size = 10221218, upload-time = "2026-03-09T07:57:16.183Z" }, + { url = "https://files.pythonhosted.org/packages/62/09/d96b02a91d09e9d97862f4fc8bfebf5400f567d8eb1fe4b0cc4795679c15/numpy-2.4.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7aa4e54f6469300ebca1d9eb80acd5253cdfa36f2c03d79a35883687da430875", size = 14819570, upload-time = "2026-03-09T07:57:18.564Z" }, + { url = "https://files.pythonhosted.org/packages/b5/ca/0b1aba3905fdfa3373d523b2b15b19029f4f3031c87f4066bd9d20ef6c6b/numpy-2.4.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d1b90d840b25874cf5cd20c219af10bac3667db3876d9a495609273ebe679070", size = 5326113, upload-time = "2026-03-09T07:57:21.052Z" }, + { url = "https://files.pythonhosted.org/packages/c0/63/406e0fd32fcaeb94180fd6a4c41e55736d676c54346b7efbce548b94a914/numpy-2.4.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a749547700de0a20a6718293396ec237bb38218049cfce788e08fcb716e8cf73", size = 6646370, upload-time = "2026-03-09T07:57:22.804Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d0/10f7dc157d4b37af92720a196be6f54f889e90dcd30dce9dc657ed92c257/numpy-2.4.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94f3c4a151a2e529adf49c1d54f0f57ff8f9b233ee4d44af623a81553ab86368", size = 15723499, upload-time = "2026-03-09T07:57:24.693Z" }, + { url = "https://files.pythonhosted.org/packages/66/f1/d1c2bf1161396629701bc284d958dc1efa3a5a542aab83cf11ee6eb4cba5/numpy-2.4.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22c31dc07025123aedf7f2db9e91783df13f1776dc52c6b22c620870dc0fab22", size = 16657164, upload-time = "2026-03-09T07:57:27.676Z" }, + { url = "https://files.pythonhosted.org/packages/1a/be/cca19230b740af199ac47331a21c71e7a3d0ba59661350483c1600d28c37/numpy-2.4.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:148d59127ac95979d6f07e4d460f934ebdd6eed641db9c0db6c73026f2b2101a", size = 17081544, upload-time = "2026-03-09T07:57:30.664Z" }, + { url = "https://files.pythonhosted.org/packages/b9/c5/9602b0cbb703a0936fb40f8a95407e8171935b15846de2f0776e08af04c7/numpy-2.4.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a97cbf7e905c435865c2d939af3d93f99d18eaaa3cabe4256f4304fb51604349", size = 18380290, upload-time = "2026-03-09T07:57:33.763Z" }, + { url = "https://files.pythonhosted.org/packages/ed/81/9f24708953cd30be9ee36ec4778f4b112b45165812f2ada4cc5ea1c1f254/numpy-2.4.3-cp313-cp313t-win32.whl", hash = "sha256:be3b8487d725a77acccc9924f65fd8bce9af7fac8c9820df1049424a2115af6c", size = 6082814, upload-time = "2026-03-09T07:57:36.491Z" }, + { url = "https://files.pythonhosted.org/packages/e2/9e/52f6eaa13e1a799f0ab79066c17f7016a4a8ae0c1aefa58c82b4dab690b4/numpy-2.4.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1ec84fd7c8e652b0f4aaaf2e6e9cc8eaa9b1b80a537e06b2e3a2fb176eedcb26", size = 12452673, upload-time = "2026-03-09T07:57:38.281Z" }, + { url = "https://files.pythonhosted.org/packages/c4/04/b8cece6ead0b30c9fbd99bb835ad7ea0112ac5f39f069788c5558e3b1ab2/numpy-2.4.3-cp313-cp313t-win_arm64.whl", hash = "sha256:120df8c0a81ebbf5b9020c91439fccd85f5e018a927a39f624845be194a2be02", size = 10290907, upload-time = "2026-03-09T07:57:40.747Z" }, + { url = "https://files.pythonhosted.org/packages/70/ae/3936f79adebf8caf81bd7a599b90a561334a658be4dcc7b6329ebf4ee8de/numpy-2.4.3-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:5884ce5c7acfae1e4e1b6fde43797d10aa506074d25b531b4f54bde33c0c31d4", size = 16664563, upload-time = "2026-03-09T07:57:43.817Z" }, + { url = "https://files.pythonhosted.org/packages/9b/62/760f2b55866b496bb1fa7da2a6db076bef908110e568b02fcfc1422e2a3a/numpy-2.4.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:297837823f5bc572c5f9379b0c9f3a3365f08492cbdc33bcc3af174372ebb168", size = 14702161, upload-time = "2026-03-09T07:57:46.169Z" }, + { url = "https://files.pythonhosted.org/packages/32/af/a7a39464e2c0a21526fb4fb76e346fb172ebc92f6d1c7a07c2c139cc17b1/numpy-2.4.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:a111698b4a3f8dcbe54c64a7708f049355abd603e619013c346553c1fd4ca90b", size = 5208738, upload-time = "2026-03-09T07:57:48.506Z" }, + { url = "https://files.pythonhosted.org/packages/29/8c/2a0cf86a59558fa078d83805589c2de490f29ed4fb336c14313a161d358a/numpy-2.4.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:4bd4741a6a676770e0e97fe9ab2e51de01183df3dcbcec591d26d331a40de950", size = 6543618, upload-time = "2026-03-09T07:57:50.591Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b8/612ce010c0728b1c363fa4ea3aa4c22fe1c5da1de008486f8c2f5cb92fae/numpy-2.4.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:54f29b877279d51e210e0c80709ee14ccbbad647810e8f3d375561c45ef613dd", size = 15680676, upload-time = "2026-03-09T07:57:52.34Z" }, + { url = "https://files.pythonhosted.org/packages/a9/7e/4f120ecc54ba26ddf3dc348eeb9eb063f421de65c05fc961941798feea18/numpy-2.4.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:679f2a834bae9020f81534671c56fd0cc76dd7e5182f57131478e23d0dc59e24", size = 16613492, upload-time = "2026-03-09T07:57:54.91Z" }, + { url = "https://files.pythonhosted.org/packages/2c/86/1b6020db73be330c4b45d5c6ee4295d59cfeef0e3ea323959d053e5a6909/numpy-2.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d84f0f881cb2225c2dfd7f78a10a5645d487a496c6668d6cc39f0f114164f3d0", size = 17031789, upload-time = "2026-03-09T07:57:57.641Z" }, + { url = "https://files.pythonhosted.org/packages/07/3a/3b90463bf41ebc21d1b7e06079f03070334374208c0f9a1f05e4ae8455e7/numpy-2.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d213c7e6e8d211888cc359bab7199670a00f5b82c0978b9d1c75baf1eddbeac0", size = 18339941, upload-time = "2026-03-09T07:58:00.577Z" }, + { url = "https://files.pythonhosted.org/packages/a8/74/6d736c4cd962259fd8bae9be27363eb4883a2f9069763747347544c2a487/numpy-2.4.3-cp314-cp314-win32.whl", hash = "sha256:52077feedeff7c76ed7c9f1a0428558e50825347b7545bbb8523da2cd55c547a", size = 6007503, upload-time = "2026-03-09T07:58:03.331Z" }, + { url = "https://files.pythonhosted.org/packages/48/39/c56ef87af669364356bb011922ef0734fc49dad51964568634c72a009488/numpy-2.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:0448e7f9caefb34b4b7dd2b77f21e8906e5d6f0365ad525f9f4f530b13df2afc", size = 12444915, upload-time = "2026-03-09T07:58:06.353Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1f/ab8528e38d295fd349310807496fabb7cf9fe2e1f70b97bc20a483ea9d4a/numpy-2.4.3-cp314-cp314-win_arm64.whl", hash = "sha256:b44fd60341c4d9783039598efadd03617fa28d041fc37d22b62d08f2027fa0e7", size = 10494875, upload-time = "2026-03-09T07:58:08.734Z" }, + { url = "https://files.pythonhosted.org/packages/e6/ef/b7c35e4d5ef141b836658ab21a66d1a573e15b335b1d111d31f26c8ef80f/numpy-2.4.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0a195f4216be9305a73c0e91c9b026a35f2161237cf1c6de9b681637772ea657", size = 14822225, upload-time = "2026-03-09T07:58:11.034Z" }, + { url = "https://files.pythonhosted.org/packages/cd/8d/7730fa9278cf6648639946cc816e7cc89f0d891602584697923375f801ed/numpy-2.4.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:cd32fbacb9fd1bf041bf8e89e4576b6f00b895f06d00914820ae06a616bdfef7", size = 5328769, upload-time = "2026-03-09T07:58:13.67Z" }, + { url = "https://files.pythonhosted.org/packages/47/01/d2a137317c958b074d338807c1b6a383406cdf8b8e53b075d804cc3d211d/numpy-2.4.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:2e03c05abaee1f672e9d67bc858f300b5ccba1c21397211e8d77d98350972093", size = 6649461, upload-time = "2026-03-09T07:58:15.912Z" }, + { url = "https://files.pythonhosted.org/packages/5c/34/812ce12bc0f00272a4b0ec0d713cd237cb390666eb6206323d1cc9cedbb2/numpy-2.4.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d1ce23cce91fcea443320a9d0ece9b9305d4368875bab09538f7a5b4131938a", size = 15725809, upload-time = "2026-03-09T07:58:17.787Z" }, + { url = "https://files.pythonhosted.org/packages/25/c0/2aed473a4823e905e765fee3dc2cbf504bd3e68ccb1150fbdabd5c39f527/numpy-2.4.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c59020932feb24ed49ffd03704fbab89f22aa9c0d4b180ff45542fe8918f5611", size = 16655242, upload-time = "2026-03-09T07:58:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/f2/c8/7e052b2fc87aa0e86de23f20e2c42bd261c624748aa8efd2c78f7bb8d8c6/numpy-2.4.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9684823a78a6cd6ad7511fc5e25b07947d1d5b5e2812c93fe99d7d4195130720", size = 17080660, upload-time = "2026-03-09T07:58:23.067Z" }, + { url = "https://files.pythonhosted.org/packages/f3/3d/0876746044db2adcb11549f214d104f2e1be00f07a67edbb4e2812094847/numpy-2.4.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0200b25c687033316fb39f0ff4e3e690e8957a2c3c8d22499891ec58c37a3eb5", size = 18380384, upload-time = "2026-03-09T07:58:25.839Z" }, + { url = "https://files.pythonhosted.org/packages/07/12/8160bea39da3335737b10308df4f484235fd297f556745f13092aa039d3b/numpy-2.4.3-cp314-cp314t-win32.whl", hash = "sha256:5e10da9e93247e554bb1d22f8edc51847ddd7dde52d85ce31024c1b4312bfba0", size = 6154547, upload-time = "2026-03-09T07:58:28.289Z" }, + { url = "https://files.pythonhosted.org/packages/42/f3/76534f61f80d74cc9cdf2e570d3d4eeb92c2280a27c39b0aaf471eda7b48/numpy-2.4.3-cp314-cp314t-win_amd64.whl", hash = "sha256:45f003dbdffb997a03da2d1d0cb41fbd24a87507fb41605c0420a3db5bd4667b", size = 12633645, upload-time = "2026-03-09T07:58:30.384Z" }, + { url = "https://files.pythonhosted.org/packages/1f/b6/7c0d4334c15983cec7f92a69e8ce9b1e6f31857e5ee3a413ac424e6bd63d/numpy-2.4.3-cp314-cp314t-win_arm64.whl", hash = "sha256:4d382735cecd7bcf090172489a525cd7d4087bc331f7df9f60ddc9a296cf208e", size = 10565454, upload-time = "2026-03-09T07:58:33.031Z" }, + { url = "https://files.pythonhosted.org/packages/64/e4/4dab9fb43c83719c29241c535d9e07be73bea4bc0c6686c5816d8e1b6689/numpy-2.4.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c6b124bfcafb9e8d3ed09130dbee44848c20b3e758b6bbf006e641778927c028", size = 16834892, upload-time = "2026-03-09T07:58:35.334Z" }, + { url = "https://files.pythonhosted.org/packages/c9/29/f8b6d4af90fed3dfda84ebc0df06c9833d38880c79ce954e5b661758aa31/numpy-2.4.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:76dbb9d4e43c16cf9aa711fcd8de1e2eeb27539dcefb60a1d5e9f12fae1d1ed8", size = 14893070, upload-time = "2026-03-09T07:58:37.7Z" }, + { url = "https://files.pythonhosted.org/packages/9a/04/a19b3c91dbec0a49269407f15d5753673a09832daed40c45e8150e6fa558/numpy-2.4.3-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:29363fbfa6f8ee855d7569c96ce524845e3d726d6c19b29eceec7dd555dab152", size = 5399609, upload-time = "2026-03-09T07:58:39.853Z" }, + { url = "https://files.pythonhosted.org/packages/79/34/4d73603f5420eab89ea8a67097b31364bf7c30f811d4dd84b1659c7476d9/numpy-2.4.3-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:bc71942c789ef415a37f0d4eab90341425a00d538cd0642445d30b41023d3395", size = 6714355, upload-time = "2026-03-09T07:58:42.365Z" }, + { url = "https://files.pythonhosted.org/packages/58/ad/1100d7229bb248394939a12a8074d485b655e8ed44207d328fdd7fcebc7b/numpy-2.4.3-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7e58765ad74dcebd3ef0208a5078fba32dc8ec3578fe84a604432950cd043d79", size = 15800434, upload-time = "2026-03-09T07:58:44.837Z" }, + { url = "https://files.pythonhosted.org/packages/0c/fd/16d710c085d28ba4feaf29ac60c936c9d662e390344f94a6beaa2ac9899b/numpy-2.4.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e236dbda4e1d319d681afcbb136c0c4a8e0f1a5c58ceec2adebb547357fe857", size = 16729409, upload-time = "2026-03-09T07:58:47.972Z" }, + { url = "https://files.pythonhosted.org/packages/57/a7/b35835e278c18b85206834b3aa3abe68e77a98769c59233d1f6300284781/numpy-2.4.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:4b42639cdde6d24e732ff823a3fa5b701d8acad89c4142bc1d0bd6dc85200ba5", size = 12504685, upload-time = "2026-03-09T07:58:50.525Z" }, +] + [[package]] name = "packbits" version = "0.6" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/1b/23/78a967c9b9961258da2bf0d0a63bf12293ccddf96ec77361ee7b44f543f1/packbits-0.6.tar.gz", hash = "sha256:bc6b370bb34e04ac8cfa835e06c0484380affc6d593adb8009dd6c0f7bfff034", size = 2167, upload-time = "2013-04-06T08:22:59.65Z" } +[[package]] +name = "pandas" +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/fa/7ac648108144a095b4fb6aa3de1954689f7af60a14cf25583f4960ecb878/pandas-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523", size = 11578790, upload-time = "2025-09-29T23:18:30.065Z" }, + { url = "https://files.pythonhosted.org/packages/9b/35/74442388c6cf008882d4d4bdfc4109be87e9b8b7ccd097ad1e7f006e2e95/pandas-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45", size = 10833831, upload-time = "2025-09-29T23:38:56.071Z" }, + { url = "https://files.pythonhosted.org/packages/fe/e4/de154cbfeee13383ad58d23017da99390b91d73f8c11856f2095e813201b/pandas-2.3.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66", size = 12199267, upload-time = "2025-09-29T23:18:41.627Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c9/63f8d545568d9ab91476b1818b4741f521646cbdd151c6efebf40d6de6f7/pandas-2.3.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b", size = 12789281, upload-time = "2025-09-29T23:18:56.834Z" }, + { url = "https://files.pythonhosted.org/packages/f2/00/a5ac8c7a0e67fd1a6059e40aa08fa1c52cc00709077d2300e210c3ce0322/pandas-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791", size = 13240453, upload-time = "2025-09-29T23:19:09.247Z" }, + { url = "https://files.pythonhosted.org/packages/27/4d/5c23a5bc7bd209231618dd9e606ce076272c9bc4f12023a70e03a86b4067/pandas-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151", size = 13890361, upload-time = "2025-09-29T23:19:25.342Z" }, + { url = "https://files.pythonhosted.org/packages/8e/59/712db1d7040520de7a4965df15b774348980e6df45c129b8c64d0dbe74ef/pandas-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c", size = 11348702, upload-time = "2025-09-29T23:19:38.296Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload-time = "2025-09-29T23:19:48.856Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, + { url = "https://files.pythonhosted.org/packages/57/56/cf2dbe1a3f5271370669475ead12ce77c61726ffd19a35546e31aa8edf4e/pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", size = 11737212, upload-time = "2025-09-29T23:19:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/63/cd7d615331b328e287d8233ba9fdf191a9c2d11b6af0c7a59cfcec23de68/pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", size = 12362693, upload-time = "2025-09-29T23:20:14.098Z" }, + { url = "https://files.pythonhosted.org/packages/a6/de/8b1895b107277d52f2b42d3a6806e69cfef0d5cf1d0ba343470b9d8e0a04/pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", size = 12771002, upload-time = "2025-09-29T23:20:26.76Z" }, + { url = "https://files.pythonhosted.org/packages/87/21/84072af3187a677c5893b170ba2c8fbe450a6ff911234916da889b698220/pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", size = 13450971, upload-time = "2025-09-29T23:20:41.344Z" }, + { url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", size = 10992722, upload-time = "2025-09-29T23:20:54.139Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713", size = 11544671, upload-time = "2025-09-29T23:21:05.024Z" }, + { url = "https://files.pythonhosted.org/packages/31/94/72fac03573102779920099bcac1c3b05975c2cb5f01eac609faf34bed1ca/pandas-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8", size = 10680807, upload-time = "2025-09-29T23:21:15.979Z" }, + { url = "https://files.pythonhosted.org/packages/16/87/9472cf4a487d848476865321de18cc8c920b8cab98453ab79dbbc98db63a/pandas-2.3.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d", size = 11709872, upload-time = "2025-09-29T23:21:27.165Z" }, + { url = "https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac", size = 12306371, upload-time = "2025-09-29T23:21:40.532Z" }, + { url = "https://files.pythonhosted.org/packages/33/81/a3afc88fca4aa925804a27d2676d22dcd2031c2ebe08aabd0ae55b9ff282/pandas-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c", size = 12765333, upload-time = "2025-09-29T23:21:55.77Z" }, + { url = "https://files.pythonhosted.org/packages/8d/0f/b4d4ae743a83742f1153464cf1a8ecfafc3ac59722a0b5c8602310cb7158/pandas-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493", size = 13418120, upload-time = "2025-09-29T23:22:10.109Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c7/e54682c96a895d0c808453269e0b5928a07a127a15704fedb643e9b0a4c8/pandas-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee", size = 10993991, upload-time = "2025-09-29T23:25:04.889Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ca/3f8d4f49740799189e1395812f3bf23b5e8fc7c190827d55a610da72ce55/pandas-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5", size = 12048227, upload-time = "2025-09-29T23:22:24.343Z" }, + { url = "https://files.pythonhosted.org/packages/0e/5a/f43efec3e8c0cc92c4663ccad372dbdff72b60bdb56b2749f04aa1d07d7e/pandas-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21", size = 11411056, upload-time = "2025-09-29T23:22:37.762Z" }, + { url = "https://files.pythonhosted.org/packages/46/b1/85331edfc591208c9d1a63a06baa67b21d332e63b7a591a5ba42a10bb507/pandas-2.3.3-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78", size = 11645189, upload-time = "2025-09-29T23:22:51.688Z" }, + { url = "https://files.pythonhosted.org/packages/44/23/78d645adc35d94d1ac4f2a3c4112ab6f5b8999f4898b8cdf01252f8df4a9/pandas-2.3.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110", size = 12121912, upload-time = "2025-09-29T23:23:05.042Z" }, + { url = "https://files.pythonhosted.org/packages/53/da/d10013df5e6aaef6b425aa0c32e1fc1f3e431e4bcabd420517dceadce354/pandas-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86", size = 12712160, upload-time = "2025-09-29T23:23:28.57Z" }, + { url = "https://files.pythonhosted.org/packages/bd/17/e756653095a083d8a37cbd816cb87148debcfcd920129b25f99dd8d04271/pandas-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc", size = 13199233, upload-time = "2025-09-29T23:24:24.876Z" }, + { url = "https://files.pythonhosted.org/packages/04/fd/74903979833db8390b73b3a8a7d30d146d710bd32703724dd9083950386f/pandas-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0", size = 11540635, upload-time = "2025-09-29T23:25:52.486Z" }, + { url = "https://files.pythonhosted.org/packages/21/00/266d6b357ad5e6d3ad55093a7e8efc7dd245f5a842b584db9f30b0f0a287/pandas-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593", size = 10759079, upload-time = "2025-09-29T23:26:33.204Z" }, + { url = "https://files.pythonhosted.org/packages/ca/05/d01ef80a7a3a12b2f8bbf16daba1e17c98a2f039cbc8e2f77a2c5a63d382/pandas-2.3.3-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c", size = 11814049, upload-time = "2025-09-29T23:27:15.384Z" }, + { url = "https://files.pythonhosted.org/packages/15/b2/0e62f78c0c5ba7e3d2c5945a82456f4fac76c480940f805e0b97fcbc2f65/pandas-2.3.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b", size = 12332638, upload-time = "2025-09-29T23:27:51.625Z" }, + { url = "https://files.pythonhosted.org/packages/c5/33/dd70400631b62b9b29c3c93d2feee1d0964dc2bae2e5ad7a6c73a7f25325/pandas-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6", size = 12886834, upload-time = "2025-09-29T23:28:21.289Z" }, + { url = "https://files.pythonhosted.org/packages/d3/18/b5d48f55821228d0d2692b34fd5034bb185e854bdb592e9c640f6290e012/pandas-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3", size = 13409925, upload-time = "2025-09-29T23:28:58.261Z" }, + { url = "https://files.pythonhosted.org/packages/a6/3d/124ac75fcd0ecc09b8fdccb0246ef65e35b012030defb0e0eba2cbbbe948/pandas-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5", size = 11109071, upload-time = "2025-09-29T23:32:27.484Z" }, + { url = "https://files.pythonhosted.org/packages/89/9c/0e21c895c38a157e0faa1fb64587a9226d6dd46452cac4532d80c3c4a244/pandas-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec", size = 12048504, upload-time = "2025-09-29T23:29:31.47Z" }, + { url = "https://files.pythonhosted.org/packages/d7/82/b69a1c95df796858777b68fbe6a81d37443a33319761d7c652ce77797475/pandas-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7", size = 11410702, upload-time = "2025-09-29T23:29:54.591Z" }, + { url = "https://files.pythonhosted.org/packages/f9/88/702bde3ba0a94b8c73a0181e05144b10f13f29ebfc2150c3a79062a8195d/pandas-2.3.3-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450", size = 11634535, upload-time = "2025-09-29T23:30:21.003Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1e/1bac1a839d12e6a82ec6cb40cda2edde64a2013a66963293696bbf31fbbb/pandas-2.3.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5", size = 12121582, upload-time = "2025-09-29T23:30:43.391Z" }, + { url = "https://files.pythonhosted.org/packages/44/91/483de934193e12a3b1d6ae7c8645d083ff88dec75f46e827562f1e4b4da6/pandas-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788", size = 12699963, upload-time = "2025-09-29T23:31:10.009Z" }, + { url = "https://files.pythonhosted.org/packages/70/44/5191d2e4026f86a2a109053e194d3ba7a31a2d10a9c2348368c63ed4e85a/pandas-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87", size = 13202175, upload-time = "2025-09-29T23:31:59.173Z" }, +] + [[package]] name = "pillow" version = "9.5.0" @@ -564,12 +698,24 @@ wheels = [ ] [[package]] -name = "python-dotenv" -version = "1.2.2" +name = "python-dateutil" +version = "2.9.0.post0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/26/19cadc79a718c5edbec86fd4919a6b6d3f681039a2f6d66d14be94e75fb9/python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", size = 44221, upload-time = "2025-10-26T15:12:10.434Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230, upload-time = "2025-10-26T15:12:09.109Z" }, ] [[package]] @@ -589,11 +735,14 @@ dependencies = [ { name = "brother-ql" }, { name = "fastapi", extra = ["standard"] }, { name = "jinja2" }, + { name = "pandas" }, { name = "pillow" }, { name = "pyasn1" }, { name = "pysnmp" }, + { name = "python-dotenv" }, { name = "python-telegram-bot" }, { name = "qrcode", extra = ["pil"] }, + { name = "requests" }, { name = "setuptools" }, ] @@ -601,12 +750,16 @@ dependencies = [ requires-dist = [ { name = "brother-ql", git = "https://github.com/hbrylkowski/brother_ql?rev=4225d13d209e8e4a2c17e87a75f42809e0da8fda" }, { name = "fastapi", extras = ["standard"], specifier = ">=0.114.0" }, + { name = "jinja2", specifier = "==3.1.6" }, { name = "jinja2", specifier = ">=3.1.2,<4" }, + { name = "pandas", specifier = "==2.3.3" }, { name = "pillow", specifier = ">=9.5.0,<10" }, { name = "pyasn1", specifier = "==0.4.8,<0.5" }, { name = "pysnmp", specifier = ">=4.4.12,<5" }, + { name = "python-dotenv", specifier = "==1.2.1" }, { name = "python-telegram-bot", specifier = ">=20.3,<21" }, { name = "qrcode", extras = ["pil"] }, + { name = "requests", specifier = "==2.32.5" }, { name = "setuptools", specifier = "<81" }, ] @@ -622,6 +775,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6f/8e/4e4ed06986557fce0c41c3dfc60c5495b1095cf8a552bdc4c56e96aefdac/python_telegram_bot-20.8-py3-none-any.whl", hash = "sha256:a98ddf2f237d6584b03a2f8b20553e1b5e02c8d3a1ea8e17fd06cc955af78c14", size = 604866, upload-time = "2024-02-08T17:39:12.202Z" }, ] +[[package]] +name = "pytz" +version = "2026.1.post1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/56/db/b8721d71d945e6a8ac63c0fc900b2067181dbb50805958d4d4661cf7d277/pytz-2026.1.post1.tar.gz", hash = "sha256:3378dde6a0c3d26719182142c56e60c7f9af7e968076f31aae569d72a0358ee1", size = 321088, upload-time = "2026-03-03T07:47:50.683Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/99/781fe0c827be2742bcc775efefccb3b048a3a9c6ce9aec0cbf4a101677e5/pytz-2026.1.post1-py2.py3-none-any.whl", hash = "sha256:f2fd16142fda348286a75e1a524be810bb05d444e5a081f37f7affc635035f7a", size = 510489, upload-time = "2026-03-03T07:47:49.167Z" }, +] + [[package]] name = "pyusb" version = "1.3.1" @@ -763,6 +925,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, ] +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + [[package]] name = "sniffio" version = "1.3.1" @@ -808,6 +979,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, ] +[[package]] +name = "tzdata" +version = "2025.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772, upload-time = "2025-12-13T17:45:35.667Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, +] + [[package]] name = "urllib3" version = "2.6.3"