From 29dd81159cd7233cad173980d867f47823f25d2e Mon Sep 17 00:00:00 2001 From: Walter Oggioni Date: Mon, 24 Jun 2024 20:35:38 +0800 Subject: [PATCH] added tmpdir --- src/pwo/__init__.py | 12 ++++++++++-- src/pwo/private.py | 20 ++++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/pwo/__init__.py b/src/pwo/__init__.py index 8c56357..5c2e471 100644 --- a/src/pwo/__init__.py +++ b/src/pwo/__init__.py @@ -1,4 +1,11 @@ -from .private import format_filesize, async_retry, retry, async_test, ExceptionHandlerOutcome +from .private import ( + format_filesize, + async_retry, + retry, + async_test, + ExceptionHandlerOutcome, + tmpdir +) from .maybe import Maybe __all__ = [ @@ -7,5 +14,6 @@ __all__ = [ 'retry', 'async_test', 'ExceptionHandlerOutcome', - 'Maybe' + 'Maybe', + 'tmpdir' ] diff --git a/src/pwo/private.py b/src/pwo/private.py index 35304d3..2a18fdd 100644 --- a/src/pwo/private.py +++ b/src/pwo/private.py @@ -1,4 +1,6 @@ import math +from tempfile import TemporaryDirectory +from pathlib import Path from enum import Enum, auto from typing import Callable from time import sleep @@ -17,7 +19,6 @@ def format_filesize(size: int) -> str: return '%.2f ' % (size / math.pow(1024, counter)) + _size_uoms[counter] - class ExceptionHandlerOutcome(Enum): THROW = auto() CONTINUE = auto() @@ -75,8 +76,23 @@ def async_retry( return wrapper + def async_test(coro): def wrapper(*args, **kwargs): with Runner() as runner: runner.run(coro(*args, **kwargs)) - return wrapper \ No newline at end of file + + return wrapper + + +def tmpdir(argument_name='tmpdir'): + def wrapper(fun): + def result(*args, **kwargs): + with TemporaryDirectory() as temp_dir: + fun(*args, **kwargs, **{ + argument_name: Path(temp_dir) + }) + + return result + + return wrapper