[PR #19980] refactor: Use typed SQLAlchemy base model and fix type errors #29282

Closed
opened 2026-02-21 20:45:14 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/langgenius/dify/pull/19980

State: closed
Merged: Yes


Changes

This PR improves type safety throughout the codebase by:

  • Replacing SQLAlchemy's declarative_base with the modern DeclarativeBase class for better typing support
  • Restructuring the Account model to properly handle optional types and role assignments
  • Moving TenantAccountRole to the top of the file to avoid forward references
  • Adding proper type annotations with Optional types where needed
  • Fixing variable naming to avoid shadowing (e.g., providerprovider_path, tenantnew_tenant)
  • Correcting variable references in various services (e.g., documentdataset_document or rag_document)
  • Fixing error messages to reference the correct variables
  • Removing redundant or incorrect type annotations

Testing

  • Verified all type errors are resolved with mypy
  • Tested account creation and tenant assignment flows

Related Issues

Resolves #19933
Resolves #19977
Close https://github.com/langgenius/dify/pull/19968

Screenshots

Before After
... ...

Checklist

Important

Please review the checklist below before submitting your pull request.

  • This change requires a documentation update, included: Dify Document
  • I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
  • I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • I've updated the documentation accordingly.
  • I ran dev/reformat(backend) and cd web && npx lint-staged(frontend) to appease the lint gods
**Original Pull Request:** https://github.com/langgenius/dify/pull/19980 **State:** closed **Merged:** Yes --- ## Changes This PR improves type safety throughout the codebase by: - Replacing SQLAlchemy's `declarative_base` with the modern `DeclarativeBase` class for better typing support - Restructuring the `Account` model to properly handle optional types and role assignments - Moving `TenantAccountRole` to the top of the file to avoid forward references - Adding proper type annotations with `Optional` types where needed - Fixing variable naming to avoid shadowing (e.g., `provider` → `provider_path`, `tenant` → `new_tenant`) - Correcting variable references in various services (e.g., `document` → `dataset_document` or `rag_document`) - Fixing error messages to reference the correct variables - Removing redundant or incorrect type annotations ## Testing - [x] Verified all type errors are resolved with mypy - [x] Tested account creation and tenant assignment flows ## Related Issues Resolves #19933 Resolves #19977 Close https://github.com/langgenius/dify/pull/19968 # Screenshots | Before | After | |--------|-------| | ... | ... | # Checklist > [!IMPORTANT] > Please review the checklist below before submitting your pull request. - [ ] This change requires a documentation update, included: [Dify Document](https://github.com/langgenius/dify-docs) - [x] I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!) - [x] I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change. - [x] I've updated the documentation accordingly. - [x] I ran `dev/reformat`(backend) and `cd web && npx lint-staged`(frontend) to appease the lint gods
yindo added the pull-request label 2026-02-21 20:45:14 -05:00
yindo closed this issue 2026-02-21 20:45:14 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#29282