Xonsh Versions Save

:shell: Python-powered, cross-platform, Unix-gazing shell.

0.13.2

1 year ago

Changed:

  • When there is no git repository, the values of all gitstatus prompt fields are now None.
  • With $THREAD_SUBPROCS=False: When a callable alias is executed with ![], its standard output and standard error are no longer captured. This is because a separate thread is required in order to both capture the output and stream it to the terminal while the alias is running.

Fixed:

  • Fixed timeit syntax error
  • When there is no git repository, $PROMPT format strings like {gitstatus: hello {}} now work as expected.
  • With $THREAD_SUBPROCS=False: When cd is used with an invalid directory, the error message is now correctly displayed.
  • Fixed case when xpip returns None instead of command.

Authors:

  • anki-code
  • Peter Ye
  • pre-commit-ci[bot]
  • Lie Ryan
  • amukher3
  • Ashish Kurmi

0.13.1

1 year ago

Added:

  • The ujson (faster version of json) added to xonsh[full] package.

Changed:

  • Bumped Python version in xonsh.AppImage to 3.10
  • The terminal's title is updated with the current command's name even if the command is a captured command or a callable alias

Fixed:

  • Warn and continue if a user without pygments tries to load an unknown style
  • Fixed a bash completion bug when prefixing a file path with '<' or '>' (for redirecting stdin/stdout/stderr)
  • Fixed a bash completion bug when completing a git branch name when deleting a remote branch (e.g. git push origin :dev-branch)
  • A callable alias containing subprocess commands no longer freezes when piped to another command
  • less no longer stops when a callable alias containing subprocess commands is piped into it
  • gitstatus Prompt-field would be empty on paths without git setup.
  • When using the sway window manager, swaymsg -t get_inputs no longer fails with the error "Unable to receive IPC response"
  • The current_job variable now works as expected when used in $TITLE

Security:

  • xpip will never add sudo under any circumstances and will instead append --user as needed

Authors:

  • Gil Forsyth
  • Noortheen Raja
  • anki-code
  • Peter Ye
  • pre-commit-ci[bot]
  • Stefano Rivera
  • jbw3
  • jgart
  • Michael Panitz (at Cascadia College)
  • Tim Gates

0.13.0

1 year ago

Removed:

  • The xonsh code-base is no longer amalgamated, so tracebacks should be human-readable without intervention. This may have (minor) impacts on startup speed.

Fixed:

  • Fix xontrib loading for free_cwd
  • Fixed whole_word_jumping xontrib failing on Linux, conditional import of ptk_win32 → Windows only
  • Fixed error caused by unintialized Xonsh session env when using Xonsh as a library just for its Pygments lexer plugin.

Authors:

  • Gil Forsyth
  • Noortheen Raja
  • anki-code
  • Eddie Peters
  • cmidkiff87
  • Hannes Römer

0.12.6

1 year ago

Fixed:

  • String literal concatenation now works with f-strings and path literals
  • A SyntaxError is raised when string literal concatenation is attempted with literals of different types (e.g. str and bytes)

Authors:

  • Gil Forsyth
  • Noortheen Raja
  • Peter Ye

0.12.5

1 year ago

Added:

  • Autoloadable xontribs
  • Support for f-glob strings (e.g. ``fg`{prefix}*```)
  • Now xontribs support loading and unloading <https://github.com/xonsh/xonsh/issues/4541>_ with functions _load_xontrib_(xsh: XonshSession, **kwargs) -> dict, _unload_xontrib_(xsh: XonshSession, **kwargs) -> None defined in their module. Updated doc <https://xon.sh/tutorial_xontrib.html>_
  • Added a special '$LAST_RETURN_CODE' environment variable to access the return code of the last issued command. (Only set during interactive use).
  • New prompt-customization fields: 'last_return_code_if_nonzero', 'last_return_code'.
  • Documented the HISTCONTROL ignorespace option

Changed:

  • ![] now returns a HiddenCommandPipeline when run with a background command (e.g. ![sleep 10 &])
  • Extended whole_word_jumping xontrib with matching bindings for delete and backspace. The XONSH_WHOLE_WORD_CTRL_BKSP environment variable can be set to False to avoid binding control+backspace in incompatible terminals.
  • The default prompt (on unix-systems) now includes a red [] field in case a command failed.
  • New docs theme furo
  • completions from fish are now filter based on the current prefix.

Removed:

  • xontrib prompt_ret_code is now removed. Now the default prompt already shows the last-return-code when the previous command fails. Please use the new prompt fields last_return_code, last_return_code_if_nonzero from the PR <https://github.com/xonsh/xonsh/pull/4798>_

Fixed:

  • Using fg for commands started in the background (e.g. ![sleep 10 &]) now works
  • SIGHUP (instead of SIGKILL) is sent to unfinished jobs when exiting the shell. This allows the nohup command to work properly.
  • bg now properly resumes jobs in the background
  • ExecAlias now sets the returncode of a command correctly
  • Empty/comment-only commands no longer get added to the history
  • On prompt-toolkit, when there is a job like sleep 500 & running in the background, pressing Ctrl+D twice to force quit now works properly
  • Environment Variables are now completed correctly when in quotes
  • Silence spurious errors on exit due to out-of-order cleanup

