Skip to content

fix: avoid reusing singleton field template instances across libraries - #1503

Open
JasonReb0rn wants to merge 1 commit into
TagStudioDev:mainfrom
JasonReb0rn:fix/default-field-template-singleton
Open

JasonReb0rn wants to merge 1 commit into
TagStudioDev:mainfrom
JasonReb0rn:fix/default-field-template-singleton

Conversation

@JasonReb0rn

Copy link
Copy Markdown

Summary

DEFAULT_FIELD_TEMPLATES in constants.py is a tuple of pre-built TextFieldTemplate/DatetimeFieldTemplate instances, reused as-is whenever a library is created (Library.create_library(), MigrationTo200). Once SQLAlchemy flushes those instances to a session, it remembers them as persistent. So any library created after the first one in the same process gets skipped entirely and silently ends up with no default field templates.

Fix: replace the shared tuple with a default_field_templates() function that builds fresh instances each call, and update both calls accordingly.

Mostly invisible in normal single-library app usage, but affects anything creating multiple libraries per process (e.g. the test suite).

Tasks Completed

  • Platforms Tested:
    • Windows x86
    • Windows ARM
    • macOS x86
    • macOS ARM
    • Linux x86
    • Linux ARM
  • Tested For:
    • Basic functionality
    • PyInstaller executable

@CyanVoxel CyanVoxel added TagStudio: Library Relating to the TagStudio library system Status: Blocked This issue or pull request is awaiting the outcome of another issue or pull request Type: Fix A fix for a bug, typo, or other issue Type: Tests Tests or testing related labels Sep 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Status: Blocked This issue or pull request is awaiting the outcome of another issue or pull request TagStudio: Library Relating to the TagStudio library system Type: Fix A fix for a bug, typo, or other issue Type: Tests Tests or testing related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants