meta_package_manager.managers.mise module

class meta_package_manager.managers.mise.Mise[source]

Bases: PackageManager

mise (formerly rtx) installs and switches between versions of developer tools like Node, Python, Ruby and any tool reachable through its plugin backends.

Note

mpm is system-scoped, so this wrapper reports every tool version present on disk regardless of which mise.toml (global or project) requested it. Project-pinned versions are not surfaced as a separate scope.

Note

Backend-prefixed tool IDs (pipx:ruff, cargo:ubi-cli, asdf:mise-plugins/mise-poetry) round-trip as-is. The colon is part of the package ID; mpm install pipx:ruff resolves the backend through mise itself.

Caution

mise outdated --json only reports tools tracked in a mise.toml (global or project). A tool installed bare with mise install <tool> and never pinned with mise use will not appear in the outdated list, so mpm outdated --mise understates the upgrade surface for those entries.

Initialize cli_errors list.

name: str = 'mise'

Return package manager’s common name.

Default value is based on class name.

homepage_url: str | None = 'https://mise.jdx.dev'

Home page of the project, only used in documentation for reference.

platforms: frozenset[Platform] | Group | Platform | Iterable[Platform | Group] = frozenset({Platform(id='aix', name='IBM AIX'), Platform(id='almalinux', name='AlmaLinux'), Platform(id='alpine', name='Alpine Linux'), Platform(id='altlinux', name='ALT Linux'), Platform(id='amzn', name='Amazon Linux'), Platform(id='android', name='Android'), Platform(id='arch', name='Arch Linux'), Platform(id='buildroot', name='Buildroot'), Platform(id='cachyos', name='CachyOS'), Platform(id='centos', name='CentOS'), Platform(id='chromeos', name='ChromeOS'), Platform(id='clearlinux', name='Clear Linux OS'), Platform(id='cloudlinux', name='CloudLinux OS'), Platform(id='cygwin', name='Cygwin'), Platform(id='debian', name='Debian'), Platform(id='dragonfly_bsd', name='DragonFly BSD'), Platform(id='endeavouros', name='EndeavourOS'), Platform(id='exherbo', name='Exherbo Linux'), Platform(id='fedora', name='Fedora'), Platform(id='freebsd', name='FreeBSD'), Platform(id='generic_linux', name='Generic Linux'), Platform(id='gentoo', name='Gentoo Linux'), Platform(id='guix', name='Guix System'), Platform(id='haiku', name='Haiku'), Platform(id='hurd', name='GNU/Hurd'), Platform(id='ibm_powerkvm', name='IBM PowerKVM'), Platform(id='illumos', name='illumos'), Platform(id='kali', name='Kali Linux'), Platform(id='kvmibm', name='KVM for IBM z Systems'), Platform(id='linuxmint', name='Linux Mint'), Platform(id='macos', name='macOS'), Platform(id='mageia', name='Mageia'), Platform(id='mandriva', name='Mandriva Linux'), Platform(id='manjaro', name='Manjaro Linux'), Platform(id='midnightbsd', name='MidnightBSD'), Platform(id='netbsd', name='NetBSD'), Platform(id='nixos', name='NixOS'), Platform(id='nobara', name='Nobara'), Platform(id='openbsd', name='OpenBSD'), Platform(id='opensuse', name='openSUSE'), Platform(id='openwrt', name='OpenWrt'), Platform(id='oracle', name='Oracle Linux'), Platform(id='os400', name='IBM i'), Platform(id='parallels', name='Parallels'), Platform(id='pidora', name='Pidora'), Platform(id='pikaos', name='PikaOS'), Platform(id='raspbian', name='Raspbian'), Platform(id='rhel', name='RedHat Enterprise Linux'), Platform(id='rocky', name='Rocky Linux'), Platform(id='scientific', name='Scientific Linux'), Platform(id='slackware', name='Slackware'), Platform(id='sles', name='SUSE Linux Enterprise Server'), Platform(id='slitaz', name='SliTaz GNU/Linux'), Platform(id='solaris', name='Solaris'), Platform(id='sourcemage', name='Source Mage GNU/Linux'), Platform(id='sunos', name='SunOS'), Platform(id='tuxedo', name='Tuxedo OS'), Platform(id='ubuntu', name='Ubuntu'), Platform(id='ultramarine', name='Ultramarine'), Platform(id='void', name='Void Linux'), Platform(id='windows', name='Windows'), Platform(id='wsl1', name='Windows Subsystem for Linux v1'), Platform(id='wsl2', name='Windows Subsystem for Linux v2'), Platform(id='xenserver', name='XenServer')})