Authors:

  • Gil Forsyth
  • Noortheen Raja
  • Peter Ye
  • dev2718
  • dependabot[bot]
  • Stefano Rivera
  • Naveen
  • jbw3
  • Italo Cunha
  • Timmy Welch

0.12.4

2 years ago

Authors:

  • Gil Forsyth

0.12.3

2 years ago

Changed:

  • fix: remove os.path.basename from _get_git_branch()
  • now 3rd party xontrib list is maintained at Awesome Xontribs <https://github.com/xonsh/awesome-xontribs/>_ page. Going forward, new contributions will be updated here, making it not depending on the xonsh release <https://github.com/xonsh/xonsh/issues/4679>_.

Removed:

  • Removed Python 3.7 support following NEP0029 <https://numpy.org/neps/nep-0029-deprecation_policy.html>_

Fixed:

  • Dictionaries are now pretty-printed with their items in the correct order

Authors:

  • Gil Forsyth
  • Noortheen Raja
  • Peter Ye
  • doronz88
  • Stefano Rivera

0.12.2

2 years ago

Fixed:

  • Fixed completions for command argument paths after equal signs
  • A trailing space no longer gets appended when tab-completing command arguments that involve equals signs. For example dd sta gets completed to dd status=, without a space space after the equals sign.
  • regression on gitstatus <https://github.com/xonsh/xonsh/pull/4771>_ prompt is fixed now. It will display the value now instead of the name.
  • fixed <https://github.com/xonsh/xonsh/pull/4763>_ vox rm crashing when user input is required

Authors:

  • Gil Forsyth
  • Noortheen Raja
  • Peter Ye

0.12.1

2 years ago

Fixed:

  • fixed regression issue in loading xontrib-abbrevs <https://github.com/xonsh/xonsh/pull/4757>_
  • Allow xonsh to start gracefully even if modal cursors aren't in the available prompt_toolkit version

Authors:

  • Gil Forsyth
  • Noortheen Raja

0.12.0

2 years ago

Added:

  • Added interface to complete any alias that has xonsh_complete attribute. It is a function with fn(**kwargs) -> Iterator[RichCompletion | str] signature.

  • added $ALIAS_COMPLETIONS_OPTIONS_LONGEST to control showing options in completions

  • added $CMD_COMPLETIONS_SHOW_DESC environment variable to control showing command completions with a description part.

  • completer complete command is added to test current completions

  • completions from man page will now show the description for the options if available.

  • $XONSH_COMPLETER_DIRS to put command completers

  • Aliases.register to register an alias function.

  • Tracebacks are now printed in color if available (interactive session with shell that supports colors with pygments installed and $COLOR_RESULTS enabled)

  • Added python's match statement for python >=3.10.

  • Added support for the $SHLVL environment variable, typed as int, using bash's semantics.

  • Python files with command completions can be put inside xompletions namespace package, they will get loaded lazily.

  • xontrib.fish_completer is available to complete using fish shell.

  • Support for pythons sys.last_type, sys.last_value, sys.last_traceback.

  • added xonsh-uname command to xoreutils

  • auto-completion support for commands : source-foreign, source-bash, source-zsh, source-cmd

  • added history transfer command to transfer history entries between backends.

  • now $PROMPT_FIELDS is a custom class with method pick(field_name) to get the field value efficiently. The results are cached within the same prompt call.

  • new class xonsh.prompt.base.PromptField to ease creating/extending prompt-fields

  • Sublime Text 4 extension to the Editors page.

  • Support for the virtualenv <https://virtualenv.pypa.io/en/20.0.1/extend.html#activation-scripts>_ activate.xsh script is back! Ensure you create the virtualenv from the same python where xonsh is installed.

  • vox new/create accepts a new --prompt argument, which is passed through to python -m venv

  • New set of commands and options to manage virtualenvs inspired from pew

    • runin

    • runinall

    • new

      • --link : to associate venv with project directory
      • --temp : to create temporary virtualenvs
    • activate

      • now will cd into project directory if the venv is associated
    • toggle-ssp - toggle system site packages

    • project - manage project path associations

    • wipe - to quickly remove all user installed packages

  • prompt.env.env_name is now aware of the "prompt" key in pyvenv.cfg - search order from first to last is: $VIRTUAL_ENV_PROMPT, pyvenv.cfg, $VIRTUAL_ENV, $CONDA_DEFAULT_ENV

  • new command vox upgrade

  • xonfig web can now update abbrevs/aliases/env-variables.

  • Added xontrib-default-command <https://github.com/oh-my-xonsh/xontrib-default-command> to xontrib list.

  • new xontrib-django <https://github.com/jnoortheen/xontrib-django>_ for django management completions

  • Added xontrib-gruvbox <https://github.com/rpdelaney/xontrib-gruvbox> to xontrib list.

  • Added xontrib-up <https://github.com/oh-my-xonsh/xontrib-up> to xontrib list.

