From 21b62cf8d68090511f5926e297932c501ea45883 Mon Sep 17 00:00:00 2001 From: Frank Hoffmann <15r10nk-git@polarbit.de> Date: Wed, 12 Feb 2025 00:15:39 +0100 Subject: [PATCH] refactor: removed _external.storage --- src/inline_snapshot/_external.py | 14 ++++++-------- src/inline_snapshot/_find_external.py | 3 +-- src/inline_snapshot/pytest_plugin.py | 10 +++++----- tests/conftest.py | 4 ++-- tests/utils.py | 7 ++++--- 5 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/inline_snapshot/_external.py b/src/inline_snapshot/_external.py index 3e51a8e6..856ab5d2 100644 --- a/src/inline_snapshot/_external.py +++ b/src/inline_snapshot/_external.py @@ -6,6 +6,7 @@ from typing import Union from . import _config +from ._global_state import state class HashError(Exception): @@ -70,9 +71,6 @@ def remove(self, name): self._lookup_path(name).unlink() -storage: Optional[DiscStorage] = None - - class external: def __init__(self, name: str): """External objects are used as a representation for outsourced data. @@ -130,8 +128,8 @@ def __eq__(self, other): return True def _load_value(self): - assert storage is not None - return storage.read(self._path) + assert state().storage is not None + return state().storage.read(self._path) def outsource(data: Union[str, bytes], *, suffix: Optional[str] = None) -> external: @@ -170,12 +168,12 @@ def outsource(data: Union[str, bytes], *, suffix: Optional[str] = None) -> exter m.update(data) hash = m.hexdigest() - assert storage is not None + assert state().storage is not None name = hash + suffix - if not storage.lookup_all(name): + if not state().storage.lookup_all(name): path = hash + "-new" + suffix - storage.save(path, data) + state().storage.save(path, data) return external(name) diff --git a/src/inline_snapshot/_find_external.py b/src/inline_snapshot/_find_external.py index fd66fd39..d424187c 100644 --- a/src/inline_snapshot/_find_external.py +++ b/src/inline_snapshot/_find_external.py @@ -4,7 +4,6 @@ from executing import Source -from . import _external from ._global_state import state from ._rewrite_code import ChangeRecorder from ._rewrite_code import end_of @@ -54,7 +53,7 @@ def used_externals() -> Set[str]: def unused_externals() -> Set[str]: - storage = _external.storage + storage = state().storage assert storage is not None unused_externals = storage.list() for name in used_externals(): diff --git a/src/inline_snapshot/pytest_plugin.py b/src/inline_snapshot/pytest_plugin.py index f9fb3e81..977e5a4a 100644 --- a/src/inline_snapshot/pytest_plugin.py +++ b/src/inline_snapshot/pytest_plugin.py @@ -134,7 +134,7 @@ def pytest_configure(config): _config.config.storage_dir or config.rootpath / ".inline-snapshot" ) / "external" - _external.storage = _external.DiscStorage(external_storage) + state().storage = _external.DiscStorage(external_storage) if flags - {"short-report", "disable"} and not is_pytest_compatible(): @@ -146,7 +146,7 @@ def pytest_configure(config): pydantic_fix() - _external.storage.prune_new_files() + state().storage.prune_new_files() @pytest.fixture(autouse=True) @@ -397,7 +397,7 @@ def report(flag, message, message_n): ) for external_name in used: - _external.storage.persist(external_name) + state().storage.persist(external_name) cr.fix_all() @@ -405,8 +405,8 @@ def report(flag, message, message_n): if unused_externals and state().update_flags.trim: for name in unused_externals: - assert _external.storage - _external.storage.remove(name) + assert state().storage + state().storage.remove(name) terminalreporter.write( f"removed {len(unused_externals)} unused externals\n" ) diff --git a/tests/conftest.py b/tests/conftest.py index 162ae610..e0b982c6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -104,8 +104,8 @@ def run(self, *flags_arg: Category): with snapshot_env() as state: recorder = ChangeRecorder() state.update_flags = flags - inline_snapshot._external.storage = ( - inline_snapshot._external.DiscStorage(tmp_path / ".storage") + state.storage = inline_snapshot._external.DiscStorage( + tmp_path / ".storage" ) error = False diff --git a/tests/utils.py b/tests/utils.py index 18cf1217..8af41358 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -5,6 +5,7 @@ import inline_snapshot._config as _config import inline_snapshot._external as external +from inline_snapshot._global_state import state from inline_snapshot._rewrite_code import ChangeRecorder from inline_snapshot.testing._example import snapshot_env @@ -31,10 +32,10 @@ def apply_changes(): @contextmanager def useStorage(storage): - old_storage = external.storage - external.storage = storage + old_storage = state().storage + state().storage = storage yield - external.storage = old_storage + state().storage = old_storage @pytest.fixture()