From 3943b0eb57bd46ab50901548f3100bf7906c17a2 Mon Sep 17 00:00:00 2001 From: Alexander Schepanovski Date: Wed, 13 Nov 2019 18:21:26 +0100 Subject: [PATCH] perf: a small stage validation optimization --- dvc/stage.py | 2 +- dvc/utils/__init__.py | 10 ---------- dvc/utils/compat.py | 12 ++++++++++++ 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/dvc/stage.py b/dvc/stage.py index d408019dc9..45c7ddf7a8 100644 --- a/dvc/stage.py +++ b/dvc/stage.py @@ -359,7 +359,7 @@ def update(self): @staticmethod def validate(d, fname=None): - from dvc.utils import convert_to_unicode + from dvc.utils.compat import convert_to_unicode try: Schema(Stage.SCHEMA).validate(convert_to_unicode(d)) diff --git a/dvc/utils/__init__.py b/dvc/utils/__init__.py index 864c9e5f56..dc6e394a50 100644 --- a/dvc/utils/__init__.py +++ b/dvc/utils/__init__.py @@ -292,16 +292,6 @@ def fix_env(env=None): return env -def convert_to_unicode(data): - if isinstance(data, builtin_str): - return str(data) - if isinstance(data, dict): - return dict(map(convert_to_unicode, data.items())) - if isinstance(data, (list, tuple)): - return type(data)(map(convert_to_unicode, data)) - return data - - def tmp_fname(fname): """ Temporary name for a partial download """ return fspath(fname) + "." + str(uuid()) + ".tmp" diff --git a/dvc/utils/compat.py b/dvc/utils/compat.py index 7d66dd090c..c34d800d88 100644 --- a/dvc/utils/compat.py +++ b/dvc/utils/compat.py @@ -143,6 +143,15 @@ def __enter__(self): def __exit__(self, *args): self.close() + def convert_to_unicode(data): + if isinstance(data, builtin_str): + return str(data) + if isinstance(data, dict): + return dict(map(convert_to_unicode, data.items())) + if isinstance(data, (list, tuple)): + return type(data)(map(convert_to_unicode, data)) + return data + elif is_py3: import pathlib # noqa: F401 @@ -170,6 +179,9 @@ def __exit__(self, *args): range = range # noqa: F821 FileNotFoundError = FileNotFoundError + def convert_to_unicode(data): + return data + # Backport os.fspath() from Python 3.6 try: