Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.13
3.14
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# =======================================
# Stage 1: init
# =======================================
FROM ghcr.io/astral-sh/uv:0.7.8-python3.13-bookworm AS init
FROM ghcr.io/astral-sh/uv:0.11.10-python3.14-trixie AS init

WORKDIR /app

Expand Down Expand Up @@ -39,7 +39,7 @@ RUN mv /tmp/client .web/build/client
# =======================================
# Stage 2: copy artifacts into slim image
# =======================================
FROM python:3.13-slim
FROM python:3.14-slim

# Install libpq-dev for psycopg (skip if not using postgres).
RUN apt-get update -y && apt-get install -y libpq-dev && rm -rf /var/lib/apt/lists/*
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ down:
docker compose -f compose.yaml -f compose.prod.yaml down

logs:
docker compose -f compose.yaml -f compose.prod.yaml logs
docker compose -f compose.yaml -f compose.prod.yaml logs -ft
2 changes: 1 addition & 1 deletion aitutor/components/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def get_component(cls, **props):
"""Create the component."""
return rx.hstack(
rx.input(
type=rx.cond(cls.password_visible, "text", "password"),
type=rx.cond(cls.password_visible, "text", "password"), # type: ignore
on_mount=cls.hide_password,
**props,
),
Expand Down
2 changes: 1 addition & 1 deletion aitutor/components/dialogs.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def confirm_dialog(
rx.button(
rx.text(cancel_text),
_hover={"cursor": "pointer"},
variant=rx.cond(destructive, "solid", "outline"),
variant=rx.cond(destructive, "solid", "outline"), # type: ignore
)
),
rx.alert_dialog.action(
Expand Down
24 changes: 15 additions & 9 deletions aitutor/pages/exercises/state.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,24 +221,30 @@ def load_exercises(self):

# sort open_deadline_exercises by deadline ascending
self.open_deadline_exercises.sort(
key=lambda ex_wth_res: ex_wth_res[0].deadline
if ex_wth_res[0].deadline is not None
else datetime.max
key=lambda ex_wth_res: (
ex_wth_res[0].deadline
if ex_wth_res[0].deadline is not None
else datetime.max
)
)

# sort closed_deadline_exercises by deadline descending
self.closed_deadline_exercises.sort(
key=lambda ex_wth_res: ex_wth_res[0].deadline
if ex_wth_res[0].deadline is not None
else datetime.min,
key=lambda ex_wth_res: (
ex_wth_res[0].deadline
if ex_wth_res[0].deadline is not None
else datetime.min
),
reverse=True,
)

# sort no_deadline_exercises by submitted vs not submitted
self.no_deadline_exercises.sort(
key=lambda ex_wth_res: ex_wth_res[1].submit_time_stamp is not None
if ex_wth_res[1] is not None
else False,
key=lambda ex_wth_res: (
ex_wth_res[1].submit_time_stamp is not None
if ex_wth_res[1] is not None
else False
),
)

self.update_time_left_strings()
2 changes: 1 addition & 1 deletion aitutor/pages/my_lectures/components.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def role_filter_button(label, value: str) -> rx.Component:
"""Render a small role filter button."""
return rx.button(
label,
variant=rx.cond(MyLecturesState.role_filter == value, "solid", "outline"),
variant=rx.cond(MyLecturesState.role_filter == value, "solid", "outline"), # type: ignore
size="2",
on_click=MyLecturesState.set_role_filter(value),
_hover={"cursor": "pointer"},
Expand Down
2 changes: 1 addition & 1 deletion aitutor/pages/prompts/components.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def prompt_card(prompt: Prompt) -> rx.Component:
prompt.id
),
variant="soft",
color_scheme=rx.cond(
color_scheme=rx.cond( # type: ignore
prompt.is_default_prompt,
"green",
"gray",
Expand Down
2 changes: 1 addition & 1 deletion aitutor/pages/reports/components.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def show_table_row(table_row: TableRow) -> rx.Component:
rx.icon("mail", size=22),
),
size="2",
color_scheme=rx.cond(
color_scheme=rx.cond( # type: ignore
table_row.looked_at,
"gray",
"accent",
Expand Down
2 changes: 1 addition & 1 deletion aitutor/pages/user_settings/components.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def password_changed_message() -> rx.Component:
icon=rx.cond(
UserSettingsState.change_password_success, "check", "triangle_alert"
),
color_scheme=rx.cond(
color_scheme=rx.cond( # type: ignore
UserSettingsState.change_password_success, "green", "red"
),
role="alert",
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ authors = [
{name = "AL Group", email = "georg.martius@uni-tuebingen.de"},
]

requires-python = ">=3.13"
requires-python = ">=3.14"
dependencies = [
"reflex[db]",
"pytest",
Expand Down
Loading
Loading