def find_all_python_versions(<EOL>self,<EOL>major=None,  <EOL>minor=None,  <EOL>patch=None,  <EOL>pre=None,  <EOL>dev=None,  <EOL>arch=None,  <EOL>name=None,  <EOL>):<EOL>
sub_finder = operator.methodcaller(<EOL>"<STR_LIT>", major, minor, patch, pre, dev, arch, name<EOL>)<EOL>alternate_sub_finder = None<EOL>if major and not (minor or patch or pre or dev or arch or name):<EOL><INDENT>alternate_sub_finder = operator.methodcaller(<EOL>"<STR_LIT>", None, None, None, None, None, None, major<EOL>)<EOL><DEDENT>if os.name == "<STR_LIT>" and self.windows_finder:<EOL><INDENT>windows_finder_version = sub_finder(self.windows_finder)<EOL>if windows_finder_version:<EOL><INDENT>return windows_finder_version<EOL><DEDENT><DEDENT>values = list(self.get_pythons(sub_finder))<EOL>if not values and alternate_sub_finder is not None:<EOL><INDENT>values = list(self.get_pythons(alternate_sub_finder))<EOL><DEDENT>return values<EOL>
Search for a specific python version on the path. Return all copies

        :param major: Major python version to search for.
        :type major: int
        :param int minor: Minor python version to search for, defaults to None
        :param int patch: Patch python version to search for, defaults to None
        :param bool pre: Search for prereleases (default None) - prioritize releases if None
        :param bool dev: Search for devreleases (default None) - prioritize releases if None
        :param str arch: Architecture to include, e.g. '64bit', defaults to None
        :param str name: The name of a python version, e.g. ``anaconda3-5.3.0``
        :return: A list of :class:`~pythonfinder.models.PathEntry` instances matching the version requested.
        :rtype: List[:class:`~pythonfinder.models.PathEntry`]