From b4f42242c9f8d3e0236ed5ebf4e225e094f22cf0 Mon Sep 17 00:00:00 2001 From: skshetry <18718008+skshetry@users.noreply.github.com> Date: Thu, 23 Nov 2023 16:00:30 +0545 Subject: [PATCH] tmp_dir: fix object initialization for Python 3.12 (#10105) --- dvc/testing/tmp_dir.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/dvc/testing/tmp_dir.py b/dvc/testing/tmp_dir.py index c7d881af0..4e40385d8 100644 --- a/dvc/testing/tmp_dir.py +++ b/dvc/testing/tmp_dir.py @@ -70,16 +70,20 @@ class TmpDir(pathlib.Path): def __new__(cls, *args, **kwargs): if cls is TmpDir: cls = WindowsTmpDir if os.name == "nt" else PosixTmpDir - # init parameter and `_init` method has been removed in Python 3.10. - kw = {"init": False} if sys.version_info < (3, 10) else {} - self = cls._from_parts(args, **kw) # type: ignore[attr-defined] - if not self._flavour.is_supported: - raise NotImplementedError( - f"cannot instantiate {cls.__name__!r} on your system" - ) - if sys.version_info < (3, 10): - self._init() - return self + + if sys.version_info >= (3, 12): + return object.__new__(cls) + else: # noqa: RET505 + # init parameter and `_init` method has been removed in Python 3.10. + kw = {"init": False} if sys.version_info < (3, 10) else {} + self = cls._from_parts(args, **kw) # type: ignore[attr-defined] + if not self._flavour.is_supported: + raise NotImplementedError( + f"cannot instantiate {cls.__name__!r} on your system" + ) + if sys.version_info < (3, 10): + self._init() + return self def init(self, *, scm=False, dvc=False, subdir=False): from dvc.repo import Repo