def get_color_names_list(self, format_string, matches=None):
        """
        Returns a list of color names in ``format_string``.

        :param format_string: Accepts a format string.
        :param matches: Filter results with a string or a list of strings.

        If ``matches`` is provided then it is used to filter the result
        using fnmatch so the following patterns can be used:

        .. code-block:: none

            * 	    matches everything
            ? 	    matches any single character
            [seq] 	matches any character in seq
            [!seq] 	matches any character not in seq
        """
        if not getattr(self._py3status_module, "thresholds", None):
            return []
        elif not format_string:
            return []

        if format_string not in self._format_color_names:
            names = self._formatter.get_color_names(format_string)
            self._format_color_names[format_string] = names
        else:
            names = self._format_color_names[format_string]

        if not matches:
            return list(names)
        elif isinstance(matches, str):
            matches = [matches]
        # filter matches
        found = set()
        for match in matches:
            for name in names:
                if fnmatch(name, match):
                    found.add(name)
        return list(found)

        Returns a list of color names in ``format_string``.

        :param format_string: Accepts a format string.
        :param matches: Filter results with a string or a list of strings.

        If ``matches`` is provided then it is used to filter the result
        using fnmatch so the following patterns can be used:

        .. code-block:: none

            * 	    matches everything
            ? 	    matches any single character
            [seq] 	matches any character in seq
            [!seq] 	matches any character not in seq
        
py3status/py3.py