diff --git a/pyproject.toml b/pyproject.toml index d170fad..bd6e26c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "teilchensammler-cli" -version = "0.3.3" +version = "0.3.2" description = "Build up and maintain an inventory of electronics parts and tools." readme = "README.md" requires-python = ">=3.12,<4.0" diff --git a/src/teilchensammler_cli/database.py b/src/teilchensammler_cli/database.py index b58456b..e226215 100644 --- a/src/teilchensammler_cli/database.py +++ b/src/teilchensammler_cli/database.py @@ -3,7 +3,7 @@ from sqlmodel import SQLModel, create_engine sqlite_url = os.environ.get("DATABASE_URL", "sqlite:///database.db") -engine = create_engine(sqlite_url, echo=False) +engine = create_engine(sqlite_url, echo=True) def create_db_and_tables(): diff --git a/src/teilchensammler_cli/main.py b/src/teilchensammler_cli/main.py index 4b0364b..c1706ef 100644 --- a/src/teilchensammler_cli/main.py +++ b/src/teilchensammler_cli/main.py @@ -17,7 +17,7 @@ logging.basicConfig( logger = logging.getLogger(__name__) -class SammlerApp(App): +class SammlerApp(App[None]): async def on_mount(self) -> None: create_db_and_tables() _ = self.push_screen(AddInventoryScreen()) diff --git a/src/teilchensammler_cli/models.py b/src/teilchensammler_cli/models.py index f72650e..86233f4 100644 --- a/src/teilchensammler_cli/models.py +++ b/src/teilchensammler_cli/models.py @@ -37,22 +37,14 @@ async def make_teilchen_input(text: str) -> TeilchenCreate | None: import re from natsort import natsorted - text = text.strip() - if not text: logger.error("Empty text.") return None name_end = text.find(".") - if name_end == -1: # "." not in text - logger.warning("Missing period '.' from text.") - logger.debug("Could not find period symbol in input: %s", text) - return None - else: - name = text[0:name_end] - + name = text[0:name_end] if not name: - logger.warning("Could not extract name.") + logger.error("Could not extract name.") logger.debug("Could not extract name from input: %s", text) return None diff --git a/src/teilchensammler_cli/tui.py b/src/teilchensammler_cli/tui.py index 87ffa62..37c44f9 100644 --- a/src/teilchensammler_cli/tui.py +++ b/src/teilchensammler_cli/tui.py @@ -7,7 +7,7 @@ from textual.widgets import Button, DataTable, Footer, Header, Input, Static from .models import load_initial_data -TEILCHEN_DATA_HEADER = "pk Name Description Number Tags".split() +FAKE_DATA_HEADER = "pk Name Description Number Tags".split() class SearchBar(Static): @@ -46,12 +46,12 @@ class SearchResults(Widget): yield DataTable(id="table-search-result", cursor_type="row", zebra_stripes=True) async def on_mount(self) -> None: - table: DataTable = self.query_one(DataTable) - table.add_columns(*TEILCHEN_DATA_HEADER) - table.add_rows(await load_initial_data()) + table: DataTable[None] = self.query_one(DataTable[None]) + _ = table.add_columns(*FAKE_DATA_HEADER) + _ = table.add_rows(await load_initial_data()) -class AddInventoryScreen(Screen): +class AddInventoryScreen(Screen[None]): def compose(self) -> ComposeResult: yield Header() yield SearchBar() diff --git a/tests.py b/tests.py index 0b547c6..521a238 100644 --- a/tests.py +++ b/tests.py @@ -1,54 +1,4 @@ -from typing import TypedDict -import pytest -import logging - -from teilchensammler_cli.models import TeilchenCreate, make_teilchen_input - -logger = logging.getLogger(__name__) - - def test_initial_layout(snap_compare): from teilchensammler_cli.main import app assert snap_compare(app, terminal_size=(130, 40)) - - -class Teilchen(TypedDict): - """The things I do for my LSP...""" - - name: str - description: str - tags: str - text: str - number: int - - -empty_teilchen: Teilchen = { - "name": "", - "description": "", - "tags": "", - "text": "", - "number": 1, -} - - -@pytest.mark.parametrize( - "example_input,expected", - [ - ("", None), - ("a", None), - ("a.", {"name": "a", "text": "a."}), - ("aa", None), - ("aa.", {"name": "aa", "text": "aa."}), - ], -) -async def test_teilchendata_must_include_period( - example_input: str, expected: dict[str, str | int] | None -) -> None: - - thing = expected - if expected: - arguments = empty_teilchen | expected - thing = TeilchenCreate(**arguments) # ty:ignore[invalid-argument-type] - - assert await make_teilchen_input(example_input) == thing diff --git a/uv.lock b/uv.lock index 015d5a5..73025de 100644 --- a/uv.lock +++ b/uv.lock @@ -1249,7 +1249,7 @@ wheels = [ [[package]] name = "teilchensammler-cli" -version = "0.3.3" +version = "0.3.2" source = { editable = "." } dependencies = [ { name = "ciso8601" },