List of platforms supported by the manager.

Allows for a mishmash of platforms and groups of platforms. Will be normalized into a frozenset of Platform instances at instantiation.

requirement: str | None = '>=2025.5.10'

mise search shipped in 2025.5.10, the binding floor for the feature set this wrapper depends on. Earlier releases also miss the outdated --json fix from 2025.2.8 that emits valid JSON when no tool is outdated.

version_regexes: tuple[str, ...] = ('^(?P<version>\\d+\\.\\d+\\.\\d+)',)

mise uses CalVer (YYYY.M.P), not SemVer.

$ mise --version
2026.6.3 macos-arm64 (2026-06-13)
property installed: Iterator[Package]

Fetch installed packages.

Emits one meta_package_manager.package.Package per (tool, installed_version) pair, so a tool installed at multiple versions yields multiple entries sharing the same ID.

$ mise ls --installed --json
{
  "node": [
    {
      "version": "20.10.0",
      "install_path": "~/.local/share/mise/installs/node/20.10.0",
      "source": {"type": "mise.toml",
                 "path": "~/.config/mise/config.toml"}
    }
  ],
  "pipx:ruff": [
    {
      "version": "0.6.9",
      "install_path": "~/.local/share/mise/installs/pipx-ruff/0.6.9"
    }
  ]
}
property outdated: Iterator[Package]

Fetch outdated packages.

$ mise outdated --json
{
  "node": {
    "requested": "20",
    "current": "20.0.0",
    "latest": "20.10.0"
  }
}
search(query, extended, exact)[source]

Fetch matching packages.

mise search returns a two-column Tool  Description table. --match-type contains keeps the candidate set wide; the framework’s meta_package_manager.manager.PackageManager.refiltered_search() narrows it down to honor extended and exact flags.

$ mise search --no-header --match-type contains node
node                Node.js
node-build          Compile and install Node.js
nodejs              alias for node
Return type:

Iterator[Package]

install(package_id, version=None)[source]

Install one package.

mise install <tool> resolves to the latest version compatible with the active config; mise install <tool>@<version> pins it explicitly. Neither variant writes to mise.toml: the dedicated mise use command is the config-mutating verb and is deliberately avoided here.

$ mise install node@20
Return type:

str

upgrade_all_cli()[source]

Generates the CLI to upgrade all packages.

$ mise upgrade
Return type:

tuple[str, ...]

upgrade_one_cli(package_id, version=None)[source]

Generates the CLI to upgrade one package.

$ mise upgrade node
Return type:

tuple[str, ...]

remove(package_id)[source]

Remove one package.

mise uninstall <tool> errors when more than one version of the tool is installed. --all removes every installed version unconditionally, which matches mpm’s “remove this package” contract.

$ mise uninstall --all node
Return type:

str

sync()[source]

Refresh plugin metadata.

mise resolves tool listings and version catalogues through its plugins, so updating the plugins is the closest equivalent to the package-list refresh other managers perform during sync.

$ mise plugins update
Return type:

None

cleanup_cache()[source]

Clear mise’s download and metadata caches.

$ mise cache clear
Return type:

None

cli_names: tuple[str, ...] = ('mise',)

List of CLI names the package manager is known as.

This list of recognized CLI names is ordered by priority. That way we can influence the search of the right binary.

..hint::

This was helpful in the case of the Python transition from 2.x to 3.x, where multiple versions of the same executable were named python or python3.

By default, this property’s value is derived from the manager’s ID (see the MetaPackageManager.__init__ method above).

id: str = 'mise'

Package manager’s ID.

Derived by defaults from the lower-cased class name in which underscores _ are replaced by dashes -.

This ID must be unique among all package manager definitions and lower-case, as they’re used as feature flags for the mpm CLI.

virtual: bool = False

Should we expose the package manager to the user?

Virtual package manager are just skeleton classes used to factorize code among managers of the same family.

doctor_cli()[source]

Generates the CLI running the native self-diagnosis.

$ mise doctor
Return type:

tuple[str, ...]