* Bug Fixes
* ci update
* pypi wheel checking
* update publish
- Update to version 0.19.6:
* Bug Fixes
* upload releases to PyPI
- Update to version 0.19.5:
* Features
* #5745 - send Ctrl+C event on Windows instead of forceful terminate
* completion: Accept single completion in VI MODE using `Ctrl+]`
* New experimental Rust based parser for xonsh
* Bug Fixes
* don't skip history items when running full history pull after session-specific pull
* Performance Improvements
* Disable double check is_file on Windows systems to speedup IO
* Documentation
* Add missing bash conversion example
OBS-URL: https://build.opensuse.org/package/show/shells/xonsh?expand=0&rev=36
- update to 0.19.4:
* Updated bash_completion.py from archived xonsh/py-bash-
completion repo
* Using trace on with .xsh scripts could previously lead to a
spurious ignored exception showing up on stderr. This is now
fixed.
* bash_completion: Fixed empty line in completion result
(https://github.com/xonsh/py-bash-completion/pull/21).
* pipelines: fixed 'NoneType' object has no attribute 'pid'
exception (#5794).
* The history delete action on the sqlite backend used to pass
matched history lines to a SQL statement without
sanitization. This could lead to unexpected SQL being run on
the history database. This is now fixed. Security risk: low.
OBS-URL: https://build.opensuse.org/request/show/1273963
OBS-URL: https://build.opensuse.org/package/show/shells/xonsh?expand=0&rev=34
- fix missing readline
* depend on python3 instead of python3-base
- update to 0.19.2:
* env: add $XONSH_PROMPT_CURSOR_SHAPE for configuring prompt
cursor shape.
* env: Added XONSH_CONFIG_DIR, XONSH_DATA_DIR and
XONSH_CACHE_DIR.
* SIGHUP will now be forwarded to child processes when received
by the main xonsh process. This matches the behavior of other
shells e.g. bash.
* Documented the fact that the on_postcommand event only fires in
interactive mode.
* history: Added and documented --session-id parameter for
history pull command.
* history-json: Implemented history pull for JSON history
backend.
* Running a subcommand in an event handler will no longer block
xonsh from exiting.
* history: Prevented history pull command from adding consecutive
duplicates to propmter history.
* prompt toolkit: Fixed autosuggest sometimes not updating when
up-arrow is pressed (#5787).
* Subprocess-based completions like xontrib-fish-completer
<https://github.com/xonsh/xontrib-fish-completer>_ no longer
append a space if the single available completion ends with a
directory separator. This is consistent with the behavior of
the default completer.
OBS-URL: https://build.opensuse.org/request/show/1246434
OBS-URL: https://build.opensuse.org/package/show/shells/xonsh?expand=0&rev=30
- update to 0.16.0:
* Square brackets can now be used in command arguments without
quotes (e.g. echo a[b])
* Add XONSH_BASH_PATH_OVERRIDE option (off-by-default) to
override what is returned by xonsh.platform.bash_command.
* Added PATH.prepend(path) to add path to the beginning.
* Xonsh AppImage now on Python 3.12 that works faster.
* Xonsh AppImage: pinned prompt-toolkit version until fix
upstream issue.
* Builtin aliases (xontrib, history) switched to threadable
mode.
* EnvPath methods (append, remove, add, insert) prepare the
path before action.
* Replaced black formatter with ruff-format
* source_foreign_fn now does not run subshells in interactive
mode, so associated RC files like zshrc and bashrc will not
be auto-loaded on sourcing.
* Removed usage of deprecated cgi module
* Removed ArgParserAlias.hook_pre_add_argument,
ArgParserAlias.hook_post_add_argument. Please use custom
action instead to modify the argument options.
* Removed deprecated module xonsh.proc
* Fixed an issue with completions when using absolute paths to
commands and having $UPDATE_COMPLETIONS_ON_KEYPRESS set to
True. https://github.com/xonsh/xonsh/issues/5127
* Jobs: fixed "index out of range" exception.
* Expressions like 2>1 are now parsed correctly as Python code
instead of being treated like special io-redirection
operators.
* Redirect tokens in quotes (e.g. ">", "2>", "2>1") are now
OBS-URL: https://build.opensuse.org/request/show/1170597
OBS-URL: https://build.opensuse.org/package/show/shells/xonsh?expand=0&rev=28
- update to 0.14.4:
* System clipboard can be fully disabled using
$XONSH_USE_SYSTEM_CLIPBOARD.
* xonsh now adds the user site packages directory to sys.path
where required for proper xontrib discovery
* history: fix json file permissions upon sudo
* Correctly parse multi line foreign aliases
* Upgrade Python version at the introduction
OBS-URL: https://build.opensuse.org/request/show/1142071
OBS-URL: https://build.opensuse.org/package/show/shells/xonsh?expand=0&rev=24
- update to 0.14.1:
* Added ``history delete`` command to both the JSON and SQLite
history backends allowing users to delete commands from
history that matches a pattern.
* Added preliminary support for Python v3.12
* Always load rc files except that --norc is passed.
* Unset the default line continuation environment variables
(``$MULTILINE_PROMPT_PRE`` and ``$MULTILINE_PROMPT_POS``) to
allow differentiating between user setting an empty value and
not setting anything
* Dropped support for Python v3.8
* This change fixes issue #4855, that is, rc files will be
loaded in non-interactive mode.
multiline prompts via two environment variables:
* Added ``chdir`` to ``xonsh.tools``. This allows to use
``menu-complete`` enables TAB behavior like ``readline`` command ``menu-complete``. First TAB selects the first matching
- ``xonfig jupyter-kernel`` new subcommand to generate xonsh kernel spec for jupyter.
Installing a new xonsh kernel for jupyter automatically removes any other one registered with jupyter,
- xonsh/environ.py: new rule: for "registered" environment variables (in ``DEFAULT_VARS`` or via ``env.register()``),
if default is set to ``DefaultNotGiven``, then variable has no default and raises ``KeyError`` if it is not
- ``xonfig info`` displays whether jupyter detected in environment and
- setup no longer (tries to) install jupyter kernel automatically,
``pip install .`` wouldn't (because pip mucks with ``sys.path``),
- Rewrote Installation and Configuration sections of Getting Started doc
- Flake8/black fixes to the whole code tree, in 3 steps.
- Fixed bug on Windows if Path elements has trailing spaces. Windows in general and ``os.path.isdir()``
are still executed first to avoid a bug were other tests would prevent ``test_*.xsh``
- `[color] in .gitconfig (#3427) <https://github.com/xonsh/xonsh/issues/3427>`_ now stripped from {curr\_branch}
- Remove built in support for "win unicode console". Full unicode support on windows is now provided by
OBS-URL: https://build.opensuse.org/request/show/1119077
OBS-URL: https://build.opensuse.org/package/show/shells/xonsh?expand=0&rev=22
- update to 0.14.0:
* key_bindings: map `escape-f` as another word completer for macOS
* Added ``history pull`` command to SQLite history backend to pull
the history from parallel sessions and add to the current
session.
* Add support for `Semantic Prompt for line continuations in
multiline prompts via two environment variables:
``$MULTILINE_PROMPT_PRE`` and ``$MULTILINE_PROMPT_POS``
(e.g., ``\x01\x1b]133;B\x07\x02``) that are inserted
before/after each continuation line 'dots' block to mark input
* Wheels for Python 3.11 are part of the automated release action
* Added ``chdir`` to ``xonsh.tools``. This allows to use
``with chdir("dir"):`` to run commands block in the certain
directory without manually cd-ing.
* Display the current branch of Fossil VCS checkouts in the prompt,
similar to git and hg.
* Added link to xonsh on Mastodon - https://mastodon.online/@xonsh
* xontrib load: added option ``-s`` to skip warning about not
installed xontribs.
* Altered documentation for xonshrc to remove Python REPL prompts
so that you can copy the code without having to edit it.
* xonsh AppImage - bumped python to 3.11
* The prompt end character switched to ``@``.
* The `command not found` error will show the ``repr(cmd)``
to uncover the cases when the command name has ``\n``, ``\t``
or not visible color codes and raises the error.
OBS-URL: https://build.opensuse.org/request/show/1095482
OBS-URL: https://build.opensuse.org/package/show/shells/xonsh?expand=0&rev=20
- Added:
- tests for methods changed in tools.py (is_tok_color_dict)
- ``$XDG_CACHE_HOME``, ``$XONSH_CACHE_DIR`` are now available inside ``Xonsh``
- #2455 Add `on_command_not_found` event, fired when a command is not found.
- Changed:
- is_str_str_dict changed to check for Token:style dict
- Removed:
- ``$COMMANDS_CACHE_SIZE_WARNING`` is removed. When ``$COMMANDS_CACHE_SAVE_INTERMEDIATE`` is enabled,
the cache file size is optimized.
- Fixed:
- #4668 Fix ptk completion stacking when auto-suggest is on and no normal completions are generated.
- $XONSH_STYLE_OVERRIDES cannot be assigned dict of {Token: str} #4375
- commands_cache: add a configurable value to disable cache. useful for running scripts
- fixed stale results when ``$COMMANDS_CACHE_SAVE_INTERMEDIATE`` is enabled.
- #4951 Fix gitstatus prompt when rebasing
- fixed using aliases to override commands without the file extension on Windows
- #3279 Add `XONSH_HISTORY_IGNORE_REGEX` support. You can specify a regular
expression in the environment variable `XONSH_HISTORY_IGNORE_REGEX` and any
command that matches the expression will not be added to the history.
- Update to version 0.13.2:
OBS-URL: https://build.opensuse.org/package/show/shells/xonsh?expand=0&rev=18
- update to 0.13.3:
* ``pygments`` startup crash when incorrect prepending ``bg:`` to
``noinherit`` style directives
* 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 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.
OBS-URL: https://build.opensuse.org/request/show/1040647
OBS-URL: https://build.opensuse.org/package/show/shells/xonsh?expand=0&rev=17
- 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
- update to version 0.13.0:
- 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.
- update to version 0.12.6:
- 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)
OBS-URL: https://build.opensuse.org/package/show/shells/xonsh?expand=0&rev=15
- 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
OBS-URL: https://build.opensuse.org/package/show/shells/xonsh?expand=0&rev=11
- update to version 0.12.1:
- 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
- update to version 0.12.0:
- 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.
OBS-URL: https://build.opensuse.org/package/show/shells/xonsh?expand=0&rev=10
- Added:
- added new utility classes ``xonsh.cli_utils.ArgParserAlias``, ``xonsh.cli_utils.ArgCompleter``.
These are helper classes, that add coloring and auto-completion support to the alias-commands.
- when ``$ENABLE_ASYNC_PROMPT=True`` lazy load ``prompt-toolkit``'s color-input support.
- Add ``CTRL-Right`` key binding to complete a single auto-suggestion word.
- Show environment variables' type and descriptions when completing them.
- Add ``CTRL-Backspace`` key binding to delete a single word via ``$XONSH_CTRL_BKSPC_DELETION``.
- Improved ``pip``/``xpip`` completer.
- Separator used by gitstatus can now be styled using ``XONSH_GITSTATUS_SEPARATOR``.
- Complete 'import' statements with modules that aren't loaded.
- Complete multiple modules/objects in 'import' statements.
- Multiple new metadata fields in ``setup.py``
- Pure Python control files are now supported when named ``*.py``.
Using python files may lower the startup time by a bit.
- new environment variable ``$XONSH_TRACE_SUBPROC_FUNC``
to handle ``$XONSH_TRACE_SUBPROC`` output
- Added `xontrib-pyrtn <https://github.com/dyuri/xontrib-pyrtn>` to xontrib list.
- Changed:
- Display error message when running `xonfig colors` in a non-interactive shell
- Using ``ArgparserAlias`` for ``dirs``, ``popd``, ``pushd``
- use ``ArgparserAlias`` for ``disown`` alias with completion support
- ``history`` alias now has colored help message and completion support when running interactively.
- using ``ArgparserAlias`` for ``trace`` alias with completion support
- improve ``vox`` CLI completions
- use ArgparserAlias for ``xexec``. Now it supports completions.
- ``xonfig`` now has colored help message when ran interactively.
- Using ``ArgparserAlias`` to improve ``xontrib`` completions
- Changed !() to also capture background subprocesses
- Suggested commands are cached for better performance.
OBS-URL: https://build.opensuse.org/package/show/shells/xonsh?expand=0&rev=6
- Fixed:
- ``execx`` and ``xonsh -c`` previously exposed xonsh-internal code in global scope. They also did not support defining variables and then referring to them in comprehensions, generators, functions, or lambdas. - https://github.com/xonsh/xonsh/issues/4363
- Short color token names can be used in ``register_custom_style()`` (#4339)
- update to version 0.10.0:
- Added:
- Added ability to set XONSH_HISTORY_FILE before loading the history backend.
- Added ability to get the arguments list in ExecAlias using ``$args`` and ``$arg<n>`` environment variables.
- Added instruction how to run xonsh AppImage on Alpine
- Xonsh now supports generators as completer functions.
- Completion Context - Allow completers to access a parsed representation of the current commandline context.
- Added casting CommandPipeline to int, hash and str.
- Ability to call the tool by the name from callable alias with the same name without the infinite loop error.
- ``on wsl`` field when running xonfig (when linux is detected)
- Help and superhelp (``obj?`` and ``obj??``) now use the ``__name__`` if available.
- added ``$XONSH_GITSTATUS_FIELDS_TO_HIDE`` to hide unwanted fields from ``{gitstatus}`` prompt field.
- Added number of lines added and removed to gitstatus
- Saving current working directory (cwd) to the history.
- Added XONSH_HISTORY_SAVE_CWD environment variable.
- Added environment variable ``$COMPLETE_DOTS`` to specify how current and previous directories should be tab completed in cd ('./', '../'):
- ``always`` Always complete paths with ./ and ../
- ``never`` Never complete paths with ./ and ../
- ``matching`` Complete if path starts with . or ..
- Complete ``import`` keyword in ``from ... import`` statements.
- Enabled case-insensitive completions for the ``jedi`` xontrib.
- Non-exclusive completers that enable aggregating multiple completer results.
- New ``$XONSH_CAPTURE_ALWAYS`` variable for opt-in interactive capturing.
Since this capturing breaks background jobs and some interactive programs (like ``git`` invoking an editor),
This behavior is now opt-in using this variable.
See https://github.com/xonsh/xonsh/pull/4283 and linked issues.
OBS-URL: https://build.opensuse.org/package/show/shells/xonsh?expand=0&rev=4
- update to version 0.9.10:
- Added:
- $PROMPT_REFRESH_INTERVAL: Automatically invalidate the PROMPT every so many seconds.
- Allow disabling individual items in gitstatus prompt
- Fixed:
- Fix ``cat`` can't read pseudo files with zero size such as /proc/\* or /sys/\* (#3182, #3199)
- command-not-found: now works on non-Debian bansed distributions
- Implemented ``'target'`` psuedo-color in ``$LS_COLORS`` for link coloring based
off of the link target. This was causing issues on some systems where this is
the default.
OBS-URL: https://build.opensuse.org/request/show/722839
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xonsh?expand=0&rev=19
- remove docroot from a documentation file, workaround for rpmlint error file-contains-buildroot
- update to version 0.9.5:
- Fixed:
- Style 'bw'. Background colors was added in the style description.
- Fix causing error in ``get_predictor_threadable`` on windows when try to run not exist command
- ``pip`` completer no longer fires when ``pip`` happens to appear within a word
like ``bagpipes``
- Fixed issue with ``history gc`` command not running properly.
- update to version 0.9.4:
- Added:
- Add processing ``%d`` for avoid overwriting in ``run-tests.xsh``
- Changed:
- Xonsh now does not attempt to expand raw strings, so now::
$ echo "$HOME"
/home/user
$ echo r"$HOME"
$HOME
- sudoedit now runs unthreaded
- Fixed:
- threadable predictor for 'env' command based on predictor from the executed
command. Fixes#2759 and #3103.
- An error in the 'xon.sh' executable that only popped up during testing has
been fixed. Specifically: It now directly calls 'python3' without invoking
'env'.
- bashisms extension can be used again with prompt_toolkit v1
- Fix a crash when setting ``$INTENSIFY_COLORS_ON_WIN`` in certain situations.
- Fix issue with bashsisms xontrib causing syntax errors for some Python statements
- portable trick to pass args which replace '/usr/bin/env' is removed and
'/usr/bin/env' is used. Fixes bug when a python3 used is outside the default
'PATH'.
- update to version 0.9.3:
- Deprecated:
- Python v3.4 has been fully, completely, and (hopefully) correctly
deprecated. Please migrate to an officially supported version of Python.
- update to version 0.9.2:
- Changed:
- For aliases, predictor is build with the predictor of original command, in
place of default predictor.
- Fixed:
- Updated setup.py to require Python 3.4 using the ``python_requires`` keyword.
This rectifies issues with pip installing xonsh. Python 3.4 support will
be removed on the following release.
- update to version 0.9.1:
- Changed:
- We no longer manually check the Python version in ``setup.py``,
but instead use the setuptools ``python_requires`` feature.
- Fixed:
- Updates for integrating with new colors styles in Pygments v2.4.0.
- update to version 0.9.0:
- Added:
- Implemented the following "bang command" bashisms: ``!$``, ``$*``, ``!^``,
and ``!<str>``. These are in addition to ``!!``, which was already
implemented.
- asciinema (terminal recorder) added in not threadable commands.
- tput added in not threadable commands.
- New ``color_tools.KNOWN_XONSH_COLORS`` frozenset.
- New ``pyghooks.PYGMENTS_MODIFIERS`` mapping from color modifier names to
pygments colors.
- New ``pyghooks.color_name_to_pygments_code()`` function for converting
color names into pygments color codes.
- Changed:
- Circle now runs ``black`` checks on contents of bundled xontribs
- The ``black`` checks no longer skip some files buried deeper in the directory
tree.
- Errors while formatting the prompt are highlighted for easier debugging.
- Pygments styles only define the standard set of colors, by default.
Additional colors are computed as needed.
- PTYs created for running threadable command have now size set to same size
than main terminal.
- Update documentation pointing to the minimal required version of
Python (3.5).
- Deprecated:
- Drop support for Python 3.4.
- Removed:
- ``pyghooks.KNOWN_COLORS`` is no longer needed or useful as pygments colors
are computed automatically.
- ``style_tools.KNOWN_COLORS`` was never used, redundant with
``pyghooks.KNOWN_COLORS`` and has thus been removed.
- Fixed:
- Fixed a DeprecationWarning that would show up during an import of MutableSet.
- Fixed error with aliases composed of functions wrapped in functools.partial.
- ``black`` formatted all xontribs
- deleting a non existing environement variable with default value do nothing
instead of raising a exception trying to deleting it in existing values dict.
- Fixed crash while converting ANSI color codes with leading zeroes
- Fixed crash while parsing invalid ANSI color code
- fix causing infinite loop when doing ``cat`` empty file
- Fixed issue which occurs when user doesn't have access to parent directory and
xonsh scan all parents directory to find if we are in a Hg repository.
- Fixed issue with pygments-cache not properly generating a cache the first
time when using prompt-toolkit when using ``ptk2``.
This was due to a lingering lazy import of ``pkg_resources``
that has been removed.
- Minor update for Python v3.8.
- Fixed a "'NoneType' object is not iterable" bug when looking up ``stty``
in command cache.
- The release tarball now includes all test files.
- Arguments passed to python in 'scripts/xonsh' and in 'scripts/xonsh-cat' are
now passed by a portable hack in sh, not anymore by /usr/bin/env.
OBS-URL: https://build.opensuse.org/request/show/709544
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xonsh?expand=0&rev=15
- update to version 0.8.11
- Added:
- New ``xonsh.color_tools.short_to_ints()`` function for directly
converting a short (0 - 256) color into a 3-tuple of ints
represeting its RGB value.
- New ``xonsh.ansi_colors.ansi_reverse_style()`` function for
converting a mapping of color names to ANSI escape codes into
a mapping from escape codes into color names. This is not a
round-trippable operation.
- New ``xonsh.ansi_colors.ansi_color_escape_code_to_name()`` function
for converting an ANSI color escape code into the closest xonsh
color name for a given style.
- New ``xonsh.events.EventManager.exists()`` method enables the checking
of whether events actually exist with out making the event if it
doesn't exist.
- New command-specific event categories called ``on_pre_spec_run_<cmd-name>``
and ``on_post_spec_run_<cmd-name>`` will be fired before and after
``SubpocSpec.run()`` is called. This allows for command specific
events to be executed. For example, ``on_pre_spec_run_ls`` would
be run prior to an invocation of ``ls``.
- New ``xonsh.environ.LsColors`` class for managing the ``$LS_COLORS``
environment variable. This ensures that the ``ls`` command respects the
``$XONSH_COLOR_STYLE`` setting. An instance of this class is added to the
environment when either the ``$LS_COLORS`` class is first accessed or
the ``ls`` command is executed.
- The ``on_pre_spec_run_ls`` event is initialized with a default handler
that ensures that ``$LS_COLORS`` is set in the actual environment prior
to running an ``ls`` command.
- New ``xonsh.tools.detype()`` function that simply calls an objects own
``detype()`` method in order to detype it.
OBS-URL: https://build.opensuse.org/request/show/687599
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xonsh?expand=0&rev=14
- update to version 0.8.10
- Added:
- New ``xonsh.aliases.partial_eval_alias()`` function and related classes
for dispatching and evaluating partial alias applications for callable
aliases.
- Changed:
- Subprocesses will no longer close file descriptors automatically.
This was causing issues with other commands that expected file
descriptors to remain open, such as ``make``.
- The ``xonsh.Aliases.eval_alaises()`` method updated to use
``xonsh.aliases.partial_eval_alias()``.
- Fixed:
- Fixed ``xonsh.completers.base.complete_base()`` to no longer throw an
error caused by ``complete_python()`` sometimes returning a tuple.
This fixes cases such as ``ls &&<TAB>``.
- Fixed regression with line continuations in implicit subprocess mode within
indented blocks of code, such as if-statements.
- Resolved issue where setting empty signal masks was causing the
terminal to close. This was problematic for certain command
pipelines. For example, ``pv /dev/urandom | head`` now works.
- Prevents recurssive errors from being raised when there is no child process
in ``xonsh.jobs.wait_for_active_job()``.
- Tweaked ``xonsh.completers.commands.complete_skipper()`` to insert a space following
certain tokens (``&&``, ``||``, ``|``, ``and``, ``or``) to avoid overwriting existing tokens
with completer output.
- Fixed bug with evaluating recurssive aliases that did not implement
the full callable alias signature.
- Security:
- <news item>,
- Authors:
- Anthony Scopatz
- Gil Forsyth
- Troy de Freitas
- update to version 0.8.9
- Added:
- New ``env_prefix`` & ``env_postfix`` prompt fields for rendering the pre- and
post-fix characters of the an active virtual environment.
- ON_WSL attribute in platform.py
- Rendering of ``{env_name}`` in ``$PROMPT`` is now suppressed if
the ``$VIRTUAL_ENV_DISABLE_PROMPT`` environment variable is
defined and truthy.
- Rendering of ``{env_name}`` in ``$PROMPT`` is now overridden by
the value of ``str($VIRTUAL_ENV_PROMPT)`` if that environment variable
is defined and ``not None``. ``$VIRTUAL_ENV_DISABLE_PROMPT`` takes precedence
over ``$VIRTUAL_ENV_PROMPT``.
- A xontrib which adds support for `direnv <https://direnv.net/>`_
- Changed:
- ``env_name`` prompt field now looks up the pre- and post-fix characters,
rather than relying on hard-coded values.
- Some minor ``history show`` efficiency improvements.
- If we are on wsl, avoid to use xonsh_preexec_fn when pipe.
- Fixed:
- Made ``$PATH`` searching more robust to broken symlinks on Windows.
- undesirable SIGSTOP by putting in a SIGCONT
- Fixed issue with recursive aliases not being passes all keyword arguments
that are part of the callable alias spec. This allows commands like
``aliases['hsa'] = "history show all"; hsa | head`` to no longer fail
with strange errors.
- Authors:
- Anthony Scopatz
- Sagar Tewari
- Brian Skinn
- Yohei Tamura
- anatoly techtonik
- 74th
- Chad Kennedy
OBS-URL: https://build.opensuse.org/request/show/679043
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xonsh?expand=0&rev=13
- update to version 0.8.8
- Added:
- ``vox new`` has an added ``-p --interpreter`` flag for choosing the python interpreter to use for virtualenv creation
- The default Python intrepreter vox uses to create virtual environments can be set using the ``$VOX_DEFAULT_INTERPRETER`` environment variable.
- Changed:
- ``lib.ChainDB`` now resolves results to the type of the inputs if possible
- update to version 0.8.7
- Added:
- New xonsh syntax ``pf`` strings -- combining path strings with f-strings.
Usage:
.. code-block:: bash
gil@bad_cat ~ $ repos = 'github.com'
gil@bad_cat ~ $ pf"~/{repos}"
PosixPath('/home/gil/github.com')
gil@bad_cat ~ $ pf"{$HOME}"
PosixPath('/home/gil')
gil@bad_cat ~ $ pf"/home/${'US' + 'ER'}"
PosixPath('/home/gil')
- Fixed:
- Set ``ls`` to ``predict_true`` in ``default_threadable_predictors``. This prevents ``ls`` on OSX
from being flagged on OSX as unthreadable (incorrectly) because it relies on ``ncurses``.
- update to version 0.8.6
- Added:
- Doco about how to update xonsh and how to set and unset environment variables
- Fixed:
- Updated behavior of the ``cat`` coreutils function so that it properly
handles as vareity of cases such as:
* Exits after concatenating normal files which have a finite size
* Continues to run for special files which do not have a size,
such as ``/dev/random``
* Is interruptable in all cases with Crtl-C.
- Callable aliases were not properly raising a ``CalledProcessError`` when they
returned a non-zero exist status when ``$RAISE_SUBPROC_ERROR = True``. This has
been fixed.
- Fixed interpretation of color names with PTK2 and Pygments 2.3.1.
- update to version 0.8.5
- Added:
- Add alias to `base16 shell <https://github.com/chriskempson/base16-shell>`_
- Installation / Usage
1. To install use pip
.. code-block:: bash
python3 -m pip install xontrib-base16-shell
2. Add on ``~/.xonshrc``
.. code:: python
:number-lines:
$BASE16_SHELL = $HOME + "/.config/base16-shell/"
xontrib load base16_shell
3. See image
.. image:: https://raw.githubusercontent.com/ErickTucto/xontrib-base16-shell/master/docs/terminal.png
:width: 600px
:alt: terminal.png
- New ``DumbShell`` class that kicks in whenever ``$TERM == "dumb"``.
This usually happens in emacs. Currently, this class inherits from
the ``ReadlineShell`` but adds some light customization to make
sure that xonsh looks good in the resultant terminal emulator.
- Aliases from foreign shells (e.g. Bash) that are more than single expressions,
or contain sub-shell executions, are now evaluated and run in the foreign shell.
Previously, xonsh would attempt to translate the alias from sh-lang into
xonsh. These restrictions have been removed. For example, the following now
works:
.. code-block:: sh
$ source-bash 'alias eee="echo aaa \$(echo b)"'
$ eee
aaa b
- New ``ForeignShellBaseAlias``, ``ForeignShellFunctionAlias``, and
``ForeignShellExecAlias`` classes have been added which manage foreign shell
alias execution.
- Changed:
- String aliases will now first be checked to see if they contain sub-expressions
that require evaluations, such as ``@(expr)``, ``$[cmd]``, etc. If they do,
then an ``ExecAlias`` will be constructed, rather than a simple list-of-strs
substitutiuon alias being used. For example:
.. code-block:: sh
$ aliases['uuu'] = "echo ccc $(echo ddd)"
$ aliases['uuu']
ExecAlias('echo ccc $(echo ddd)\n', filename='<exec-alias:uuu>')
$ uuu
ccc ddd
- The ``parse_aliases()`` function now requires the shell name.
- ``ForeignShellFunctionAlias`` now inherits from ``ForeignShellBaseAlias``
rather than ``object``.
- Fixed:
- Fixed issues where the prompt-toolkit v2 shell would print an extra newline
after Python evaluations in interactive mode.
- update to version 0.8.4
- Added:
- Added the possibility of arbitrary paths to the help strings in ``vox activate`` and
``vox remove``; also updated the documentation accordingly.
- New ``xonsh.aliases.ExecAlias`` class enables multi-statement aliases.
- New ``xonsh.ast.isexpression()`` function will return a boolean of whether
code is a simple xonsh expression or not.
- Added top-level ``run-tests.xsh`` script for safely running the test suite.
- Changed:
- String aliases are no longer split with ``shlex.split()``, but instead use
``xonsh.lexer.Lexer.split()``.
- Update xonsh/prompt/cwd.py _collapsed_pwd to print 2 chars if a directory begins with "."
- test which determines whether a directory is a virtualenv
previously it used to check the existence of 'pyvenv.cfg'
now it checks if 'bin/python' is executable
- Fixed:
- Fixed issue with ``and`` & ``or`` being incorrectly tokenized in implicit
subprocesses. Auto-wrapping of certain subprocesses will now correctly work.
For example::
$ echo x-and-y
x-and-y
- Fix EOFError when press `control+d`
- fix no candidates if no permission files in PATH
- Fixed interpretation of color names with PTK2 and Pygments 2.3.
- Several ResourceWarnings: unclosed file in tests
- AttributeError crash when using --timings flag
- issue #2929
- update to version 0.8.3
- Added:
- Dociumentation paragrapgh about gow to run xonsh in Emacs shell
- Changed:
- Updated what pip requirements are needed to build the documnetaion
- ``$XONSH_TRACEBACK_LOGFILE`` now beside strings also accepts ``os.PathLike``
objects.
- Updated vended version of ``ply`` to 3.11
- Deprecation warnings now print from stacklevel 3.
- Fixed:
- Annotation assignment statements (e.g. ``x : int = 42``) are now supported.
- Fixed error output wording for fg and bg commands
- Flake8 errors
- xonsh can now properly parse import statements with trailing comma within
parentheses, e.g.::
from x import (y, z,)
- ResourceWarning: unclosed scandir iterator in imphooks.py
- Removed use of deprecated ``inspect.formatargspec()`` for ``inspect.signature()``
- ``Makefile`` directive that updates vended version of ``ply``
OBS-URL: https://build.opensuse.org/request/show/667871
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xonsh?expand=0&rev=12
- update to version 0.8.1
- Added:
- ``SubprocSpec`` has a new ``pipeline_index`` integer attribute that indicates
the commands position in a pipeline. For example, in
.. code-block:: sh
p = ![ls -l | grep x]
The ``ls`` command would have a pipeline index of 0
(``p.specs[0].pipeline_index == 0``) and ``grep`` would have a pipeline index
of 1 (``p.specs[1].pipeline_index == 1``). This may be usefule in callable
alaises which recieve the spec as an argument.
- Changed:
- Removed ``fish`` from list of supported foreign shells in the wizard.
- Circle CI config updated to use a pinned version of ``black`` (18.9b0)
- Pytest plugin now uses ``xonsh.main.setup()`` to setup test environment.
- Linux platform discovery will no longer use ``platform.linux_distribution()``
on Python >=3.6.6. due to pending deprecation warning.
- Updated Linux Guide as Xonsh is now available in Arch Linux official repositories.
- Fixed:
- Builtin dynamic proxies and deprecation warning proxies were not deleting
attributes and items properly.
- Fixed stdout/sdterr writing infinite recurssion error that would occur in
long pipelines of callable aliases.
- Fixed a bug which under very rare conditions could cause the shell
to die with PermissionError exception while sending SIGSTOP signal
to a child process.
- Fixed further raw string deprecation warnings thoughout the code base.
- update to version 0.8.0
- Added:
- changelog.sh is an internal script for generating changelog.
OBS-URL: https://build.opensuse.org/request/show/646484
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xonsh?expand=0&rev=10
- update to version 0.7.7:
- Added:
- A xontrib which adds support for autojump to xonsh
- Added new env-var ``XONSH_HISTORY_MATCH_ANYWHERE``. If set to ``True`` then
up-arrow history matching will match existing history entries with the search
term located anywhere, not just at the beginning of the line. Default value is
``False``
- Changed:
- Improved iteration over virtual environments in Vox.__iter__
- Fixed:
- Fix for ``Enter`` not returning from Control-R search buffer
- Fixed automatic wrapping of many subprocesses that spanned multiple lines via
line continuation characters with logical operators separating the commands.
For example, the following now works:
.. code-block:: sh
echo 'a' \
and echo 'b'
- Environment swapping would not properly reraise errors due to weird
Python name binding issue.
- update to version 0.7.6:
- Added:
- Callable aliases may now accept a ``stack`` argument. If they do, then the
stack, as computed from the aliases call site, is provided as a list of
``FrameInfo`` objects (as detailed in the standard library ``inspect``
module). Otherwise, the ``stack`` parameter is ``None``.
- ``SubprocSpec`` now has a ``stack`` attribute, for passing the call stack
to callable aliases. This defaults to ``None`` if the spec does not
need the stack. The ``resolve_stack()`` method computes the ``stack``
attribute.
- Changed:
- xonsh/environ.py
Exceptions are caught in the code executed under Env.swap()
- Fixed:
- Scripts are now cached by their realpath, not just abspath.
- Fixed a potential crash (``AssertionError: wrong color format``) on Python 3.5 and prompt_toolkit 1.
- The ``completer`` command now correctly finds completion functions
when nested inside of other functions.
- Fixed a crash when using the ``$XONSH_STDERR_PREFIX/POSTFIX`` with
prompt_toolkit and Pygments 2.2.
- update to version 0.7.5:
- Fixed:
- Recent command history in ptk2 prompt now returns most recently executed
commands first (as expected)
- Fixed a regression taat prevented the readline backend from beeing used. This
regression was caused by the new ansi-color names, which are incompatible with
pygments 2.2.
- update to version 0.7.4:
- Added:
- New ``xonsh-cat`` command line utility, which is a xonsh replacement
for the standard UNIX ``cat`` command.
- The new ``xonsh.xoreutils.cat.cat_main()`` enables the ``xonsh.xoreutils.cat``
module to be run as a command line utility.
- New ``CommandsCache.is_only_functional_alias()`` and
``CommandsCache.lazy_is_only_functional_alias()`` methods for determining if
if a command name is only implemented as a function, and thus has no
underlying binary command to execute.
- ``xonsh.xontribs.xontribs_load()`` is a new first-class API for loading
xontribs via a Python function.
- ``$COMPLETIONS_DISPLAY`` now supports readline-like behavior on
prompt-toolkit v2.
- Changed:
- The xonsh Jupyter kernel now will properly redirect the output of commands
such as ``git log``, ``man``, ``less`` and other paged commands to the client.
This is done by setting ``$PAGER = 'cat'``. If ``cat`` is not available
on the system, ``xonsh-cat`` is used instead.
- The ``setup()`` function for starting up a working xonsh has ``aliases``,
``xontribs``, and ``threadable_predictors`` as new additional keyword
arguments for customizing the loading of xonsh.
- Fixed:
- Fixed a bug with converting new PTK2 colors names to old names when using PTK1 or Jupyter
as the shell type.
- ``CommandsCache.locate_binary()`` will now properly return None when
``ignore_alias=False`` and the command is only a functional alias,
such as with ``cd``. Previously, it would return the name of the
command.
- Fixed issue with ``$COMPLETIONS_DISPLAY`` raising an error on
prompt-toolkit v2 when the value was not set to ``multi``.
- ValueError when executing ``vox list``
OBS-URL: https://build.opensuse.org/request/show/637174
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xonsh?expand=0&rev=9
- update to version 0.6.6:
* Added:
* A multipurpose add method to EnvPath.
* Added ``pygments-cache`` project in order to reduce startup time.
* Changed:
* built_ins.py, corrected a typo.
* test/test_news.py
It now uses regex to verify the format of rst files
* Mercurial (``hg``) will no longer run in a threadable subprocess when
it is run in interactive mode.
* Fixed:
* issue 2313
- update to version 0.6.5:
* Added:
* Wizard ``FileInsterter`` node class now has ``dumps()`` method for
converting a mapping to a string to insert in a file.
* Fixed:
* Fixed issue with ``xonfig wizard`` writer failing to write valid run control
files for environment variables that are containter types. In particular,
the storage of ``$XONSH_HISTORY_SIZE`` has been fixed.
OBS-URL: https://build.opensuse.org/request/show/617152
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xonsh?expand=0&rev=6
- update to version 0.6.4:
* Changed:
* Error message improved for sourcing foreign shells, when file cannot be found
or there is a syntax error.
* Fixed:
* Fixed issues with readline completer tab completing entries
with spaces.
* Fixed ``xonsh.tools.columnize()`` bug the prevented single-row
input from being columnized correctly.
* Now honor ASYNC and AWAIT as keywords in tokenizer on
Python 3.7.
OBS-URL: https://build.opensuse.org/request/show/611051
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xonsh?expand=0&rev=5
- update to version 0.6.3:
* Added:
* Docs for using ``@(<expr>)`` as a way to run commands and a gotcha about
list of strings vs single string expressions.
* Ubuntu versions which xonsh is packaged for (with xonsh versions)
* Changed:
* When reporting errors without a traceback (i.e. ``$XONSH_SHOW_TRACEBACK = False``) and the error is a ``XonshError``
the exception type is not longer printed.
* ``CommandPipeline.proc`` may now be ``None``, to accomodate when the process
fails to even start (i.e. a missing command or incorrect permisions).
* Fixed:
* The ``curl`` command will now be run in a thread, which prevents documents that
do not end in a newline from writing over the next prompt and vice versa.
* Fix bug on Windows when ``PATHEXT`` environment variable did not exist.
This also fixes building the xonsh documentation on Windows.
* Fixed a bug in the `free_cwd <http://xon.sh/xontribs.html#free-cwd>`__ Windows Xontrib, which caused the prompt to error if the current directory is
deleted/renamed from an other process.
* Fixed issue with ``$XONSH_SHOW_TRACEBACK`` not being respected in subprocess
mode when the command could not be found or had incorrect permissions.
OBS-URL: https://build.opensuse.org/request/show/606300
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xonsh?expand=0&rev=4
- update to version 0.6.2:
* Added:
* Release tarballs now include licenses and minimal documentation for xonsh and ply
* Wizard now has a FileInserter node that allows blocks to be inserted and replaced inside of a file. This adheres to conversion rules fordumping as provided on this node.
* New xonsh.wizard.StateVisitor.flatten() method for flattening the current state.
* Changed:
* The xonsh startup wizard will only be triggered if no xonshrc files exist and the file ~/.local/config/xonsh/no-wizard is not present.
* The xonfig wizard command will now run write out to the xonshrc file.
* Wizard nodes Save and Load had their names changed to SaveJSON and LoadJSON.
* Removed:
* Static configuration is dead (config.json), long live run control (xonshrc)!
* The following evironment variables have been removed as they are no longer needed: $LOADED_CONFIG and $XONSHCONFIG.
* Many support functions for static configuration have also been removed.
* Fixed:
* Files starting with # are auto-escaped by TAB completion
- update to version 0.6.1:
* Added:
* Support for MSYS2.
* New ``xonsh.main.setup()`` function for starting up xonsh in 3rd party
packages.
* Changed:
* Updated CircleCI to use circle version 2.0
* Replaced StopIteration with return in CommandPipeline.iterraw.
* Xonsh run control now also looks for the XDG-compliant file
``~/.config/xonsh/rc.xsh`` at startup.
* Fixed:
* Clean out ``$LINES`` and ``$COLUMNS`` if set, preventing some programs from drawing weirdly
* cat from xoreutils now outputs in configured encoding
* Fixed hanging issue with pipelines whose middle processes exit before the
first or last process.
* Fixed issue where xonsh would deduplicate spaces from bash autocompletions.
* Fixed failing redirections from stderr to stdout when the command
being executed was a callable alias.
* Ensure that the ``free_cwd`` contrib can only be active on pure Windows.
* Made an exceptional case in ``iglobpath()`` more robust when Python globbing
fails for due to strange scrandir issue.
* Unexpected process suspension on Cygwin and MSYS2.
* ``$XONSH_APPEND_NEWLINE`` will now default to True when in interactive mode.
* Fixed issue with uncalled lambdas being run in subproc mode.
* Lambda nodes not have proper line and column numbers in AST.
* Properly throw ``SyntaxError`` when no kwargs are defined
in a kwarg-only function. This used to throw a
``TypeError: 'NoneType' object is not iterable``.
* Addressed issue where encoding and errors were None when teeing output.
* Commands like ``git c`` would complete to ``git 'checkout '`` because git adds an extra space
to the end of the completion, which was being captured in the completion. Xonsh now fixes the git issue
while retaining all whitespace when there is other internal whitespace.
OBS-URL: https://build.opensuse.org/request/show/603097
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xonsh?expand=0&rev=3