HKUDS/DeepTutor · error · ValueError
Password must be at least 8 characters
Error message
Password must be at least 8 characters
What it means
Pydantic ValidationError raised by DeviceCredentialCreateRequest.password_valid in deeptutor/api/routers/auth.py:119 when the submitted password string is shorter than 8 characters. The @field_validator('password') guard rejects the request payload before any account is created; the client must resend a password of at least 8 characters.
Solutions
- Enforce an 8-character minimum in the signup form UI
- Return the message as inline validation feedback on the password field
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at deeptutor/api/routers/auth.py:119 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of HKUDS/DeepTutor@3e82f13042 (2026-08-27).
Data as JSON: /api/errors/cb5ced1c15e0f6be.
Report an issue: GitHub.
Appendix: source
Thrown at deeptutor/api/routers/auth.py:119
def username_valid(cls, v: str) -> str:
import re
v = v.strip()
if not v:
raise ValueError("Email cannot be empty")
# Accept standard email addresses (used by PocketBase mode) or plain
# usernames (used by the built-in SQLite/JSON auth mode).
email_re = re.compile(r"^[^@\s]+@[^@\s]+\.[^@\s]+$")
plain_re = re.compile(r"^[A-Za-z0-9_\-.]{3,64}$")
if not email_re.match(v) and not plain_re.match(v):
raise ValueError("Enter a valid email address")
return v
@field_validator("password")
@classmethod
def password_valid(cls, v: str) -> str:
if len(v) < 8:
raise ValueError("Password must be at least 8 characters")
return v
class SetRoleRequest(BaseModel):
"""Payload for the PUT /users/{username}/role endpoint."""
role: str
@field_validator("role")
@classmethod
def role_valid(cls, v: str) -> str:
if v not in ("admin", "user"):
raise ValueError("Role must be 'admin' or 'user'")
return v
class AuthStatusResponse(BaseModel):
"""Response body for the GET /status endpoint."""View on GitHub (pinned to 3e82f13042)