def check_option(self, key, subkey, value):
key, subkey = _lower_keys(key, subkey)<EOL>_entry_must_exist(self.gc, key, subkey)<EOL>df = self.gc[(self.gc["<STR_LIT>"] == key) & (self.gc["<STR_LIT>"] == subkey)]<EOL>ev.value_eval(value, df["<STR_LIT:type>"].values[<NUM_LIT:0>])<EOL>if df["<STR_LIT>"].values[<NUM_LIT:0>] is not None:<EOL><INDENT>return value in df["<STR_LIT>"].values[<NUM_LIT:0>]<EOL><DEDENT>return True<EOL>
Evaluate if a given value fits the option.

        If an option has a limited set of available values, check if the
        provided value is amongst them.

        :param str key: First identifier of the option.
        :param str subkey: Second identifier of the option.
        :param value: Value to test (type varies).

        :return: :class:`bool` - does ``value`` belong to the options?

        :raise:
            :NotRegisteredError: If ``key`` or ``subkey`` do not define any
                option.
            :ValueError: If the provided value is not the expected
                type for the option.