проблема с любым правилом с использованием Цербера - PullRequest
0 голосов
/ 23 марта 2020

Мне нужно проверить поле / ключ с помощью dict и list_of_dicts. Поэтому я использовал правило anyof в Цербере для решения этой проблемы.

Для справки: Python Цербер: проблема с проверкой различных схем с использованием правила 'anyof_schema'

Данные

data1 = {
        "authors": {
            "_anchor": "a",
            "name": "a",
            "link": "a"
            }
        }

data2 = {
        "authors": [
            {
                "_anchor": "a",
                "name": "a",
                "link": "a"
                },
            {
                "_anchor": "a",
                "name": "a",
                "affiliation": "a"
                }
            ]
        }

Код

fields = {"_anchor": {"type": "string"},
                        "name": {"type": "string"},
                        "link1": {"type": "string", "required": True},
                        "affiliation": {"type": "string", "required": False}}
schema = {"authors":{
            "anyof":[
                {"type": "dict",
                    "schema": fields
                    },
                {"type": "list",
                    "schema": {"type": "dict", "schema":fields}

                }
                ]
        }
        }

Проблема: данные1 успешно проверены, если присутствуют все поля, в противном случае возникнет ошибка, Но data2 проверяется успешно, если все поля присутствуют или нет.

Кто-нибудь подскажет, если я что-то здесь упустил?

...