Changed:

  • Both *.xsh and *.py files inside $XONSHRC_DIR will get loaded now.

  • Environment-variables of no predefined type or path environment variables are now represented as strings via the empty string.

  • Made stacktraces behave like in python, i.e. when something in user-provided code fails (both interactively and non-interactively), only that part is shown, and the (static) part of the stacktrace showing the location where the user code was called in xonsh remains hidden. When an unexpected exception occurs inside xonsh, everything is shown like before.

  • run_compiled_code, run_script_with_cache, run_code_with_cache now return sys.exc_info() triples instead of throwing errors

  • SyntaxError tracebacks now by default hide the internal parser state (like in python); set XONSH_DEBUG >= 1 to enable it again.

  • XonshError tracebacks now by default hide xonshs internal state; set XONSH_DEBUG >= 1 to enable it again.

  • run_code_with_cache takes a new parameter display_filename to override the filename shown in exceptions (this is independent of caching)

  • Update uptime lib by the last one from Pypi

  • umask, ulimit commands will not override the system's commands unless requested

  • Xontribs that require other third party packages are moved to its own packages. The following xontribs are moved and can be loaded after install as usual

    • mpl
    • distributed
    • jupyter-kernel
    • jedi
  • Xonsh adopts NEP-0029 <https://numpy.org/neps/nep-0029-deprecation_policy.html>_ in supporting Python versions.

  • Privatise certain attributes of lexer/parser to minimise API surface

  • Make XSH.load calls explicit (not in Execer)

  • Make import hooks require Execer

  • Simplified foreign functions

  • Updated tutorial.rst to clarify use of time_format

  • vox new will use default python version of the system rather than the one vox is run with

  • xonfig web now shows latest xontribs available from xonsh.xontribs_meta

Removed:

  • $XONSH_GITSTATUS_* is removed since the prompt fields can be customized easily now individually.
  • $XONSH_GITSTATUS_FIELDS_HIDDEN is removed. Please set hidden fields in $PROMPT_FIELDS['gitstatus'].hidden = (...)
  • Removed xonsh.ptk2 module whcih was kept for some old packages sake. Now xonsh requires atleast ptk3 version.

Fixed:

  • Some of the bash completions scripts can change path starting with '~/' to /home/user/ during autocompletion. xonsh bash_completions does not expect that, so it breaks autocompletion by producing paths like ~/f/home/user/foo. After the fix if bash returns changed paths then /home/user prefix will be replaced with ~/.
  • pip completer now handles path completions correctly
  • SyntaxErrors thrown during compilation (i.e. not during parsing) now include the offending source line.
  • If a .xsh file is imported, the resulting module will now always have an absolute __file__ attribute to be consistent with pythons behavior since python 3.4.
  • $CONDA_DEFAULT_ENV is now respected when xonsh is run outside of conda.
  • Fixed unpacking of dictionaries inside a dictionary
  • Empty or comments only .xsh files can now be imported to align with pythons behavior.
  • Fixed regex globbing for file paths that contain special regex characters (e.g. "test*1/model")
  • Fixed list comprehension in return statement incorrectly being parsed as a subprocess command.
  • Fixed the expansion of $XONSH_TRACEBACK_LOGFILE user paths (e.g. "~/log")
  • Fixed DeprecationWarning when providing autocompletion for a non-callable type with (
  • OSC codes in $PROMPT is no longer removed when using ptk shell. These codes need to be escaped with \001..\002 instead.
  • Attempt to show a modal cursor in vi_mode (ie. block in cmd, bar in ins)
  • Xonsh can now be used in VIM (e.g. by ":read !ls" if VIM is configured to use xonsh. This may be the case when xonsh is the default shell.)
  • Fixed OSError on Windows when GnuWin32 is installed in the PATH.
  • Do not show welcome message when any $XONSHRC_DIR directory entry exists.
  • SyntaxErrors now get initialized with all available fields so that the error message can be formatted properly.
  • Raising BaseException no longer causes Xonsh to crash (fix #4567)
  • Exceptions in user code when using xonsh non-interactively no longer simply crash xonsh, rather a proper stacktrace is printed and also postmain() is called.
  • Tracebacks will now show the correct filename (i.e. as in python) for interactive use "", scripts read by stdin "" and -c commands "". (Instead of MD5 hashes as filenames or "")
  • Default ZSH FUNCSCMD was not working in ZSH 5.8 (and possibly other versions)
  • Passing multiple files to be sourced to source-foreign was broken
  • prompt field current_branch will now work empty git repository.

Authors:

  • Gil Forsyth
  • Noortheen Raja
  • anki-code
  • Daniel Shimon
  • Peter Ye
  • Jason R. Coombs
  • dev2718
  • Evgeny
  • Angus Hollands
  • omjadas
  • Oliver Bestwalter
  • Samuel Dion-Girardeau
  • Ryan Delaney
  • E Pluribus Unum
  • ylmrx
  • Hierosme
  • Kyllingene
  • zzj
  • Daniel
  • Ganer
  • mattmc3
  • Evan Hubinger