HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/Users/fred/anaconda3/Lib/site-packages/plotly/validator_cache.py
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]