diff --git a/.zsh/zfunc/_conda b/.zsh/zfunc/_conda new file mode 100644 index 0000000..05bbaa7 --- /dev/null +++ b/.zsh/zfunc/_conda @@ -0,0 +1,734 @@ +#compdef conda mamba micromamba +#description:conda package manager +# +# ZSH Completion for conda (http://conda.pydata.org/) +# +# Author: Valentin Haenel (https://github.com/esc/) +# Licence: WTFPL (http://sam.zoy.org/wtfpl/) +# Version: 0.11-dev +# Homepage: https://github.com/conda-incubator/conda-zsh-completion +# Demo: https://asciinema.org/a/16516 +# +# This completion depends on Python for a json parser, sorry. Unfortunately +# there is no such thing in zsh (yet). +# +# To use this completion, install it somewhere on your hard drive: +# +# $ git clone https://github.com/esc/conda-zsh-completion +# +# And then add it to your $fpath in ~/.zshrc before you call compinit: +# +# fpath+=/path/to/where/you/installed/conda-zsh-completion +# compinit +# +# If you're using oh-my-zsh or Prezto, they will call compinit for you, so +# just add it to your $fpath before calling the OMZ or Prezto initialization +# functions. For example: +# +# git clone https://github.com/esc/conda-zsh-completion ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/conda-zsh-completion +# +# And add lines in `.zshrc` +# plugins=(… conda-zsh-completion) +# autoload -U compinit && compinit +# +# If you use oh-my-zsh, you might have to move the "autoload" line to after you sourced +# oh-my-zsh.sh. +# +# To activate the completion cache for packages, add the following to your +# '.zshrc': +# +# zstyle ':completion::complete:*' use-cache 1 +# +# To display subcommand completion in groups, please add the following to your +# '.zshrc': +# +# zstyle ":conda_zsh_completion:*" use-groups true +# +# To display unnamed environments and prefixes of environments, add the following +# to your '.zshrc': +# +# zstyle ":conda_zsh_completion:*" show-unnamed true +# +# To display environments autocompletion sorted in creation order add the following +# to your '.zshrc': +# +# zstyle ":conda_zsh_completion:*" sort-envs-by-time true +# +# The completion will display both global environments (envs located in conda_dir/envs and base env) +# and local environments (located in ~/.conda/envs). +# If enables sort-envs-by-time, it will display local environments first. +# To display global environments first, add the following to your '.zshrc': +# +# zstyle ":conda_zsh_completion:*" show-global-envs-first true +# +# If not enables sort-envs-by-time, then all environments will be sorted by alphabetical order, +# and this option is useless. +# +# To forcefully clean the completion cache, look in '~/.zcompcache' and remove +# file starting with 'conda_'. And/or do 'rm ~/.zcompdump*'. +# +# When developing, you can use the following to reload the completion after +# having modified it: +# +# $ unfunction _conda && autoload -U _conda +# +# Please report any issues at: +# https://github.com/esc/conda-zsh-completion/issues +# +# CHANGELOG +# --------- +# +# * v0.10 +# +# * Search environments in custom environments paths, thanks to Thomas G. (coldfix). +# * Naive mamba support, thanks to olegtarasov +# * Remove path prefix from environments in default location, thanks to 3mb3dw0rk5 +# * Sort environments to be completed by creation time, thanks to m-novikov +# * Check for environment directory before accessing, thanks to huyz-git +# +# * v0.9 +# +# * Improved the completion speed for completing environments, thanks to +# Niels Mündler. +# * Various minor improvements and documentation upgrades +# +# * v0.8 +# +# * Updated installation instructions and added a license file, thanks to +# Andrew Janke +# +# * v0.7 +# +# * Fix alignment during menu-completion +# +# * v0.6 +# +# * conda activate and conda deactivate can now be completed, thanks to +# Taylor Kang Beck +# +# * v0.5 +# +# * conda-env can now be completed +# * conda-build can now be completed +# +# * v0.4 +# +# * conda info can complete available packages +# * conda install and create have rudimentary package version completion +# * remove caching for local package list, it's fast enough +# * conda remove and update are aware of -n or similar and complete only +# packages in the given environment +# * list of packages excludes those installed with pip +# +# * v0.3 +# +# * overhaul of the completion for config +# +# * complete only existing keys +# * complete only existing values +# * differentiate between list and boolean config +# * reader and writer options mutually exclusive +# * complete multiple keys for --get +# +# * -n,--name and -p,--prefix are now mutually exclusive +# +# * v0.2 +# +# * completion cache for packages +# * complete all channels defined in .condarc +# +# * v0.1 +# +# * inital release +# +# TODO +# ---- +# +# * Subcommand grouping is still alpha. +# * Example of activating cache only for conda completion +# * Make cache policy configurable +# * Completion for version numbers is rudimentary: +# only 'install' can complete them and only for a single '=' sign +# * Configuration for external commands: only build and env supported +# * Properly handle package specs on the command line +# * Don't continue to complete options once -- is given +# * None of the commands are aware of channels + +local state line context +local -A opt_args + +__conda_envs(){ + local -a envs unnamed sort globalfirst localenvs globalenvs + local -a ls_opts=("-1") + local -a describe_opts + local localenvspath + # only parse environments.txt (including unnamed envs) if asked by the user + zstyle -s ":conda_zsh_completion:*" show-unnamed unnamed + zstyle -s ":conda_zsh_completion:*" sort-envs-by-time sort + zstyle -s ":conda_zsh_completion:*" show-global-envs-first globalfirst + if test -n "$sort"; then + ls_opts+=("-t") + describe_opts+=("-V") + fi + + # global envs (if exists) and base env. + globalenvs=($([[ -d "${${CONDA_EXE}%bin/conda}/envs" ]] && ls $ls_opts ${${CONDA_EXE}%bin/conda}/envs)) + globalenvs+=("base") + + # local envs (if exists). + if [[ -n "$CONDA_ENVS_PATH" ]]; then + localenvspath="$CONDA_ENVS_PATH" + elif [[ -n "$CONDA_ENVS_DIRS" ]]; then + localenvspath="$CONDA_ENVS_DIRS" + else + localenvspath="${HOME:?}/.conda/envs" + fi + localenvs=($([[ -d "$localenvspath" ]] && ls $ls_opts "$localenvspath")) + + if test -n "$globalfirst"; then + envs=($globalenvs $localenvs) + else + envs=($localenvs $globalenvs) + fi + + # unmaned envs (if show-unammed). + if test -n "$unnamed"; then + envs+=($( (test -n "$unnamed" && cat ${HOME:?}/.conda/environments.txt) | cut -f1 -d' ' | sed -e "s|^$localenvspath/||")) + fi + + _describe $describe_opts -t envs 'conda environments' envs +} + +__conda_packages_installed(){ + local -a installed_packages option environment additional_message + # check for command line overrides + [[ -n "$1" ]] && option="$1" + [[ -n "$2" ]] && environment="$2" + installed_packages=($( conda list --no-pip $option $environment | sed 1,2d | cut -f1 -d' ' )) + [[ -n $option ]] && [[ -n $environment ]] && additional_message=" in environment: '$environment'" + _describe -t installed_packages "installed packages$additional_message" installed_packages +} + +__conda_package_available(){ + zstyle ":completion:${curcontext}:" cache-policy __conda_caching_policy + local -a available_packages + if _cache_invalid conda_available_packages || ! _retrieve_cache conda_available_packages ; then + available_packages=($(conda search --use-index-cache --json | + python -c " +import json, sys +parsed = json.load(sys.stdin) +for k in parsed.keys(): + print(k) + ")) + _store_cache conda_available_packages available_packages + fi + print -l $available_packages + +} + +__describe_conda_package_available(){ + local -a available_packages + available_packages=($( __conda_package_available)) + _describe -t available_packages 'available packages' available_packages +} + +__conda_existing_config_keys(){ + local -a config_keys + config_keys=($(conda config --json --get | + python -c " +import json, sys +keys = json.load(sys.stdin)['get'].keys() +for k in keys: + print(k) + ")) + print -l $config_keys +} + +__conda_describe_existing_config_keys(){ + local -a config_keys + config_keys=($( __conda_existing_config_keys )) + if [ "${#config_keys}" == 0 ] ; then + _message "no keys found!" + else + _describe -t config_keys 'existing configuration keys' config_keys + fi +} + +__conda_describe_existing_list_config_keys(){ + local -a config_keys existing_list_config_keys + config_keys=($( __conda_existing_config_keys )) + existing_list_config_keys=() + for k in $config_keys; do + if (( ${__conda_list_config_keys[(I)$k]} )) ; then + existing_list_config_keys+=$k + fi + done + if [ "${#existing_list_config_keys}" == 0 ] ; then + _message "no keys found!" + else + _describe -t existing_list_config_keys 'existing list configuration keys' existing_list_config_keys + fi +} + +__conda_existing_config_values(){ + local -a config_values search_term + search_term="$1" + config_values=($(conda config --json --get "$search_term" 2> /dev/null | + python -c " +import json, sys +try: + values = json.load(sys.stdin)['get']['$search_term'] + for v in values: + print(v) +except KeyError: + pass +except ValueError: + pass + ")) + print -l $config_values +} + +__conda_describe_existing_config_values(){ + local -a config_values search_term + search_term="$1" + config_values=($( __conda_existing_config_values $search_term )) + if [ "${#config_values}" == 0 ] ; then + _message "no values found for '$search_term'!" + else + _describe -t config_values 'configuration values' config_values + fi +} + +__conda_describe_boolean_config_values(){ + local -a config_values + config_values=(True False) + _describe -t config_values 'boolean configuration values' config_values +} + +__conda_channels(){ + local -a channels + channels=($( __conda_existing_config_values "channels" )) + channels+=(system) + _describe -t channels 'conda channels' channels +} + +local -a __conda_boolean_config_keys __conda_list_config_keys __conda_config_keys + +__conda_boolean_config_keys=( + 'add_binstar_token' + 'always_yes' + 'allow_softlinks' + 'changeps1' + 'use_pip' + 'offline' + 'binstar_upload' + 'binstar_personal' + 'show_channel_urls' + 'allow_other_channels' + 'ssl_verify' + ) + +__conda_list_config_keys=( + 'channels' + 'disallow' + 'create_default_packages' + 'track_features' + 'envs_dirs' + ) + +__conda_config_keys=($__conda_boolean_config_keys $__conda_list_config_keys) + +__conda_describe_boolean_config_keys(){ + _describe -t __conda_boolean_config_keys 'boolean keys' __conda_boolean_config_keys +} + +__conda_describe_list_config_keys(){ + _describe -t __conda_list_config_keys 'list keys' __conda_list_config_keys +} + +__conda_describe_config_keys(){ + _describe -t __conda_config_keys 'conda configuration keys' __conda_config_keys +} + +#__conda_package_specs=('<' '>' '<=' '>=' '==' '!=') +__conda_package_specs=('=') + +__conda_describe_package_specs(){ + _describe -t __conda_package_specs 'conda package specs' __conda_package_specs +} + +__conda_describe_package_version(){ + local -a current_package versions + current_package="$1" + versions=($( conda search --json --use-index-cache $current_package | python -c " +import json,sys +try: + versions = set((e['version'] for e in json.load(sys.stdin)['$current_package'])) + for v in versions: + print(v) +except KeyError: + pass + ")) + _describe -t versions "$current_package version" versions +} + +__conda_commands(){ + local -a package maint environment help config special tmp + package=( + search:'Search for packages and display their information.' + install:'Install a list of packages into a specified conda environment.' + ) + maint=( + update:'Update conda packages.' + clean:'Remove unused packages and caches.' + ) + environment=( + info:'Display information about current conda install.' + create:'Create a new conda environment from a list of specified packages.' + list:'List linked packages in a conda environment.' + remove:'Remove a list of packages from a specified conda environment.' + uninstall:'Alias for conda remove' + activate:'Activate an environment; alias for source activate' + deactivate:'Deactivate an environment; alias for source deactivate' + ) + help=( + help:'Displays a list of available conda commands and their help strings.' + ) + config=( + config:'Modify configuration values in .condarc.' + ) + special=( + run:'Launches an application installed with Conda.' + init:'Initialize conda into a regular environment. (EXPERIMENTAL)' + package:'Low-level conda package utility. (EXPERIMENTAL)' + bundle:'Create or extract a "bundle package" (EXPERIMENTAL)' + ) + external=( + env:'Manage environments.' + build:'tool for building conda packages' + ) + + # This takes care of alignment if the user wanted the subcommand completion + # to be split into groups. + zstyle -s ":conda_zsh_completion:*" use-groups tmp + if [[ -n $tmp ]] ; then + _describe -t package_commands "package commands" package + _describe -t maint_commands "maint commands" maint + _describe -t environment_commands "environment commands" environment + _describe -t help_commands "help commands" help + _describe -t config_commands "config commands" config + _describe -t special_commands "special commands" special + _describe -t external_commands "external commands" external + else + _describe "conda commands" package -- maint -- environment -- help -- config -- special -- external + fi +} + +__conda_caching_policy() { + local -a oldp + oldp=( "$1"(Nmh+12) ) # 12 hour + (( $#oldp )) +} + +local -a opts help_opts json_opts env_opts channel_opts install_opts + +opts=( + '(-h --help)'{-h,--help}'[show this help message and exit]' + '(-V --version)'{-V,--version}'[show program''s version number and exit]' +) + +help_opts=( + '(-h --help)'{-h,--help}'[show this help message and exit]' \ + ) + +json_opts=( + '--json[report all output as json.]' \ + ) + +env_opts=( + '(-n --name -p --prefix)'{-n,--name}'[name of environment]:environment:__conda_envs' \ + '(-n --name -p --prefix)'{-p,--prefix}'[full path to environment prefix]:path:_path_files' \ + ) + +channel_opts=( + '(-c --channel)'{-c,--channel}'[additional channel to search for packages]:channel:__conda_channels'\ + '--override-channels [do not search default or .condarc channels]' \ + '--use-index-cache[use cache of channel index files]' \ + '--use-local[use locally built packages]' \ + ) + +install_opts=( + '(-y --yes)'{-y,--yes}'[do not ask for confirmation]' \ + '--dry-run[only display what would have been done]' \ + '(-f --force)'{-f,--force}'[force install]' \ + '--file[read package versions from file]:file:_path_files' \ + '--no-deps[do not install dependencies]' \ + '(-m --mkdir)'{-m,--mkdir}'[create prefix directory if necessary]' \ + '--offline[offline mode, don''t connect to internet]' \ + '--no-pin[ignore pinned file]' \ + '(-q --quiet)'{-q,--quiet}'[do not display progress bar]'\ + '--copy[Install all packages using copies instead of hard- or soft-linking]' \ + '--alt-hint[Use an alternate algorithm to generate an unsatisfiable hint]' \ + ) + +_arguments -C $opts \ + ': :->command' \ + '*:: :->subcmd' + +# the magic function, complete either a package or a package and it's version +__magic(){ + local -a last_item available_packages current_package + last_item=$line[$CURRENT] + available_packages=($( __conda_package_available )) + if compset -P "*=" ; then + current_package="$IPREFIX[1,-2]" + __conda_describe_package_version $current_package + else + __describe_conda_package_available + if [[ -n $last_item ]] && (( ${available_packages[(I)$last_item]} )); then + compset -P '*' + __conda_describe_package_specs + fi + fi +} + +case $state in +(command) + __conda_commands + ;; +(subcmd) + case ${line[1]} in + (info) + _arguments -C $help_opts \ + '--json[report all output as json.]' \ + '(-a --all)'{-a,--all}'[show all information, (environments, license, and system information]' \ + '(-e --envs)'{-e,--envs}'[list all known conda environments]' \ + '(-l --license)'{-l,--license}'[display information about local conda licenses list]' \ + '(-s --system)'{-s,--system}'[list environment variables]' \ + '--root[display root environment path]' \ + '*:packages:__describe_conda_package_available' \ + ;; + (help) + _arguments -C $help_opts \ + '*:commands:__conda_commands' \ + ;; + (list) + _arguments -C $help_opts \ + $env_opts \ + $json_opts \ + '(-c --canonical)'{-c,--canonical}'[output canonical names of packages only]' \ + '(-e --export)'{-e,--export}'[output requirement string only]' \ + '(-r --revisions)'{-r,--revision}'[list the revision history and exit]' \ + '--no-pip[Do not include pip-only installed packages]' \ + '*:regex:' \ + ;; + (search) + _arguments -C $help_opts \ + $env_opts \ + $json_opts \ + $channel_opts \ + '(-c --canonical)'{-c,--canonical}'[output canonical names of packages only]' \ + '--unknown[use index metadata from the local package cache]' \ + '(-o --outdated)'{-o,--outdated}'[only display installed but outdated packages]' \ + '(-v --verbose)'{-v,--verbose}'[Show available packages as blocks of data]' \ + '--platform[Search the given platform.]' \ + '--spec[Treat regex argument as a package specification]' \ + '*:regex:' \ + ;; + (create) + _arguments -C $help_opts \ + $env_opts \ + $install_opts \ + $json_opts \ + $channel_opts \ + '--unknown[use index metadata from the local package cache]' \ + '--clone[path to (or name of) existing local environment]' \ + '--no-default-packages[ignore create_default_packages in condarc file]' \ + '*:packages:__magic' \ + ;; + (install) + _arguments -C $help_opts \ + $env_opts \ + $install_opts \ + $json_opts \ + $channel_opts \ + '--revision[revert to the specified revision]:revision' \ + '*:packages:__magic' \ + ;; + (update) + local -a environment options specifier + options=('-n' '--name' '-p' '--prefix') + for i in $options ; do + (( ${line[(I)$i]} )) && specifier=$i + done + [[ -n $specifier ]] && environment="$line[${line[(i)$specifier]}+1]" + _arguments -C $help_opts \ + $env_opts \ + $install_opts \ + $json_opts \ + $channel_opts \ + '--unknown[use index metadata from the local package cache]' \ + '--all[Update all installed packages in the environment]' \ + '*:packages:{__conda_packages_installed $specifier $environment}' \ + ;; + (remove|uninstall) + local -a environment options specifier + options=('-n' '--name' '-p' '--prefix') + for i in $options ; do + (( ${line[(I)$i]} )) && specifier=$i + done + [[ -n $specifier ]] && environment="$line[${line[(i)$specifier]}+1]" + _arguments -C $help_opts \ + $env_opts \ + $json_opts \ + $channel_opts \ + '(-y --yes)'{-y,--yes}'[do not ask for confirmation]' \ + '--dry-run[only display what would have been done]' \ + '(-a --all)'{-a,--all}'[remove all packages, i.e. the entire environment]' \ + '--features[remove features (instead of packages)]' \ + '--no-pin[ignore pinned file]' \ + '(-q --quiet)'{-q,--quiet}'[do not display progress bar]'\ + '--offline[offline mode, don''t connect to internet]' \ + '*:packages:{__conda_packages_installed $specifier $environment}' \ + ;; + (config) + # this allows completing multiple keys when --get is given + local -a last_item get_opts + last_item=$line[$CURRENT-1] + if (( ${line[(I)--get]} )) && (( ${__conda_config_keys[(I)$last_item]} )) ; then + get_opts=('*:keys:__conda_describe_existing_config_keys') + else + get_opts='' + fi + _arguments -C $help_opts \ + $json_opts \ + '--system[write to the system .condarc file]' \ + '--file[write to the given file.]:file:_path_files' \ + '( --add --set --remove --remove-key)--get[get the configuration value]:key:__conda_describe_existing_config_keys' \ + '(--get --set --remove --remove-key)--add[add one configuration value to a list key]:list key:__conda_describe_list_config_keys:value:' \ + '(--get --add --remove --remove-key)--set[set a boolean key]:boolean key:__conda_describe_boolean_config_keys:value:__conda_describe_boolean_config_values' \ + '(--get --add --set --remove-key)--remove[remove a configuration value from a list key]:list key:__conda_describe_existing_list_config_keys:value:{__conda_describe_existing_config_values '$last_item'}' \ + '(--get --add --set --remove )--remove-key[remove a configuration key (and all its values)]:key:__conda_describe_existing_config_keys' \ + '(-f --force)'{-f,--force}'[write to the config file using the yaml parser]' \ + $get_opts + ;; + (init) + _arguments -C $help_opts \ + ;; + (clean) + _arguments -C $help_opts \ + $json_opts \ + '(-y --yes)'{-y,--yes}'[do not ask for confirmation]' \ + '--dry-run[only display what would have been done]' \ + '(-i --index-cache)'{-i,--index-cache}'[remove index cache]' \ + '(-l --lock)'{-l,--lock}'[remove all conda lock files]' \ + '(-t --tarballs)'{-t,--tarballs}'[remove cached package tarballs]' \ + '(-p --packages)'{-p,--packages}'[remove unused cached packages]' \ + '(-s --source-cache)'{-s,--source-cache}'[remove files from the source cache of conda build]' \ + ;; + (package) + _arguments -C $help_opts \ + $env_opts \ + '(-w --which)'{-w,--which}'[given some path print which conda package the file came from]:path:_path_files' \ + '(-L --ls-files)'{-L,--ls-files}'[list all files belonging to specified package]' \ + '(-r --reset)'{-r,--reset}'[remove all untracked files and exit]' \ + '(-u --untracked)'{-u,--untracked}'[display all untracked files and exit]' \ + '--pkg-name[package name of the created package]:pkg_name:' \ + '--pkg-version[package version of the created package]:pkg_version:' \ + '--pkg-build[package build number of the created package]:pkg_build:' \ + ;; + (bundle) + _arguments -C $help_opts \ + $env_opts \ + $json_opts \ + '(-c --create)'{-c,--create}'[create bundle]' \ + '(-x --extract)'{-x,--extract}'[extact bundle located at path]:path:_path_files' \ + '--metadump[dump metadata of bundle at path]:path:_path_files' \ + '(-q --quiet)'{-q,--quiet}'[do not display progress bar]'\ + '--bundle-name[name of bundle]:NAME:' \ + '--data-path[path to data to be included in bundle]:path:_path_files' \ + '--extra-meta[path to json file with additional meta-data no]:path:_path_files' \ + '--no-env[no environment]' \ + ;; + (build) + _arguments -C $help_opts \ + '(-c --check)'{-c,--check}'[only check (validate) the recipe]' \ + '--no-binstar-upload[do not ask to upload the package to binstar]' \ + '--output[output the conda package filename which would have been created and exit]' \ + '(-s --source)'{-s,--source}'[only obtain the source (but don''t build)]' \ + '(-t --test)'{-t,--test}'[test package (assumes package is already build)]' \ + '--no-test[do not test the package]' \ + '(-b --build-only)'{-b,--build-only}'[only run the build, without any post processing or testing]' \ + '(-p --post)'{-p,--post}'[run the post-build logic]' \ + '(-V --version)'{-V,--version}'[show program''s version number and exit]' \ + '(-q --quiet)'{-q,--quiet}'[do not display progress bar]' \ + '--python[Set the Python version used by conda build]' \ + '--perl[Set the Perl version used by conda build]' \ + '--numpy[Set the NumPy version used by conda build]' \ + '*:recipe_path:_path_files' \ + ;; + (env) + _arguments -C $opts \ + ': :->command' \ + '*:: :->subcmd' + case $state in + (command) + local -a env + env=( + create:'Create an environment based on an environment file' + export:'Export a given environment' + list:'List the Conda environments' + remove:'Remove an environment' + update:'Update the current environment based on environment file' + ) + _describe -t env_commands "help commands" env + ;; + (subcmd) + case ${line[1]} in + (create) + _arguments -C $help_opts \ + $json_opts \ + '(-n --name)'{-n,--name}'[name of environment]:environment:__conda_envs' \ + '(-f --file)'{-f,--file}'[environment definition]:file:_path_files' \ + '(-q --quiet)'{-q,--quiet}'[]' \ + ;; + (export) + _arguments -C $help_opts \ + '(-n --name)'{-n,--name}'[name of environment]:environment:__conda_envs' \ + '(-f --file)'{-f,--file}'[]:file:_path_files' \ + ;; + (list) + _arguments -C $help_opts \ + $json_opts \ + ;; + (remove) + _arguments -C $help_opts \ + $json_opts \ + $env_opts \ + '(-q --quiet)'{-q,--quiet}'[do not display progress bar]'\ + '(-y --yes)'{-y,--yes}'[do not ask for confirmation]' \ + '--dry-run[only display what would have been done]' \ + ;; + (update) + _arguments -C $help_opts \ + $json_opts \ + '(-n --name)'{-n,--name}'[name of environment]:environment:__conda_envs' \ + '(-f --file)'{-f,--file}'[environment definition]:file:_path_files' \ + '(-q --quiet)'{-q,--quiet}'[]' \ + ;; + esac + ;; + esac + ;; + (activate) + _arguments -C $help_opts \ + '--stack[activate this environment on top of the previous environment]' \ + '*:environment:__conda_envs' + ;; + (deactivate) + _arguments -C $help_opts \ + ;; + esac + ;; +esac +