From 81d2b4dfc5ff50fda8b8084c7628583135edc2c9 Mon Sep 17 00:00:00 2001 From: Alexander Kreft <akreft@trineo.org> Date: Thu, 16 Sep 2021 11:47:49 +0200 Subject: [PATCH] DEP: deprecate yamlapi --- CHANGELOG.md | 8 ++++ src/caosdb/yamlapi.py | 38 +++++++++++++++-- unittests/test_yamlapi.py | 88 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 130 insertions(+), 4 deletions(-) create mode 100644 unittests/test_yamlapi.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 1dd84c29..16997415 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Deprecated ### * `id_query(ids)` in apiutils +* The whole yamlapi with the following functions: + * `append_sublist` + * `kv_to_xml` + * `dict_to_xml` + * `yaml_to_xml` + * `process` + * `yaml_file_to_xml` + * `insert_yaml_file` ### Removed ### diff --git a/src/caosdb/yamlapi.py b/src/caosdb/yamlapi.py index 9a69a527..6b99b742 100644 --- a/src/caosdb/yamlapi.py +++ b/src/caosdb/yamlapi.py @@ -22,7 +22,11 @@ # ** end header # -"""YAML interface for the database (caosdb)""" +""" YAML interface for the database (caosdb) """ +""" !!! Deprecated !!! """ + + + import yaml from lxml import etree @@ -31,9 +35,12 @@ import re import caosdb import caosdb.common.utils as utils from caosdb.connection.connection import get_connection - - +import warnings def append_sublist(v, newel, def_entity_type): + warnings.warn(""" + This function is deprecated and will be removed with the next release. + Please use caosdb-advanced-user-tools/models/data_model.py for a + similar functionality.""", DeprecationWarning) if v is None: return for i in v: @@ -46,6 +53,10 @@ def append_sublist(v, newel, def_entity_type): def kv_to_xml(k, v): + warnings.warn(""" + This function is deprecated and will be removed with the next release. + Please use caosdb-advanced-user-tools/models/data_model.py for a + similar functionality.""", DeprecationWarning) newel = Element(k) # code.interact(local=locals()) if isinstance(v, list): # Top level loop @@ -69,10 +80,18 @@ def dict_to_xml(d): d: The dictionary (possibly loaded from yaml) to convert to caosdb-xml. """ + warnings.warn(""" + This function is deprecated and will be removed with the next release. + Please use caosdb-advanced-user-tools/models/data_model.py for a + similar functionality.""", DeprecationWarning) return kv_to_xml("Entities", d) def yaml_to_xml(yamlstr): + warnings.warn(""" + This function is deprecated and will be removed with the next release. + Please use caosdb-advanced-user-tools/models/data_model.py for a + similar functionality.""", DeprecationWarning) """Load a yaml document from yamlstr and converts it to XML. Parameters @@ -86,6 +105,10 @@ def yaml_to_xml(yamlstr): def process(text): """Do some replacements on the original file to obtain valid yaml.""" + warnings.warn(""" + This function is deprecated and will be removed with the next release. + Please use caosdb-advanced-user-tools/models/data_model.py for a + similar functionality.""", DeprecationWarning) processed = re.sub( "^(\\s*)-\\s*\\{?(.*)\\}?\\s*$", "\\1- {\\2}", @@ -98,6 +121,10 @@ def process(text): def yaml_file_to_xml(yamlfilename): + warnings.warn(""" + This function is deprecated and will be removed with the next release. + Please use caosdb-advanced-user-tools/models/data_model.py for a + similar functionality.""", DeprecationWarning) with open(yamlfilename, "r") as f: return yaml_to_xml(process(f.read())) @@ -108,7 +135,10 @@ def insert_yaml_file(yamlfilename, simulate=False): Set 'simulate' to True if you don't actually want to insert the xml, but only receive what would be sent. """ - con = get_connection() + warnings.warn(""" + This function is deprecated and will be removed with the next release. + Please use caosdb-advanced-user-tools/models/data_model.py for a + similar functionality.""", DeprecationWarning) prs = etree.XMLParser(remove_blank_text=True) sent_xml = etree.tostring( etree.fromstring( diff --git a/unittests/test_yamlapi.py b/unittests/test_yamlapi.py new file mode 100644 index 00000000..4af8a53b --- /dev/null +++ b/unittests/test_yamlapi.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +# +# ** header v3.0 +# This file is a part of the CaosDB Project. +# +# Copyright (C) 2021 IndiScale GmbH <info@indiscale.com> +# Copyright (C) 2021 Alexander Kreft <akreft@trineo.org> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# ** end header +# + +import os +import warnings +import tempfile +from caosdb.yamlapi import (append_sublist, kv_to_xml, + dict_to_xml, yaml_to_xml, + process, yaml_file_to_xml) + +with warnings.catch_warnings(record=True) as w: + # Cause all warnings to always be triggered. + warnings.simplefilter("always") + + append_sublist(None, None, None) + + assert issubclass(w[-1].category, DeprecationWarning) + assert "This function is deprecated" in str(w[-1].message) + +with warnings.catch_warnings(record=True) as w: + # Cause all warnings to always be triggered. + warnings.simplefilter("always") + + kv_to_xml("None", "None") + assert len(w) == 1 + assert issubclass(w[-1].category, DeprecationWarning) + assert "This function is deprecated" in str(w[-1].message) + +with warnings.catch_warnings(record=True) as w: + # Cause all warnings to always be triggered. + warnings.simplefilter("always") + + dict_to_xml(None) + + assert issubclass(w[-1].category, DeprecationWarning) + assert "This function is deprecated" in str(w[-1].message) + +with warnings.catch_warnings(record=True) as w: + # Cause all warnings to always be triggered. + warnings.simplefilter("always") + + yaml_to_xml("None") + + assert issubclass(w[-1].category, DeprecationWarning) + assert "This function is deprecated" in str(w[-1].message) + +with warnings.catch_warnings(record=True) as w: + # Cause all warnings to always be triggered. + warnings.simplefilter("always") + + process("None") + + assert issubclass(w[-1].category, DeprecationWarning) + assert "This function is deprecated" in str(w[-1].message) + +with warnings.catch_warnings(record=True) as w: + # Cause all warnings to always be triggered. + warnings.simplefilter("always") + + with tempfile.TemporaryDirectory() as tmpdirname: + tmpfile = os.path.join(tmpdirname, 'yamlfile') + with open(tmpfile, 'w') as tf: + tf.write("") + yaml_file_to_xml(tmpfile) + + assert issubclass(w[-1].category, DeprecationWarning) + assert "This function is deprecated" in str(w[-1].message) -- GitLab