wg-backend-django/dell-env/lib/python3.11/site-packages/plotly/validator_cache.py
2023-10-30 14:40:43 +07:00

35 lines
1.2 KiB
Python

import importlib
from _plotly_utils.basevalidators import LiteralValidator
class ValidatorCache(object):
_cache = {}
@staticmethod
def get_validator(parent_path, prop_name):
key = (parent_path, prop_name)
if key not in ValidatorCache._cache:
if "." not in parent_path and prop_name == "type":
# Special case for .type property of traces
validator = LiteralValidator("type", parent_path, parent_path)
else:
lookup_name = None
if parent_path == "layout":
from .graph_objects import Layout
match = Layout._subplotid_prop_re.match(prop_name)
if match:
lookup_name = match.group(1)
lookup_name = lookup_name or prop_name
class_name = lookup_name.title() + "Validator"
validator = getattr(
importlib.import_module("plotly.validators." + parent_path),
class_name,
)(plotly_name=prop_name)
ValidatorCache._cache[key] = validator
return ValidatorCache._cache[key]