commit:     3b34d5721862349399841c0657af76b99b770ed4
Author:     Brian Harring <ferringb <AT> gmail <DOT> com>
AuthorDate: Sat Dec 13 17:28:20 2025 +0000
Commit:     Brian Harring <ferringb <AT> gmail <DOT> com>
CommitDate: Sat Dec 13 19:53:41 2025 +0000
URL:        
https://gitweb.gentoo.org/proj/pkgcore/snakeoil.git/commit/?id=3b34d572

chore: mark removal in 0.12.0 for contexts.chdir since contextlib.chdir exists

Signed-off-by: Brian Harring <ferringb <AT> gmail.com>

 src/snakeoil/contexts.py                | 25 ++++++++++---------------
 tests/snakeoil_compression/test_init.py |  3 ++-
 tests/test_contexts.py                  |  5 ++++-
 tests/test_process_spawn.py             |  3 ++-
 4 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/snakeoil/contexts.py b/src/snakeoil/contexts.py
index 394574b..8b348b9 100644
--- a/src/snakeoil/contexts.py
+++ b/src/snakeoil/contexts.py
@@ -1,5 +1,6 @@
 """Various with-statement context utilities."""
 
+import contextlib
 import errno
 import inspect
 import os
@@ -10,9 +11,12 @@ import sys
 import threading
 import traceback
 from contextlib import AbstractContextManager, contextmanager
+from contextlib import chdir as _contextlib_chdir
 from importlib import import_module
 from multiprocessing.connection import Pipe
 
+from snakeoil._internals import deprecated
+
 from .cli.exceptions import UserException
 from .process import namespaces
 from .sequences import predicate_split
@@ -356,21 +360,12 @@ class GitStash(AbstractContextManager):
                 raise UserException(f"git failed applying stash: {error}")
 
 
-@contextmanager
-def chdir(path):
-    """Context manager that changes the current working directory.
-
-    On exiting the context, the current working directory is switched back to
-    its original value.
-
-    :param path: The directory path to change the working directory to.
-    """
-    orig_cwd = os.getcwd()
-    os.chdir(path)
-    try:
-        yield
-    finally:
-        os.chdir(orig_cwd)
+@deprecated(
+    "snakeoil.contexts.chdir is deprecated.  Use contextlib.chdir instead",
+    removal_in=(0, 12, 0),
+)
+def chdir(path: str) -> contextlib.chdir:
+    return _contextlib_chdir(path)
 
 
 @contextmanager

diff --git a/tests/snakeoil_compression/test_init.py 
b/tests/snakeoil_compression/test_init.py
index 9219560..01fce8b 100644
--- a/tests/snakeoil_compression/test_init.py
+++ b/tests/snakeoil_compression/test_init.py
@@ -1,10 +1,11 @@
 import shutil
 import subprocess
 import sys
+from contextlib import chdir
 
 import pytest
+
 from snakeoil.compression import ArComp, ArCompError, _TarBZ2
-from snakeoil.contexts import chdir
 
 from . import hide_binary
 

diff --git a/tests/test_contexts.py b/tests/test_contexts.py
index e08e995..2c539d1 100644
--- a/tests/test_contexts.py
+++ b/tests/test_contexts.py
@@ -4,12 +4,15 @@ import platform
 import random
 import socket
 import sys
+from contextlib import chdir
 
 import pytest
 
-from snakeoil.contexts import Namespace, SplitExec, chdir, syspath
+from snakeoil.contexts import Namespace, SplitExec, syspath
+from snakeoil.deprecation import suppress_deprecations
 
 
+@suppress_deprecations()
 def test_chdir(tmpdir):
     orig_cwd = os.getcwd()
 

diff --git a/tests/test_process_spawn.py b/tests/test_process_spawn.py
index 556b34c..959bc7a 100644
--- a/tests/test_process_spawn.py
+++ b/tests/test_process_spawn.py
@@ -1,9 +1,10 @@
 import os
 import signal
+from contextlib import chdir
 
 import pytest
+
 from snakeoil import process
-from snakeoil.contexts import chdir
 from snakeoil.process import spawn
 
 BASH_BINARY = process.find_binary("bash", fallback="")

Reply via email to