Skip to content

refactor: simplify repository factory with Django-style import_string#24354

Merged
crazywoola merged 1 commit intomainfrom
refactor/improve-auto-import
Aug 22, 2025
Merged

refactor: simplify repository factory with Django-style import_string#24354
crazywoola merged 1 commit intomainfrom
refactor/improve-auto-import

Conversation

@laipz8200
Copy link
Copy Markdown
Member

Summary

  • Replaced complex validation logic with Django's simpler import_string pattern
  • Added module caching for better performance
  • Reduced codebase by ~200 lines while maintaining full functionality

Changes

  1. Created libs/module_loading.py: New utility module implementing Django's import_string() function with module caching
  2. Simplified factory classes: Removed validation methods from both core/repositories/factory.py and repositories/factory.py
  3. Removed unnecessary logging: Eliminated debug logging that provided no value
  4. Updated tests: Modified test file to work with simplified implementation

Benefits

  • Simpler code: Removed ~200 lines of complex validation logic
  • Better performance: Module caching prevents redundant imports
  • Proven pattern: Follows Django's battle-tested approach used in production by millions
  • Easier maintenance: Less code to understand and maintain
  • Full compatibility: All existing functionality preserved

Test Plan

  • All existing unit tests pass
  • Repository factory tests updated and passing
  • Code style checks pass (ruff check and ruff format)

Fixes #24353

- Replace complex validation logic with Django's simpler import_string pattern
- Add module caching for better performance
- Remove unnecessary debug logging
- Reduce codebase by ~200 lines while maintaining functionality
- Update tests to work with simplified implementation
@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. 💪 enhancement New feature or request labels Aug 22, 2025
@crazywoola crazywoola merged commit 77223e4 into main Aug 22, 2025
10 checks passed
@crazywoola crazywoola deleted the refactor/improve-auto-import branch August 22, 2025 13:56
@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Aug 22, 2025
Gnomeek added a commit to Gnomeek/dify that referenced this pull request Aug 22, 2025
ci

add assertion

docs: format all md files (langgenius#24195)

Signed-off-by: yihong0618 <[email protected]>

hotfix: fix multiple case match syntax (langgenius#24204)

feat: notice of the expire of education verify (langgenius#24210)

Co-authored-by: Copilot <[email protected]>

Feat: Education (langgenius#24208)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

chore: translate i18n files (langgenius#24211)

Co-authored-by: iamjoel <[email protected]>

Httpx example (langgenius#24151)

add tyck tool (currently ignore the error) (langgenius#22592)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

Fix the bug of automatically appending basepath to image resource. (langgenius#24201)

fix: keep idempotent when init AnalyticdbVectorBySql (langgenius#24239)

Co-authored-by: xiaozeyu <[email protected]>

fix: dataset doc-form compatible (langgenius#24177)

Co-authored-by: huangzhuo <[email protected]>

feature: add test containers base tests for saved message service (langgenius#24259)

Mcp support resource discovery (langgenius#24223)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

fix: loop exit condition accepts variables from nodes inside the loop  langgenius#24183: (langgenius#24257)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

feat: show the start time with seconds of the app logs (langgenius#24267)

fix(api):Fix the issue of empty and not empty operations failing in k… (langgenius#24276)

Co-authored-by: liumin <[email protected]>

fix: rollback when AnalyticDB create zhparser failed (langgenius#24260)

Co-authored-by: xiaozeyu <[email protected]>

fix: value_type check failed when updating variables (langgenius#24274)

Co-authored-by: me <[email protected]>

[Test] add unit tests for ProviderConfigEncrypter encrypt/mask/decrypt (langgenius#24280)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

refactor: replace try-except blocks with contextlib.suppress for cleaner exception handling (langgenius#24284)

style: replace `h-[1px]` with `h-px` to unify the writing format of Tailwind CSS (langgenius#24146)

Fix: safe defaults for BaseModel dict fields (langgenius#24098)

Co-authored-by: Yongtao Huang <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

[CHORE]: x: T = None to x: Optional[T] = None (langgenius#24217)

feature: add test containers base tests for tag service (langgenius#24313)

[Test] add unit tests for web_reader_tool.py (langgenius#24309)

Co-authored-by: Yongtao Huang <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

Annotations example (langgenius#24304)

an example of sessionmaker (langgenius#24246)

feat: implement TooltipManager for managing tooltip lifecycle (langgenius#24236)

Co-authored-by: crazywoola <[email protected]>

Flask 3.1.2 upgrade fix by Avoids using current_user in background thread  (langgenius#24290)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

fix: Optimize scrolling experience on plugin page (langgenius#24314) (langgenius#24322)

auto format md files (langgenius#24242)

Feat/chat message image first for agent and advanced_chat APP (langgenius#23796)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

Update knowledge_retrieval_node.py (langgenius#24111)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

example of next(, None) (langgenius#24345)

feat: Add default value support for all workflow start node variable types (langgenius#24129)

Co-authored-by: crazywoola <[email protected]>
Co-authored-by: Copilot <[email protected]>

refactor: simplify repository factory with Django-style import_string (langgenius#24354)

Fix missing database commit in provider update handler (langgenius#24357)

Node search supports model and name search (langgenius#24331)

[Chore/Refactor] except StopIteration -> next( , None)
@lyzno1 lyzno1 mentioned this pull request Aug 25, 2025
HarryReidx pushed a commit to HarryReidx/dify that referenced this pull request Sep 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💪 enhancement New feature or request lgtm This PR has been approved by a maintainer size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Chore/Refactor] Simplify repository factory pattern with Django-style import_string

2 participants