Skip to content

Use tempfile context manager in db_uri fixture to avoid polluting tmp_path#19255

Merged
harupy merged 4 commits intomasterfrom
copilot/update-db-uri-fixture
Dec 7, 2025
Merged

Use tempfile context manager in db_uri fixture to avoid polluting tmp_path#19255
harupy merged 4 commits intomasterfrom
copilot/update-db-uri-fixture

Conversation

Copy link
Contributor

Copilot AI commented Dec 6, 2025

Related Issues/PRs

#xxx

What changes are proposed in this pull request?

The db_uri fixture was creating SQLite database files in the tmp_path directory, which could interfere with tests that use tmp_path and expect a clean directory.

Changes:

  • Replaced tmp_path / "mlflow.db" with tempfile.TemporaryDirectory()
  • Used context manager pattern with yield for automatic cleanup
  • Removed tmp_path parameter dependency from the fixture
  • Creates database file inside a temporary directory to avoid Windows permission errors
# Before
@pytest.fixture
def db_uri(tmp_path: Path, cached_db: Path) -> str:
    db_path = tmp_path / "mlflow.db"
    ...
    return f"sqlite:///{db_path}"

# After
@pytest.fixture
def db_uri(cached_db: Path):
    with tempfile.TemporaryDirectory() as tmp_dir:
        db_path = Path(tmp_dir) / "mlflow.db"
        ...
        yield f"sqlite:///{db_path}"

Note: Initially used NamedTemporaryFile, but switched to TemporaryDirectory to fix a Windows PermissionError that occurred when trying to copy data to an open file handle.

How is this PR tested?

  • Existing unit/integration tests
  • New unit/integration tests
  • Manual tests

Verified with existing tests in tests/store/model_registry/, tests/store/tracking/, and tests/artifacts/.

Does this PR require documentation update?

  • No. You can skip the rest of this section.
  • Yes. I've updated:
    • Examples
    • API references
    • Instructions

Release Notes

Is this a user-facing change?

  • No. You can skip the rest of this section.
  • Yes. Give a description of this change to be included in the release notes for MLflow users.

What component(s), interfaces, languages, and integrations does this PR affect?

Components

  • area/tracking: Tracking Service, tracking client APIs, autologging
  • area/models: MLmodel format, model serialization/deserialization, flavors
  • area/model-registry: Model Registry service, APIs, and the fluent client calls for Model Registry
  • area/scoring: MLflow Model server, model deployment tools, Spark UDFs
  • area/evaluation: MLflow model evaluation features, evaluation metrics, and evaluation workflows
  • area/gateway: MLflow AI Gateway client APIs, server, and third-party integrations
  • area/prompts: MLflow prompt engineering features, prompt templates, and prompt management
  • area/tracing: MLflow Tracing features, tracing APIs, and LLM tracing functionality
  • area/projects: MLproject format, project running backends
  • area/uiux: Front-end, user experience, plotting, JavaScript, JavaScript dev server
  • area/build: Build and test infrastructure for MLflow
  • area/docs: MLflow documentation pages

How should the PR be classified in the release notes? Choose one:

  • rn/none - No description will be included. The PR will be mentioned only by the PR number in the "Small Bugfixes and Documentation Updates" section
  • rn/breaking-change - The PR will be mentioned in the "Breaking Changes" section
  • rn/feature - A new user-facing feature worth mentioning in the release notes
  • rn/bug-fix - A user-facing bug fix worth mentioning in the release notes
  • rn/documentation - A user-facing documentation change worth mentioning in the release notes

Should this PR be included in the next patch release?

  • Yes (this PR will be cherry-picked and included in the next patch release)
  • No (this PR will be included in the next minor release)
Original prompt

Update db_uri fixture in tests/conftest.py to create tmp sqlite file using tempfile module (use context manager for auto clean up). tmp_path fixture is used in lots of tests. Creating a file in this directory might interfere with them.

def db_uri(tmp_path: Path, cached_db: Path) -> str:


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

@harupy harupy marked this pull request as ready for review December 6, 2025 14:31
Copilot AI review requested due to automatic review settings December 6, 2025 14:31
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review any files in this pull request.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

…leanup

- Changed from using tmp_path to tempfile.NamedTemporaryFile
- Uses context manager for automatic cleanup
- Avoids polluting tmp_path directory used by other tests
- Simplified code by removing manual cleanup logic

Co-authored-by: harupy <17039389+harupy@users.noreply.github.com>
Copilot AI changed the title [WIP] Update db_uri fixture to use tempfile for SQLite Use tempfile context manager in db_uri fixture to avoid polluting tmp_path Dec 6, 2025
Copilot AI requested a review from harupy December 6, 2025 14:45
@github-actions github-actions bot added area/build Build and test infrastructure for MLflow rn/none List under Small Changes in Changelogs. labels Dec 6, 2025
…ermission error

- Switched from tempfile.NamedTemporaryFile to tempfile.TemporaryDirectory
- Fixes PermissionError on Windows when copying to an open file handle
- Creates db file inside temporary directory instead of using temp file directly
- Automatic cleanup still handled by context manager

Co-authored-by: harupy <17039389+harupy@users.noreply.github.com>
Copilot AI requested a review from harupy December 7, 2025 00:39
…ctory cleanup errors

Signed-off-by: harupy <17039389+harupy@users.noreply.github.com>
@harupy harupy added this pull request to the merge queue Dec 7, 2025
Merged via the queue into master with commit 951d133 Dec 7, 2025
42 checks passed
@harupy harupy deleted the copilot/update-db-uri-fixture branch December 7, 2025 09:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/build Build and test infrastructure for MLflow rn/none List under Small Changes in Changelogs.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants