# Path: meta_package_manager/version.py
# ALNUM_EXTRACTOR = re.compile("(\\d+ | [a-z]+)", re.VERBOSE)
# class Token:
# class TokenizedString:
#     def __hash__(self):
#     def str_to_int(string):
#     def __init__(self, value):
#     def __repr__(self):
#     def __str__(self):
#     def __int__(self):
#     def isint(self):
#     def _match_type(self, other):
#     def __eq__(self, other):
#     def __ne__(self, other):
#     def __gt__(self, other):
#     def __lt__(self, other):
#     def __ge__(self, other):
#     def __le__(self, other):
#     def __hash__(self):
#     def __new__(cls, value, *args, **kwargs):
#     def __init__(self, value, separator="-"):
#     def __repr__(self):
#     def __str__(self):
#     def pretty_print(self):
#     def tokenize(cls, string):
#     def __iter__(self):
#     def __eq__(self, other):
#     def __ne__(self, other):
#     def __gt__(self, other):
#     def __lt__(self, other):
#     def __ge__(self, other):
#     def __le__(self, other):


import os
import re
from pathlib import Path
from shutil import which
from textwrap import dedent, indent, shorten
from boltons.cacheutils import cachedproperty
from boltons.iterutils import flatten
from boltons.strutils import strip_ansi
from boltons.typeutils import classproperty
from click_extra.colorize import theme
from click_extra.logging import logger
from click_extra.platform import CURRENT_OS_ID
from click_extra.run import INDENT, PROMPT, run
from .version import parse_version
                version_string = (
                    re.compile(self.version_regex, re.MULTILINE | re.VERBOSE)
                    .search(output)
                    .groupdict()
                ).get("version")
                logger.debug(f"Extracted version: {version_string}")
                return parse_version(version_string)

    @cachedproperty
    def supported(self):
        """Is the package manager supported on that platform?"""
        return CURRENT_OS_ID in self.platforms

    @cachedproperty
    def executable(self):
        """Is the package manager CLI can be executed by the current user?"""
        if not self.cli_path:
            return False
        if not os.access(self.cli_path, os.X_OK):
            logger.debug(f"{self.cli_path} not executable.")
            return False
        return True

    @cachedproperty
    def fresh(self):
        """Does the package manager match the version requirement?"""
        # Version is mandatory.
        if not self.version:
            return False
        if self.requirement:

# Path: meta_package_manager/version.py
# ALNUM_EXTRACTOR = re.compile("(\\d+ | [a-z]+)", re.VERBOSE)
# class Token:
# class TokenizedString:
#     def __hash__(self):
#     def str_to_int(string):
#     def __init__(self, value):
#     def __repr__(self):
#     def __str__(self):
#     def __int__(self):
#     def isint(self):
#     def _match_type(self, other):
#     def __eq__(self, other):
#     def __ne__(self, other):
#     def __gt__(self, other):
#     def __lt__(self, other):
#     def __ge__(self, other):
#     def __le__(self, other):
#     def __hash__(self):
#     def __new__(cls, value, *args, **kwargs):
#     def __init__(self, value, separator="-"):
#     def __repr__(self):
#     def __str__(self):
#     def pretty_print(self):
#     def tokenize(cls, string):
#     def __iter__(self):
#     def __eq__(self, other):
#     def __ne__(self, other):
#     def __gt__(self, other):
#     def __lt__(self, other):
#     def __ge__(self, other):
#     def __le__(self, other):


# Path: meta_package_manager/base.py
import os
import re
from pathlib import Path
from shutil import which
from textwrap import dedent, indent, shorten
from boltons.cacheutils import cachedproperty
from boltons.iterutils import flatten
from boltons.strutils import strip_ansi
from boltons.typeutils import classproperty
from click_extra.colorize import theme
from click_extra.logging import logger
from click_extra.platform import CURRENT_OS_ID
from click_extra.run import INDENT, PROMPT, run
from .version import parse_version

                version_string = (
                    re.compile(self.version_regex, re.MULTILINE | re.VERBOSE)
                    .search(output)
                    .groupdict()
                ).get("version")
                logger.debug(f"Extracted version: {version_string}")
                return parse_version(version_string)

    @cachedproperty
    def supported(self):
        """Is the package manager supported on that platform?"""
        return CURRENT_OS_ID in self.platforms

    @cachedproperty
    def executable(self):
        """Is the package manager CLI can be executed by the current user?"""
        if not self.cli_path:
            return False
        if not os.access(self.cli_path, os.X_OK):
            logger.debug(f"{self.cli_path} not executable.")
            return False
        return True

    @cachedproperty
    def fresh(self):
        """Does the package manager match the version requirement?"""
        # Version is mandatory.
        if not self.version:
            return False
        if self.requirement:

            if self.version < parse_version(self.requirement):