{"record":{"id":"dc17a9daccd710ba","repo":"HKUDS/DeepTutor","slug":"enter-a-valid-email-address","errorCode":null,"errorMessage":"Enter a valid email address","messagePattern":"Enter a valid email address","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"deeptutor/api/routers/auth.py","lineNumber":112,"sourceCode":"    \"\"\"Payload for the POST /register endpoint.\"\"\"\n\n    username: str\n    password: str\n\n    @field_validator(\"username\")\n    @classmethod\n    def username_valid(cls, v: str) -> str:\n        import re\n\n        v = v.strip()\n        if not v:\n            raise ValueError(\"Email cannot be empty\")\n        # Accept standard email addresses (used by PocketBase mode) or plain\n        # usernames (used by the built-in SQLite/JSON auth mode).\n        email_re = re.compile(r\"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$\")\n        plain_re = re.compile(r\"^[A-Za-z0-9_\\-.]{3,64}$\")\n        if not email_re.match(v) and not plain_re.match(v):\n            raise ValueError(\"Enter a valid email address\")\n        return v\n\n    @field_validator(\"password\")\n    @classmethod\n    def password_valid(cls, v: str) -> str:\n        if len(v) < 8:\n            raise ValueError(\"Password must be at least 8 characters\")\n        return v\n\n\nclass SetRoleRequest(BaseModel):\n    \"\"\"Payload for the PUT /users/{username}/role endpoint.\"\"\"\n\n    role: str\n\n    @field_validator(\"role\")\n    @classmethod\n    def role_valid(cls, v: str) -> str:","sourceCodeStart":94,"sourceCodeEnd":130,"githubUrl":"https://github.com/HKUDS/DeepTutor/blob/3e82f130422a813cdd73c10b21a44e9325f5821a/deeptutor/api/routers/auth.py#L94-L130","documentation":"Error \"Enter a valid email address\" thrown in HKUDS/DeepTutor.","triggerScenarios":"Thrown at deeptutor/api/routers/auth.py:112 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3e82f130422a813cdd73c10b21a44e9325f5821a","analyzedAt":"2026-08-27T06:57:25.364Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}