Now
MAIN commitmail json YAML
Updated net/gh to 2.39.1
MAIN commitmail json YAML
pkgsrc/net/gh/Makefile@1.69
/
diff
pkgsrc/net/gh/distinfo@1.34 / diff
pkgsrc/net/gh/go-modules.mk@1.28 / diff
pkgsrc/net/gh/distinfo@1.34 / diff
pkgsrc/net/gh/go-modules.mk@1.28 / diff
net/gh: update to 2.39.1
GitHub CLI 2.39.1
-----------------
- Fix executable location
- Query project item status field properly
GitHub CLI 2.39.0
-----------------
- release create: Fix --latest flag behavior when creating release wth assets
- issue/pr: Include project item status when exporting issues and pull requests
- codespace: Resolve race condition in codespaces connection
- release download: Improve usage documentation
- run view: Simplify annotation fetch error handling
- api: Set default Accept header when one is not specified
- build(deps): bump github.com/henvic/httpretty from 0.1.2 to 0.1.3
GitHub CLI 2.38.0
-----------------
- extension install no longer errors unhelpfully if the extension is already
installed
- All tables now have headers
- project commands have a clearer error message when no owner can be resolved
- workflow run now presents a select for choice workflow input types
- codespace create no longer polls for additional codespace permissions
unnecessarily
- go install now works with the removal of our crypto fork
GitHub CLI 2.37.0
-----------------
**Breaking Changes**
- project: Remove template field from --format=json output by @samcoe in #8160
- In v2.34.0 we introduced the template field when outputing projects to
JSON, unfortunately we forgot to take into account our GHES users.
This field does not exist on GHES 3.8 and older. Including this field
in our queries and output broke nearly all the project commands for users
targeting these older versions of GHES. As we try our hardest to keep
gh compatible with all non-deprecated GHES versions this was a pretty
big mistake. In order to fix it we are reverting the querying and
exporting of the template field for project commands. We apologize for
the inconvenience this may cause, and plan to bring back this field
once GHES 3.8 gets deprecated.
- repo create: Allow --disable-issues and --template flags to be used together
- repo create: Allow --homepage and --template flag to be used together
- repo create: Allow creating repositories from templates in interactive mode
- repo fork: Set default repo when forking repo
- codespace: Migrate all Codespaces operations from Live Share to Dev Tunnels
- codespace create: Poll permission acceptance endpoint on codespace creation
- pr create: Remove duplicates targets for push survey
- pr create: Fix typo in documentation
- browse: Do not use relative paths when --repo flag is used
GitHub CLI 2.36.0
-----------------
- codespace: Hint adding codespace scope when not logged in
- codespace ports: Forward codespace ports over Dev Tunnels
- cache delete: Percent-encode keys
- gpg-key delete, run watch: Return HTTP errors properly
- pr checks: Show cancelled checks
- cache list: Add JSON exporting support
- auth: Fix startup panic when logged out
- secret list, deploy-key list: Support standard output format flags
- pr create: Update the docs on flag --fill
- run view: Use attempt input when fetching jobs
- project item-edit: New clear flag to remove item field value
- build(deps): Bump mislav/bump-homebrew-formula-action from 2 to 3
- Update triage documentation with link to unlabeled open issues
GitHub CLI 2.35.0
-----------------
- gh alias delete now supports the --all flag
- gh release delete now supports the --cleanup-tag flag
- gh release create now supports the --notes-from-tag flag
- Clarified gh repo list --fork and --source behavior for orgs
- gh cs create now shows the full permissions URL
- Documented when gh auth login falls back to using insecure storage
- Bumped goreleaser/goreleaser-action from 4 to 5
GitHub CLI 2.34.0
-----------------
- api: Add --verbose flag by @JunNishimura in #7826
- config clear-cache: New command to clear the cli cache
- workflow list: Add --json, --jq and --template flags
- project mark-template: New command to control project template options
- docs: Fix Nix/NixOS install docs
- repo rename: Properly rename remote for GHES hosts
- pr checks: Return different exit code for PENDING vs FAILED
- repo create: Execute clone when readme option is enabled
- repo create: Allow --disable-wiki flag with --template flag
- auth status: Reword token invalid message
- status: Show status even if a comment 404s
- run view: Fetch all run jobs
- Use go-gh prompter package
- Add formula-path to homebrew-bump step
- build(deps): bump actions/checkout from 3 to 4
GitHub CLI 2.33.0
-----------------
- Delete local branch more often when merging PR
- Do not allow issue and pr templates to be symlinks
- release create: Trim spaces on tag name
- Use filepath.Base to sanitize path for archive downloads
- Codespaces: Use the host name from the logged in server for commands
- Update CONTRIBUTING.md
- Allow --org parameter in lieu of a repo context for rulesets, add
current_user_can_bypass to rs view
- add missing ls aliases to list subcommands
- port repo edit prompts
- add clobber flag to alias set
- Remove GHE handling for workflow
- Upgrade to Go 1.21
- switch to prompter in workflow commands
- update more prompts
- switch to prompter in pr shared code
- THE FINAL PROMPTDOWN
- codespace: Handle HTTP request retry interruption
GitHub CLI 2.39.1
-----------------
- Fix executable location
- Query project item status field properly
GitHub CLI 2.39.0
-----------------
- release create: Fix --latest flag behavior when creating release wth assets
- issue/pr: Include project item status when exporting issues and pull requests
- codespace: Resolve race condition in codespaces connection
- release download: Improve usage documentation
- run view: Simplify annotation fetch error handling
- api: Set default Accept header when one is not specified
- build(deps): bump github.com/henvic/httpretty from 0.1.2 to 0.1.3
GitHub CLI 2.38.0
-----------------
- extension install no longer errors unhelpfully if the extension is already
installed
- All tables now have headers
- project commands have a clearer error message when no owner can be resolved
- workflow run now presents a select for choice workflow input types
- codespace create no longer polls for additional codespace permissions
unnecessarily
- go install now works with the removal of our crypto fork
GitHub CLI 2.37.0
-----------------
**Breaking Changes**
- project: Remove template field from --format=json output by @samcoe in #8160
- In v2.34.0 we introduced the template field when outputing projects to
JSON, unfortunately we forgot to take into account our GHES users.
This field does not exist on GHES 3.8 and older. Including this field
in our queries and output broke nearly all the project commands for users
targeting these older versions of GHES. As we try our hardest to keep
gh compatible with all non-deprecated GHES versions this was a pretty
big mistake. In order to fix it we are reverting the querying and
exporting of the template field for project commands. We apologize for
the inconvenience this may cause, and plan to bring back this field
once GHES 3.8 gets deprecated.
- repo create: Allow --disable-issues and --template flags to be used together
- repo create: Allow --homepage and --template flag to be used together
- repo create: Allow creating repositories from templates in interactive mode
- repo fork: Set default repo when forking repo
- codespace: Migrate all Codespaces operations from Live Share to Dev Tunnels
- codespace create: Poll permission acceptance endpoint on codespace creation
- pr create: Remove duplicates targets for push survey
- pr create: Fix typo in documentation
- browse: Do not use relative paths when --repo flag is used
GitHub CLI 2.36.0
-----------------
- codespace: Hint adding codespace scope when not logged in
- codespace ports: Forward codespace ports over Dev Tunnels
- cache delete: Percent-encode keys
- gpg-key delete, run watch: Return HTTP errors properly
- pr checks: Show cancelled checks
- cache list: Add JSON exporting support
- auth: Fix startup panic when logged out
- secret list, deploy-key list: Support standard output format flags
- pr create: Update the docs on flag --fill
- run view: Use attempt input when fetching jobs
- project item-edit: New clear flag to remove item field value
- build(deps): Bump mislav/bump-homebrew-formula-action from 2 to 3
- Update triage documentation with link to unlabeled open issues
GitHub CLI 2.35.0
-----------------
- gh alias delete now supports the --all flag
- gh release delete now supports the --cleanup-tag flag
- gh release create now supports the --notes-from-tag flag
- Clarified gh repo list --fork and --source behavior for orgs
- gh cs create now shows the full permissions URL
- Documented when gh auth login falls back to using insecure storage
- Bumped goreleaser/goreleaser-action from 4 to 5
GitHub CLI 2.34.0
-----------------
- api: Add --verbose flag by @JunNishimura in #7826
- config clear-cache: New command to clear the cli cache
- workflow list: Add --json, --jq and --template flags
- project mark-template: New command to control project template options
- docs: Fix Nix/NixOS install docs
- repo rename: Properly rename remote for GHES hosts
- pr checks: Return different exit code for PENDING vs FAILED
- repo create: Execute clone when readme option is enabled
- repo create: Allow --disable-wiki flag with --template flag
- auth status: Reword token invalid message
- status: Show status even if a comment 404s
- run view: Fetch all run jobs
- Use go-gh prompter package
- Add formula-path to homebrew-bump step
- build(deps): bump actions/checkout from 3 to 4
GitHub CLI 2.33.0
-----------------
- Delete local branch more often when merging PR
- Do not allow issue and pr templates to be symlinks
- release create: Trim spaces on tag name
- Use filepath.Base to sanitize path for archive downloads
- Codespaces: Use the host name from the logged in server for commands
- Update CONTRIBUTING.md
- Allow --org parameter in lieu of a repo context for rulesets, add
current_user_can_bypass to rs view
- add missing ls aliases to list subcommands
- port repo edit prompts
- add clobber flag to alias set
- Remove GHE handling for workflow
- Upgrade to Go 1.21
- switch to prompter in workflow commands
- update more prompts
- switch to prompter in pr shared code
- THE FINAL PROMPTDOWN
- codespace: Handle HTTP request retry interruption
MAIN commitmail json YAML
doc: fix fonts/koruri-ttf commit date.
MAIN commitmail json YAML
doc: Updated fonts/koruri-ttf to 20210720
MAIN commitmail json YAML
pkgsrc/fonts/koruri-ttf/Makefile@1.16
/
diff
pkgsrc/fonts/koruri-ttf/PLIST@1.5 / diff
pkgsrc/fonts/koruri-ttf/distinfo@1.13 / diff
pkgsrc/fonts/koruri-ttf/PLIST@1.5 / diff
pkgsrc/fonts/koruri-ttf/distinfo@1.13 / diff
koruri-ttf: Update to 20210720
* M+ TESTFLIGHT 063 -> 063a
* Remove gridfit to improve readability on Windows
* Reduce unused files
* M+ TESTFLIGHT 063 -> 063a
* Remove gridfit to improve readability on Windows
* Reduce unused files
MAIN commitmail json YAML
Add java-jna
MAIN commitmail json YAML
Added devel/java-jna version 5.2.0
MAIN commitmail json YAML
pkgsrc/devel/java-jna/DESCR@1.1
/
diff
pkgsrc/devel/java-jna/Makefile@1.1 / diff
pkgsrc/devel/java-jna/PLIST@1.1 / diff
pkgsrc/devel/java-jna/distinfo@1.1 / diff
pkgsrc/devel/java-jna/patches/patch-build.xml@1.1 / diff
pkgsrc/devel/java-jna/patches/patch-native-libffi-configure.ac@1.1 / diff
pkgsrc/devel/java-jna/Makefile@1.1 / diff
pkgsrc/devel/java-jna/PLIST@1.1 / diff
pkgsrc/devel/java-jna/distinfo@1.1 / diff
pkgsrc/devel/java-jna/patches/patch-build.xml@1.1 / diff
pkgsrc/devel/java-jna/patches/patch-native-libffi-configure.ac@1.1 / diff
PR/54097: Added Java Native Access 5.2.0 as devel/java-jna.
JNA provides Java programs easy access to native shared libraries without
writing anything but Java code - no JNI or native code is required.
This functionality is comparable to Windows' Platform/Invoke and Python's
ctypes.
JNA provides Java programs easy access to native shared libraries without
writing anything but Java code - no JNI or native code is required.
This functionality is comparable to Windows' Platform/Invoke and Python's
ctypes.
MAIN commitmail json YAML
Updated shells/xonsh to 0.8.8
MAIN commitmail json YAML
pkgsrc/shells/xonsh/Makefile@1.3
/
diff
pkgsrc/shells/xonsh/PLIST@1.2 / diff
pkgsrc/shells/xonsh/distinfo@1.2 / diff
pkgsrc/shells/xonsh/patches/patch-news_netbsd.rst deleted
pkgsrc/shells/xonsh/patches/patch-xonsh_aliases.py deleted
pkgsrc/shells/xonsh/patches/patch-xonsh_platform.py deleted
pkgsrc/shells/xonsh/PLIST@1.2 / diff
pkgsrc/shells/xonsh/distinfo@1.2 / diff
pkgsrc/shells/xonsh/patches/patch-news_netbsd.rst deleted
pkgsrc/shells/xonsh/patches/patch-xonsh_aliases.py deleted
pkgsrc/shells/xonsh/patches/patch-xonsh_platform.py deleted
PR/53841: Update shells/xonsh to 0.8.8.
====================
Xonsh Change Log
====================
v0.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
v0.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``.
v0.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.
v0.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.
v0.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
v0.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``
v0.8.2
====================
**Changed:**
* Now there is only a single instance of ``string.Formatter()`` in the
code base, which is called ``xonsh.tools.FORMATTER``.
**Fixed:**
* f-strings (``f"{expr}"``) are now fully capable of executing xonsh expressions.
The one exception to this is that ``![cmd]`` and ``!(cmd)`` don't work because
the ``!`` character interferes with Python string formatting. If you need to
run subprocesses inside of f-strings, use ``$[cmd]`` and ``$(cmd)`` instead.
* Fixed occasional "no attribute 'settitle' error"
v0.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.
v0.8.0
====================
**Added:**
* Windows CI jobs on Azure Pipelines
* The ``cryptop`` command will no longer have its output captured
by default.
* Added new env-var ``PTK_STYLE_OVERRIDES``. The variable is
a dictionary containing custom prompt_toolkit style definitions.
For instance::
$PTK_STYLE_OVERRIDES['completion-menu'] = 'bg:#333333 #EEEEEE'
will provide for more visually pleasing completion menu style whereas::
$PTK_STYLE_OVERRIDES['bottom-toolbar'] = 'noreverse'
will prevent prompt_toolkit from inverting the bottom toolbar colors
(useful for powerline extension users)
Note: This only works with prompt_toolkit 2 prompter.
**Changed:**
* All ``__xonsh_*__`` builtins have been migrated to a ``XonshSession`` instance at
``__xonsh__``. E.g. ``__xonsh_env__`` is now ``__xonsh__.env``.
* Other xonsh-specific builtins (such as ``XonshError``) have been proxied to
the ``__xonsh__`` session object as well.
**Deprecated:**
* All ``__xonsh_*__`` builtins are deprected. Instead, the corresponding
``__xonsh__.*`` accessor should be used. The existing ``__xonsh_*__`` accessors
still work, but issue annoying warnings.
**Fixed:**
* Fixed deprecation warnings from unallowed escape sequences as well as importing abstract base classes directly from ``collections``
* Fix for string index error in stripped prefix
* bash_completions to include special characters in lprefix
Previously, glob expansion characters would not be included in lprefix for replacement
.. code-block:: sh
$ touch /tmp/abc
$ python
>>> from bash_completion import bash_completions
>>>
>>> def get_completions(line):
... split = line.split()
... if len(split) > 1 and not line.endswith(' '):
... prefix = split[-1]
... begidx = len(line.rsplit(prefix)[0])
... else:
... prefix = ''
... begidx = len(line)
... endidx = len(line)
... return bash_completions(prefix, line, begidx, endidx)
...
>>> get_completions('ls /tmp/a*')
({'/tmp/abc '}, 0)
Now, lprefix begins at the first special character:
.. code-block:: sh
$ python
>>> from bash_completion import bash_completions
>>>
>>> def get_completions(line):
... split = line.split()
... if len(split) > 1 and not line.endswith(' '):
... prefix = split[-1]
... begidx = len(line.rsplit(prefix)[0])
... else:
... prefix = ''
... begidx = len(line)
... endidx = len(line)
... return bash_completions(prefix, line, begidx, endidx)
...
>>> get_completions('ls /tmp/a*')
({'/tmp/abc '}, 7)
* The ``xonsh.main.setup()`` function now correctly passes the
``shell_type`` argument to the shell instance.
* try_subproc_toks now works for subprocs with trailing and leading whitespace
Previously, non-greedy wrapping of commands would fail if they had leading and trailing whitespace:
.. code-block:: sh
$ true && false || echo a
xonsh: For full traceback set: $XONSH_SHOW_TRACEBACK = True
NameError: name 'false' is not defined
$ echo; echo && echo a
xonsh: For full traceback set: $XONSH_SHOW_TRACEBACK = True
NameError: name 'echo' is not defined
Now, the commands are parsed as expected:
.. code-block:: sh
$ true && false || echo a
a
$ echo; echo && echo a
a
v0.7.10
====================
**Added:**
* 'off' can be passed as falsy value to all flags accepting boolean argument.
- DragonFly BSD support
* Format strings (f-strings) now allow environment variables to be looked up.
For example, ``f"{$HOME}"`` will yield ``"/home/user"``. Note that this will
look up and fill in the ``detype()``-ed version of the environment variable,
i.e. it's native string representation.
**Changed:**
* Running ``aurman`` command will now be predicted to be unthreaded by default.
**Fixed:**
* The xonsh ``xonfig wizard`` would crash if an unknown foreign shell was
provided. This has been fixed.
* The ``hg split`` command will now predict as unthreadable.
* Fixed path completer crash on attempted f-string completion
v0.7.9
====================
**Added:**
* The python-mode ``@(expr)`` syntax may now be used inside of subprocess
arguments, not just as a stand-alone argument. For example:
.. code-block:: sh
$ x = 'hello'
$ echo /path/to/@(x)
/path/to/hello
This syntax will even properly expand to the outer product if the ``expr``
is a list (or other non-string iterable) of values:
.. code-block:: sh
$ echo /path/to/@(['hello', 'world'])
/path/to/hello /path/to/world
$ echo @(['a', 'b']):@('x', 'y')
a:x a:y b:x b:y
Previously this was not possible.
* New ``$DOTGLOB`` environment variable enables globs to match
"hidden" files which start with a literal ``.``. Set this
variable to ``True`` to get this matching behavior.
Cooresponding API changes have been made to
``xonsh.tools.globpath()`` and ``xonsh.tools.iglobpath()``
* New environment variable ``$FOREIGN_ALIASES_SUPPRESS_SKIP_MESSAGE``
enables the removal of skipping foreign alias messages.
* New ``--suppress-skip-message`` command line option for skipping
foreign alias messages when sourcing foreign shells.
**Fixed:**
* In Bash completions, if there are no files to source, a ``set()`` will
no longer be inserted into the completion script.
* Fixed issue with TAB completion in readline not replacing values
with spaces properly when the prefix was unquoted.
v0.7.8
====================
**Added:**
* ``xonsh.lib.collections.ChainDB``, a chain map which merges mergable fields
**Fixed:**
* Pass all params to voxapi.create
* PTK tab-completion now auto-accepts completion if only one option is present
(note that fix is only for PTK2)
v0.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.
v0.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.
v0.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.
v0.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``
v0.7.3
====================
**Added:**
* Add the ``PROMPT_TOOLKIT_COLOR_DEPTH`` environment to xonsh default environment.
Possible values are ``DEPTH_1_BIT``/``MONOCHROME``,
``DEPTH_4_BIT``/``ANSI_COLORS_ONLY``, ``DEPTH_8_BIT``/``DEFAULT``, or ``DEPTH_24_BIT``/``TRUE_COLOR``.
Note: not all terminals support all color depths.
* New way to fix unreadable default terminal colors on Windows 10. Windows 10
now supports true color in the terminal, so if prompt toolkit 2 is
installed Xonsh will use a style with hard coded colors instead of the
default terminal colors. This will give the same color experience as on linux an mac.
The behaviour can be disabled with ``$INTENSIFY_COLORS_ON_WIN``
environment variable.
* New ``JupyterShell`` for interactive interfacing with Jupyter.
**Changed:**
* All ansicolor names used in styles have ben updated to the color names used by prompt_toolkit 2.
The new names are are much easier to understand
(e.g. ``ansicyan``/``ansibrightcyan`` vs. the old ``#ansiteal``/``#ansiturquoise``). The names are automatically
translated back when using prompt_toolkit 1.
**Removed:**
* Removed support for pygments < 2.2.
**Fixed:**
* New ansi-color names fixes the problem with darker colors using prompt_toolkit 2 on windows.
* Fixed a problem with the color styles on prompt toolkit 2. The default pygment
style is no longer merged into style selected in xonsh.
* The JupyterKernel has been fixed from a rather broken state.
v0.7.2
====================
**Added:**
* ``history show`` builtin now supports optional ``-0`` parameter that switches
the output to null-delimited. Useful for piping history to external filters.
**Fixed:**
* If exception is raised in indir context manager, return to original directory
* Fixed issue that autocomplete menu does not display
at terminal's maximum height
v0.7.1
====================
**Added:**
* Added feature to aliases.
* ``xonsh.lib.os.rmtree()`` an rmtree which works on windows properly (even with
git)
**Changed:**
* set default value of ``$AUTO_SUGGEST_IN_COMPLETIONS=False``
* Use the ``pygments_cache.get_all_styles()`` function instead of
interacting directly with pygments.
**Fixed:**
* Fixed issue with ``$ARG<N>`` varaibles not being passed to subprocesses correctly.
* Fixed issue with multiline string inside of ``@(expr)`` in
unwrapped subprocesses. For example, the following now works::
echo @("""hello
mom""")
* ``CommandPipeline.output`` now does properly lazy, non-blocking creation of
output string. ``CommandPipeline.out`` remains blocking.
* Fix regression in ``INTENSIFY_COLORS_ON_WIN`` functionality due to prompt_toolkit 2 update.
* Fixed issue that can't insert quotation marks and double quotes
for completion.
* Fixed issue with ``SyntaxErrors`` being reported on the wrong line
when a block of code contained multiple implicit subprocesses.
* ``prompt_toolkit >= 2`` will start up even if Pygments isn't present
* Fixed a regression with ``xonfig styles`` reporting ``AttributeError: module 'pygments' has no attribute 'styles'``
* ptk dependent xontribs (that use custom keybindings) now work with both ptk1
and ptk2
* Fixed async tokenizing issue on Python v3.7.
v0.7.0
====================
**Added:**
* Added a hook for printing a spcial display method on an object.
* Support for ``prompt_toolkit 2.0``
* The ``--shell-type`` (``$SHELL_TYPE``) may now be specified using
shortcuts, such as ``rl`` for ``readline`` and ``ptk2`` for
``prompt_toolkit2``. See ``xonsh --help`` for a full listing
of available aliases.
**Fixed:**
- Restored AUGASSIGN_OPS definition, which was inadvertently removed.
v0.6.10
====================
**Added:**
* ``xonsh.lib.subprocess.check_output`` as a ``check_output`` drop in
**Fixed:**
* ``xonsh.lib.subprocess.run`` doesn't change dirs unless asked
v0.6.9
====================
**Added:**
* New xonsh standard library ``xonsh.lib`` subpackage
* ``xonsh.lib.os.indir`` a context manager for temporarily entering into a directory
* ``xonsh.lib.subprocess.run`` and ``xonsh.lib.subprocess.check_call``
subprocess stubs using ``xonsh`` as the backend
**Fixed:**
* update xoreutils._which.which() for python 3.x support.
* Fixed issue with incorrect strip lengths for prefixes with quotes in them
* Fixed bash script to also consider leading double quotes and not just single
quotes
* Launching xonsh with prompt_toolkit version 2.x no longer fails, and instead fallsback to readline shell. This is a patch for until prompt_toolkit 2.x support is fully implemented. See PR #2570
v0.6.8
====================
**Fixed:**
* completions relative to ``CDPATH`` only trigger when used with ``cd``
* Import of ``ctypes.util`` is now explictly performed, as needed.
Python v3.7 no longer imports this module along with ``ctypes``.
* Fixed issue with pygments-cache not properly generating a cache the first
time when using prompt-toolkit. This was due to a lingering lazy import
of ``pkg_resources`` that has been removed.
* Removed duplicate ``pip`` completer
* ``bash_completion`` no longer returns invalid prefix lengths for directories
containing escape file names
* Fixed error when using redirection (e.g., >) on Windows.
v0.6.7
====================
**Changed:**
* Xonsh live example has been re-added back to the documentation.
**Fixed:**
* Fixed issue where xonsh would fail to properly return the terminal prompt
(and eat up 100% CPU) after a failed subprocess command in interactive mode
if ``$RAISE_SUBPROC_ERROR = True``.
* ``xonsh.tokenize.tok_name`` no longer mutates the standard library ``tokenize.tok_name``.
A copy is made on import instead.
v0.6.6
====================
**Added:**
* A multipurpose add method to EnvPath. For example:
.. code-block:: xonshcon
$ $PATH
EnvPath(
['/usr/bin', '/usr/local/bin', '/bin']
)
$ $PATH.add('~/.local/bin', front=True); $PATH
EnvPath(
['/home/user/.local/bin', '/usr/bin', '/usr/local/bin', '/bin']
)
$ $PATH.add('/usr/bin', front=True, replace=True); $PATH
EnvPath(
['/usr/bin', '/home/user/.local/bin', '/usr/local/bin', '/bin']
)
* 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
v0.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.
v0.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.
v0.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.
v0.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
v0.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.
v0.6.0
====================
**Added:**
* Added an alias command, matching bash's implementation, available as part of bashisms.
* New ``$AUTO_SUGGEST_IN_COMPLETIONS`` environment variable that enables/disables
whether the auto-suggestion result appears in the tab completions.
* Added ``__add__()`` and ``__radd__()`` methods to ``EnvPath``.
* Xonsh now supports f-strings, as in Python v3.6+.
* Added ``ipython`` as unthreadable in command cache threadabilty predictors.
* Added ``whole_word_jumping`` xontrib
* Added ``$XONSH_APPEND_NEWLINE`` environment variable
* Support for PEP 515: Underscores in Numeric Literals
* ``xonsh.color_tools.make_palette()``
Simple rename of the pre-existing
``xonsh.color_tools.make_pallete()`` function.
* ``xonsh.tools.decorator()`` function/method decorator.
This allows for an API function to be annotated with a
decorator that documents deprecation, while also tying in
functionality that will warn a user that the function has
been deprecated, and, raise an ``AssertionError`` if the
function has passed its expiry date.
* New xontrib ``schedule`` (Xonsh Task Scheduler)
**Changed:**
* ``on_pre_prompt`` is now fired before prompt calculations are made, allowing modifications to the prompt.
* ``emacsclient`` will now return false in the threadable predictors.
* Improved the autopair behavior to match that of popular code editors.
* Moved the lazy ``pkg_resources`` package back to its original
place. The will hopefully address some of the slowdown issues
experiances on some platforms.
* When xonsh is used to run an ``xsh`` script, the ``xonshrc`` is not loaded
* Change in the behavior of the default predictor with binary analysis. The pattern ``libgpm`` is use, assuming when ``gpm`` is used the program is not threadable. This change solves issues with programs as ``links``.
* Error messages added to the ``source`` command if it is used with a language
that is not xonsh or Python.
**Deprecated:**
* ``xonsh.color_tools.make_pallette()``
Deprecated in release 0.5.10 and will be removed in release 0.6.0.
**Fixed:**
* Now f-strings can be used inside @() without explicit enclosing command in ![]
* Fix for ``x, y, *z = ...`` unpacking.
* Git branch detection now correctly passes the environment down to the subprocess
call. This allows for branch detection when git is installed into a non-standard
location.
* Escape regex characters in ``path_complete`` to avoid regex parsing errors for
certain combinations of characters in path completer
* gistatus: Fixed hash not being shown when in detaced HEAD and there are no tags
* Fix branch colorization when ``git`` or ``hg`` are aliases.
* Fixed leftover ``.git/index.lock`` in ``gitstatus``
* Made JSON history loading more robust to corrupt files.
* Starting a new command with an open parentheses will no longer
throw a traceback when ``$UPDATE_COMPLETIONS_ON_KEYPRESS`` is
``True``.
* Automatically wrapping subprocess calls would sometimes include
semincolons and other line-ending tokens, rather than stopping at them.
This has been fixed.
* Numerous spelling errors in documentation, docstrings/comments, text
strings and local variable names.
* Spelling error in the ``xonsh.color_tools.make_pallete()`` public
function declaration. This was fixed by renaming the function to
``xonsh.color_tools.make_palette()`` while maintaining a binding
of ``make_pallete()`` to the new ``make_palette()`` in case users
are already used to this API.
* Fixed issue with starting triple quote strings being run as a command.
* Fixed a problem with escaping charet (^) character for cmd.exe in the source-cmd function.
* ``EOF in multi-line statement`` errors were misreported as being on line 0.
Now they are correctly reported as being on the last line of the file.
v0.5.12
====================
**Fixed:**
* Fixed ``release.xsh`` to prevent it from dirtying the repo on release and
leading to an unwanted ``.dev`` suffix on the version number
v0.5.11
====================
**Added:**
* ``release.xsh`` creates a github release with the merged news entries as the
release body
**Fixed:**
* ``xonfig`` now displays the proper value for "on linux"
v0.5.10
====================
**Added:**
* Added ``xclip`` and ``repo`` to default threadable predictors (Issues #2355
and #2348)
* Pretty printing of the $PATH variable
* Add "fzf-widgets" xontrib which provides fuzzy search productivity widgets
with on custom keybindings to xontrib list.
* New ``free_cwd`` xontrib for Windows, which prevent the current directory from being locked when the prompt is shown.
This allows the other programs or Windows explorer to delete the current or parent directory. This is accomplished by
resetting the CWD to the users home directory temporarily while the prompt is displayed. The directory is still locked
while any commands are processed so xonsh still can't remove it own working directory.
**Changed:**
* Codecov threshold to 2%
**Removed:**
* On Windows environments variables in wrapped like``%foo%`` are no longer expanded automatically.
**Fixed:**
* Fixed the ``--rc`` option so it now runs xonsh with the specified rc file
* ``@$`` operator now functions properly when returned command is an alias
* Correct line continuation would not work on Windows if the line continuations were used
in the ``xonshrc`` file.
* Fixed a regression in the Windows ``sudo`` command, that allows users to run elevated commands in xonsh.
* Fix echo command from xoreutils.
* Fixed a bug on Windows which meant xonsh wasn't using PATH environment variable but instead relying on a default
value from the windows registry.
v0.5.9
====================
**Added:**
* Add ``Alt .`` keybinding to ``bashisms-xontrib`` to insert last argument of
previous command into current buffer
**Fixed:**
* Fix crash when openSSH version of bash is on PATH on Windows.
* Added missing ensurers to make sure that ``bool`` env_vars are bools and
``int`` env_vars are integers:
* ``DIRSTACK_SIZE``
* ``EXPAND_ENV_VARS``
* ``PUSHD_MINUS``
* ``PUSHD_SILENT``
* ``SUGGEST_COMMANDS``
* ``SUGGEST_MAX_NUM``
* ``SUGGEST_THRESHOLD``
v0.5.8
====================
**Changed:**
* The ``xonsh.platform.os_environ`` wrapper is now case-insensitive and
case-preserving on Windows.
* The private ``_TeeStd`` class will no longer attempt to write to a
standard buffer after the tee has been 'closed' and the standard
buffer returned to the system.
**Fixed:**
* Fixed a bug on py34 where os.scandir was used by accident.
* Line continuations (``\\``) is subproc mode will no longer consume the
surrounding whitespace.
* Fixed a bug if foreign_shell name was not written in lower case in
the static configuration file ``config.json``
* Fixed a regression on Windows where caused ``which`` reported that the
``PATH`` environment variable could not be found.
* Fixed issue with foregrounding jobs that were started in the background.
* Fixed that ``Ctrl-C`` crashes xonsh after running an invalid command.
* Fixed an potential ``ProcessLookupError`` issue, see #2288.
v0.5.7
====================
**Added:**
* New ``color_tools`` module provides basic color tools for converting
to and from various formats as well as creating palettes from color
strings.
* Redirections may now be used in string and list-of-strings
aliases.
* Subprocess redirection may now forego the whitespace between the
redirection and a file name. For example,
``echo hello world >/dev/null``.
* Add a ``-P`` flag to the ``cd`` function in order to change directory and
following symlinks.
* ``xonfig tutorial`` command to launch the http://xon.sh/tutorial in the
browser.
* ``@(...)`` syntax now supports generators and tuples without parentheses.
* Sourcing foreign shells now have the ``--show`` option, which
lets you see when script will be run, and the ``--dryrun``
option which prevents the source from actually taking place.
Xonsh's foreign shell API also added these keyword arguments.
* Subprocess mode now supports subshells. Place any xonsh
code between two parentheses, e.g. ``(cmd)``, to run
this command in a separate xonsh subprocess.
* Foreign shell aliases now have the ability to take extra arguments,
if needed.
* Xonsh will issue a warning message when the current working
directory has been remove out from under it and not replaced
prior to running the next command.
* Line continuation backslashes are respected on Windows in the PTK shell if
the backspace is is preceded by a space.
* Added ``ponysay`` as a command which will usually not run in a
threaded mode in the commands cache.
* New ``jsonutils`` module available for serializing special
xonsh objects to JSON.
**Changed:**
* The literal tokens ``and`` and ``or`` must be surrounded by
whitespace to delimit subprocess mode. If they do not have
whitespace on both sides in subproc mode, they are considered
to be part of a command argument.
* The ``xontrib`` command is now flagged as unthreadable and will be
run on the main Python thread. This allows xontribs to set signal
handlers and other operations that require the main thread.
* nvim (Neovim) has been flagged as unthreadable
* The interactive prompt will now catch ``SystemExit`` and, instead
of exiting the session, will refresh the prompt. This is the same
process as for keyboard interrupts.
* Xonsh no longer launches the wizard for new users. Instead a welcome screen is
shown which says how to launch the wizard.
* Added Windows ``expanduser()``-like function which prevents
the expansion of ``~`` that are not followed by a path
separator.
* Collecting xonsh history files was reported to have random runtime
OSError failures. This exception is now handled, just in case. The
The exception will still be printed in debug mode.
* ``Shell.stype`` has been renamed to ``Shell.shell_type``.
* The configuration wizard now displays the proper control sequence to leave
the wizard at the to start of the wizard itself. Note that this is Ctrl+D for
readline and Ctrl+C for prompt-toolkit.
* Callable alias proxy functions are now more friendly to
``functools.partial()``.
* ``prompt.vc.get_hg_branch`` now uses ``os.scandir`` to walk up the filetree
looking for a ``.hg`` directory. This results in (generally) faster branch
resolution compared to the subprocess call to ``hg root``.
* Xonsh's script and code caches will are now invalidated whenever the
xonsh version changes for a given Python version.
* Autowrapping of subprocess globs has been improved to cover
more cases that are ambiguous with Python syntax.
* Job control info when foregrounding or backgrounding jobs will now
only be displayed when xonsh is in interactive mode.
* Enabled virtual terminal processing in the prompt-toolkit shell for Windows.
**Fixed:**
* 3rd party pygments styles (like solorized or monokailight) are now
able to be used in xonsh. These styles are dynamically created upon
first use, rather than being lazily loaded by xonsh.
* On Windows, ``os.environ`` is case insensitive. This would potentially
change the case of environment variables set into the environment.
Xonsh now uses ``nt.environ``, the case sensitive counterpart, to avoid
these issues on Windows.
* Fix how ``$PWD`` is managed in order to work with symlinks gracefully
* ``history replay`` no longer barfs on ``style_name`` when setting up the
environment
* ``Shell.shell_type`` is now properly set to the same value as ``$SHELL_TYPE``.
* Fixed ``source-zsh`` to work with zsh v5.2.
* Fixed issue where ``del (x, y)`` would raise a syntax error.
* Certain vim commands issue commands involving subshells,
and this is now supported.
* Null bytes handed to Popen are now automatically escaped prior
to running a subprocess. This prevents Popen from issuing
embedded null byte exceptions.
* Xonsh will no longer crash is the current working directory is
removed out from under it.
* Multiline strings can now be written in subprocess mode.
* PTK completions will now correctly deduplicate autosuggest completions
and display completions values based on the cursor position.
* Fixed bug where trailing backspaces on Windows paths could be interpreted
as line continuations characters. Now line continuation characters must be
preceded by a space on Windows. This only applies to xonsh in interactive
mode to ensure scripts are portable.
* Importing ``*.xsh`` files will now respect the encoding listed in
that file and properly fallback to UTF-8. This behaviour follows
the rules described in PEP 263.
* Wizard is now able to properly serialize environment paths.
v0.5.6
====================
**Added:**
* New core utility function aliases (written in pure Python) are now
available in ``xonsh.xoreutils``. These include: ``cat``, ``echo``,
``pwd``, ``tee``, ``tty``, and ``yes``. These are not enabled by default.
Use the new ``coreutils`` xontrib to load them.
* CircleCI test post codecov run
* The ``trace`` will automatically disable color printing when
stdout is not a TTY or stdout is captured.
* New ``jedi`` xontrib enables jedi-based tab completions when it is loaded.
This supersedes xonsh's default Python-mode completer.
* The lexer has a new ``split()`` method which splits strings
according to xonsh's rules for whitespace and quotes.
* New events for hooking into the Python import process are now available.
You can now provide a handler for:
- ``on_import_pre_find_spec``
- ``on_import_post_find_spec``
- ``on_import_pre_create_module``
- ``on_import_post_create_module``
- ``on_import_pre_exec_module``
- ``on_import_post_exec_module``
**Changed:**
* The prompt toolkit shell's first completion will now be the
current token from the auto-suggestion, if available.
* Sourcing foreign shells will now safely skip applying aliases
with the same name as existing xonsh aliases by default.
This prevents accidentally overwriting important xonsh standard
aliases, such as ``cd``.
**Fixed:**
* Threadable prediction for subprocesses will now consult both the command
as it was typed in and any resolved aliases.
* The first prompt will no longer print in the middle of the line if the user has
already started typing.
* Windows consoles will now automatically enable virtual terminal processing
with the readline shell, if available. This allows the full use of ANSI
escape sequences.
* On the Windows readline shell, the tab-completion suppression prompt will no
longer error out depending on what you press.
* Fixed issue with subprocess mode wrapping not respecting line continuation
backslashes.
* Handle a bug where Bash On Windows causes platform.windows_bash_command()
to raise CalledProcessError.
* Fixed issues pertaining to completing from raw string paths.
This is particularly relevant to Windows, where raw strings
are inserted in path completion.
* Replace deprecated calls to ``time.clock()`` by calls to
``time.perf_counter()``.
* Use ``clock()`` to set the start time of ``_timings`` in non-windows instead
of manually setting it to ``0.0``.
* The ``trace`` utility will now correctly color output and not
print extraneous newlines when called in a script.
* The ``@$(cmd)`` operator now correctly splits strings according to
xonsh semantics, rather than just on whitespace using ``str.split()``.
* The ``mpl`` xontrib has been updated to improve matplotlib
handling. If ``xontrib load mpl`` is run before matplotlib
is imported and xonsh is in interactive mode, matplotlib
will automatically enter interactive mode as well. Additionally,
``pyplot.show()`` is patched in interactive mode to be non-blocking.
If a non-blocking show fails to draw the figure for some reason,
a regular blocking version is called.
* Fixed issues like ``timeit ls`` causing OSError - "Inappropriate ioctl
for device".
* Fixed a potential "OSError: [Errno 22] Invalid argument" to increase job
control stability.
v0.5.5
====================
**Added:**
* New ``--rc`` command line option allows users to specify paths to run control
files from the command line. This includes both xonsh-based and JSON-based
configuration.
* New ``$UPDATE_COMPLETIONS_ON_KEYPRESS`` controls whether or not completions
will automatically display and update while typing. This feature is only
available in the prompt-toolkit shell.
**Changed:**
* Xonsh scripts now report ``__file__`` and ``__name__`` when run as scripts
or sourced. These variables have the same meaning as they do in Python
scripts.
* ``$XONSHRC`` and related configuration variables now accept JSON-based
static configuration file names as elements. This unifies the two methods
of run control to a single entry point and loading system.
* The ``xonsh.shell.Shell()`` class now requires that an Execer instance
be explicitly provided to its init method. This class is no longer
responsible for creating an execer an its dependencies.
* Moved decorators ``unthreadable``, ``uncapturable`` from
``xonsh.proc`` to ``xonsh.tools``.
* Some refactorings on jobs control.
**Deprecated:**
* The ``--config-path`` command line option is now deprecated in favor of
``--rc``.
**Removed:**
* ``xonsh.environ.DEFAULT_XONSHRC`` has been removed due to deprecation.
For this value, please check the environment instead, or call
``xonsh.environ.default_xonshrc(env)``.
**Fixed:**
* Command pipelines that end in a callable alias are now interruptable with
``^C`` and the processes that are piped into the alias have their file handles
closed. This should ensure that the entire pipeline is closed.
* Fixed issue where unthreadable subprocs were not allowed to be
captured with the ``$(cmd)`` operator.
* The ``ProcProxy`` class (unthreadable aliases) was not being executed and would
hang if the alias was capturable. This has been fixed.
* Fixed a ``tcsetattr: Interrupted system call`` issue when run xonsh scripts.
* Fixed issue with ``ValueError`` being thrown from ``inspect.signature()``
when called on C-extension callables in tab completer.
* Fixed issue that ``ls | less`` crashes on Mac.
* Threadable prediction was incorrectly based on the user input command, rather than
the version where aliases have been resolved. This has been corrected.
v0.5.4
====================
**Added:**
* Add alias ``xip`` ("kip") so that xonsh's Python environment (whatever that is) can be modified.
* HistoryEntry, a SimpleNamespace object that represents a command in history.
* ``xonsh.completers.bash_completion`` module
* Added option to report timing information of xonsh startup times. Start xonsh
with the ``--timings`` flag to use the feature.
* The Python tab completer will now complete the argument names of functions
and other callables.
* Uptime module added to ``xonsh.xoreutils``. This can report the system
boot time and up time.
* The environment variable ``XONSH_HISTORY_BACKEND`` now also supports a
value of class type or a History Backend instance.
* ``on_envvar_new`` event that fires after a new envvar is created.
* ``on_envvar_change`` event that fires after an envvar is changed.
**Changed:**
* history indexing api to be more simple, now returns HistoryEntry.
* Decoupled ``bash_completion`` from xonsh project and added shim back to
xonsh.
* The JSON history backend will now unlock history files that were created
prior to the last reboot.
**Fixed:**
* Fixed broken bash completions on Windows if 'Windows Subsystem for Linux' is installed.
* Readline history would try to read the first element of history prior to
actually loading any history. This caused an exception to be raised on
Windows at xonsh startup when using pyreadline.
* Fixed issue with readline tab completer overwriting initial prefix in
some instances.
* Fixed issue wherein if ``git`` or (presumably) ``hg`` are aliased, then branch
information no longer appears in the ``$PROMPT``
* Fixed an issue with commands that background themselves (such as
``gpg-connect-agent``) not being able to be run from within xonshrc.
v0.5.3
====================
**Added:**
* Tab completion xontrib for python applications based on click framework.
* Added ``on_transform_command`` event for pre-processing that macros can't handle.
* Autodetection of backgroundability by binary analysis on POSIX.
* New argument ``expand_user=True`` to ``tools.expand_path``.
* New ``$COMPLETION_QUERY_LIMIT`` environment variable for setting the
number of completions above which the user will be asked if they wish to
see the potential completions.
* Users may now redirect stdout to stderr in subprocess mode.
**Changed:**
* The ``Block`` and ``Functor`` context managers from ``xonsh.contexts`` have been
rewritten to use xonsh's macro capabilities. You must now enter these via the
``with!`` statement, e.g. ``with! Block(): pass``.
* The ``distributed`` xontrib now needs to use the ``with!`` statement, since it
relies on ``Functor``.
* ``telnet`` has been flagged as unthreadable.
* When ``$DYNAMIC_CWD_ELISION_CHAR`` is non empty and the last dir of cwd is too
long and shortened, the elision char is added at the end.
* ``pygments`` is no longer a strict dependency of the ``prompt_toolkit``
backend. If ``pygments`` is not installed, the PTK backend will use the
default ansi color settings from the terminal. Syntax highlighting requires
that ``pygments`` is installed.
* Events are now keyword arguments only
* Restored ``on_precommand`` to its original signature.
* Move ``built_ins.expand_path`` to ``tools.expand_path``.
* Rename ``tools.expandpath`` to ``tools._expandpath``.
* Added ``gvim`` command to unthreadable predictors.
* The ``source`` alias now passes ``$ARGS`` down to file it is sourcing.
**Removed:**
* ``XonshBlockError`` has been removed, since it no longer serves a purpose.
**Fixed:**
* ``PopenThread`` will now re-issue SIGINT to the main thread when it is
received.
* Fixed an issue that using sqlite history backend does not kill unfinished
jobs when quitting xonsh with a second "exit".
* Fixed an issue that xonsh would fail over to external shells when
running .xsh script which raises exceptions.
* Fixed an issue with ``openpty()`` returning non-unix line endings in its buffer.
This was causing git and ssh to fail when xonsh was used as the login shell on the
server. See https://mail.python.org/pipermail/python-list/2013-June/650460.html for
more details.
* Restored the ability to ^Z and ``fg`` processes on posix platforms.
* CommandPipelines were not guaranteed to have been ended when the return code
was requested. This has been fixed.
* Introduce path expansion in ``is_writable_file`` to fix
``$XONSH_TRACEBACK_LOGFILE=~/xonsh.log``.
* Backgrounding a running process (^Z) now restores ECHO mode to the terminal
in cases where the subprocess doesn't properly restore itself. A major instance
of this behaviour is Python's interactive interpreter.
* Readline backend would not ask the user to confirm the printing of completion
options if they numbered above a certain value. Instead they would be dumped to
the screen. This has been fixed.
* Jupyter kernel was no longer properly running subprocess commands.
This has been fixed.
* The filename is applied to the target of the ``source`` alias, providing better
tracebacks.
v0.5.2
====================
**Added:**
* Added ``weechat`` to default predictors
* ``$DYNAMIC_CWD_ELISION_CHAR`` environment variable to control how a shortened
path is displayed.
**Changed:**
* ``_ret_code`` function of ``prompt_ret_code`` xontrib return now ``None`` when
return code is 0 instead of empty string allowing more customization of prompt
format.
**Fixed:**
* Minor Python completer token counting bug fix.
* multiline syntax error in PTK shell due to buffer not being reset
* Segfaults and other early exit signals are now reported correctly,
again.
* ``tests/bin/{cat,pwd,wc}`` shebang changed to python3
v0.5.1
====================
**Fixed:**
* Fixed xonfig raising error when xonsh is not installed from source.
v0.5.0
====================
**Added:**
* $XONTRIB_MPL_MINIMAL environment variable can be set to change if plots are minimalist or as-seen
* xontrib-mpl now supports iTerm2 inline image display if iterm2_tools python package is installed
* Xonsh now will fallback to other shells if encountered errors when
starting up.
* Added entry to customization faq re: ``dirs`` alias (#1452)
* Added entry to customization faq re: tab completion selection (#1725)
* Added entry to customization faq re: libgcc core dump (#1160)
* Section about quoting in the tutorial.
* The ``$VC_HG_SHOW_BRANCH`` environment variable to control whether to hide the hg branch in the prompt.
* xonfig now contains the latest git commit date if xonsh installed
from source.
* Alt+Enter will execute a multiline code block irrespective of cursor position
* Windows now has the ability to read output asynchronously from
the console.
* Use `doctr <https://drdoctr.github.io/doctr/>`_ to deploy dev docs to github pages
* New ``xonsh.proc.uncapturable()`` decorator for declaring that function
aliases should not be run in a captured subprocess.
* New history backend sqlite.
* Prompt user to install xontrib package if they try to load an uninstalled
xontrib
* Callable aliases may now take a final ``spec`` argument, which is the
corresponding ``SubprocSpec`` instance.
* New ``bashisms`` xontrib provides additional Bash-like syntax, such as ``!!``.
This xontrib only affects the command line, and not xonsh scripts.
* Tests that create testing repos (git, hg)
* New subprocess specification class ``SubprocSpec`` is used for specifying
and manipulating subprocess classes prior to execution.
* New ``PopenThread`` class runs subprocesses on a a separate thread.
* New ``CommandPipeline`` and ``HiddenCommandPipeline`` classes manage the
execution of a pipeline of commands via the execution of the last command
in the pipeline. Instances may be iterated and stream lines from the
stdout buffer. These pipelines read from the stdout & stderr streams in a
non-blocking manner.
* ``$XONSH_STORE_STDOUT`` is now available on all platforms!
* The ``CommandsCache`` now has the ability to predict whether or not a
command must be run in the foreground using ``Popen`` or may use a
background thread and can use ``PopenThread``.
* Callable aliases may now use the full gamut of functions signatures:
``f()``, ``f(args)``, ``f(args, stdin=None)``,
``f(args, stdin=None, stdout=None)``, and `
``f(args, stdin=None, stdout=None, stderr=None)``.
* Uncaptured subprocesses now receive a PTY file handle for stdout and
stderr.
* New ``$XONSH_PROC_FREQUENCY`` environment variable that specifies how long
loops in the subprocess framework should sleep. This may be adjusted from
its default value to improved performance and mitigate "leaky" pipes on
slower machines.
* ``Shift+Tab`` moves backwards in completion dropdown in prompt_toolkit
* PromptFormatter class that holds all the related prompt methods
* PromptFormatter caching when building the prompt
* p-strings: ``p'/foo/bar'`` is short for ``pathlib.Path('/foo/bar')``
* byte strings: prefixes other than ``b'foo'`` (eg, ``RB'foo'``) now work
* Backticks for regex or glob searches now support an additional modifier
``p``, which causes them to return Path objects instead of strings.
* New ``BOTTOM_TOOLBAR`` environment variable to control a bottom toolbar as specified in prompt-toolkit
* New ``$XONSH_STDERR_PREFIX`` and ``$XONSH_STDERR_POSTFIX`` environment
variables allow the user to print a prompt-like string before and after
all stderr that is seen. For example, say that you would like stderr
to appear on a red background, you might set
``$XONSH_STDERR_PREFIX = "{BACKGROUND_RED}"`` and
``$XONSH_STDERR_PREFIX = "{NO_COLOR}"``.
* New ``xonsh.pyghooks.XonshTerminal256Formatter`` class patches
the pygments formatter to understand xonsh color token semantics.
* Load events are now available
* New events added: ``on_post_init``, ``on_pre_cmdloop``, ``on_pre_rc``, ``on_post_rc``, ``on_ptk_create``
* Completion for ``xonsh`` builtin functions ``xontrib`` and ``xonfig``
* Added a general customization FAQ page to the docs to collect various
tips/tricks/fixes for common issues/requests
* ``test_single_command`` and ``test_redirect_out_to_file`` tests in ``test_integrations``
* Add note that the target of redirection should be separated by a space.
**Changed:**
* CircleCI now handles flake8 checks
* Travis doesn't allow failures on nightly
* ``get_hg_branch`` runs ``hg root`` to find root dir and check if we're in repo
* The default style will now use the color keywords (#ansired, #ansidarkred)
to set colors that follow the terminal color schemes. Currently, this requires
prompt_toolkit master (>1.0.8) and pygments master (2.2) to work correctly.
* ``vox activate`` now accepts relative directories.
* Updated the effectivity of ``$XONSH_DEBUG`` on debug messages.
* Better documentation on how to get nice colors in Windows' default console
* All custom prompt_toolkit key binding filters now declared with the
``@Condition`` decorator
* The style for the prompt toolkit completion menu is now lightgray/darkgray instead of turquoise/teal
* landscape.io linting now ignores ply directory
* ``history`` help messages to reflect subcommand usage
* Quote all paths when completion if any of the paths needs be quoted,
so that bash can automatically complete to the max prefix of the paths.
* Tee'd reads now occur in 1kb chunks, rather than character-by-character.
* The ``which`` alias no longer has a trailing newline if it is captured.
This means that ``$(which cmd)`` will simply be the path to the command.
* The following commands are, by default, predicted to be not threadable
in some circumstances:
* bash
* csh
* clear
* clear.exe
* cls
* cmd
* ex
* fish
* htop
* ksh
* less
* man
* more
* mutt
* nano
* psql
* ranger
* rview
* rvim
* scp
* sh
* ssh
* startx
* sudo
* tcsh
* top
* vi
* view
* vim
* vimpager
* xo
* xonsh
* zsh
* The ``run_subproc()`` function has been replaced with a new implementation.
* Piping between processes now uses OS pipes.
* ``$XONSH_STORE_STDIN`` now uses ``os.pread()`` rather than ``tee`` and a new
file.
* The implementation of the ``foreground()`` decorator has been moved to
``unthreadable()``.
* ``voxapi.Vox`` now supports ``pathlib.Path`` and ``PathLike`` objects as virtual environment identifiers
* Renamed FORMATTER_DICT to PROMPT_FIELDS
* BaseShell instantiates PromptFormatter
* readline/ptk shells use PromptFormatter
* Updated the bundled version of ``ply`` to current master available
* vended ``ply`` is now a git subtree to help with any future updates
* ``WHITE`` color keyword now means lightgray and ``INTENSE_WHITE`` completely white
* Removed ``add_to_shell`` doc section from ``*nix`` install pages and instead
relocated it to the general customization page
* Moved a few ``*nix`` customization tips from the linux install page to the general
customization page
**Removed:**
* coverage checks
* ``CompletedCommand`` and ``HiddenCompletedCommand`` classes have been removed
in favor of ``CommandPipeline`` and ``HiddenCommandPipeline``.
* ``SimpleProcProxy`` and ``SimpleForegroundProcProxy`` have been removed
in favor of a more general mechanism for dispatching callable aliases
implemented in the ``ProcProxyThread`` and ``ProcProxy`` classes.
* ``test_run_subproc.py`` in favor of ``test_integrations.py``
* Unused imports in many tests
* Many duplicated tests (copypasta)
**Fixed:**
* xontrib-mpl now preserves the figure and does not permanently alter it for viewing
* Fix up small pep8 violations
* Fixed a bug where some files are not showing using bash completer
* Fixed some issues with subprocess capturing aliases that it probably
shouldn't.
* ``safe_readable()`` now checks for ``ValueError`` as well.
* The scroll bars in the PTK completions menus are back.
* Jupyter kernel installation now respects the setuptools ``root`` parameter.
* Fix ``__repr__`` and ``__str__`` methods of ``SubprocSpec`` so they report
correctly
* Fixed the message printed when which is unable to find the command.
* Fixed a handful of sphinx errors and warnings in the docs
* Fixed many PEP8 violations that had gone unnoticed
* Fix failure to detect an Anaconda python distribution if the python was install from the conda-forge channel.
* current_branch will try and locate the vc binary once
* May now Crtl-C out of an infinite loop with a subprocess, such as
```while True: sleep 1``.
* Fix for stdin redirects.
* Backgrounding works with ``$XONSH_STORE_STDOUT``
* ``PopenThread`` blocks its thread from finishing until command has completed
or process is suspended.
* Added a minimum time buffer time for command pipelines to check for
if previous commands have executed successfully. This is helpful
for pipelines where the last command takes a long time to start up,
such as GNU Parallel. This also checks to make sure that output has occurred.
This includes piping 2+ commands together and pipelines that end in
unthreadable commands.
* ``curr_branch`` reports correctly when ``git config status.short true`` is used
* ``pip`` completion now filters results by prefix
* Fixed streaming ``!(alias)`` repr evaluation where bytes where not
streamed.
* Aliases that begin with a comma now complete correctly (no spurious comma)
* Use ``python3`` in shebang lines for compatibility with distros that still use Python 2 as the default Python
* STDOUT is only stored when ``$XONSH_STORE_STDOUT=True``
* Fixed issue with alias redirections to files throwing an OSError because
the function ProcProxies were not being waited upon.
* Fixed issue with callable aliases that happen to call sys.exit() or
raise SystemExit taking out the whole xonsh process.
* Safely flushes file handles on threaded buffers.
* Proper default value and documentation for ``$BASH_COMPLETIONS``
* Fixed readline completer issues on paths with spaces
* Fix bug in ``argvquote()`` functions used when sourcing batch files on Windows. The bug meant an extra backslash was added to UNC paths.
Thanks to @bytesemantics for spotting it, and @janschulz for fixing the issue.
* pep8, lint and refactor in pytest style of ``test_ptk_multiline.py``, ``test_replay.py``
* Tab completion of aliases returned a upper cased alias on Windows.
* History show all action now also include current session items.
* ``proc.stream_stderr`` now handles stderr that doesn't have buffer attribute
* Made ``history show`` result sorted.
* Fixed issue that ``history gc`` does not delete empty history files.
* Standard stream tees have been fixed to accept the possibility that
they may not be backed by a binary buffer. This includes the pipeline
stdout tee as well as the shell tees.
* Fixed a bug when the pygments plugin was used by third party editors etc.
* CPU usage of ``PopenThread`` and ``CommandPipeline`` has been brought
down significantly.
v0.4.7
====================
**Added:**
* Define alias for 'echo' on startup for Windows only.
* New coredev `astronouth7303 <https://github.com/astronouth7303>`_ added
* ``which -a`` now searches in ``__xonsh_ctx__`` too
* Info about the xontrib cookiecutter template on xontrib tutorial
* xonsh's optional dependencies may now be installed with the pip extras ``ptk``, ``proctitle``, ``linux``, ``mac``, and ``win``.
* Env ``help`` method to format and print the vardocs for an envvar
* test_news fails if no empty line before a category
* more info on test_news failures
* Added ``on_precommand`` and ``on_postcommand`` `events </events.html>`_
* New ``FORMATTER_DICT`` entry ``gitstatus`` to provides informative git status
* FOREIGN_ALIASES_OVERRIDE envvar to control whether foreign aliases should
override xonsh aliases with the same name.
* Warning on tutorial about foreign aliases being ignored if a xonsh alias
exist with the same name if not FOREIGN_ALIASES_OVERRIDE.
* The prompt-toolkit shell now auto-inserts matching parentheses, brackets, and quotes. Enabled via the ``XONSH_AUTOPAIR`` environment variable
* Better syntax highlights in prompt-toolkit, including valid command / path highlighting, macro syntax highlighting, and more
* More info on tutorial about history interaction
* Entry on bash_to_xsh
* Macro context managers are now available via the ``with!``
syntax.
**Changed:**
* Devguide reflects the current process of releasing through ``release.xsh``
* moved ``which`` from ``xonsh.aliases`` into ``xoreutils.which``
* ``xonsh.prompt.gitstatus.gitstatus`` now returns a namedtuple
* implementation of ``xonsh.prompt.vc_branch.get_git_branch`` and
``xonsh.prompt.vc_branch.git_dirty_working_directory`` to use 'git status --procelain'
* moved prompt formatting specific functions from ``xonsh.environ``
to ``xonsh.prompt.base``
* All prompt formatter functions moved to ``xonsh.prompt`` subpackage
* Printing the message about foreign aliases being ignored happens only
if XONSH_DEBUG is set.
* Use ``SetConsoleTitleW()`` on Windows instead of a process call.
* Tutorial to reflect the current history command argument functionality
* Macro function arguments now default to ``str``, rather than ``eval``,
for consistency with other parts of the macro system.
**Removed:**
* aliases that use '!' in their name cause they clash with the macro syntax
**Fixed:**
* Fix regression where bash git completions where not loaded
automatically when GitForWindows is installed.
* More tokens are now supported in subproc args, such as ``==``.
* Python completions now work without space delimiters, e.g. ``a=matpl<TAB>``
will complete to ``a=matplotlib``
* Parser would fail on nested, captured suprocess macros. Now, it works,
hooray!?
* now fires chdir event if OS change in working directory is detected.
* ``xonsh.prompt.vc_branch.git_dirty_working_directory``
uses ``porcelain`` option instead of using the bytestring
``nothing to commit`` to find out if a git directory is dirty
* Fix bug where know commands where not highlighted on windows.
* Fixed completer showing executable in upper case on windows.
* Fixed issue where tilde expansion was occurring more than once before an
equals sign.
* test_dirstack test_cdpath_expansion leaving stray testing dirs
* Better completer display for long completions in prompt-toolkit
* Automatically append newline to target of ``source`` alias, so that it may
be exec'd.
* test_news fails when single graves around word
* Slashes in virtual environment names work in vox
* non string type value in $FORMATTER_DICT turning prompt ugly
* whole prompt turning useless when one formatting function raises an exception
* Fix completion after alias expansion
* Fix hard crash when foreign shell functions fails to run. #1715
* Bug where non-default locations for ``XDG_DATA_HOME`` and ``XONSH_DATA_DIR``
would not expand ``~`` into the home directory
* Auto quote path completions if path contains 'and' or 'or'
* Completion now works on subcommands after pipe, ``&&``, ``||`` and so on.
* cd . and cd <singleCharacter> now work. Fix indexerror in AUTO_PUSHD case, too.
* Fixed issue with accidentally wrapping generators inside of function calls.
* History indexing with string returns most recent command.
v0.4.6
====================
**Added:**
* New option ``COMPLETIONS_CONFIRM``. When set, ``<Enter>`` is used to confirm
completion instead of running command while completion menu is displayed.
* NetBSD is now supported.
* Macro function calls are now available. These use a Rust-like
``f!(arg)`` syntax.
* Macro subprocess call now available with the ``echo! x y z``
syntax.
* A new `event subsystem <http://xon.sh/tutorial_events.html>`_ has been added.
* howto install sections for Debian/Ubuntu and Fedora.
* ``History`` methods ``__iter__`` and ``__getitem__``
* ``tools.get_portions`` that yields parts of an iterable
* Added a py.test plugin to collect ``test_*.xsh`` files and run ``test_*()`` functions.
* ``__repr__`` and ``__str__`` magic method on LazyObject
**Changed:**
* ``create_module`` implementation on XonshImportHook
* Results of the ``bash`` tab completer are now properly escaped (quoted) when necessary.
* Foreign aliases that match xonsh builtin aliases are now ignored with a warning.
* ``prompt_toolkit`` completions now only show the rightmost portion
of a given completion in the dropdown
* The value of ``'none'`` is no longer allowed for ``$SHELL_TYPE`` just during the initial
load from the environment. ``-D``, later times, and other sources still work.
* ``yacc_debug=True`` now load the parser on the same thread that the
Parser instance is created. ``setup.py`` now uses this synchronous
form as it was causing the parser table to be missed by some package
managers.
* Tilde expansion for the home directory now has the same semantics as Bash.
Previously it only matched leading tildes.
* Context sensitive AST transformation now checks that all names in an
expression are in scope. If they are, then Python mode is retained. However,
if even one is missing, subprocess wrapping is attempted. Previously, only the
left-most name was examined for being within scope.
* ``dirstack.pushd`` and ``dirstack.popd`` now handle UNC paths (of form ``\\<server>\<share>\...``), but only on Windows.
They emulate behavior of `CMD.EXE` by creating a temporary mapped drive letter (starting from z: down) to replace
the ``\\<server>\<share>`` portion of the path, on the ``pushd`` and unmapping the drive letter when all references
to it are popped.
* And ``dirstack`` suppresses this temporary drive mapping funky jive if registry entry
``HKCU\software\microsoft\command processor\DisableUNCCheck`` (or HKLM\...) is a DWORD value 1. This allows Xonsh
to show the actual UNC path in your prompt string and *also* allows subprocess commands invoking `CMD.EXE` to run in
the expected working directory. See https://support.microsoft.com/en-us/kb/156276 to satisfy any lingering curiosity.
* ``lazy_locate_binary`` handles binary on different drive letter than current working directory (on Windows).
* ``_curr_session_parser`` now iterates over ``History``
* New implementation of bash completer with better performance and compatibility.
* ``$COMPLETIONS_BRACKETS`` is now available to determine whether or not to
include opening brackets in Python completions
* ``xonsh.bat`` tries to use `pylauncher <https://www.python.org/dev/peps/pep-0397/>`_ when available.
**Removed:**
* ``History`` method ``show``
* ``_hist_get_portion`` in favor of ``tools.get_portions``
* Unused imports in proc, flake8.
**Fixed:**
* xonsh modules imported now have the __file__ attribute
* Context sensitive AST transformer was not adding argument names to the
local scope. This would then enable extraneous subprocess mode wrapping
for expressions whose leftmost name was function argument. This has been
fixed by properly adding the argument names to the scope.
* Foreign shell functions that are mapped to empty filenames no longer
receive aliases since they can't be found to source later.
* Correctly preserve arguments given to xon.sh, in case there are quoted ones.
* Environment variables in subprocess mode were not being expanded
unless they were in a sting. They are now expanded properly.
* Fixed a bug that prevented xonsh from running scripts with code caching disabled.
* Text of instructions to download missing program now does not get off and
appears in whole.
* Fix some test problems when win_unicode_console was installed on windows.
* Fixed bug that prompt string and ``$PWD`` failed to track change in actual working directory if the
invoked Python function happened to change it (e.g via ```os.chdir()```. Fix is to update ``$PWD``
after each command in ```BaseShell.default()```.
* The interactive prompt now correctly handles multiline strings.
* ``cd \\<server>\<share>`` now works when $AUTO_PUSHD is set, either creating a temporary mapped drive or simply
setting UNC working directory based on registry ``DisableUNCCheck``. However, if $AUTO_PUSHD is not set and UNC
checking is enabled (default for Windows), it issues an error message and fails. This improves on prior behavior,
which would fail to change the current working directory, but would set $PWD and prompt string to the UNC path,
creating false expectations.
* fix parsing for tuple of tuples (like `(),()`)
* ``sys.stdin``, ``sys.stdout``, ``sys.stderr`` no longer complete with
opening square brackets
* xonsh now properly handles syntax error messages arising from using values in inappropriate contexts (e.g., ``del 7``).
====================
Xonsh Change Log
====================
v0.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
v0.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``.
v0.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.
v0.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.
v0.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
v0.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``
v0.8.2
====================
**Changed:**
* Now there is only a single instance of ``string.Formatter()`` in the
code base, which is called ``xonsh.tools.FORMATTER``.
**Fixed:**
* f-strings (``f"{expr}"``) are now fully capable of executing xonsh expressions.
The one exception to this is that ``![cmd]`` and ``!(cmd)`` don't work because
the ``!`` character interferes with Python string formatting. If you need to
run subprocesses inside of f-strings, use ``$[cmd]`` and ``$(cmd)`` instead.
* Fixed occasional "no attribute 'settitle' error"
v0.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.
v0.8.0
====================
**Added:**
* Windows CI jobs on Azure Pipelines
* The ``cryptop`` command will no longer have its output captured
by default.
* Added new env-var ``PTK_STYLE_OVERRIDES``. The variable is
a dictionary containing custom prompt_toolkit style definitions.
For instance::
$PTK_STYLE_OVERRIDES['completion-menu'] = 'bg:#333333 #EEEEEE'
will provide for more visually pleasing completion menu style whereas::
$PTK_STYLE_OVERRIDES['bottom-toolbar'] = 'noreverse'
will prevent prompt_toolkit from inverting the bottom toolbar colors
(useful for powerline extension users)
Note: This only works with prompt_toolkit 2 prompter.
**Changed:**
* All ``__xonsh_*__`` builtins have been migrated to a ``XonshSession`` instance at
``__xonsh__``. E.g. ``__xonsh_env__`` is now ``__xonsh__.env``.
* Other xonsh-specific builtins (such as ``XonshError``) have been proxied to
the ``__xonsh__`` session object as well.
**Deprecated:**
* All ``__xonsh_*__`` builtins are deprected. Instead, the corresponding
``__xonsh__.*`` accessor should be used. The existing ``__xonsh_*__`` accessors
still work, but issue annoying warnings.
**Fixed:**
* Fixed deprecation warnings from unallowed escape sequences as well as importing abstract base classes directly from ``collections``
* Fix for string index error in stripped prefix
* bash_completions to include special characters in lprefix
Previously, glob expansion characters would not be included in lprefix for replacement
.. code-block:: sh
$ touch /tmp/abc
$ python
>>> from bash_completion import bash_completions
>>>
>>> def get_completions(line):
... split = line.split()
... if len(split) > 1 and not line.endswith(' '):
... prefix = split[-1]
... begidx = len(line.rsplit(prefix)[0])
... else:
... prefix = ''
... begidx = len(line)
... endidx = len(line)
... return bash_completions(prefix, line, begidx, endidx)
...
>>> get_completions('ls /tmp/a*')
({'/tmp/abc '}, 0)
Now, lprefix begins at the first special character:
.. code-block:: sh
$ python
>>> from bash_completion import bash_completions
>>>
>>> def get_completions(line):
... split = line.split()
... if len(split) > 1 and not line.endswith(' '):
... prefix = split[-1]
... begidx = len(line.rsplit(prefix)[0])
... else:
... prefix = ''
... begidx = len(line)
... endidx = len(line)
... return bash_completions(prefix, line, begidx, endidx)
...
>>> get_completions('ls /tmp/a*')
({'/tmp/abc '}, 7)
* The ``xonsh.main.setup()`` function now correctly passes the
``shell_type`` argument to the shell instance.
* try_subproc_toks now works for subprocs with trailing and leading whitespace
Previously, non-greedy wrapping of commands would fail if they had leading and trailing whitespace:
.. code-block:: sh
$ true && false || echo a
xonsh: For full traceback set: $XONSH_SHOW_TRACEBACK = True
NameError: name 'false' is not defined
$ echo; echo && echo a
xonsh: For full traceback set: $XONSH_SHOW_TRACEBACK = True
NameError: name 'echo' is not defined
Now, the commands are parsed as expected:
.. code-block:: sh
$ true && false || echo a
a
$ echo; echo && echo a
a
v0.7.10
====================
**Added:**
* 'off' can be passed as falsy value to all flags accepting boolean argument.
- DragonFly BSD support
* Format strings (f-strings) now allow environment variables to be looked up.
For example, ``f"{$HOME}"`` will yield ``"/home/user"``. Note that this will
look up and fill in the ``detype()``-ed version of the environment variable,
i.e. it's native string representation.
**Changed:**
* Running ``aurman`` command will now be predicted to be unthreaded by default.
**Fixed:**
* The xonsh ``xonfig wizard`` would crash if an unknown foreign shell was
provided. This has been fixed.
* The ``hg split`` command will now predict as unthreadable.
* Fixed path completer crash on attempted f-string completion
v0.7.9
====================
**Added:**
* The python-mode ``@(expr)`` syntax may now be used inside of subprocess
arguments, not just as a stand-alone argument. For example:
.. code-block:: sh
$ x = 'hello'
$ echo /path/to/@(x)
/path/to/hello
This syntax will even properly expand to the outer product if the ``expr``
is a list (or other non-string iterable) of values:
.. code-block:: sh
$ echo /path/to/@(['hello', 'world'])
/path/to/hello /path/to/world
$ echo @(['a', 'b']):@('x', 'y')
a:x a:y b:x b:y
Previously this was not possible.
* New ``$DOTGLOB`` environment variable enables globs to match
"hidden" files which start with a literal ``.``. Set this
variable to ``True`` to get this matching behavior.
Cooresponding API changes have been made to
``xonsh.tools.globpath()`` and ``xonsh.tools.iglobpath()``
* New environment variable ``$FOREIGN_ALIASES_SUPPRESS_SKIP_MESSAGE``
enables the removal of skipping foreign alias messages.
* New ``--suppress-skip-message`` command line option for skipping
foreign alias messages when sourcing foreign shells.
**Fixed:**
* In Bash completions, if there are no files to source, a ``set()`` will
no longer be inserted into the completion script.
* Fixed issue with TAB completion in readline not replacing values
with spaces properly when the prefix was unquoted.
v0.7.8
====================
**Added:**
* ``xonsh.lib.collections.ChainDB``, a chain map which merges mergable fields
**Fixed:**
* Pass all params to voxapi.create
* PTK tab-completion now auto-accepts completion if only one option is present
(note that fix is only for PTK2)
v0.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.
v0.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.
v0.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.
v0.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``
v0.7.3
====================
**Added:**
* Add the ``PROMPT_TOOLKIT_COLOR_DEPTH`` environment to xonsh default environment.
Possible values are ``DEPTH_1_BIT``/``MONOCHROME``,
``DEPTH_4_BIT``/``ANSI_COLORS_ONLY``, ``DEPTH_8_BIT``/``DEFAULT``, or ``DEPTH_24_BIT``/``TRUE_COLOR``.
Note: not all terminals support all color depths.
* New way to fix unreadable default terminal colors on Windows 10. Windows 10
now supports true color in the terminal, so if prompt toolkit 2 is
installed Xonsh will use a style with hard coded colors instead of the
default terminal colors. This will give the same color experience as on linux an mac.
The behaviour can be disabled with ``$INTENSIFY_COLORS_ON_WIN``
environment variable.
* New ``JupyterShell`` for interactive interfacing with Jupyter.
**Changed:**
* All ansicolor names used in styles have ben updated to the color names used by prompt_toolkit 2.
The new names are are much easier to understand
(e.g. ``ansicyan``/``ansibrightcyan`` vs. the old ``#ansiteal``/``#ansiturquoise``). The names are automatically
translated back when using prompt_toolkit 1.
**Removed:**
* Removed support for pygments < 2.2.
**Fixed:**
* New ansi-color names fixes the problem with darker colors using prompt_toolkit 2 on windows.
* Fixed a problem with the color styles on prompt toolkit 2. The default pygment
style is no longer merged into style selected in xonsh.
* The JupyterKernel has been fixed from a rather broken state.
v0.7.2
====================
**Added:**
* ``history show`` builtin now supports optional ``-0`` parameter that switches
the output to null-delimited. Useful for piping history to external filters.
**Fixed:**
* If exception is raised in indir context manager, return to original directory
* Fixed issue that autocomplete menu does not display
at terminal's maximum height
v0.7.1
====================
**Added:**
* Added feature to aliases.
* ``xonsh.lib.os.rmtree()`` an rmtree which works on windows properly (even with
git)
**Changed:**
* set default value of ``$AUTO_SUGGEST_IN_COMPLETIONS=False``
* Use the ``pygments_cache.get_all_styles()`` function instead of
interacting directly with pygments.
**Fixed:**
* Fixed issue with ``$ARG<N>`` varaibles not being passed to subprocesses correctly.
* Fixed issue with multiline string inside of ``@(expr)`` in
unwrapped subprocesses. For example, the following now works::
echo @("""hello
mom""")
* ``CommandPipeline.output`` now does properly lazy, non-blocking creation of
output string. ``CommandPipeline.out`` remains blocking.
* Fix regression in ``INTENSIFY_COLORS_ON_WIN`` functionality due to prompt_toolkit 2 update.
* Fixed issue that can't insert quotation marks and double quotes
for completion.
* Fixed issue with ``SyntaxErrors`` being reported on the wrong line
when a block of code contained multiple implicit subprocesses.
* ``prompt_toolkit >= 2`` will start up even if Pygments isn't present
* Fixed a regression with ``xonfig styles`` reporting ``AttributeError: module 'pygments' has no attribute 'styles'``
* ptk dependent xontribs (that use custom keybindings) now work with both ptk1
and ptk2
* Fixed async tokenizing issue on Python v3.7.
v0.7.0
====================
**Added:**
* Added a hook for printing a spcial display method on an object.
* Support for ``prompt_toolkit 2.0``
* The ``--shell-type`` (``$SHELL_TYPE``) may now be specified using
shortcuts, such as ``rl`` for ``readline`` and ``ptk2`` for
``prompt_toolkit2``. See ``xonsh --help`` for a full listing
of available aliases.
**Fixed:**
- Restored AUGASSIGN_OPS definition, which was inadvertently removed.
v0.6.10
====================
**Added:**
* ``xonsh.lib.subprocess.check_output`` as a ``check_output`` drop in
**Fixed:**
* ``xonsh.lib.subprocess.run`` doesn't change dirs unless asked
v0.6.9
====================
**Added:**
* New xonsh standard library ``xonsh.lib`` subpackage
* ``xonsh.lib.os.indir`` a context manager for temporarily entering into a directory
* ``xonsh.lib.subprocess.run`` and ``xonsh.lib.subprocess.check_call``
subprocess stubs using ``xonsh`` as the backend
**Fixed:**
* update xoreutils._which.which() for python 3.x support.
* Fixed issue with incorrect strip lengths for prefixes with quotes in them
* Fixed bash script to also consider leading double quotes and not just single
quotes
* Launching xonsh with prompt_toolkit version 2.x no longer fails, and instead fallsback to readline shell. This is a patch for until prompt_toolkit 2.x support is fully implemented. See PR #2570
v0.6.8
====================
**Fixed:**
* completions relative to ``CDPATH`` only trigger when used with ``cd``
* Import of ``ctypes.util`` is now explictly performed, as needed.
Python v3.7 no longer imports this module along with ``ctypes``.
* Fixed issue with pygments-cache not properly generating a cache the first
time when using prompt-toolkit. This was due to a lingering lazy import
of ``pkg_resources`` that has been removed.
* Removed duplicate ``pip`` completer
* ``bash_completion`` no longer returns invalid prefix lengths for directories
containing escape file names
* Fixed error when using redirection (e.g., >) on Windows.
v0.6.7
====================
**Changed:**
* Xonsh live example has been re-added back to the documentation.
**Fixed:**
* Fixed issue where xonsh would fail to properly return the terminal prompt
(and eat up 100% CPU) after a failed subprocess command in interactive mode
if ``$RAISE_SUBPROC_ERROR = True``.
* ``xonsh.tokenize.tok_name`` no longer mutates the standard library ``tokenize.tok_name``.
A copy is made on import instead.
v0.6.6
====================
**Added:**
* A multipurpose add method to EnvPath. For example:
.. code-block:: xonshcon
$ $PATH
EnvPath(
['/usr/bin', '/usr/local/bin', '/bin']
)
$ $PATH.add('~/.local/bin', front=True); $PATH
EnvPath(
['/home/user/.local/bin', '/usr/bin', '/usr/local/bin', '/bin']
)
$ $PATH.add('/usr/bin', front=True, replace=True); $PATH
EnvPath(
['/usr/bin', '/home/user/.local/bin', '/usr/local/bin', '/bin']
)
* 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
v0.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.
v0.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.
v0.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.
v0.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
v0.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.
v0.6.0
====================
**Added:**
* Added an alias command, matching bash's implementation, available as part of bashisms.
* New ``$AUTO_SUGGEST_IN_COMPLETIONS`` environment variable that enables/disables
whether the auto-suggestion result appears in the tab completions.
* Added ``__add__()`` and ``__radd__()`` methods to ``EnvPath``.
* Xonsh now supports f-strings, as in Python v3.6+.
* Added ``ipython`` as unthreadable in command cache threadabilty predictors.
* Added ``whole_word_jumping`` xontrib
* Added ``$XONSH_APPEND_NEWLINE`` environment variable
* Support for PEP 515: Underscores in Numeric Literals
* ``xonsh.color_tools.make_palette()``
Simple rename of the pre-existing
``xonsh.color_tools.make_pallete()`` function.
* ``xonsh.tools.decorator()`` function/method decorator.
This allows for an API function to be annotated with a
decorator that documents deprecation, while also tying in
functionality that will warn a user that the function has
been deprecated, and, raise an ``AssertionError`` if the
function has passed its expiry date.
* New xontrib ``schedule`` (Xonsh Task Scheduler)
**Changed:**
* ``on_pre_prompt`` is now fired before prompt calculations are made, allowing modifications to the prompt.
* ``emacsclient`` will now return false in the threadable predictors.
* Improved the autopair behavior to match that of popular code editors.
* Moved the lazy ``pkg_resources`` package back to its original
place. The will hopefully address some of the slowdown issues
experiances on some platforms.
* When xonsh is used to run an ``xsh`` script, the ``xonshrc`` is not loaded
* Change in the behavior of the default predictor with binary analysis. The pattern ``libgpm`` is use, assuming when ``gpm`` is used the program is not threadable. This change solves issues with programs as ``links``.
* Error messages added to the ``source`` command if it is used with a language
that is not xonsh or Python.
**Deprecated:**
* ``xonsh.color_tools.make_pallette()``
Deprecated in release 0.5.10 and will be removed in release 0.6.0.
**Fixed:**
* Now f-strings can be used inside @() without explicit enclosing command in ![]
* Fix for ``x, y, *z = ...`` unpacking.
* Git branch detection now correctly passes the environment down to the subprocess
call. This allows for branch detection when git is installed into a non-standard
location.
* Escape regex characters in ``path_complete`` to avoid regex parsing errors for
certain combinations of characters in path completer
* gistatus: Fixed hash not being shown when in detaced HEAD and there are no tags
* Fix branch colorization when ``git`` or ``hg`` are aliases.
* Fixed leftover ``.git/index.lock`` in ``gitstatus``
* Made JSON history loading more robust to corrupt files.
* Starting a new command with an open parentheses will no longer
throw a traceback when ``$UPDATE_COMPLETIONS_ON_KEYPRESS`` is
``True``.
* Automatically wrapping subprocess calls would sometimes include
semincolons and other line-ending tokens, rather than stopping at them.
This has been fixed.
* Numerous spelling errors in documentation, docstrings/comments, text
strings and local variable names.
* Spelling error in the ``xonsh.color_tools.make_pallete()`` public
function declaration. This was fixed by renaming the function to
``xonsh.color_tools.make_palette()`` while maintaining a binding
of ``make_pallete()`` to the new ``make_palette()`` in case users
are already used to this API.
* Fixed issue with starting triple quote strings being run as a command.
* Fixed a problem with escaping charet (^) character for cmd.exe in the source-cmd function.
* ``EOF in multi-line statement`` errors were misreported as being on line 0.
Now they are correctly reported as being on the last line of the file.
v0.5.12
====================
**Fixed:**
* Fixed ``release.xsh`` to prevent it from dirtying the repo on release and
leading to an unwanted ``.dev`` suffix on the version number
v0.5.11
====================
**Added:**
* ``release.xsh`` creates a github release with the merged news entries as the
release body
**Fixed:**
* ``xonfig`` now displays the proper value for "on linux"
v0.5.10
====================
**Added:**
* Added ``xclip`` and ``repo`` to default threadable predictors (Issues #2355
and #2348)
* Pretty printing of the $PATH variable
* Add "fzf-widgets" xontrib which provides fuzzy search productivity widgets
with on custom keybindings to xontrib list.
* New ``free_cwd`` xontrib for Windows, which prevent the current directory from being locked when the prompt is shown.
This allows the other programs or Windows explorer to delete the current or parent directory. This is accomplished by
resetting the CWD to the users home directory temporarily while the prompt is displayed. The directory is still locked
while any commands are processed so xonsh still can't remove it own working directory.
**Changed:**
* Codecov threshold to 2%
**Removed:**
* On Windows environments variables in wrapped like``%foo%`` are no longer expanded automatically.
**Fixed:**
* Fixed the ``--rc`` option so it now runs xonsh with the specified rc file
* ``@$`` operator now functions properly when returned command is an alias
* Correct line continuation would not work on Windows if the line continuations were used
in the ``xonshrc`` file.
* Fixed a regression in the Windows ``sudo`` command, that allows users to run elevated commands in xonsh.
* Fix echo command from xoreutils.
* Fixed a bug on Windows which meant xonsh wasn't using PATH environment variable but instead relying on a default
value from the windows registry.
v0.5.9
====================
**Added:**
* Add ``Alt .`` keybinding to ``bashisms-xontrib`` to insert last argument of
previous command into current buffer
**Fixed:**
* Fix crash when openSSH version of bash is on PATH on Windows.
* Added missing ensurers to make sure that ``bool`` env_vars are bools and
``int`` env_vars are integers:
* ``DIRSTACK_SIZE``
* ``EXPAND_ENV_VARS``
* ``PUSHD_MINUS``
* ``PUSHD_SILENT``
* ``SUGGEST_COMMANDS``
* ``SUGGEST_MAX_NUM``
* ``SUGGEST_THRESHOLD``
v0.5.8
====================
**Changed:**
* The ``xonsh.platform.os_environ`` wrapper is now case-insensitive and
case-preserving on Windows.
* The private ``_TeeStd`` class will no longer attempt to write to a
standard buffer after the tee has been 'closed' and the standard
buffer returned to the system.
**Fixed:**
* Fixed a bug on py34 where os.scandir was used by accident.
* Line continuations (``\\``) is subproc mode will no longer consume the
surrounding whitespace.
* Fixed a bug if foreign_shell name was not written in lower case in
the static configuration file ``config.json``
* Fixed a regression on Windows where caused ``which`` reported that the
``PATH`` environment variable could not be found.
* Fixed issue with foregrounding jobs that were started in the background.
* Fixed that ``Ctrl-C`` crashes xonsh after running an invalid command.
* Fixed an potential ``ProcessLookupError`` issue, see #2288.
v0.5.7
====================
**Added:**
* New ``color_tools`` module provides basic color tools for converting
to and from various formats as well as creating palettes from color
strings.
* Redirections may now be used in string and list-of-strings
aliases.
* Subprocess redirection may now forego the whitespace between the
redirection and a file name. For example,
``echo hello world >/dev/null``.
* Add a ``-P`` flag to the ``cd`` function in order to change directory and
following symlinks.
* ``xonfig tutorial`` command to launch the http://xon.sh/tutorial in the
browser.
* ``@(...)`` syntax now supports generators and tuples without parentheses.
* Sourcing foreign shells now have the ``--show`` option, which
lets you see when script will be run, and the ``--dryrun``
option which prevents the source from actually taking place.
Xonsh's foreign shell API also added these keyword arguments.
* Subprocess mode now supports subshells. Place any xonsh
code between two parentheses, e.g. ``(cmd)``, to run
this command in a separate xonsh subprocess.
* Foreign shell aliases now have the ability to take extra arguments,
if needed.
* Xonsh will issue a warning message when the current working
directory has been remove out from under it and not replaced
prior to running the next command.
* Line continuation backslashes are respected on Windows in the PTK shell if
the backspace is is preceded by a space.
* Added ``ponysay`` as a command which will usually not run in a
threaded mode in the commands cache.
* New ``jsonutils`` module available for serializing special
xonsh objects to JSON.
**Changed:**
* The literal tokens ``and`` and ``or`` must be surrounded by
whitespace to delimit subprocess mode. If they do not have
whitespace on both sides in subproc mode, they are considered
to be part of a command argument.
* The ``xontrib`` command is now flagged as unthreadable and will be
run on the main Python thread. This allows xontribs to set signal
handlers and other operations that require the main thread.
* nvim (Neovim) has been flagged as unthreadable
* The interactive prompt will now catch ``SystemExit`` and, instead
of exiting the session, will refresh the prompt. This is the same
process as for keyboard interrupts.
* Xonsh no longer launches the wizard for new users. Instead a welcome screen is
shown which says how to launch the wizard.
* Added Windows ``expanduser()``-like function which prevents
the expansion of ``~`` that are not followed by a path
separator.
* Collecting xonsh history files was reported to have random runtime
OSError failures. This exception is now handled, just in case. The
The exception will still be printed in debug mode.
* ``Shell.stype`` has been renamed to ``Shell.shell_type``.
* The configuration wizard now displays the proper control sequence to leave
the wizard at the to start of the wizard itself. Note that this is Ctrl+D for
readline and Ctrl+C for prompt-toolkit.
* Callable alias proxy functions are now more friendly to
``functools.partial()``.
* ``prompt.vc.get_hg_branch`` now uses ``os.scandir`` to walk up the filetree
looking for a ``.hg`` directory. This results in (generally) faster branch
resolution compared to the subprocess call to ``hg root``.
* Xonsh's script and code caches will are now invalidated whenever the
xonsh version changes for a given Python version.
* Autowrapping of subprocess globs has been improved to cover
more cases that are ambiguous with Python syntax.
* Job control info when foregrounding or backgrounding jobs will now
only be displayed when xonsh is in interactive mode.
* Enabled virtual terminal processing in the prompt-toolkit shell for Windows.
**Fixed:**
* 3rd party pygments styles (like solorized or monokailight) are now
able to be used in xonsh. These styles are dynamically created upon
first use, rather than being lazily loaded by xonsh.
* On Windows, ``os.environ`` is case insensitive. This would potentially
change the case of environment variables set into the environment.
Xonsh now uses ``nt.environ``, the case sensitive counterpart, to avoid
these issues on Windows.
* Fix how ``$PWD`` is managed in order to work with symlinks gracefully
* ``history replay`` no longer barfs on ``style_name`` when setting up the
environment
* ``Shell.shell_type`` is now properly set to the same value as ``$SHELL_TYPE``.
* Fixed ``source-zsh`` to work with zsh v5.2.
* Fixed issue where ``del (x, y)`` would raise a syntax error.
* Certain vim commands issue commands involving subshells,
and this is now supported.
* Null bytes handed to Popen are now automatically escaped prior
to running a subprocess. This prevents Popen from issuing
embedded null byte exceptions.
* Xonsh will no longer crash is the current working directory is
removed out from under it.
* Multiline strings can now be written in subprocess mode.
* PTK completions will now correctly deduplicate autosuggest completions
and display completions values based on the cursor position.
* Fixed bug where trailing backspaces on Windows paths could be interpreted
as line continuations characters. Now line continuation characters must be
preceded by a space on Windows. This only applies to xonsh in interactive
mode to ensure scripts are portable.
* Importing ``*.xsh`` files will now respect the encoding listed in
that file and properly fallback to UTF-8. This behaviour follows
the rules described in PEP 263.
* Wizard is now able to properly serialize environment paths.
v0.5.6
====================
**Added:**
* New core utility function aliases (written in pure Python) are now
available in ``xonsh.xoreutils``. These include: ``cat``, ``echo``,
``pwd``, ``tee``, ``tty``, and ``yes``. These are not enabled by default.
Use the new ``coreutils`` xontrib to load them.
* CircleCI test post codecov run
* The ``trace`` will automatically disable color printing when
stdout is not a TTY or stdout is captured.
* New ``jedi`` xontrib enables jedi-based tab completions when it is loaded.
This supersedes xonsh's default Python-mode completer.
* The lexer has a new ``split()`` method which splits strings
according to xonsh's rules for whitespace and quotes.
* New events for hooking into the Python import process are now available.
You can now provide a handler for:
- ``on_import_pre_find_spec``
- ``on_import_post_find_spec``
- ``on_import_pre_create_module``
- ``on_import_post_create_module``
- ``on_import_pre_exec_module``
- ``on_import_post_exec_module``
**Changed:**
* The prompt toolkit shell's first completion will now be the
current token from the auto-suggestion, if available.
* Sourcing foreign shells will now safely skip applying aliases
with the same name as existing xonsh aliases by default.
This prevents accidentally overwriting important xonsh standard
aliases, such as ``cd``.
**Fixed:**
* Threadable prediction for subprocesses will now consult both the command
as it was typed in and any resolved aliases.
* The first prompt will no longer print in the middle of the line if the user has
already started typing.
* Windows consoles will now automatically enable virtual terminal processing
with the readline shell, if available. This allows the full use of ANSI
escape sequences.
* On the Windows readline shell, the tab-completion suppression prompt will no
longer error out depending on what you press.
* Fixed issue with subprocess mode wrapping not respecting line continuation
backslashes.
* Handle a bug where Bash On Windows causes platform.windows_bash_command()
to raise CalledProcessError.
* Fixed issues pertaining to completing from raw string paths.
This is particularly relevant to Windows, where raw strings
are inserted in path completion.
* Replace deprecated calls to ``time.clock()`` by calls to
``time.perf_counter()``.
* Use ``clock()`` to set the start time of ``_timings`` in non-windows instead
of manually setting it to ``0.0``.
* The ``trace`` utility will now correctly color output and not
print extraneous newlines when called in a script.
* The ``@$(cmd)`` operator now correctly splits strings according to
xonsh semantics, rather than just on whitespace using ``str.split()``.
* The ``mpl`` xontrib has been updated to improve matplotlib
handling. If ``xontrib load mpl`` is run before matplotlib
is imported and xonsh is in interactive mode, matplotlib
will automatically enter interactive mode as well. Additionally,
``pyplot.show()`` is patched in interactive mode to be non-blocking.
If a non-blocking show fails to draw the figure for some reason,
a regular blocking version is called.
* Fixed issues like ``timeit ls`` causing OSError - "Inappropriate ioctl
for device".
* Fixed a potential "OSError: [Errno 22] Invalid argument" to increase job
control stability.
v0.5.5
====================
**Added:**
* New ``--rc`` command line option allows users to specify paths to run control
files from the command line. This includes both xonsh-based and JSON-based
configuration.
* New ``$UPDATE_COMPLETIONS_ON_KEYPRESS`` controls whether or not completions
will automatically display and update while typing. This feature is only
available in the prompt-toolkit shell.
**Changed:**
* Xonsh scripts now report ``__file__`` and ``__name__`` when run as scripts
or sourced. These variables have the same meaning as they do in Python
scripts.
* ``$XONSHRC`` and related configuration variables now accept JSON-based
static configuration file names as elements. This unifies the two methods
of run control to a single entry point and loading system.
* The ``xonsh.shell.Shell()`` class now requires that an Execer instance
be explicitly provided to its init method. This class is no longer
responsible for creating an execer an its dependencies.
* Moved decorators ``unthreadable``, ``uncapturable`` from
``xonsh.proc`` to ``xonsh.tools``.
* Some refactorings on jobs control.
**Deprecated:**
* The ``--config-path`` command line option is now deprecated in favor of
``--rc``.
**Removed:**
* ``xonsh.environ.DEFAULT_XONSHRC`` has been removed due to deprecation.
For this value, please check the environment instead, or call
``xonsh.environ.default_xonshrc(env)``.
**Fixed:**
* Command pipelines that end in a callable alias are now interruptable with
``^C`` and the processes that are piped into the alias have their file handles
closed. This should ensure that the entire pipeline is closed.
* Fixed issue where unthreadable subprocs were not allowed to be
captured with the ``$(cmd)`` operator.
* The ``ProcProxy`` class (unthreadable aliases) was not being executed and would
hang if the alias was capturable. This has been fixed.
* Fixed a ``tcsetattr: Interrupted system call`` issue when run xonsh scripts.
* Fixed issue with ``ValueError`` being thrown from ``inspect.signature()``
when called on C-extension callables in tab completer.
* Fixed issue that ``ls | less`` crashes on Mac.
* Threadable prediction was incorrectly based on the user input command, rather than
the version where aliases have been resolved. This has been corrected.
v0.5.4
====================
**Added:**
* Add alias ``xip`` ("kip") so that xonsh's Python environment (whatever that is) can be modified.
* HistoryEntry, a SimpleNamespace object that represents a command in history.
* ``xonsh.completers.bash_completion`` module
* Added option to report timing information of xonsh startup times. Start xonsh
with the ``--timings`` flag to use the feature.
* The Python tab completer will now complete the argument names of functions
and other callables.
* Uptime module added to ``xonsh.xoreutils``. This can report the system
boot time and up time.
* The environment variable ``XONSH_HISTORY_BACKEND`` now also supports a
value of class type or a History Backend instance.
* ``on_envvar_new`` event that fires after a new envvar is created.
* ``on_envvar_change`` event that fires after an envvar is changed.
**Changed:**
* history indexing api to be more simple, now returns HistoryEntry.
* Decoupled ``bash_completion`` from xonsh project and added shim back to
xonsh.
* The JSON history backend will now unlock history files that were created
prior to the last reboot.
**Fixed:**
* Fixed broken bash completions on Windows if 'Windows Subsystem for Linux' is installed.
* Readline history would try to read the first element of history prior to
actually loading any history. This caused an exception to be raised on
Windows at xonsh startup when using pyreadline.
* Fixed issue with readline tab completer overwriting initial prefix in
some instances.
* Fixed issue wherein if ``git`` or (presumably) ``hg`` are aliased, then branch
information no longer appears in the ``$PROMPT``
* Fixed an issue with commands that background themselves (such as
``gpg-connect-agent``) not being able to be run from within xonshrc.
v0.5.3
====================
**Added:**
* Tab completion xontrib for python applications based on click framework.
* Added ``on_transform_command`` event for pre-processing that macros can't handle.
* Autodetection of backgroundability by binary analysis on POSIX.
* New argument ``expand_user=True`` to ``tools.expand_path``.
* New ``$COMPLETION_QUERY_LIMIT`` environment variable for setting the
number of completions above which the user will be asked if they wish to
see the potential completions.
* Users may now redirect stdout to stderr in subprocess mode.
**Changed:**
* The ``Block`` and ``Functor`` context managers from ``xonsh.contexts`` have been
rewritten to use xonsh's macro capabilities. You must now enter these via the
``with!`` statement, e.g. ``with! Block(): pass``.
* The ``distributed`` xontrib now needs to use the ``with!`` statement, since it
relies on ``Functor``.
* ``telnet`` has been flagged as unthreadable.
* When ``$DYNAMIC_CWD_ELISION_CHAR`` is non empty and the last dir of cwd is too
long and shortened, the elision char is added at the end.
* ``pygments`` is no longer a strict dependency of the ``prompt_toolkit``
backend. If ``pygments`` is not installed, the PTK backend will use the
default ansi color settings from the terminal. Syntax highlighting requires
that ``pygments`` is installed.
* Events are now keyword arguments only
* Restored ``on_precommand`` to its original signature.
* Move ``built_ins.expand_path`` to ``tools.expand_path``.
* Rename ``tools.expandpath`` to ``tools._expandpath``.
* Added ``gvim`` command to unthreadable predictors.
* The ``source`` alias now passes ``$ARGS`` down to file it is sourcing.
**Removed:**
* ``XonshBlockError`` has been removed, since it no longer serves a purpose.
**Fixed:**
* ``PopenThread`` will now re-issue SIGINT to the main thread when it is
received.
* Fixed an issue that using sqlite history backend does not kill unfinished
jobs when quitting xonsh with a second "exit".
* Fixed an issue that xonsh would fail over to external shells when
running .xsh script which raises exceptions.
* Fixed an issue with ``openpty()`` returning non-unix line endings in its buffer.
This was causing git and ssh to fail when xonsh was used as the login shell on the
server. See https://mail.python.org/pipermail/python-list/2013-June/650460.html for
more details.
* Restored the ability to ^Z and ``fg`` processes on posix platforms.
* CommandPipelines were not guaranteed to have been ended when the return code
was requested. This has been fixed.
* Introduce path expansion in ``is_writable_file`` to fix
``$XONSH_TRACEBACK_LOGFILE=~/xonsh.log``.
* Backgrounding a running process (^Z) now restores ECHO mode to the terminal
in cases where the subprocess doesn't properly restore itself. A major instance
of this behaviour is Python's interactive interpreter.
* Readline backend would not ask the user to confirm the printing of completion
options if they numbered above a certain value. Instead they would be dumped to
the screen. This has been fixed.
* Jupyter kernel was no longer properly running subprocess commands.
This has been fixed.
* The filename is applied to the target of the ``source`` alias, providing better
tracebacks.
v0.5.2
====================
**Added:**
* Added ``weechat`` to default predictors
* ``$DYNAMIC_CWD_ELISION_CHAR`` environment variable to control how a shortened
path is displayed.
**Changed:**
* ``_ret_code`` function of ``prompt_ret_code`` xontrib return now ``None`` when
return code is 0 instead of empty string allowing more customization of prompt
format.
**Fixed:**
* Minor Python completer token counting bug fix.
* multiline syntax error in PTK shell due to buffer not being reset
* Segfaults and other early exit signals are now reported correctly,
again.
* ``tests/bin/{cat,pwd,wc}`` shebang changed to python3
v0.5.1
====================
**Fixed:**
* Fixed xonfig raising error when xonsh is not installed from source.
v0.5.0
====================
**Added:**
* $XONTRIB_MPL_MINIMAL environment variable can be set to change if plots are minimalist or as-seen
* xontrib-mpl now supports iTerm2 inline image display if iterm2_tools python package is installed
* Xonsh now will fallback to other shells if encountered errors when
starting up.
* Added entry to customization faq re: ``dirs`` alias (#1452)
* Added entry to customization faq re: tab completion selection (#1725)
* Added entry to customization faq re: libgcc core dump (#1160)
* Section about quoting in the tutorial.
* The ``$VC_HG_SHOW_BRANCH`` environment variable to control whether to hide the hg branch in the prompt.
* xonfig now contains the latest git commit date if xonsh installed
from source.
* Alt+Enter will execute a multiline code block irrespective of cursor position
* Windows now has the ability to read output asynchronously from
the console.
* Use `doctr <https://drdoctr.github.io/doctr/>`_ to deploy dev docs to github pages
* New ``xonsh.proc.uncapturable()`` decorator for declaring that function
aliases should not be run in a captured subprocess.
* New history backend sqlite.
* Prompt user to install xontrib package if they try to load an uninstalled
xontrib
* Callable aliases may now take a final ``spec`` argument, which is the
corresponding ``SubprocSpec`` instance.
* New ``bashisms`` xontrib provides additional Bash-like syntax, such as ``!!``.
This xontrib only affects the command line, and not xonsh scripts.
* Tests that create testing repos (git, hg)
* New subprocess specification class ``SubprocSpec`` is used for specifying
and manipulating subprocess classes prior to execution.
* New ``PopenThread`` class runs subprocesses on a a separate thread.
* New ``CommandPipeline`` and ``HiddenCommandPipeline`` classes manage the
execution of a pipeline of commands via the execution of the last command
in the pipeline. Instances may be iterated and stream lines from the
stdout buffer. These pipelines read from the stdout & stderr streams in a
non-blocking manner.
* ``$XONSH_STORE_STDOUT`` is now available on all platforms!
* The ``CommandsCache`` now has the ability to predict whether or not a
command must be run in the foreground using ``Popen`` or may use a
background thread and can use ``PopenThread``.
* Callable aliases may now use the full gamut of functions signatures:
``f()``, ``f(args)``, ``f(args, stdin=None)``,
``f(args, stdin=None, stdout=None)``, and `
``f(args, stdin=None, stdout=None, stderr=None)``.
* Uncaptured subprocesses now receive a PTY file handle for stdout and
stderr.
* New ``$XONSH_PROC_FREQUENCY`` environment variable that specifies how long
loops in the subprocess framework should sleep. This may be adjusted from
its default value to improved performance and mitigate "leaky" pipes on
slower machines.
* ``Shift+Tab`` moves backwards in completion dropdown in prompt_toolkit
* PromptFormatter class that holds all the related prompt methods
* PromptFormatter caching when building the prompt
* p-strings: ``p'/foo/bar'`` is short for ``pathlib.Path('/foo/bar')``
* byte strings: prefixes other than ``b'foo'`` (eg, ``RB'foo'``) now work
* Backticks for regex or glob searches now support an additional modifier
``p``, which causes them to return Path objects instead of strings.
* New ``BOTTOM_TOOLBAR`` environment variable to control a bottom toolbar as specified in prompt-toolkit
* New ``$XONSH_STDERR_PREFIX`` and ``$XONSH_STDERR_POSTFIX`` environment
variables allow the user to print a prompt-like string before and after
all stderr that is seen. For example, say that you would like stderr
to appear on a red background, you might set
``$XONSH_STDERR_PREFIX = "{BACKGROUND_RED}"`` and
``$XONSH_STDERR_PREFIX = "{NO_COLOR}"``.
* New ``xonsh.pyghooks.XonshTerminal256Formatter`` class patches
the pygments formatter to understand xonsh color token semantics.
* Load events are now available
* New events added: ``on_post_init``, ``on_pre_cmdloop``, ``on_pre_rc``, ``on_post_rc``, ``on_ptk_create``
* Completion for ``xonsh`` builtin functions ``xontrib`` and ``xonfig``
* Added a general customization FAQ page to the docs to collect various
tips/tricks/fixes for common issues/requests
* ``test_single_command`` and ``test_redirect_out_to_file`` tests in ``test_integrations``
* Add note that the target of redirection should be separated by a space.
**Changed:**
* CircleCI now handles flake8 checks
* Travis doesn't allow failures on nightly
* ``get_hg_branch`` runs ``hg root`` to find root dir and check if we're in repo
* The default style will now use the color keywords (#ansired, #ansidarkred)
to set colors that follow the terminal color schemes. Currently, this requires
prompt_toolkit master (>1.0.8) and pygments master (2.2) to work correctly.
* ``vox activate`` now accepts relative directories.
* Updated the effectivity of ``$XONSH_DEBUG`` on debug messages.
* Better documentation on how to get nice colors in Windows' default console
* All custom prompt_toolkit key binding filters now declared with the
``@Condition`` decorator
* The style for the prompt toolkit completion menu is now lightgray/darkgray instead of turquoise/teal
* landscape.io linting now ignores ply directory
* ``history`` help messages to reflect subcommand usage
* Quote all paths when completion if any of the paths needs be quoted,
so that bash can automatically complete to the max prefix of the paths.
* Tee'd reads now occur in 1kb chunks, rather than character-by-character.
* The ``which`` alias no longer has a trailing newline if it is captured.
This means that ``$(which cmd)`` will simply be the path to the command.
* The following commands are, by default, predicted to be not threadable
in some circumstances:
* bash
* csh
* clear
* clear.exe
* cls
* cmd
* ex
* fish
* htop
* ksh
* less
* man
* more
* mutt
* nano
* psql
* ranger
* rview
* rvim
* scp
* sh
* ssh
* startx
* sudo
* tcsh
* top
* vi
* view
* vim
* vimpager
* xo
* xonsh
* zsh
* The ``run_subproc()`` function has been replaced with a new implementation.
* Piping between processes now uses OS pipes.
* ``$XONSH_STORE_STDIN`` now uses ``os.pread()`` rather than ``tee`` and a new
file.
* The implementation of the ``foreground()`` decorator has been moved to
``unthreadable()``.
* ``voxapi.Vox`` now supports ``pathlib.Path`` and ``PathLike`` objects as virtual environment identifiers
* Renamed FORMATTER_DICT to PROMPT_FIELDS
* BaseShell instantiates PromptFormatter
* readline/ptk shells use PromptFormatter
* Updated the bundled version of ``ply`` to current master available
* vended ``ply`` is now a git subtree to help with any future updates
* ``WHITE`` color keyword now means lightgray and ``INTENSE_WHITE`` completely white
* Removed ``add_to_shell`` doc section from ``*nix`` install pages and instead
relocated it to the general customization page
* Moved a few ``*nix`` customization tips from the linux install page to the general
customization page
**Removed:**
* coverage checks
* ``CompletedCommand`` and ``HiddenCompletedCommand`` classes have been removed
in favor of ``CommandPipeline`` and ``HiddenCommandPipeline``.
* ``SimpleProcProxy`` and ``SimpleForegroundProcProxy`` have been removed
in favor of a more general mechanism for dispatching callable aliases
implemented in the ``ProcProxyThread`` and ``ProcProxy`` classes.
* ``test_run_subproc.py`` in favor of ``test_integrations.py``
* Unused imports in many tests
* Many duplicated tests (copypasta)
**Fixed:**
* xontrib-mpl now preserves the figure and does not permanently alter it for viewing
* Fix up small pep8 violations
* Fixed a bug where some files are not showing using bash completer
* Fixed some issues with subprocess capturing aliases that it probably
shouldn't.
* ``safe_readable()`` now checks for ``ValueError`` as well.
* The scroll bars in the PTK completions menus are back.
* Jupyter kernel installation now respects the setuptools ``root`` parameter.
* Fix ``__repr__`` and ``__str__`` methods of ``SubprocSpec`` so they report
correctly
* Fixed the message printed when which is unable to find the command.
* Fixed a handful of sphinx errors and warnings in the docs
* Fixed many PEP8 violations that had gone unnoticed
* Fix failure to detect an Anaconda python distribution if the python was install from the conda-forge channel.
* current_branch will try and locate the vc binary once
* May now Crtl-C out of an infinite loop with a subprocess, such as
```while True: sleep 1``.
* Fix for stdin redirects.
* Backgrounding works with ``$XONSH_STORE_STDOUT``
* ``PopenThread`` blocks its thread from finishing until command has completed
or process is suspended.
* Added a minimum time buffer time for command pipelines to check for
if previous commands have executed successfully. This is helpful
for pipelines where the last command takes a long time to start up,
such as GNU Parallel. This also checks to make sure that output has occurred.
This includes piping 2+ commands together and pipelines that end in
unthreadable commands.
* ``curr_branch`` reports correctly when ``git config status.short true`` is used
* ``pip`` completion now filters results by prefix
* Fixed streaming ``!(alias)`` repr evaluation where bytes where not
streamed.
* Aliases that begin with a comma now complete correctly (no spurious comma)
* Use ``python3`` in shebang lines for compatibility with distros that still use Python 2 as the default Python
* STDOUT is only stored when ``$XONSH_STORE_STDOUT=True``
* Fixed issue with alias redirections to files throwing an OSError because
the function ProcProxies were not being waited upon.
* Fixed issue with callable aliases that happen to call sys.exit() or
raise SystemExit taking out the whole xonsh process.
* Safely flushes file handles on threaded buffers.
* Proper default value and documentation for ``$BASH_COMPLETIONS``
* Fixed readline completer issues on paths with spaces
* Fix bug in ``argvquote()`` functions used when sourcing batch files on Windows. The bug meant an extra backslash was added to UNC paths.
Thanks to @bytesemantics for spotting it, and @janschulz for fixing the issue.
* pep8, lint and refactor in pytest style of ``test_ptk_multiline.py``, ``test_replay.py``
* Tab completion of aliases returned a upper cased alias on Windows.
* History show all action now also include current session items.
* ``proc.stream_stderr`` now handles stderr that doesn't have buffer attribute
* Made ``history show`` result sorted.
* Fixed issue that ``history gc`` does not delete empty history files.
* Standard stream tees have been fixed to accept the possibility that
they may not be backed by a binary buffer. This includes the pipeline
stdout tee as well as the shell tees.
* Fixed a bug when the pygments plugin was used by third party editors etc.
* CPU usage of ``PopenThread`` and ``CommandPipeline`` has been brought
down significantly.
v0.4.7
====================
**Added:**
* Define alias for 'echo' on startup for Windows only.
* New coredev `astronouth7303 <https://github.com/astronouth7303>`_ added
* ``which -a`` now searches in ``__xonsh_ctx__`` too
* Info about the xontrib cookiecutter template on xontrib tutorial
* xonsh's optional dependencies may now be installed with the pip extras ``ptk``, ``proctitle``, ``linux``, ``mac``, and ``win``.
* Env ``help`` method to format and print the vardocs for an envvar
* test_news fails if no empty line before a category
* more info on test_news failures
* Added ``on_precommand`` and ``on_postcommand`` `events </events.html>`_
* New ``FORMATTER_DICT`` entry ``gitstatus`` to provides informative git status
* FOREIGN_ALIASES_OVERRIDE envvar to control whether foreign aliases should
override xonsh aliases with the same name.
* Warning on tutorial about foreign aliases being ignored if a xonsh alias
exist with the same name if not FOREIGN_ALIASES_OVERRIDE.
* The prompt-toolkit shell now auto-inserts matching parentheses, brackets, and quotes. Enabled via the ``XONSH_AUTOPAIR`` environment variable
* Better syntax highlights in prompt-toolkit, including valid command / path highlighting, macro syntax highlighting, and more
* More info on tutorial about history interaction
* Entry on bash_to_xsh
* Macro context managers are now available via the ``with!``
syntax.
**Changed:**
* Devguide reflects the current process of releasing through ``release.xsh``
* moved ``which`` from ``xonsh.aliases`` into ``xoreutils.which``
* ``xonsh.prompt.gitstatus.gitstatus`` now returns a namedtuple
* implementation of ``xonsh.prompt.vc_branch.get_git_branch`` and
``xonsh.prompt.vc_branch.git_dirty_working_directory`` to use 'git status --procelain'
* moved prompt formatting specific functions from ``xonsh.environ``
to ``xonsh.prompt.base``
* All prompt formatter functions moved to ``xonsh.prompt`` subpackage
* Printing the message about foreign aliases being ignored happens only
if XONSH_DEBUG is set.
* Use ``SetConsoleTitleW()`` on Windows instead of a process call.
* Tutorial to reflect the current history command argument functionality
* Macro function arguments now default to ``str``, rather than ``eval``,
for consistency with other parts of the macro system.
**Removed:**
* aliases that use '!' in their name cause they clash with the macro syntax
**Fixed:**
* Fix regression where bash git completions where not loaded
automatically when GitForWindows is installed.
* More tokens are now supported in subproc args, such as ``==``.
* Python completions now work without space delimiters, e.g. ``a=matpl<TAB>``
will complete to ``a=matplotlib``
* Parser would fail on nested, captured suprocess macros. Now, it works,
hooray!?
* now fires chdir event if OS change in working directory is detected.
* ``xonsh.prompt.vc_branch.git_dirty_working_directory``
uses ``porcelain`` option instead of using the bytestring
``nothing to commit`` to find out if a git directory is dirty
* Fix bug where know commands where not highlighted on windows.
* Fixed completer showing executable in upper case on windows.
* Fixed issue where tilde expansion was occurring more than once before an
equals sign.
* test_dirstack test_cdpath_expansion leaving stray testing dirs
* Better completer display for long completions in prompt-toolkit
* Automatically append newline to target of ``source`` alias, so that it may
be exec'd.
* test_news fails when single graves around word
* Slashes in virtual environment names work in vox
* non string type value in $FORMATTER_DICT turning prompt ugly
* whole prompt turning useless when one formatting function raises an exception
* Fix completion after alias expansion
* Fix hard crash when foreign shell functions fails to run. #1715
* Bug where non-default locations for ``XDG_DATA_HOME`` and ``XONSH_DATA_DIR``
would not expand ``~`` into the home directory
* Auto quote path completions if path contains 'and' or 'or'
* Completion now works on subcommands after pipe, ``&&``, ``||`` and so on.
* cd . and cd <singleCharacter> now work. Fix indexerror in AUTO_PUSHD case, too.
* Fixed issue with accidentally wrapping generators inside of function calls.
* History indexing with string returns most recent command.
v0.4.6
====================
**Added:**
* New option ``COMPLETIONS_CONFIRM``. When set, ``<Enter>`` is used to confirm
completion instead of running command while completion menu is displayed.
* NetBSD is now supported.
* Macro function calls are now available. These use a Rust-like
``f!(arg)`` syntax.
* Macro subprocess call now available with the ``echo! x y z``
syntax.
* A new `event subsystem <http://xon.sh/tutorial_events.html>`_ has been added.
* howto install sections for Debian/Ubuntu and Fedora.
* ``History`` methods ``__iter__`` and ``__getitem__``
* ``tools.get_portions`` that yields parts of an iterable
* Added a py.test plugin to collect ``test_*.xsh`` files and run ``test_*()`` functions.
* ``__repr__`` and ``__str__`` magic method on LazyObject
**Changed:**
* ``create_module`` implementation on XonshImportHook
* Results of the ``bash`` tab completer are now properly escaped (quoted) when necessary.
* Foreign aliases that match xonsh builtin aliases are now ignored with a warning.
* ``prompt_toolkit`` completions now only show the rightmost portion
of a given completion in the dropdown
* The value of ``'none'`` is no longer allowed for ``$SHELL_TYPE`` just during the initial
load from the environment. ``-D``, later times, and other sources still work.
* ``yacc_debug=True`` now load the parser on the same thread that the
Parser instance is created. ``setup.py`` now uses this synchronous
form as it was causing the parser table to be missed by some package
managers.
* Tilde expansion for the home directory now has the same semantics as Bash.
Previously it only matched leading tildes.
* Context sensitive AST transformation now checks that all names in an
expression are in scope. If they are, then Python mode is retained. However,
if even one is missing, subprocess wrapping is attempted. Previously, only the
left-most name was examined for being within scope.
* ``dirstack.pushd`` and ``dirstack.popd`` now handle UNC paths (of form ``\\<server>\<share>\...``), but only on Windows.
They emulate behavior of `CMD.EXE` by creating a temporary mapped drive letter (starting from z: down) to replace
the ``\\<server>\<share>`` portion of the path, on the ``pushd`` and unmapping the drive letter when all references
to it are popped.
* And ``dirstack`` suppresses this temporary drive mapping funky jive if registry entry
``HKCU\software\microsoft\command processor\DisableUNCCheck`` (or HKLM\...) is a DWORD value 1. This allows Xonsh
to show the actual UNC path in your prompt string and *also* allows subprocess commands invoking `CMD.EXE` to run in
the expected working directory. See https://support.microsoft.com/en-us/kb/156276 to satisfy any lingering curiosity.
* ``lazy_locate_binary`` handles binary on different drive letter than current working directory (on Windows).
* ``_curr_session_parser`` now iterates over ``History``
* New implementation of bash completer with better performance and compatibility.
* ``$COMPLETIONS_BRACKETS`` is now available to determine whether or not to
include opening brackets in Python completions
* ``xonsh.bat`` tries to use `pylauncher <https://www.python.org/dev/peps/pep-0397/>`_ when available.
**Removed:**
* ``History`` method ``show``
* ``_hist_get_portion`` in favor of ``tools.get_portions``
* Unused imports in proc, flake8.
**Fixed:**
* xonsh modules imported now have the __file__ attribute
* Context sensitive AST transformer was not adding argument names to the
local scope. This would then enable extraneous subprocess mode wrapping
for expressions whose leftmost name was function argument. This has been
fixed by properly adding the argument names to the scope.
* Foreign shell functions that are mapped to empty filenames no longer
receive aliases since they can't be found to source later.
* Correctly preserve arguments given to xon.sh, in case there are quoted ones.
* Environment variables in subprocess mode were not being expanded
unless they were in a sting. They are now expanded properly.
* Fixed a bug that prevented xonsh from running scripts with code caching disabled.
* Text of instructions to download missing program now does not get off and
appears in whole.
* Fix some test problems when win_unicode_console was installed on windows.
* Fixed bug that prompt string and ``$PWD`` failed to track change in actual working directory if the
invoked Python function happened to change it (e.g via ```os.chdir()```. Fix is to update ``$PWD``
after each command in ```BaseShell.default()```.
* The interactive prompt now correctly handles multiline strings.
* ``cd \\<server>\<share>`` now works when $AUTO_PUSHD is set, either creating a temporary mapped drive or simply
setting UNC working directory based on registry ``DisableUNCCheck``. However, if $AUTO_PUSHD is not set and UNC
checking is enabled (default for Windows), it issues an error message and fails. This improves on prior behavior,
which would fail to change the current working directory, but would set $PWD and prompt string to the UNC path,
creating false expectations.
* fix parsing for tuple of tuples (like `(),()`)
* ``sys.stdin``, ``sys.stdout``, ``sys.stderr`` no longer complete with
opening square brackets
* xonsh now properly handles syntax error messages arising from using values in inappropriate contexts (e.g., ``del 7``).
MAIN commitmail json YAML
freeradius-sqlite3: reset PKGREVISION
Reset PKGREVISION by updates of net/freeradius.
Reset PKGREVISION by updates of net/freeradius.
MAIN commitmail json YAML
freeradius-rest: reset PKGREVISION
Reset PKGREVISION by updates of net/freeradius.
Reset PKGREVISION by updates of net/freeradius.
MAIN commitmail json YAML
freeradius-freetds: reset PKGREVISION
Reset PKGREVISION by updates of net/freeradius.
Reset PKGREVISION by updates of net/freeradius.
MAIN commitmail json YAML
Updated net/freeradius to 3.0.16
MAIN commitmail json YAML
pkgsrc/net/freeradius/DEINSTALL@1.2
/
diff
pkgsrc/net/freeradius/INSTALL@1.2 / diff
pkgsrc/net/freeradius/Makefile@1.95 / diff
pkgsrc/net/freeradius/Makefile.common@1.2 / diff
pkgsrc/net/freeradius/PLIST@1.29 / diff
pkgsrc/net/freeradius/distinfo@1.35 / diff
pkgsrc/net/freeradius/patches/patch-ai@1.13 / diff
pkgsrc/net/freeradius/patches/patch-configure.ac@1.2 / diff
pkgsrc/net/freeradius/patches/patch-rlm_krb5_configure deleted
pkgsrc/net/freeradius/patches/patch-rlm_perl_configure deleted
pkgsrc/net/freeradius/patches/patch-rlm_yubikey_configure deleted
pkgsrc/net/freeradius/INSTALL@1.2 / diff
pkgsrc/net/freeradius/Makefile@1.95 / diff
pkgsrc/net/freeradius/Makefile.common@1.2 / diff
pkgsrc/net/freeradius/PLIST@1.29 / diff
pkgsrc/net/freeradius/distinfo@1.35 / diff
pkgsrc/net/freeradius/patches/patch-ai@1.13 / diff
pkgsrc/net/freeradius/patches/patch-configure.ac@1.2 / diff
pkgsrc/net/freeradius/patches/patch-rlm_krb5_configure deleted
pkgsrc/net/freeradius/patches/patch-rlm_perl_configure deleted
pkgsrc/net/freeradius/patches/patch-rlm_yubikey_configure deleted
freeradius: Updated to 3.0.16
2018.01.11 Version 3.0.16 has been released.
The focus of this release is stability.
Feature Improvements
* rlm_python now supports multiple lists. From #2031.
* Add trust router re-keying. From #2007.
* Add support for Samba / AD LDAP schema See doc/schemas/ldap/samba/README.txt
and doc/schemas/ldap/samba/.
* Add "tls_min_version" and "tls_max_version" to EAP module for Debian OpenSSL
issues.
* Better documentation for client certificates in PEAP and TTLS: it usually
doesn't work. Fixes #2068.
* Distinguish login failure from AD unavailable. Fixes #2069.
* Update RH spec files. Fixes #2070.
* Run Post-Proxy-Type if all home servers are dead Fixes #2072.
* Print offending IP addresses when EAP sessions come from two upstream home
servers, and rate-limit the messages.
* Minor packaging updates.
* Better documentation for rlm_rest.
* EAP-FAST now has it's own "cipher_list", so that it is easier to configure.
* EAP-FAST now forcibly disables TLS1.2, until such time as we implement
the new keying mechanism from TLS1.2.
* Add documentation for allow_expired_crl.
* Update Debian logrotation. #2093 and #2101.
* DHCP relay can now drop responses. #2095.
* rlm_sqlippool can now assign Delegated-IPv6-Prefix It also now can assign
any IPv4 or IPv6 address Based on patches from maximumG. #2094 See
raddb/mods-available/sqlippool for changes.
* radeapclient can now use EAP-SIM-Ki to dynamically create the necessary
triplets.
* Explain why many LDAP connections are closed Fixes #1969.
* Debian build / package issues fixed by Matthew Newton.
* dictionary.patton updates from Brice Schaffner. Fixes #2137.
* Added scripts to build "inner-server.pem", and updated mods-config/inner-eap
and certs/README to match.
* Added provisions for using an external CA. See raddb/certs/.
* Include dhcpclient binary in freeradius-dhcp debian packge.
Bug Fixes
* Bind the lifetime of program name and python path to the module FR-AD-002
(redone).
* Pass correct statement length into sqlite3_prepare[_v2] FR-AD-003 (redone).
* Allow 100-Continue responses with additional headers in rlm_rest.
* fix corner case where detail files were not being locked correctly.
* Fix (SQL-Group == "%{...}") checks, and same for LDAP-Group Fixes #1947.
* Clean up exfile code. Which should help to avoid issues with reading / writing
100's of detail files.
* Fix build for winbind. Patch from Alex Clouter.
* Fix checkrad for Mikrotik. Patch from Muchael Ducharme.
* Fix home server stats lookup. Patch from Phil Mayers.
* Add libjson-c3 as an optional dependency.
* Require LTB OpenLDAP on CentOS / Redhat, to avoid linking against NSS,
which breaks the server. Fixes #2040.
* rlm_python fixes. Fixes #2041.
* Typos in "man" pages. Fixes #2045.
* Expand "next" in %{%{...}:-%{...}}. Fixes #2048.
* Don't add TLS attributes twice. Fixes #2050.
* Fix memory allocation in rlm_rest. Fixes #2051.
* Update trustrouter for new API. Fixes #2059.
* Fix SQLite issues on FreeBSD. Fixes #2060.
* Don't do debug logging of bad passwords. Fixes #2064.
* More graceful handling of "die" in rlm_perl. Fixes #2073.
* Fix occasional crash when using cisco_accounting_username_bug = yes.
* EAP-FAST fixes from Isaac Boukris #2078, #2076, and #2082, #2126.
* DHCP fixes, relay, #2092, add run-time check, #2028.
* Decode multiple RADIUS packets at a time in highly loaded RadSec connections. Patch from Jan Tomasek. #2106.
* TunnelPassword is not "single value" in LDAP schema Fixes #2061.
* sql log now opens the expanded filename, not the input one This was
a regression introduced in 3.0.15.
* Remove unnecessary UNIQUE constrain in Oracle schemas.
* Fix SSL thread and locking issues when modules also use SSL Fixes #2125 and
#2129.
* Re-add dhcpclient "raw packet" changes. Patches from Nicolas Chaigne and
Matthew Newton. Fixes #2155.
2018.01.11 Version 3.0.16 has been released.
The focus of this release is stability.
Feature Improvements
* rlm_python now supports multiple lists. From #2031.
* Add trust router re-keying. From #2007.
* Add support for Samba / AD LDAP schema See doc/schemas/ldap/samba/README.txt
and doc/schemas/ldap/samba/.
* Add "tls_min_version" and "tls_max_version" to EAP module for Debian OpenSSL
issues.
* Better documentation for client certificates in PEAP and TTLS: it usually
doesn't work. Fixes #2068.
* Distinguish login failure from AD unavailable. Fixes #2069.
* Update RH spec files. Fixes #2070.
* Run Post-Proxy-Type if all home servers are dead Fixes #2072.
* Print offending IP addresses when EAP sessions come from two upstream home
servers, and rate-limit the messages.
* Minor packaging updates.
* Better documentation for rlm_rest.
* EAP-FAST now has it's own "cipher_list", so that it is easier to configure.
* EAP-FAST now forcibly disables TLS1.2, until such time as we implement
the new keying mechanism from TLS1.2.
* Add documentation for allow_expired_crl.
* Update Debian logrotation. #2093 and #2101.
* DHCP relay can now drop responses. #2095.
* rlm_sqlippool can now assign Delegated-IPv6-Prefix It also now can assign
any IPv4 or IPv6 address Based on patches from maximumG. #2094 See
raddb/mods-available/sqlippool for changes.
* radeapclient can now use EAP-SIM-Ki to dynamically create the necessary
triplets.
* Explain why many LDAP connections are closed Fixes #1969.
* Debian build / package issues fixed by Matthew Newton.
* dictionary.patton updates from Brice Schaffner. Fixes #2137.
* Added scripts to build "inner-server.pem", and updated mods-config/inner-eap
and certs/README to match.
* Added provisions for using an external CA. See raddb/certs/.
* Include dhcpclient binary in freeradius-dhcp debian packge.
Bug Fixes
* Bind the lifetime of program name and python path to the module FR-AD-002
(redone).
* Pass correct statement length into sqlite3_prepare[_v2] FR-AD-003 (redone).
* Allow 100-Continue responses with additional headers in rlm_rest.
* fix corner case where detail files were not being locked correctly.
* Fix (SQL-Group == "%{...}") checks, and same for LDAP-Group Fixes #1947.
* Clean up exfile code. Which should help to avoid issues with reading / writing
100's of detail files.
* Fix build for winbind. Patch from Alex Clouter.
* Fix checkrad for Mikrotik. Patch from Muchael Ducharme.
* Fix home server stats lookup. Patch from Phil Mayers.
* Add libjson-c3 as an optional dependency.
* Require LTB OpenLDAP on CentOS / Redhat, to avoid linking against NSS,
which breaks the server. Fixes #2040.
* rlm_python fixes. Fixes #2041.
* Typos in "man" pages. Fixes #2045.
* Expand "next" in %{%{...}:-%{...}}. Fixes #2048.
* Don't add TLS attributes twice. Fixes #2050.
* Fix memory allocation in rlm_rest. Fixes #2051.
* Update trustrouter for new API. Fixes #2059.
* Fix SQLite issues on FreeBSD. Fixes #2060.
* Don't do debug logging of bad passwords. Fixes #2064.
* More graceful handling of "die" in rlm_perl. Fixes #2073.
* Fix occasional crash when using cisco_accounting_username_bug = yes.
* EAP-FAST fixes from Isaac Boukris #2078, #2076, and #2082, #2126.
* DHCP fixes, relay, #2092, add run-time check, #2028.
* Decode multiple RADIUS packets at a time in highly loaded RadSec connections. Patch from Jan Tomasek. #2106.
* TunnelPassword is not "single value" in LDAP schema Fixes #2061.
* sql log now opens the expanded filename, not the input one This was
a regression introduced in 3.0.15.
* Remove unnecessary UNIQUE constrain in Oracle schemas.
* Fix SSL thread and locking issues when modules also use SSL Fixes #2125 and
#2129.
* Re-add dhcpclient "raw packet" changes. Patches from Nicolas Chaigne and
Matthew Newton. Fixes #2155.
MAIN commitmail json YAML
doc: Updated devel/talloc to 2.1.11nb1
MAIN commitmail json YAML
devel/talloc: resolve conflict with samba-4.6.8nb4.
Bump PKGREVISION.
Bump PKGREVISION.
MAIN commitmail json YAML
doc: Updated net/samba4 to 4.6.8nb4
MAIN commitmail json YAML
net/samba4: use devel/talloc package instead of bundled library.
I'd like to install net/samba4 and net/freeradius on the same server.
But devel/talloc on which net/freeradius depends conflicts bundled talloc
library used in net/samba.
net/samba also should use devel/talloc package.
Bump PKGREVISION.
I'd like to install net/samba4 and net/freeradius on the same server.
But devel/talloc on which net/freeradius depends conflicts bundled talloc
library used in net/samba.
net/samba also should use devel/talloc package.
Bump PKGREVISION.
MAIN commitmail json YAML
Updated sysutils/smartmontools to 6.6
MAIN commitmail json YAML
pkgsrc/sysutils/smartmontools/Makefile@1.30
/
diff
pkgsrc/sysutils/smartmontools/distinfo@1.29 / diff
pkgsrc/sysutils/smartmontools/patches/patch-atacmds.h deleted
pkgsrc/sysutils/smartmontools/patches/patch-freebsd_nvme_ioctl.h deleted
pkgsrc/sysutils/smartmontools/patches/patch-os__netbsd.cpp deleted
pkgsrc/sysutils/smartmontools/distinfo@1.29 / diff
pkgsrc/sysutils/smartmontools/patches/patch-atacmds.h deleted
pkgsrc/sysutils/smartmontools/patches/patch-freebsd_nvme_ioctl.h deleted
pkgsrc/sysutils/smartmontools/patches/patch-os__netbsd.cpp deleted
Updated smartmontools to 6.6.
Date 2017-11-05
Summary: smartmontools release 6.6
-----------------------------------------------------------
- smartctl '-i' and '--identify': ATA ACS-4 and SATA 3.3 enhancements.
- smartctl: Control ATA write cache through SCT Feature Control
with '-s wcache-sct,ata|on|off[,p]' and '-g wcache-sct'.
- smartctl: Print ATA Pending Defects log with '-l defects'.
- smartctl '-s wcreorder,on|off': New persistent flag ',p'.
- smartctl '-s standby': Prevent temporary drive spinup.
- smartctl '-n POWERMODE': New parameter to set exit status.
- smartctl '-g security': ATA Security Level check fixed.
- smartctl '-l scttemp*': Print minimum supported ERC Time Limit.
- smartctl '-q noserial': Now also suppresses "SAS address" output.
- smartctl '-i': Print IEEE EUI-64 of NVMe namespace.
- smartctl '-c': Print NVMe 1.3 feature flags.
- smartctl '-A': Print NVMe 1.3 thermal temperature transition
statistic.
- smartctl '-g/s dsn': Get/set ATA DSN.
- smartd: Uses also device identify information to detect for duplicate
devices.
- smartd '-e dsn' directive: Set ATA DSN.
- smartd: Improved SCSI/SAS temperature logging.
- smartd: Silence emails and log messages on open errors of
'-d removable' devices.
- smartd: Exit on device open error unless '-q never' or '-d removable'
is specified (regression).
- update-smart-drivedb: Now authenticates downloaded file with GnuPG.
- update-smart-drivedb: New options '--trunk', '--no-verify' and
'--export-key'.
- Device type '-d intelliprop,N' for IntelliProp controllers.
- SCSI: Default timeout increased to 1 minute.
- configure: New options '--with-gnupg', '--with-scriptpath' and
'--with-update-smart-drivedb=X.Y'
- configure: Checks for C++11 support option and requires
'--with[out]-cxx11-option' if option unknown or no C++11 support.
- HDD, SSD and USB additions to drive database.
- New smartmontools-* mailing list addresses.
- Man page formatting reworked.
- Linux: Uses SG_IO V4 API if supported.
- Linux: Devices behind hpsa driver are no longer detected as regular
SCSI devices.
- Darwin: Initial NVMe support based on undocumented API.
- FreeBSD: Fix panic on INVARIANTS enabled kernel.
- FreeBSD: Improve ATA SMART STATUS check for legacy controllers.
- FreeBSD: Compile fix for FreeBSD-11 and newer.
- NetBSD: NVMe support.
- NetBSD: Full 28-bit ATA support.
- NetBSD: Compile fix.
- NetBSD: Use a raw disk device file.
- OpenBSD: Compile fix.
- OS/2: Support for the OS2AHCI driver, updating source code,
adding autoscan support, adding self-test support.
- Windows: Support for Windows 10 NVMe driver (stornvme.sys).
- Windows: Fix CSMI access for IRST driver 15.2.
- Windows smartd: Ability to run PowerShell scripts with '-M exec'.
- Windows smartd: New PowerShell script to send smartd warning emails
without external tools.
- Windows package: Now provides PDF man pages.
Date 2017-11-05
Summary: smartmontools release 6.6
-----------------------------------------------------------
- smartctl '-i' and '--identify': ATA ACS-4 and SATA 3.3 enhancements.
- smartctl: Control ATA write cache through SCT Feature Control
with '-s wcache-sct,ata|on|off[,p]' and '-g wcache-sct'.
- smartctl: Print ATA Pending Defects log with '-l defects'.
- smartctl '-s wcreorder,on|off': New persistent flag ',p'.
- smartctl '-s standby': Prevent temporary drive spinup.
- smartctl '-n POWERMODE': New parameter to set exit status.
- smartctl '-g security': ATA Security Level check fixed.
- smartctl '-l scttemp*': Print minimum supported ERC Time Limit.
- smartctl '-q noserial': Now also suppresses "SAS address" output.
- smartctl '-i': Print IEEE EUI-64 of NVMe namespace.
- smartctl '-c': Print NVMe 1.3 feature flags.
- smartctl '-A': Print NVMe 1.3 thermal temperature transition
statistic.
- smartctl '-g/s dsn': Get/set ATA DSN.
- smartd: Uses also device identify information to detect for duplicate
devices.
- smartd '-e dsn' directive: Set ATA DSN.
- smartd: Improved SCSI/SAS temperature logging.
- smartd: Silence emails and log messages on open errors of
'-d removable' devices.
- smartd: Exit on device open error unless '-q never' or '-d removable'
is specified (regression).
- update-smart-drivedb: Now authenticates downloaded file with GnuPG.
- update-smart-drivedb: New options '--trunk', '--no-verify' and
'--export-key'.
- Device type '-d intelliprop,N' for IntelliProp controllers.
- SCSI: Default timeout increased to 1 minute.
- configure: New options '--with-gnupg', '--with-scriptpath' and
'--with-update-smart-drivedb=X.Y'
- configure: Checks for C++11 support option and requires
'--with[out]-cxx11-option' if option unknown or no C++11 support.
- HDD, SSD and USB additions to drive database.
- New smartmontools-* mailing list addresses.
- Man page formatting reworked.
- Linux: Uses SG_IO V4 API if supported.
- Linux: Devices behind hpsa driver are no longer detected as regular
SCSI devices.
- Darwin: Initial NVMe support based on undocumented API.
- FreeBSD: Fix panic on INVARIANTS enabled kernel.
- FreeBSD: Improve ATA SMART STATUS check for legacy controllers.
- FreeBSD: Compile fix for FreeBSD-11 and newer.
- NetBSD: NVMe support.
- NetBSD: Full 28-bit ATA support.
- NetBSD: Compile fix.
- NetBSD: Use a raw disk device file.
- OpenBSD: Compile fix.
- OS/2: Support for the OS2AHCI driver, updating source code,
adding autoscan support, adding self-test support.
- Windows: Support for Windows 10 NVMe driver (stornvme.sys).
- Windows: Fix CSMI access for IRST driver 15.2.
- Windows smartd: Ability to run PowerShell scripts with '-M exec'.
- Windows smartd: New PowerShell script to send smartd warning emails
without external tools.
- Windows package: Now provides PDF man pages.
MAIN commitmail json YAML
Updated misc/iwatch to 1.0.4.
MAIN commitmail json YAML
pkgsrc/misc/iwatch/Makefile@1.2
/
diff
pkgsrc/misc/iwatch/distinfo@1.2 / diff
pkgsrc/misc/iwatch/patches/patch-iwatch.1@1.1 / diff
pkgsrc/misc/iwatch/patches/patch-iwatch.c@1.1 / diff
pkgsrc/misc/iwatch/distinfo@1.2 / diff
pkgsrc/misc/iwatch/patches/patch-iwatch.1@1.1 / diff
pkgsrc/misc/iwatch/patches/patch-iwatch.c@1.1 / diff
Update iwatch to 1.0.4.
* Support decimal franction for the interval prefix
* Suport highlighting by changing color and attributes
* Fix English from Preben Guldberg
* Improve manage from Preben Guldberg
* Support decimal franction for the interval prefix
* Suport highlighting by changing color and attributes
* Fix English from Preben Guldberg
* Improve manage from Preben Guldberg
MAIN commitmail json YAML
pkgsrc/graphics/py-mcomix/Makefile@1.11
/
diff
pkgsrc/graphics/py-mcomix/distinfo@1.5 / diff
pkgsrc/graphics/py-mcomix/patches/patch-mcomix_archive_archive_base.py@1.1 / diff
pkgsrc/graphics/py-mcomix/patches/patch-mcomix_archive_pdf_external.py@1.1 / diff
pkgsrc/graphics/py-mcomix/patches/patch-mcomix_archive_rar_external.py@1.1 / diff
pkgsrc/graphics/py-mcomix/patches/patch-mcomix_archive_sevenzip_external.py@1.1 / diff
pkgsrc/graphics/py-mcomix/distinfo@1.5 / diff
pkgsrc/graphics/py-mcomix/patches/patch-mcomix_archive_archive_base.py@1.1 / diff
pkgsrc/graphics/py-mcomix/patches/patch-mcomix_archive_pdf_external.py@1.1 / diff
pkgsrc/graphics/py-mcomix/patches/patch-mcomix_archive_rar_external.py@1.1 / diff
pkgsrc/graphics/py-mcomix/patches/patch-mcomix_archive_sevenzip_external.py@1.1 / diff
fix read subprocess stdout line by line.
Bump PKGREVISION.
Bump PKGREVISION.
MAIN commitmail json YAML
Updated fonts/koruri-ttf to 20161105
MAIN commitmail json YAML
Update koruri-ttf to 20161105.
20161105:
* M+ OUTLINE FONTS has been updated to TESTFLIGHT 062 (2016.09.30).
20161105:
* M+ OUTLINE FONTS has been updated to TESTFLIGHT 062 (2016.09.30).
MAIN commitmail json YAML
Add dependency to databases/py-sqlite3.
MAIN commitmail json YAML
Add dumpet
MAIN commitmail json YAML
Added devel/dumpet version 2.1
MAIN commitmail json YAML
pkgsrc/devel/dumpet/DESCR@1.1
/
diff
pkgsrc/devel/dumpet/Makefile@1.1 / diff
pkgsrc/devel/dumpet/PLIST@1.1 / diff
pkgsrc/devel/dumpet/distinfo@1.1 / diff
pkgsrc/devel/dumpet/patches/patch-Makefile@1.1 / diff
pkgsrc/devel/dumpet/patches/patch-dumpet.c@1.1 / diff
pkgsrc/devel/dumpet/patches/patch-dumpet.h@1.1 / diff
pkgsrc/devel/dumpet/patches/patch-endian.h@1.1 / diff
pkgsrc/devel/dumpet/Makefile@1.1 / diff
pkgsrc/devel/dumpet/PLIST@1.1 / diff
pkgsrc/devel/dumpet/distinfo@1.1 / diff
pkgsrc/devel/dumpet/patches/patch-Makefile@1.1 / diff
pkgsrc/devel/dumpet/patches/patch-dumpet.c@1.1 / diff
pkgsrc/devel/dumpet/patches/patch-dumpet.h@1.1 / diff
pkgsrc/devel/dumpet/patches/patch-endian.h@1.1 / diff
PR/51445: Import dumpet 2.1 as devel/dumpet.
dumpet is a tool to dump information about bootable CDs and other similar.
dumpet is a tool to dump information about bootable CDs and other similar.
MAIN commitmail json YAML
Updated security/keychain to 2.8.2
MAIN commitmail json YAML
pkgsrc/security/keychain/Makefile@1.34
/
diff
pkgsrc/security/keychain/PLIST@1.7 / diff
pkgsrc/security/keychain/distinfo@1.20 / diff
pkgsrc/security/keychain/patches/patch-keychain deleted
pkgsrc/security/keychain/PLIST@1.7 / diff
pkgsrc/security/keychain/distinfo@1.20 / diff
pkgsrc/security/keychain/patches/patch-keychain deleted
Update security/keychain to 2.8.2.
* keychain 2.8.2 (06 Nov 2015)
Summary: Support new ssh features, bug fix release.
Support for new hash algorithms (Ben Boeckel)
Remove bashisms (Daniel Hertz)
Various optimizations (Daniel Hahler)
--timeout option now gets passed to agent, doc fixes (Andrew Bezella, Emil
Lundberg)
RPM, Makefile fixes (Mike Frysinger)
* keychain 2.8.1 (29 May 2015)
Summary: POSIX compatibility and bug fix release.
Only set PATH to a standard value if PATH is not set. Otherwise, do not
modify.
Makefile Cygwin and RPM spec fixes (thanks Luke Bakken and Ricardo Silva)
Confhost fixes. Deprecate in_path. Use command -v instead.
Find_pids: Modify "ps" call to work with non-GNU ps. (Bryan Drewery)
Re-introduce POSIX compatibility (remove shopt.) (vaeth)
* keychain 2.8.0 (21 Mar 2015)
Support for OpenSSH 6.8 fingerprints.
Support for GnuPG 2.1.0.
Handle private keys that are symlinks, even if the associated public key is
in the target directory rather than alongside the symlink.
Allow private keys to have extensions, such as foo.priv. When looking for
matching public keys, look for foo.priv.pub, but also strip extension and
look for foo.pub if foo.priv.pub doesn't exist.
Initial support for --list/-l option to list SSH keys.
Updated docs for fish shell usage.
* keychain 2.7.2_beta1 (07 July 2014)
Various changes and updates:
Fixes for fish from Marc Joliet.
Keychain will default to start only ssh-agent unless GPG is explicitly
updated using --agents.
Write ~/.gpg-agent-info when launching gpg-agent - fix from Thomas Spura.
Add support for injecting agents into systemd (Ben Boeckel)
Add support for --query option (Ben Boeckel)
Add --absolute flag, allowing user to set a full path without getting a
.keychain suffix automatically appended.
Add --confhost option to scan ~/.ssh/config file to locate private key
path specified there.
* keychain 2.8.2 (06 Nov 2015)
Summary: Support new ssh features, bug fix release.
Support for new hash algorithms (Ben Boeckel)
Remove bashisms (Daniel Hertz)
Various optimizations (Daniel Hahler)
--timeout option now gets passed to agent, doc fixes (Andrew Bezella, Emil
Lundberg)
RPM, Makefile fixes (Mike Frysinger)
* keychain 2.8.1 (29 May 2015)
Summary: POSIX compatibility and bug fix release.
Only set PATH to a standard value if PATH is not set. Otherwise, do not
modify.
Makefile Cygwin and RPM spec fixes (thanks Luke Bakken and Ricardo Silva)
Confhost fixes. Deprecate in_path. Use command -v instead.
Find_pids: Modify "ps" call to work with non-GNU ps. (Bryan Drewery)
Re-introduce POSIX compatibility (remove shopt.) (vaeth)
* keychain 2.8.0 (21 Mar 2015)
Support for OpenSSH 6.8 fingerprints.
Support for GnuPG 2.1.0.
Handle private keys that are symlinks, even if the associated public key is
in the target directory rather than alongside the symlink.
Allow private keys to have extensions, such as foo.priv. When looking for
matching public keys, look for foo.priv.pub, but also strip extension and
look for foo.pub if foo.priv.pub doesn't exist.
Initial support for --list/-l option to list SSH keys.
Updated docs for fish shell usage.
* keychain 2.7.2_beta1 (07 July 2014)
Various changes and updates:
Fixes for fish from Marc Joliet.
Keychain will default to start only ssh-agent unless GPG is explicitly
updated using --agents.
Write ~/.gpg-agent-info when launching gpg-agent - fix from Thomas Spura.
Add support for injecting agents into systemd (Ben Boeckel)
Add support for --query option (Ben Boeckel)
Add --absolute flag, allowing user to set a full path without getting a
.keychain suffix automatically appended.
Add --confhost option to scan ~/.ssh/config file to locate private key
path specified there.
MAIN commitmail json YAML
MAIN commitmail json YAML
Add dependency to archivers/py-czipfile.
MAIN commitmail json YAML
Updated sysutils/smartmontools to 6.5
MAIN commitmail json YAML
pkgsrc/sysutils/smartmontools/Makefile@1.29
/
diff
pkgsrc/sysutils/smartmontools/distinfo@1.27 / diff
pkgsrc/sysutils/smartmontools/patches/patch-ag@1.6 / diff
pkgsrc/sysutils/smartmontools/patches/patch-os__netbsd.cpp@1.3 / diff
pkgsrc/sysutils/smartmontools/distinfo@1.27 / diff
pkgsrc/sysutils/smartmontools/patches/patch-ag@1.6 / diff
pkgsrc/sysutils/smartmontools/patches/patch-os__netbsd.cpp@1.3 / diff
Updated smartmontools to 6.5.
Date 2016-05-07
Summary: smartmontools release 6.5
-----------------------------------------------------------
- Experimental support for NVMe devices on FreeBSD, Linux and Windows.
- smartctl '-i', '-c', '-H' and '-l error': NVMe support.
- smartctl '-l nvmelog': New option for NVMe.
- smartd.conf '-H', '-l error' and '-W': NVMe support.
- Optional NVMe device scanning support on Linux and Windows.
- configure option '--with-nvme-devicescan' to include NVMe in
default device scanning result.
- Device scanning now allows to specify multiple '-d TYPE' options.
- ATA: Added new POWER MODE values introduced in ATA ACS-2.
- ATA: SCT commands are no longer issued if ATA Security is locked.
- SCSI: LB provisioning improvements.
- SCSI: Fixed GLTSD bit set/cleared info messages.
- SCSI: Solid State media log page is no longer checked for tapes.
- SCSI: Improved handling when no tape cartridge in drive.
- SCSI: Workaround for buggy Seagate firmware.
- SAT: Improved heuristics to detect bogus sense data from SAT layer.
- smartd: Fixed crash on missing argument to '-s' directive.
- update-smart-drivedb: Now uses HTTPS for download by default.
- update-smart-drivedb: New options to select URL and download tool.
- update-smart-drivedb: New download tool 'svn'.
- configure option '--without-update-smart-drivedb' to disable
update-smart-drivedb script.
- configure options '--disable-drivedb', '--enable-savestates',
'--enable-attributelog' and '--with-docdir' are no longer supported.
- autoconf < 2.60 and automake < 1.10 are no longer supported.
- Drive database file now also includes the DEFAULT setting
for each attribute.
- HDD, SSD and USB additions to drive database.
- Darwin: New support files for package installer.
New makefile target 'install-darwin' builds DMG image.
- Solaris: Auto detection of SATA devices behind SAT layer.
- Solaris SPARC: Legacy ATA support disabled by default.
New configure option '--with-solaris-sparc-ata' enables it.
File os_solaris_ata.s is no longer included in source tarball.
- Windows: Auto detection of USB devices specified by drive letter.
- Windows: Device scanning does no longer ignore unknown USB devices.
- Windows: Prevent drive spin up by '-n standby' check.
- Windows: New application manifests indicating Win 10 support.
- Windows smartd: '-m [sys]msgbox' is no longer supported.
- Windows installer: Defaults to 64-bit version on 64-bit Windows.
- Various code changes suggested by Clang Static Analyser and Cppcheck.
Date 2016-05-07
Summary: smartmontools release 6.5
-----------------------------------------------------------
- Experimental support for NVMe devices on FreeBSD, Linux and Windows.
- smartctl '-i', '-c', '-H' and '-l error': NVMe support.
- smartctl '-l nvmelog': New option for NVMe.
- smartd.conf '-H', '-l error' and '-W': NVMe support.
- Optional NVMe device scanning support on Linux and Windows.
- configure option '--with-nvme-devicescan' to include NVMe in
default device scanning result.
- Device scanning now allows to specify multiple '-d TYPE' options.
- ATA: Added new POWER MODE values introduced in ATA ACS-2.
- ATA: SCT commands are no longer issued if ATA Security is locked.
- SCSI: LB provisioning improvements.
- SCSI: Fixed GLTSD bit set/cleared info messages.
- SCSI: Solid State media log page is no longer checked for tapes.
- SCSI: Improved handling when no tape cartridge in drive.
- SCSI: Workaround for buggy Seagate firmware.
- SAT: Improved heuristics to detect bogus sense data from SAT layer.
- smartd: Fixed crash on missing argument to '-s' directive.
- update-smart-drivedb: Now uses HTTPS for download by default.
- update-smart-drivedb: New options to select URL and download tool.
- update-smart-drivedb: New download tool 'svn'.
- configure option '--without-update-smart-drivedb' to disable
update-smart-drivedb script.
- configure options '--disable-drivedb', '--enable-savestates',
'--enable-attributelog' and '--with-docdir' are no longer supported.
- autoconf < 2.60 and automake < 1.10 are no longer supported.
- Drive database file now also includes the DEFAULT setting
for each attribute.
- HDD, SSD and USB additions to drive database.
- Darwin: New support files for package installer.
New makefile target 'install-darwin' builds DMG image.
- Solaris: Auto detection of SATA devices behind SAT layer.
- Solaris SPARC: Legacy ATA support disabled by default.
New configure option '--with-solaris-sparc-ata' enables it.
File os_solaris_ata.s is no longer included in source tarball.
- Windows: Auto detection of USB devices specified by drive letter.
- Windows: Device scanning does no longer ignore unknown USB devices.
- Windows: Prevent drive spin up by '-n standby' check.
- Windows: New application manifests indicating Win 10 support.
- Windows smartd: '-m [sys]msgbox' is no longer supported.
- Windows installer: Defaults to 64-bit version on 64-bit Windows.
- Various code changes suggested by Clang Static Analyser and Cppcheck.
MAIN commitmail json YAML
Updated fonts/koruri-ttf to 20160506
MAIN commitmail json YAML
Update koruri-ttf to 20160506.
20160506:
* M+ OUTLINE FONTS has been updated to TESTFLIGHT 061 (2016.04.12).
20160506:
* M+ OUTLINE FONTS has been updated to TESTFLIGHT 061 (2016.04.12).
MAIN commitmail json YAML
Add iwatch
MAIN commitmail json YAML
Added misc/iwatch version 1.0.3
MAIN commitmail json YAML
pkgsrc/misc/iwatch/DESCR@1.1
/
diff
pkgsrc/misc/iwatch/Makefile@1.1 / diff
pkgsrc/misc/iwatch/PLIST@1.1 / diff
pkgsrc/misc/iwatch/distinfo@1.1 / diff
pkgsrc/misc/iwatch/Makefile@1.1 / diff
pkgsrc/misc/iwatch/PLIST@1.1 / diff
pkgsrc/misc/iwatch/distinfo@1.1 / diff
PR/51117: Import iwatch 1.0.3 as misc/iwatch.
iwatch is a program to watch the given command's output periodically and
watch the output change.
reviewed by wiz@.
iwatch is a program to watch the given command's output periodically and
watch the output change.
reviewed by wiz@.
MAIN commitmail json YAML
MAIN commitmail json YAML
Add ohruri-ttf
MAIN commitmail json YAML
Added fonts/ohruri-ttf version 20150606
MAIN commitmail json YAML
pkgsrc/fonts/ohruri-ttf/DESCR@1.1
/
diff
pkgsrc/fonts/ohruri-ttf/Makefile@1.1 / diff
pkgsrc/fonts/ohruri-ttf/PLIST@1.1 / diff
pkgsrc/fonts/ohruri-ttf/distinfo@1.1 / diff
pkgsrc/fonts/ohruri-ttf/Makefile@1.1 / diff
pkgsrc/fonts/ohruri-ttf/PLIST@1.1 / diff
pkgsrc/fonts/ohruri-ttf/distinfo@1.1 / diff
PR/51110: Import ohruri-ttf-20150606 as fonts/ohruri-ttf.
Ohruri Japanese TrueType fonts.
It is based on M+ Font, Source Han Sans and Open Sans Font (alphanumeric).
reviewed by wiz@.
Ohruri Japanese TrueType fonts.
It is based on M+ Font, Source Han Sans and Open Sans Font (alphanumeric).
reviewed by wiz@.
MAIN commitmail json YAML
Updated security/keepassx to 2.0.2
MAIN commitmail json YAML
PR/50771: Update security/keepassx to 2.0.2.
2.0.1:
- Flush temporary file before opening attachment. [#390]
- Disable password generator when showing entry in history mode. [#422]
- Strip invalid XML chars when writing databases. [#392]
- Add repair function to fix databases with invalid XML chars. [#392]
- Display custom icons scaled. [#322]
- Allow opening databases that have no password and keyfile. [#391]
- Fix crash when importing .kdb files with invalid icon ids. [#425]
- Update translations.
2.0.2:
- Fix regression in database writer that caused it to strip certain special
characters (characters from Unicode plane > 0).
- Fix bug in repair function that caused it to strip non-ASCII characters.
2.0.1:
- Flush temporary file before opening attachment. [#390]
- Disable password generator when showing entry in history mode. [#422]
- Strip invalid XML chars when writing databases. [#392]
- Add repair function to fix databases with invalid XML chars. [#392]
- Display custom icons scaled. [#322]
- Allow opening databases that have no password and keyfile. [#391]
- Fix crash when importing .kdb files with invalid icon ids. [#425]
- Update translations.
2.0.2:
- Fix regression in database writer that caused it to strip certain special
characters (characters from Unicode plane > 0).
- Fix bug in repair function that caused it to strip non-ASCII characters.
MAIN commitmail json YAML
Updated devel/py-subprocess32 to 3.2.7
MAIN commitmail json YAML
pkgsrc/devel/py-subprocess32/Makefile@1.3
/
diff
pkgsrc/devel/py-subprocess32/distinfo@1.3 / diff
pkgsrc/devel/py-subprocess32/patches/patch-setup.py@1.2 / diff
pkgsrc/devel/py-subprocess32/distinfo@1.3 / diff
pkgsrc/devel/py-subprocess32/patches/patch-setup.py@1.2 / diff
Updated devel/py-subprocess32 to 3.2.7
-----------------
2015-11-15 3.2.7
-----------------
* Issue #6973: When we know a subprocess.Popen process has died, do
not allow the send_signal(), terminate(), or kill() methods to do
anything as they could potentially signal a different process.
* Issue #23564: Fixed a partially broken sanity check in the _posixsubprocess
internals regarding how fds_to_pass were passed to the child. The bug had
no actual impact as subprocess32.py already avoided it.
-----------------
2015-11-14 3.2.7rc2
-----------------
* Moved the repository from code.google.com to github.
* Added a _WAIT_TIMEOUT to satisfy the unsupported people entirely on
their own trying to use this on Windows.
* Similarly: Updated setup.py to not build the extension on non-posix.
-----------------
2014-06-01 3.2.7rc1
-----------------
* Issue #21618: The subprocess module could fail to close open fds that were
inherited by the calling process and already higher than POSIX resource
limits would otherwise allow. On systems with a functioning /proc/self/fd
or /dev/fd interface the max is now ignored and all fds are closed.
-----------------
2015-11-15 3.2.7
-----------------
* Issue #6973: When we know a subprocess.Popen process has died, do
not allow the send_signal(), terminate(), or kill() methods to do
anything as they could potentially signal a different process.
* Issue #23564: Fixed a partially broken sanity check in the _posixsubprocess
internals regarding how fds_to_pass were passed to the child. The bug had
no actual impact as subprocess32.py already avoided it.
-----------------
2015-11-14 3.2.7rc2
-----------------
* Moved the repository from code.google.com to github.
* Added a _WAIT_TIMEOUT to satisfy the unsupported people entirely on
their own trying to use this on Windows.
* Similarly: Updated setup.py to not build the extension on non-posix.
-----------------
2014-06-01 3.2.7rc1
-----------------
* Issue #21618: The subprocess module could fail to close open fds that were
inherited by the calling process and already higher than POSIX resource
limits would otherwise allow. On systems with a functioning /proc/self/fd
or /dev/fd interface the max is now ignored and all fds are closed.
MAIN commitmail json YAML
Updated fonts/koruri-ttf to 20151021
MAIN commitmail json YAML
Update koruri-ttf to 20151021.
20151021:
* M+ OUTLINE FONTS has been updated to CVS HEAD (2015.10.21).
20151021:
* M+ OUTLINE FONTS has been updated to CVS HEAD (2015.10.21).
MAIN commitmail json YAML
Don't change DISTNAME, make extract fails. Use PKGNAME.
MAIN commitmail json YAML
Updated graphics/py-mcomix to 1.01
MAIN commitmail json YAML
pkgsrc/graphics/py-mcomix/Makefile@1.5
/
diff
pkgsrc/graphics/py-mcomix/PLIST@1.2 / diff
pkgsrc/graphics/py-mcomix/distinfo@1.2 / diff
pkgsrc/graphics/py-mcomix/PLIST@1.2 / diff
pkgsrc/graphics/py-mcomix/distinfo@1.2 / diff
PR/50114: Update py-mcomix to 1.01.
- Keyboard shortcuts can now be edited from MComix' preference dialog
in a new tab "Shortcuts". (by Valentin Gologuzov)
Please not that the arrow keys, Backspace and Escape cannot be bound
to actions right now, unless you're manually editing the config file.
- During database upgrade, MComix did not consider that books in the
"Last read" database might no longer exist, leading to program crash.
This has been fixed.
- Adding a collection with a numeric name to the library made the library
unusable. This has been fixed.
- Fixed win32 builds missing the 'calendar' module.
- Fixed bookmarks not being displayed in the Ubuntu Unity global menu.
- Fixed 'Continue reading' not working when files are opened from
the command line (by Boris Bogar).
- Improved page extraction and caching algorithm, leading to much better
responsiveness, especially for viewing large archives. (by Benoit Pierre)
- MComix will now always hide the mouse cursor after a period of
inactivity, even when not in fullscreen mode. (by Benoit Pierre)
- The ALT+Left and ALT+Right keys will now either advance one page,
or go back one page, depending on the user being in manga mode.
- CTRL plus mouse wheel will now zoom in/out one level.
- Manual zooming will now use a logarithmic scale instead of a linear
spline.
- The library will now use natural sorting for "Sort by name" and
"Sort by path" instead of alphanumeric sorting, bringing it in line
with most other sorting done by MComix.
- Adding a book to a collection with the same book already existing
in another collection did not immediately show the book in the
library main view when the new collection was already selected.
- MComix can now use the '7z' executable to read .tar.xz and .tar.lzma
archives.
- ZIP archives using BZIP2 compression will now fall back to external
unzip/7z instead of failing (by Awad Mackie).
- MComix can now read PDF files using tools provided by mupdf,
namely mutool and mudraw. (by Benoit Pierre)
- Double page mode will not implicitly resize images anymore.
- The smart scrolling algorithm has been improved.
- Some issues with the magnifying glass have been fixed.
- Some new variables have been introduced that you can use when running
external commands. See the documentation for details:
https://sourceforge.net/p/mcomix/wiki/External_Commands
- MComix will now use the current GTK theme's icons for
Next/Previous buttons.
- Added AppData meta information for software repositories.
- Updated traditional Chinese translation (by Wayne Su).
- Keyboard shortcuts can now be edited from MComix' preference dialog
in a new tab "Shortcuts". (by Valentin Gologuzov)
Please not that the arrow keys, Backspace and Escape cannot be bound
to actions right now, unless you're manually editing the config file.
- During database upgrade, MComix did not consider that books in the
"Last read" database might no longer exist, leading to program crash.
This has been fixed.
- Adding a collection with a numeric name to the library made the library
unusable. This has been fixed.
- Fixed win32 builds missing the 'calendar' module.
- Fixed bookmarks not being displayed in the Ubuntu Unity global menu.
- Fixed 'Continue reading' not working when files are opened from
the command line (by Boris Bogar).
- Improved page extraction and caching algorithm, leading to much better
responsiveness, especially for viewing large archives. (by Benoit Pierre)
- MComix will now always hide the mouse cursor after a period of
inactivity, even when not in fullscreen mode. (by Benoit Pierre)
- The ALT+Left and ALT+Right keys will now either advance one page,
or go back one page, depending on the user being in manga mode.
- CTRL plus mouse wheel will now zoom in/out one level.
- Manual zooming will now use a logarithmic scale instead of a linear
spline.
- The library will now use natural sorting for "Sort by name" and
"Sort by path" instead of alphanumeric sorting, bringing it in line
with most other sorting done by MComix.
- Adding a book to a collection with the same book already existing
in another collection did not immediately show the book in the
library main view when the new collection was already selected.
- MComix can now use the '7z' executable to read .tar.xz and .tar.lzma
archives.
- ZIP archives using BZIP2 compression will now fall back to external
unzip/7z instead of failing (by Awad Mackie).
- MComix can now read PDF files using tools provided by mupdf,
namely mutool and mudraw. (by Benoit Pierre)
- Double page mode will not implicitly resize images anymore.
- The smart scrolling algorithm has been improved.
- Some issues with the magnifying glass have been fixed.
- Some new variables have been introduced that you can use when running
external commands. See the documentation for details:
https://sourceforge.net/p/mcomix/wiki/External_Commands
- MComix will now use the current GTK theme's icons for
Next/Previous buttons.
- Added AppData meta information for software repositories.
- Updated traditional Chinese translation (by Wayne Su).
MAIN commitmail json YAML
Updated fonts/koruri-ttf to 20150701
MAIN commitmail json YAML
Update koruri-ttf to 20150701.
20150701:
* M+ OUTLINE FONTS has been updated to TESTFLIGHT 060.
20150701:
* M+ OUTLINE FONTS has been updated to TESTFLIGHT 060.
MAIN commitmail json YAML
Updated fonts/koruri-ttf to 20141224.
MAIN commitmail json YAML
Update koruri-ttf to 20141224.
20141224:
* M+ OUTLINE FONTS has been updated to TESTFLIGHT 059 (2014.11.26).
20141224:
* M+ OUTLINE FONTS has been updated to TESTFLIGHT 059 (2014.11.26).
MAIN commitmail json YAML
Updated fonts/koruri-ttf to 20140904.
MAIN commitmail json YAML
pkgsrc/fonts/koruri-ttf/Makefile@1.5
/
diff
pkgsrc/fonts/koruri-ttf/PLIST@1.3 / diff
pkgsrc/fonts/koruri-ttf/distinfo@1.4 / diff
pkgsrc/fonts/koruri-ttf/PLIST@1.3 / diff
pkgsrc/fonts/koruri-ttf/distinfo@1.4 / diff
Update koruri-ttf to 20140904.
20140904:
* M+ OUTLINE FONTS has been updated to CVS HEAD (2014.09.04).
20140904:
* M+ OUTLINE FONTS has been updated to CVS HEAD (2014.09.04).
MAIN commitmail json YAML
Updated fonts/koruri-ttf to 20140524.
MAIN commitmail json YAML
Update koruri-ttf to 20140524.
20140524:
* Support for vertical writing in the Windows environment.
20140524:
* Support for vertical writing in the Windows environment.
MAIN commitmail json YAML
Updated fonts/koruri-ttf to 20140510
MAIN commitmail json YAML
Update koruri-ttf to 20140510.
20140510:
* Fixed the problem that Koruri-Light.ttf is not a valid font file in the Windows environment.
20140510:
* Fixed the problem that Koruri-Light.ttf is not a valid font file in the Windows environment.
MAIN commitmail json YAML
Updated misc/vimpager to 1.8.8
MAIN commitmail json YAML
Update vimpager to 1.8.8.
PR pkg/48781 by me.
Version 1.8.8
* don't clobber user's PATH (mayersj1: Steve Mayer) #77
Version 1.8.7
* use more lines for fallback man page detection, misc. code cleanups (eworm-de: Christian Hesse)
Version 1.8.6
* allow _vimrc on non-windows (mortonfox: Morton Fox)
Version 1.8.5
* fix up arrow binding again, broken in 1.8.4
Version 1.8.4
* disable help screen 'h' binding, cursor moves left instead (Github issue #71)
Version 1.8.3
* reexec self under bash or ksh when available, especially on Solaris (Github issue #63)
* add vim command -c option (aroig: Abdo Roig-Maranges)
* allow ~/.vim/vimpagerrc as conf file (lucc: Lucas Hoffmann)
PR pkg/48781 by me.
Version 1.8.8
* don't clobber user's PATH (mayersj1: Steve Mayer) #77
Version 1.8.7
* use more lines for fallback man page detection, misc. code cleanups (eworm-de: Christian Hesse)
Version 1.8.6
* allow _vimrc on non-windows (mortonfox: Morton Fox)
Version 1.8.5
* fix up arrow binding again, broken in 1.8.4
Version 1.8.4
* disable help screen 'h' binding, cursor moves left instead (Github issue #71)
Version 1.8.3
* reexec self under bash or ksh when available, especially on Solaris (Github issue #63)
* add vim command -c option (aroig: Abdo Roig-Maranges)
* allow ~/.vim/vimpagerrc as conf file (lucc: Lucas Hoffmann)
MAIN commitmail json YAML
Updated devel/ply to 3.3
MAIN commitmail json YAML
pkgsrc/devel/ply/Makefile@1.13
/
diff
pkgsrc/devel/ply/PLIST@1.3 / diff
pkgsrc/devel/ply/distinfo@1.3 / diff
pkgsrc/devel/ply/PLIST@1.3 / diff
pkgsrc/devel/ply/distinfo@1.3 / diff
Update ply to version 3.3.
Version 3.3
-----------------------------
08/25/09: beazley
Fixed issue 15 related to the set_lineno() method in yacc. Reported by
mdsherry.
08/25/09: beazley
Fixed a bug related to regular expression compilation flags not being
properly stored in lextab.py files created by the lexer when running
in optimize mode. Reported by Bruce Frederiksen.
Version 3.2
-----------------------------
03/24/09: beazley
Added an extra check to not print duplicated warning messages
about reduce/reduce conflicts.
03/24/09: beazley
Switched PLY over to a BSD-license.
03/23/09: beazley
Performance optimization. Discovered a few places to make
speedups in LR table generation.
03/23/09: beazley
New warning message. PLY now warns about rules never
reduced due to reduce/reduce conflicts. Suggested by
Bruce Frederiksen.
03/23/09: beazley
Some clean-up of warning messages related to reduce/reduce errors.
03/23/09: beazley
Added a new picklefile option to yacc() to write the parsing
tables to a filename using the pickle module. Here is how
it works:
yacc(picklefile="parsetab.p")
This option can be used if the normal parsetab.py file is
extremely large. For example, on jython, it is impossible
to read parsing tables if the parsetab.py exceeds a certain
threshold.
The filename supplied to the picklefile option is opened
relative to the current working directory of the Python
interpreter. If you need to refer to the file elsewhere,
you will need to supply an absolute or relative path.
For maximum portability, the pickle file is written
using protocol 0.
03/13/09: beazley
Fixed a bug in parser.out generation where the rule numbers
where off by one.
03/13/09: beazley
Fixed a string formatting bug with one of the error messages.
Reported by Richard Reitmeyer
Version 3.1
-----------------------------
02/28/09: beazley
Fixed broken start argument to yacc(). PLY-3.0 broke this
feature by accident.
02/28/09: beazley
Fixed debugging output. yacc() no longer reports shift/reduce
or reduce/reduce conflicts if debugging is turned off. This
restores similar behavior in PLY-2.5. Reported by Andrew Waters.
Version 3.0
-----------------------------
02/03/09: beazley
Fixed missing lexer attribute on certain tokens when
invoking the parser p_error() function. Reported by
Bart Whiteley.
02/02/09: beazley
The lex() command now does all error-reporting and diagonistics
using the logging module interface. Pass in a Logger object
using the errorlog parameter to specify a different logger.
02/02/09: beazley
Refactored ply.lex to use a more object-oriented and organized
approach to collecting lexer information.
02/01/09: beazley
Removed the nowarn option from lex(). All output is controlled
by passing in a logger object. Just pass in a logger with a high
level setting to suppress output. This argument was never
documented to begin with so hopefully no one was relying upon it.
02/01/09: beazley
Discovered and removed a dead if-statement in the lexer. This
resulted in a 6-7% speedup in lexing when I tested it.
01/13/09: beazley
Minor change to the procedure for signalling a syntax error in a
production rule. A normal SyntaxError exception should be raised
instead of yacc.SyntaxError.
01/13/09: beazley
Added a new method p.set_lineno(n,lineno) that can be used to set the
line number of symbol n in grammar rules. This simplifies manual
tracking of line numbers.
01/11/09: beazley
Vastly improved debugging support for yacc.parse(). Instead of passing
debug as an integer, you can supply a Logging object (see the logging
module). Messages will be generated at the ERROR, INFO, and DEBUG
logging levels, each level providing progressively more information.
The debugging trace also shows states, grammar rule, values passed
into grammar rules, and the result of each reduction.
01/09/09: beazley
The yacc() command now does all error-reporting and diagnostics using
the interface of the logging module. Use the errorlog parameter to
specify a logging object for error messages. Use the debuglog parameter
to specify a logging object for the 'parser.out' output.
01/09/09: beazley
*HUGE* refactoring of the the ply.yacc() implementation. The high-level
user interface is backwards compatible, but the internals are completely
reorganized into classes. No more global variables. The internals
are also more extensible. For example, you can use the classes to
construct a LALR(1) parser in an entirely different manner than
what is currently the case. Documentation is forthcoming.
01/07/09: beazley
Various cleanup and refactoring of yacc internals.
01/06/09: beazley
Fixed a bug with precedence assignment. yacc was assigning the precedence
each rule based on the left-most token, when in fact, it should have been
using the right-most token. Reported by Bruce Frederiksen.
11/27/08: beazley
Numerous changes to support Python 3.0 including removal of deprecated
statements (e.g., has_key) and the additional of compatibility code
to emulate features from Python 2 that have been removed, but which
are needed. Fixed the unit testing suite to work with Python 3.0.
The code should be backwards compatible with Python 2.
11/26/08: beazley
Loosened the rules on what kind of objects can be passed in as the
"module" parameter to lex() and yacc(). Previously, you could only use
a module or an instance. Now, PLY just uses dir() to get a list of
symbols on whatever the object is without regard for its type.
11/26/08: beazley
Changed all except: statements to be compatible with Python2.x/3.x syntax.
11/26/08: beazley
Changed all raise Exception, value statements to raise Exception(value) for
forward compatibility.
11/26/08: beazley
Removed all print statements from lex and yacc, using sys.stdout and sys.stderr
directly. Preparation for Python 3.0 support.
11/04/08: beazley
Fixed a bug with referring to symbols on the the parsing stack using negative
indices.
05/29/08: beazley
Completely revamped the testing system to use the unittest module for everything.
Added additional tests to cover new errors/warnings.
Version 2.5
-----------------------------
05/28/08: beazley
Fixed a bug with writing lex-tables in optimized mode and start states.
Reported by Kevin Henry.
Version 2.4
-----------------------------
05/04/08: beazley
A version number is now embedded in the table file signature so that
yacc can more gracefully accomodate changes to the output format
in the future.
05/04/08: beazley
Removed undocumented .pushback() method on grammar productions. I'm
not sure this ever worked and can't recall ever using it. Might have
been an abandoned idea that never really got fleshed out. This
feature was never described or tested so removing it is hopefully
harmless.
05/04/08: beazley
Added extra error checking to yacc() to detect precedence rules defined
for undefined terminal symbols. This allows yacc() to detect a potential
problem that can be really tricky to debug if no warning message or error
message is generated about it.
05/04/08: beazley
lex() now has an outputdir that can specify the output directory for
tables when running in optimize mode. For example:
lexer = lex.lex(optimize=True, lextab="ltab", outputdir="foo/bar")
The behavior of specifying a table module and output directory are
more aligned with the behavior of yacc().
05/04/08: beazley
[Issue 9]
Fixed filename bug in when specifying the modulename in lex() and yacc().
If you specified options such as the following:
parser = yacc.yacc(tabmodule="foo.bar.parsetab",outputdir="foo/bar")
yacc would create a file "foo.bar.parsetab.py" in the given directory.
Now, it simply generates a file "parsetab.py" in that directory.
Bug reported by cptbinho.
05/04/08: beazley
Slight modification to lex() and yacc() to allow their table files
to be loaded from a previously loaded module. This might make
it easier to load the parsing tables from a complicated package
structure. For example:
import foo.bar.spam.parsetab as parsetab
parser = yacc.yacc(tabmodule=parsetab)
Note: lex and yacc will never regenerate the table file if used
in the form---you will get a warning message instead.
This idea suggested by Brian Clapper.
04/28/08: beazley
Fixed a big with p_error() functions being picked up correctly
when running in yacc(optimize=1) mode. Patch contributed by
Bart Whiteley.
02/28/08: beazley
Fixed a bug with 'nonassoc' precedence rules. Basically the
non-precedence was being ignored and not producing the correct
run-time behavior in the parser.
02/16/08: beazley
Slight relaxation of what the input() method to a lexer will
accept as a string. Instead of testing the input to see
if the input is a string or unicode string, it checks to see
if the input object looks like it contains string data.
This change makes it possible to pass string-like objects
in as input. For example, the object returned by mmap.
import mmap, os
data = mmap.mmap(os.open(filename,os.O_RDONLY),
os.path.getsize(filename),
access=mmap.ACCESS_READ)
lexer.input(data)
11/29/07: beazley
Modification of ply.lex to allow token functions to aliased.
This is subtle, but it makes it easier to create libraries and
to reuse token specifications. For example, suppose you defined
a function like this:
def number(t):
r'\d+'
t.value = int(t.value)
return t
This change would allow you to define a token rule as follows:
t_NUMBER = number
In this case, the token type will be set to 'NUMBER' and use
the associated number() function to process tokens.
11/28/07: beazley
Slight modification to lex and yacc to grab symbols from both
the local and global dictionaries of the caller. This
modification allows lexers and parsers to be defined using
inner functions and closures.
11/28/07: beazley
Performance optimization: The lexer.lexmatch and t.lexer
attributes are no longer set for lexer tokens that are not
defined by functions. The only normal use of these attributes
would be in lexer rules that need to perform some kind of
special processing. Thus, it doesn't make any sense to set
them on every token.
*** POTENTIAL INCOMPATIBILITY *** This might break code
that is mucking around with internal lexer state in some
sort of magical way.
11/27/07: beazley
Added the ability to put the parser into error-handling mode
from within a normal production. To do this, simply raise
a yacc.SyntaxError exception like this:
def p_some_production(p):
'some_production : prod1 prod2'
...
raise yacc.SyntaxError # Signal an error
A number of things happen after this occurs:
- The last symbol shifted onto the symbol stack is discarded
and parser state backed up to what it was before the
the rule reduction.
- The current lookahead symbol is saved and replaced by
the 'error' symbol.
- The parser enters error recovery mode where it tries
to either reduce the 'error' rule or it starts
discarding items off of the stack until the parser
resets.
When an error is manually set, the parser does *not* call
the p_error() function (if any is defined).
*** NEW FEATURE *** Suggested on the mailing list
11/27/07: beazley
Fixed structure bug in examples/ansic. Reported by Dion Blazakis.
11/27/07: beazley
Fixed a bug in the lexer related to start conditions and ignored
token rules. If a rule was defined that changed state, but
returned no token, the lexer could be left in an inconsistent
state. Reported by
11/27/07: beazley
Modified setup.py to support Python Eggs. Patch contributed by
Simon Cross.
11/09/07: beazely
Fixed a bug in error handling in yacc. If a syntax error occurred and the
parser rolled the entire parse stack back, the parser would be left in in
inconsistent state that would cause it to trigger incorrect actions on
subsequent input. Reported by Ton Biegstraaten, Justin King, and others.
11/09/07: beazley
Fixed a bug when passing empty input strings to yacc.parse(). This
would result in an error message about "No input given". Reported
by Andrew Dalke.
Version 2.3
-----------------------------
02/20/07: beazley
Fixed a bug with character literals if the literal '.' appeared as the
last symbol of a grammar rule. Reported by Ales Smrcka.
02/19/07: beazley
Warning messages are now redirected to stderr instead of being printed
to standard output.
02/19/07: beazley
Added a warning message to lex.py if it detects a literal backslash
character inside the t_ignore declaration. This is to help
problems that might occur if someone accidentally defines t_ignore
as a Python raw string. For example:
t_ignore = r' \t'
The idea for this is from an email I received from David Cimimi who
reported bizarre behavior in lexing as a result of defining t_ignore
as a raw string by accident.
02/18/07: beazley
Performance improvements. Made some changes to the internal
table organization and LR parser to improve parsing performance.
02/18/07: beazley
Automatic tracking of line number and position information must now be
enabled by a special flag to parse(). For example:
yacc.parse(data,tracking=True)
In many applications, it's just not that important to have the
parser automatically track all line numbers. By making this an
optional feature, it allows the parser to run significantly faster
(more than a 20% speed increase in many cases). Note: positional
information is always available for raw tokens---this change only
applies to positional information associated with nonterminal
grammar symbols.
*** POTENTIAL INCOMPATIBILITY ***
02/18/07: beazley
Yacc no longer supports extended slices of grammar productions.
However, it does support regular slices. For example:
def p_foo(p):
'''foo: a b c d e'''
p[0] = p[1:3]
This change is a performance improvement to the parser--it streamlines
normal access to the grammar values since slices are now handled in
a __getslice__() method as opposed to __getitem__().
02/12/07: beazley
Fixed a bug in the handling of token names when combined with
start conditions. Bug reported by Todd O'Bryan.
Version 2.2
------------------------------
11/01/06: beazley
Added lexpos() and lexspan() methods to grammar symbols. These
mirror the same functionality of lineno() and linespan(). For
example:
def p_expr(p):
'expr : expr PLUS expr'
p.lexpos(1) # Lexing position of left-hand-expression
p.lexpos(1) # Lexing position of PLUS
start,end = p.lexspan(3) # Lexing range of right hand expression
11/01/06: beazley
Minor change to error handling. The recommended way to skip characters
in the input is to use t.lexer.skip() as shown here:
def t_error(t):
print "Illegal character '%s'" % t.value[0]
t.lexer.skip(1)
The old approach of just using t.skip(1) will still work, but won't
be documented.
10/31/06: beazley
Discarded tokens can now be specified as simple strings instead of
functions. To do this, simply include the text "ignore_" in the
token declaration. For example:
t_ignore_cppcomment = r'//.*'
Previously, this had to be done with a function. For example:
def t_ignore_cppcomment(t):
r'//.*'
pass
If start conditions/states are being used, state names should appear
before the "ignore_" text.
10/19/06: beazley
The Lex module now provides support for flex-style start conditions
as described at http://www.gnu.org/software/flex/manual/html_chapter/flex_11.html.
Please refer to this document to understand this change note. Refer to
the PLY documentation for PLY-specific explanation of how this works.
To use start conditions, you first need to declare a set of states in
your lexer file:
states = (
('foo','exclusive'),
('bar','inclusive')
)
This serves the same role as the %s and %x specifiers in flex.
One a state has been declared, tokens for that state can be
declared by defining rules of the form t_state_TOK. For example:
t_PLUS = '\+' # Rule defined in INITIAL state
t_foo_NUM = '\d+' # Rule defined in foo state
t_bar_NUM = '\d+' # Rule defined in bar state
t_foo_bar_NUM = '\d+' # Rule defined in both foo and bar
t_ANY_NUM = '\d+' # Rule defined in all states
In addition to defining tokens for each state, the t_ignore and t_error
specifications can be customized for specific states. For example:
t_foo_ignore = " " # Ignored characters for foo state
def t_bar_error(t):
# Handle errors in bar state
With token rules, the following methods can be used to change states
def t_TOKNAME(t):
t.lexer.begin('foo') # Begin state 'foo'
t.lexer.push_state('foo') # Begin state 'foo', push old state
# onto a stack
t.lexer.pop_state() # Restore previous state
t.lexer.current_state() # Returns name of current state
These methods mirror the BEGIN(), yy_push_state(), yy_pop_state(), and
yy_top_state() functions in flex.
The use of start states can be used as one way to write sub-lexers.
For example, the lexer or parser might instruct the lexer to start
generating a different set of tokens depending on the context.
example/yply/ylex.py shows the use of start states to grab C/C++
code fragments out of traditional yacc specification files.
*** NEW FEATURE *** Suggested by Daniel Larraz with whom I also
discussed various aspects of the design.
10/19/06: beazley
Minor change to the way in which yacc.py was reporting shift/reduce
conflicts. Although the underlying LALR(1) algorithm was correct,
PLY was under-reporting the number of conflicts compared to yacc/bison
when precedence rules were in effect. This change should make PLY
report the same number of conflicts as yacc.
10/19/06: beazley
Modified yacc so that grammar rules could also include the '-'
character. For example:
def p_expr_list(p):
'expression-list : expression-list expression'
Suggested by Oldrich Jedlicka.
10/18/06: beazley
Attribute lexer.lexmatch added so that token rules can access the re
match object that was generated. For example:
def t_FOO(t):
r'some regex'
m = t.lexer.lexmatch
# Do something with m
This may be useful if you want to access named groups specified within
the regex for a specific token. Suggested by Oldrich Jedlicka.
10/16/06: beazley
Changed the error message that results if an illegal character
is encountered and no default error function is defined in lex.
The exception is now more informative about the actual cause of
the error.
Version 2.1
------------------------------
10/02/06: beazley
The last Lexer object built by lex() can be found in lex.lexer.
The last Parser object built by yacc() can be found in yacc.parser.
10/02/06: beazley
New example added: examples/yply
This example uses PLY to convert Unix-yacc specification files to
PLY programs with the same grammar. This may be useful if you
want to convert a grammar from bison/yacc to use with PLY.
10/02/06: beazley
Added support for a start symbol to be specified in the yacc
input file itself. Just do this:
start = 'name'
where 'name' matches some grammar rule. For example:
def p_name(p):
'name : A B C'
...
This mirrors the functionality of the yacc %start specifier.
09/30/06: beazley
Some new examples added.:
examples/GardenSnake : A simple indentation based language similar
to Python. Shows how you might handle
whitespace. Contributed by Andrew Dalke.
examples/BASIC : An implementation of 1964 Dartmouth BASIC.
Contributed by Dave against his better
judgement.
09/28/06: beazley
Minor patch to allow named groups to be used in lex regular
expression rules. For example:
t_QSTRING = r'''(?P<quote>['"]).*?(?P=quote)'''
Patch submitted by Adam Ring.
09/28/06: beazley
LALR(1) is now the default parsing method. To use SLR, use
yacc.yacc(method="SLR"). Note: there is no performance impact
on parsing when using LALR(1) instead of SLR. However, constructing
the parsing tables will take a little longer.
09/26/06: beazley
Change to line number tracking. To modify line numbers, modify
the line number of the lexer itself. For example:
def t_NEWLINE(t):
r'\n'
t.lexer.lineno += 1
This modification is both cleanup and a performance optimization.
In past versions, lex was monitoring every token for changes in
the line number. This extra processing is unnecessary for a vast
majority of tokens. Thus, this new approach cleans it up a bit.
*** POTENTIAL INCOMPATIBILITY ***
You will need to change code in your lexer that updates the line
number. For example, "t.lineno += 1" becomes "t.lexer.lineno += 1"
09/26/06: beazley
Added the lexing position to tokens as an attribute lexpos. This
is the raw index into the input text at which a token appears.
This information can be used to compute column numbers and other
details (e.g., scan backwards from lexpos to the first newline
to get a column position).
09/25/06: beazley
Changed the name of the __copy__() method on the Lexer class
to clone(). This is used to clone a Lexer object (e.g., if
you're running different lexers at the same time).
09/21/06: beazley
Limitations related to the use of the re module have been eliminated.
Several users reported problems with regular expressions exceeding
more than 100 named groups. To solve this, lex.py is now capable
of automatically splitting its master regular regular expression into
smaller expressions as needed. This should, in theory, make it
possible to specify an arbitrarily large number of tokens.
09/21/06: beazley
Improved error checking in lex.py. Rules that match the empty string
are now rejected (otherwise they cause the lexer to enter an infinite
loop). An extra check for rules containing '#' has also been added.
Since lex compiles regular expressions in verbose mode, '#' is interpreted
as a regex comment, it is critical to use '\#' instead.
09/18/06: beazley
Added a @TOKEN decorator function to lex.py that can be used to
define token rules where the documentation string might be computed
in some way.
digit = r'([0-9])'
nondigit = r'([_A-Za-z])'
identifier = r'(' + nondigit + r'(' + digit + r'|' + nondigit + r')*)'
from ply.lex import TOKEN
@TOKEN(identifier)
def t_ID(t):
# Do whatever
The @TOKEN decorator merely sets the documentation string of the
associated token function as needed for lex to work.
Note: An alternative solution is the following:
def t_ID(t):
# Do whatever
t_ID.__doc__ = identifier
Note: Decorators require the use of Python 2.4 or later. If compatibility
with old versions is needed, use the latter solution.
The need for this feature was suggested by Cem Karan.
09/14/06: beazley
Support for single-character literal tokens has been added to yacc.
These literals must be enclosed in quotes. For example:
def p_expr(p):
"expr : expr '+' expr"
...
def p_expr(p):
'expr : expr "-" expr'
...
In addition to this, it is necessary to tell the lexer module about
literal characters. This is done by defining the variable 'literals'
as a list of characters. This should be defined in the module that
invokes the lex.lex() function. For example:
literals = ['+','-','*','/','(',')','=']
or simply
literals = '+=*/()='
It is important to note that literals can only be a single character.
When the lexer fails to match a token using its normal regular expression
rules, it will check the current character against the literal list.
If found, it will be returned with a token type set to match the literal
character. Otherwise, an illegal character will be signalled.
09/14/06: beazley
Modified PLY to install itself as a proper Python package called 'ply'.
This will make it a little more friendly to other modules. This
changes the usage of PLY only slightly. Just do this to import the
modules
import ply.lex as lex
import ply.yacc as yacc
Alternatively, you can do this:
from ply import *
Which imports both the lex and yacc modules.
Change suggested by Lee June.
09/13/06: beazley
Changed the handling of negative indices when used in production rules.
A negative production index now accesses already parsed symbols on the
parsing stack. For example,
def p_foo(p):
"foo: A B C D"
print p[1] # Value of 'A' symbol
print p[2] # Value of 'B' symbol
print p[-1] # Value of whatever symbol appears before A
# on the parsing stack.
p[0] = some_val # Sets the value of the 'foo' grammer symbol
This behavior makes it easier to work with embedded actions within the
parsing rules. For example, in C-yacc, it is possible to write code like
this:
bar: A { printf("seen an A = %d\n", $1); } B { do_stuff; }
In this example, the printf() code executes immediately after A has been
parsed. Within the embedded action code, $1 refers to the A symbol on
the stack.
To perform this equivalent action in PLY, you need to write a pair
of rules like this:
def p_bar(p):
"bar : A seen_A B"
do_stuff
def p_seen_A(p):
"seen_A :"
print "seen an A =", p[-1]
The second rule "seen_A" is merely a empty production which should be
reduced as soon as A is parsed in the "bar" rule above. The use
of the negative index p[-1] is used to access whatever symbol appeared
before the seen_A symbol.
This feature also makes it possible to support inherited attributes.
For example:
def p_decl(p):
"decl : scope name"
def p_scope(p):
"""scope : GLOBAL
| LOCAL"""
p[0] = p[1]
def p_name(p):
"name : ID"
if p[-1] == "GLOBAL":
# ...
else if p[-1] == "LOCAL":
#...
In this case, the name rule is inheriting an attribute from the
scope declaration that precedes it.
*** POTENTIAL INCOMPATIBILITY ***
If you are currently using negative indices within existing grammar rules,
your code will break. This should be extremely rare if non-existent in
most cases. The argument to various grammar rules is not usually not
processed in the same way as a list of items.
Version 2.0
------------------------------
09/07/06: beazley
Major cleanup and refactoring of the LR table generation code. Both SLR
and LALR(1) table generation is now performed by the same code base with
only minor extensions for extra LALR(1) processing.
09/07/06: beazley
Completely reimplemented the entire LALR(1) parsing engine to use the
DeRemer and Pennello algorithm for calculating lookahead sets. This
significantly improves the performance of generating LALR(1) tables
and has the added feature of actually working correctly! If you
experienced weird behavior with LALR(1) in prior releases, this should
hopefully resolve all of those problems. Many thanks to
Andrew Waters and Markus Schoepflin for submitting bug reports
and helping me test out the revised LALR(1) support.
Version 1.8
------------------------------
08/02/06: beazley
Fixed a problem related to the handling of default actions in LALR(1)
parsing. If you experienced subtle and/or bizarre behavior when trying
to use the LALR(1) engine, this may correct those problems. Patch
contributed by Russ Cox. Note: This patch has been superceded by
revisions for LALR(1) parsing in Ply-2.0.
08/02/06: beazley
Added support for slicing of productions in yacc.
Patch contributed by Patrick Mezard.
Version 1.7
------------------------------
03/02/06: beazley
Fixed infinite recursion problem ReduceToTerminals() function that
would sometimes come up in LALR(1) table generation. Reported by
Markus Schoepflin.
03/01/06: beazley
Added "reflags" argument to lex(). For example:
lex.lex(reflags=re.UNICODE)
This can be used to specify optional flags to the re.compile() function
used inside the lexer. This may be necessary for special situations such
as processing Unicode (e.g., if you want escapes like \w and \b to consult
the Unicode character property database). The need for this suggested by
Andreas Jung.
03/01/06: beazley
Fixed a bug with an uninitialized variable on repeated instantiations of parser
objects when the write_tables=0 argument was used. Reported by Michael Brown.
03/01/06: beazley
Modified lex.py to accept Unicode strings both as the regular expressions for
tokens and as input. Hopefully this is the only change needed for Unicode support.
Patch contributed by Johan Dahl.
03/01/06: beazley
Modified the class-based interface to work with new-style or old-style classes.
Patch contributed by Michael Brown (although I tweaked it slightly so it would work
with older versions of Python).
Version 1.6
------------------------------
05/27/05: beazley
Incorporated patch contributed by Christopher Stawarz to fix an extremely
devious bug in LALR(1) parser generation. This patch should fix problems
numerous people reported with LALR parsing.
05/27/05: beazley
Fixed problem with lex.py copy constructor. Reported by Dave Aitel, Aaron Lav,
and Thad Austin.
05/27/05: beazley
Added outputdir option to yacc() to control output directory. Contributed
by Christopher Stawarz.
05/27/05: beazley
Added rununit.py test script to run tests using the Python unittest module.
Contributed by Miki Tebeka.
Version 1.5
------------------------------
05/26/04: beazley
Major enhancement. LALR(1) parsing support is now working.
This feature was implemented by Elias Ioup (ezioup@alumni.uchicago.edu)
and optimized by David Beazley. To use LALR(1) parsing do
the following:
yacc.yacc(method="LALR")
Computing LALR(1) parsing tables takes about twice as long as
the default SLR method. However, LALR(1) allows you to handle
more complex grammars. For example, the ANSI C grammar
(in example/ansic) has 13 shift-reduce conflicts with SLR, but
only has 1 shift-reduce conflict with LALR(1).
05/20/04: beazley
Added a __len__ method to parser production lists. Can
be used in parser rules like this:
def p_somerule(p):
"""a : B C D
| E F"
if (len(p) == 3):
# Must have been first rule
elif (len(p) == 2):
# Must be second rule
Suggested by Joshua Gerth and others.
Version 3.3
-----------------------------
08/25/09: beazley
Fixed issue 15 related to the set_lineno() method in yacc. Reported by
mdsherry.
08/25/09: beazley
Fixed a bug related to regular expression compilation flags not being
properly stored in lextab.py files created by the lexer when running
in optimize mode. Reported by Bruce Frederiksen.
Version 3.2
-----------------------------
03/24/09: beazley
Added an extra check to not print duplicated warning messages
about reduce/reduce conflicts.
03/24/09: beazley
Switched PLY over to a BSD-license.
03/23/09: beazley
Performance optimization. Discovered a few places to make
speedups in LR table generation.
03/23/09: beazley
New warning message. PLY now warns about rules never
reduced due to reduce/reduce conflicts. Suggested by
Bruce Frederiksen.
03/23/09: beazley
Some clean-up of warning messages related to reduce/reduce errors.
03/23/09: beazley
Added a new picklefile option to yacc() to write the parsing
tables to a filename using the pickle module. Here is how
it works:
yacc(picklefile="parsetab.p")
This option can be used if the normal parsetab.py file is
extremely large. For example, on jython, it is impossible
to read parsing tables if the parsetab.py exceeds a certain
threshold.
The filename supplied to the picklefile option is opened
relative to the current working directory of the Python
interpreter. If you need to refer to the file elsewhere,
you will need to supply an absolute or relative path.
For maximum portability, the pickle file is written
using protocol 0.
03/13/09: beazley
Fixed a bug in parser.out generation where the rule numbers
where off by one.
03/13/09: beazley
Fixed a string formatting bug with one of the error messages.
Reported by Richard Reitmeyer
Version 3.1
-----------------------------
02/28/09: beazley
Fixed broken start argument to yacc(). PLY-3.0 broke this
feature by accident.
02/28/09: beazley
Fixed debugging output. yacc() no longer reports shift/reduce
or reduce/reduce conflicts if debugging is turned off. This
restores similar behavior in PLY-2.5. Reported by Andrew Waters.
Version 3.0
-----------------------------
02/03/09: beazley
Fixed missing lexer attribute on certain tokens when
invoking the parser p_error() function. Reported by
Bart Whiteley.
02/02/09: beazley
The lex() command now does all error-reporting and diagonistics
using the logging module interface. Pass in a Logger object
using the errorlog parameter to specify a different logger.
02/02/09: beazley
Refactored ply.lex to use a more object-oriented and organized
approach to collecting lexer information.
02/01/09: beazley
Removed the nowarn option from lex(). All output is controlled
by passing in a logger object. Just pass in a logger with a high
level setting to suppress output. This argument was never
documented to begin with so hopefully no one was relying upon it.
02/01/09: beazley
Discovered and removed a dead if-statement in the lexer. This
resulted in a 6-7% speedup in lexing when I tested it.
01/13/09: beazley
Minor change to the procedure for signalling a syntax error in a
production rule. A normal SyntaxError exception should be raised
instead of yacc.SyntaxError.
01/13/09: beazley
Added a new method p.set_lineno(n,lineno) that can be used to set the
line number of symbol n in grammar rules. This simplifies manual
tracking of line numbers.
01/11/09: beazley
Vastly improved debugging support for yacc.parse(). Instead of passing
debug as an integer, you can supply a Logging object (see the logging
module). Messages will be generated at the ERROR, INFO, and DEBUG
logging levels, each level providing progressively more information.
The debugging trace also shows states, grammar rule, values passed
into grammar rules, and the result of each reduction.
01/09/09: beazley
The yacc() command now does all error-reporting and diagnostics using
the interface of the logging module. Use the errorlog parameter to
specify a logging object for error messages. Use the debuglog parameter
to specify a logging object for the 'parser.out' output.
01/09/09: beazley
*HUGE* refactoring of the the ply.yacc() implementation. The high-level
user interface is backwards compatible, but the internals are completely
reorganized into classes. No more global variables. The internals
are also more extensible. For example, you can use the classes to
construct a LALR(1) parser in an entirely different manner than
what is currently the case. Documentation is forthcoming.
01/07/09: beazley
Various cleanup and refactoring of yacc internals.
01/06/09: beazley
Fixed a bug with precedence assignment. yacc was assigning the precedence
each rule based on the left-most token, when in fact, it should have been
using the right-most token. Reported by Bruce Frederiksen.
11/27/08: beazley
Numerous changes to support Python 3.0 including removal of deprecated
statements (e.g., has_key) and the additional of compatibility code
to emulate features from Python 2 that have been removed, but which
are needed. Fixed the unit testing suite to work with Python 3.0.
The code should be backwards compatible with Python 2.
11/26/08: beazley
Loosened the rules on what kind of objects can be passed in as the
"module" parameter to lex() and yacc(). Previously, you could only use
a module or an instance. Now, PLY just uses dir() to get a list of
symbols on whatever the object is without regard for its type.
11/26/08: beazley
Changed all except: statements to be compatible with Python2.x/3.x syntax.
11/26/08: beazley
Changed all raise Exception, value statements to raise Exception(value) for
forward compatibility.
11/26/08: beazley
Removed all print statements from lex and yacc, using sys.stdout and sys.stderr
directly. Preparation for Python 3.0 support.
11/04/08: beazley
Fixed a bug with referring to symbols on the the parsing stack using negative
indices.
05/29/08: beazley
Completely revamped the testing system to use the unittest module for everything.
Added additional tests to cover new errors/warnings.
Version 2.5
-----------------------------
05/28/08: beazley
Fixed a bug with writing lex-tables in optimized mode and start states.
Reported by Kevin Henry.
Version 2.4
-----------------------------
05/04/08: beazley
A version number is now embedded in the table file signature so that
yacc can more gracefully accomodate changes to the output format
in the future.
05/04/08: beazley
Removed undocumented .pushback() method on grammar productions. I'm
not sure this ever worked and can't recall ever using it. Might have
been an abandoned idea that never really got fleshed out. This
feature was never described or tested so removing it is hopefully
harmless.
05/04/08: beazley
Added extra error checking to yacc() to detect precedence rules defined
for undefined terminal symbols. This allows yacc() to detect a potential
problem that can be really tricky to debug if no warning message or error
message is generated about it.
05/04/08: beazley
lex() now has an outputdir that can specify the output directory for
tables when running in optimize mode. For example:
lexer = lex.lex(optimize=True, lextab="ltab", outputdir="foo/bar")
The behavior of specifying a table module and output directory are
more aligned with the behavior of yacc().
05/04/08: beazley
[Issue 9]
Fixed filename bug in when specifying the modulename in lex() and yacc().
If you specified options such as the following:
parser = yacc.yacc(tabmodule="foo.bar.parsetab",outputdir="foo/bar")
yacc would create a file "foo.bar.parsetab.py" in the given directory.
Now, it simply generates a file "parsetab.py" in that directory.
Bug reported by cptbinho.
05/04/08: beazley
Slight modification to lex() and yacc() to allow their table files
to be loaded from a previously loaded module. This might make
it easier to load the parsing tables from a complicated package
structure. For example:
import foo.bar.spam.parsetab as parsetab
parser = yacc.yacc(tabmodule=parsetab)
Note: lex and yacc will never regenerate the table file if used
in the form---you will get a warning message instead.
This idea suggested by Brian Clapper.
04/28/08: beazley
Fixed a big with p_error() functions being picked up correctly
when running in yacc(optimize=1) mode. Patch contributed by
Bart Whiteley.
02/28/08: beazley
Fixed a bug with 'nonassoc' precedence rules. Basically the
non-precedence was being ignored and not producing the correct
run-time behavior in the parser.
02/16/08: beazley
Slight relaxation of what the input() method to a lexer will
accept as a string. Instead of testing the input to see
if the input is a string or unicode string, it checks to see
if the input object looks like it contains string data.
This change makes it possible to pass string-like objects
in as input. For example, the object returned by mmap.
import mmap, os
data = mmap.mmap(os.open(filename,os.O_RDONLY),
os.path.getsize(filename),
access=mmap.ACCESS_READ)
lexer.input(data)
11/29/07: beazley
Modification of ply.lex to allow token functions to aliased.
This is subtle, but it makes it easier to create libraries and
to reuse token specifications. For example, suppose you defined
a function like this:
def number(t):
r'\d+'
t.value = int(t.value)
return t
This change would allow you to define a token rule as follows:
t_NUMBER = number
In this case, the token type will be set to 'NUMBER' and use
the associated number() function to process tokens.
11/28/07: beazley
Slight modification to lex and yacc to grab symbols from both
the local and global dictionaries of the caller. This
modification allows lexers and parsers to be defined using
inner functions and closures.
11/28/07: beazley
Performance optimization: The lexer.lexmatch and t.lexer
attributes are no longer set for lexer tokens that are not
defined by functions. The only normal use of these attributes
would be in lexer rules that need to perform some kind of
special processing. Thus, it doesn't make any sense to set
them on every token.
*** POTENTIAL INCOMPATIBILITY *** This might break code
that is mucking around with internal lexer state in some
sort of magical way.
11/27/07: beazley
Added the ability to put the parser into error-handling mode
from within a normal production. To do this, simply raise
a yacc.SyntaxError exception like this:
def p_some_production(p):
'some_production : prod1 prod2'
...
raise yacc.SyntaxError # Signal an error
A number of things happen after this occurs:
- The last symbol shifted onto the symbol stack is discarded
and parser state backed up to what it was before the
the rule reduction.
- The current lookahead symbol is saved and replaced by
the 'error' symbol.
- The parser enters error recovery mode where it tries
to either reduce the 'error' rule or it starts
discarding items off of the stack until the parser
resets.
When an error is manually set, the parser does *not* call
the p_error() function (if any is defined).
*** NEW FEATURE *** Suggested on the mailing list
11/27/07: beazley
Fixed structure bug in examples/ansic. Reported by Dion Blazakis.
11/27/07: beazley
Fixed a bug in the lexer related to start conditions and ignored
token rules. If a rule was defined that changed state, but
returned no token, the lexer could be left in an inconsistent
state. Reported by
11/27/07: beazley
Modified setup.py to support Python Eggs. Patch contributed by
Simon Cross.
11/09/07: beazely
Fixed a bug in error handling in yacc. If a syntax error occurred and the
parser rolled the entire parse stack back, the parser would be left in in
inconsistent state that would cause it to trigger incorrect actions on
subsequent input. Reported by Ton Biegstraaten, Justin King, and others.
11/09/07: beazley
Fixed a bug when passing empty input strings to yacc.parse(). This
would result in an error message about "No input given". Reported
by Andrew Dalke.
Version 2.3
-----------------------------
02/20/07: beazley
Fixed a bug with character literals if the literal '.' appeared as the
last symbol of a grammar rule. Reported by Ales Smrcka.
02/19/07: beazley
Warning messages are now redirected to stderr instead of being printed
to standard output.
02/19/07: beazley
Added a warning message to lex.py if it detects a literal backslash
character inside the t_ignore declaration. This is to help
problems that might occur if someone accidentally defines t_ignore
as a Python raw string. For example:
t_ignore = r' \t'
The idea for this is from an email I received from David Cimimi who
reported bizarre behavior in lexing as a result of defining t_ignore
as a raw string by accident.
02/18/07: beazley
Performance improvements. Made some changes to the internal
table organization and LR parser to improve parsing performance.
02/18/07: beazley
Automatic tracking of line number and position information must now be
enabled by a special flag to parse(). For example:
yacc.parse(data,tracking=True)
In many applications, it's just not that important to have the
parser automatically track all line numbers. By making this an
optional feature, it allows the parser to run significantly faster
(more than a 20% speed increase in many cases). Note: positional
information is always available for raw tokens---this change only
applies to positional information associated with nonterminal
grammar symbols.
*** POTENTIAL INCOMPATIBILITY ***
02/18/07: beazley
Yacc no longer supports extended slices of grammar productions.
However, it does support regular slices. For example:
def p_foo(p):
'''foo: a b c d e'''
p[0] = p[1:3]
This change is a performance improvement to the parser--it streamlines
normal access to the grammar values since slices are now handled in
a __getslice__() method as opposed to __getitem__().
02/12/07: beazley
Fixed a bug in the handling of token names when combined with
start conditions. Bug reported by Todd O'Bryan.
Version 2.2
------------------------------
11/01/06: beazley
Added lexpos() and lexspan() methods to grammar symbols. These
mirror the same functionality of lineno() and linespan(). For
example:
def p_expr(p):
'expr : expr PLUS expr'
p.lexpos(1) # Lexing position of left-hand-expression
p.lexpos(1) # Lexing position of PLUS
start,end = p.lexspan(3) # Lexing range of right hand expression
11/01/06: beazley
Minor change to error handling. The recommended way to skip characters
in the input is to use t.lexer.skip() as shown here:
def t_error(t):
print "Illegal character '%s'" % t.value[0]
t.lexer.skip(1)
The old approach of just using t.skip(1) will still work, but won't
be documented.
10/31/06: beazley
Discarded tokens can now be specified as simple strings instead of
functions. To do this, simply include the text "ignore_" in the
token declaration. For example:
t_ignore_cppcomment = r'//.*'
Previously, this had to be done with a function. For example:
def t_ignore_cppcomment(t):
r'//.*'
pass
If start conditions/states are being used, state names should appear
before the "ignore_" text.
10/19/06: beazley
The Lex module now provides support for flex-style start conditions
as described at http://www.gnu.org/software/flex/manual/html_chapter/flex_11.html.
Please refer to this document to understand this change note. Refer to
the PLY documentation for PLY-specific explanation of how this works.
To use start conditions, you first need to declare a set of states in
your lexer file:
states = (
('foo','exclusive'),
('bar','inclusive')
)
This serves the same role as the %s and %x specifiers in flex.
One a state has been declared, tokens for that state can be
declared by defining rules of the form t_state_TOK. For example:
t_PLUS = '\+' # Rule defined in INITIAL state
t_foo_NUM = '\d+' # Rule defined in foo state
t_bar_NUM = '\d+' # Rule defined in bar state
t_foo_bar_NUM = '\d+' # Rule defined in both foo and bar
t_ANY_NUM = '\d+' # Rule defined in all states
In addition to defining tokens for each state, the t_ignore and t_error
specifications can be customized for specific states. For example:
t_foo_ignore = " " # Ignored characters for foo state
def t_bar_error(t):
# Handle errors in bar state
With token rules, the following methods can be used to change states
def t_TOKNAME(t):
t.lexer.begin('foo') # Begin state 'foo'
t.lexer.push_state('foo') # Begin state 'foo', push old state
# onto a stack
t.lexer.pop_state() # Restore previous state
t.lexer.current_state() # Returns name of current state
These methods mirror the BEGIN(), yy_push_state(), yy_pop_state(), and
yy_top_state() functions in flex.
The use of start states can be used as one way to write sub-lexers.
For example, the lexer or parser might instruct the lexer to start
generating a different set of tokens depending on the context.
example/yply/ylex.py shows the use of start states to grab C/C++
code fragments out of traditional yacc specification files.
*** NEW FEATURE *** Suggested by Daniel Larraz with whom I also
discussed various aspects of the design.
10/19/06: beazley
Minor change to the way in which yacc.py was reporting shift/reduce
conflicts. Although the underlying LALR(1) algorithm was correct,
PLY was under-reporting the number of conflicts compared to yacc/bison
when precedence rules were in effect. This change should make PLY
report the same number of conflicts as yacc.
10/19/06: beazley
Modified yacc so that grammar rules could also include the '-'
character. For example:
def p_expr_list(p):
'expression-list : expression-list expression'
Suggested by Oldrich Jedlicka.
10/18/06: beazley
Attribute lexer.lexmatch added so that token rules can access the re
match object that was generated. For example:
def t_FOO(t):
r'some regex'
m = t.lexer.lexmatch
# Do something with m
This may be useful if you want to access named groups specified within
the regex for a specific token. Suggested by Oldrich Jedlicka.
10/16/06: beazley
Changed the error message that results if an illegal character
is encountered and no default error function is defined in lex.
The exception is now more informative about the actual cause of
the error.
Version 2.1
------------------------------
10/02/06: beazley
The last Lexer object built by lex() can be found in lex.lexer.
The last Parser object built by yacc() can be found in yacc.parser.
10/02/06: beazley
New example added: examples/yply
This example uses PLY to convert Unix-yacc specification files to
PLY programs with the same grammar. This may be useful if you
want to convert a grammar from bison/yacc to use with PLY.
10/02/06: beazley
Added support for a start symbol to be specified in the yacc
input file itself. Just do this:
start = 'name'
where 'name' matches some grammar rule. For example:
def p_name(p):
'name : A B C'
...
This mirrors the functionality of the yacc %start specifier.
09/30/06: beazley
Some new examples added.:
examples/GardenSnake : A simple indentation based language similar
to Python. Shows how you might handle
whitespace. Contributed by Andrew Dalke.
examples/BASIC : An implementation of 1964 Dartmouth BASIC.
Contributed by Dave against his better
judgement.
09/28/06: beazley
Minor patch to allow named groups to be used in lex regular
expression rules. For example:
t_QSTRING = r'''(?P<quote>['"]).*?(?P=quote)'''
Patch submitted by Adam Ring.
09/28/06: beazley
LALR(1) is now the default parsing method. To use SLR, use
yacc.yacc(method="SLR"). Note: there is no performance impact
on parsing when using LALR(1) instead of SLR. However, constructing
the parsing tables will take a little longer.
09/26/06: beazley
Change to line number tracking. To modify line numbers, modify
the line number of the lexer itself. For example:
def t_NEWLINE(t):
r'\n'
t.lexer.lineno += 1
This modification is both cleanup and a performance optimization.
In past versions, lex was monitoring every token for changes in
the line number. This extra processing is unnecessary for a vast
majority of tokens. Thus, this new approach cleans it up a bit.
*** POTENTIAL INCOMPATIBILITY ***
You will need to change code in your lexer that updates the line
number. For example, "t.lineno += 1" becomes "t.lexer.lineno += 1"
09/26/06: beazley
Added the lexing position to tokens as an attribute lexpos. This
is the raw index into the input text at which a token appears.
This information can be used to compute column numbers and other
details (e.g., scan backwards from lexpos to the first newline
to get a column position).
09/25/06: beazley
Changed the name of the __copy__() method on the Lexer class
to clone(). This is used to clone a Lexer object (e.g., if
you're running different lexers at the same time).
09/21/06: beazley
Limitations related to the use of the re module have been eliminated.
Several users reported problems with regular expressions exceeding
more than 100 named groups. To solve this, lex.py is now capable
of automatically splitting its master regular regular expression into
smaller expressions as needed. This should, in theory, make it
possible to specify an arbitrarily large number of tokens.
09/21/06: beazley
Improved error checking in lex.py. Rules that match the empty string
are now rejected (otherwise they cause the lexer to enter an infinite
loop). An extra check for rules containing '#' has also been added.
Since lex compiles regular expressions in verbose mode, '#' is interpreted
as a regex comment, it is critical to use '\#' instead.
09/18/06: beazley
Added a @TOKEN decorator function to lex.py that can be used to
define token rules where the documentation string might be computed
in some way.
digit = r'([0-9])'
nondigit = r'([_A-Za-z])'
identifier = r'(' + nondigit + r'(' + digit + r'|' + nondigit + r')*)'
from ply.lex import TOKEN
@TOKEN(identifier)
def t_ID(t):
# Do whatever
The @TOKEN decorator merely sets the documentation string of the
associated token function as needed for lex to work.
Note: An alternative solution is the following:
def t_ID(t):
# Do whatever
t_ID.__doc__ = identifier
Note: Decorators require the use of Python 2.4 or later. If compatibility
with old versions is needed, use the latter solution.
The need for this feature was suggested by Cem Karan.
09/14/06: beazley
Support for single-character literal tokens has been added to yacc.
These literals must be enclosed in quotes. For example:
def p_expr(p):
"expr : expr '+' expr"
...
def p_expr(p):
'expr : expr "-" expr'
...
In addition to this, it is necessary to tell the lexer module about
literal characters. This is done by defining the variable 'literals'
as a list of characters. This should be defined in the module that
invokes the lex.lex() function. For example:
literals = ['+','-','*','/','(',')','=']
or simply
literals = '+=*/()='
It is important to note that literals can only be a single character.
When the lexer fails to match a token using its normal regular expression
rules, it will check the current character against the literal list.
If found, it will be returned with a token type set to match the literal
character. Otherwise, an illegal character will be signalled.
09/14/06: beazley
Modified PLY to install itself as a proper Python package called 'ply'.
This will make it a little more friendly to other modules. This
changes the usage of PLY only slightly. Just do this to import the
modules
import ply.lex as lex
import ply.yacc as yacc
Alternatively, you can do this:
from ply import *
Which imports both the lex and yacc modules.
Change suggested by Lee June.
09/13/06: beazley
Changed the handling of negative indices when used in production rules.
A negative production index now accesses already parsed symbols on the
parsing stack. For example,
def p_foo(p):
"foo: A B C D"
print p[1] # Value of 'A' symbol
print p[2] # Value of 'B' symbol
print p[-1] # Value of whatever symbol appears before A
# on the parsing stack.
p[0] = some_val # Sets the value of the 'foo' grammer symbol
This behavior makes it easier to work with embedded actions within the
parsing rules. For example, in C-yacc, it is possible to write code like
this:
bar: A { printf("seen an A = %d\n", $1); } B { do_stuff; }
In this example, the printf() code executes immediately after A has been
parsed. Within the embedded action code, $1 refers to the A symbol on
the stack.
To perform this equivalent action in PLY, you need to write a pair
of rules like this:
def p_bar(p):
"bar : A seen_A B"
do_stuff
def p_seen_A(p):
"seen_A :"
print "seen an A =", p[-1]
The second rule "seen_A" is merely a empty production which should be
reduced as soon as A is parsed in the "bar" rule above. The use
of the negative index p[-1] is used to access whatever symbol appeared
before the seen_A symbol.
This feature also makes it possible to support inherited attributes.
For example:
def p_decl(p):
"decl : scope name"
def p_scope(p):
"""scope : GLOBAL
| LOCAL"""
p[0] = p[1]
def p_name(p):
"name : ID"
if p[-1] == "GLOBAL":
# ...
else if p[-1] == "LOCAL":
#...
In this case, the name rule is inheriting an attribute from the
scope declaration that precedes it.
*** POTENTIAL INCOMPATIBILITY ***
If you are currently using negative indices within existing grammar rules,
your code will break. This should be extremely rare if non-existent in
most cases. The argument to various grammar rules is not usually not
processed in the same way as a list of items.
Version 2.0
------------------------------
09/07/06: beazley
Major cleanup and refactoring of the LR table generation code. Both SLR
and LALR(1) table generation is now performed by the same code base with
only minor extensions for extra LALR(1) processing.
09/07/06: beazley
Completely reimplemented the entire LALR(1) parsing engine to use the
DeRemer and Pennello algorithm for calculating lookahead sets. This
significantly improves the performance of generating LALR(1) tables
and has the added feature of actually working correctly! If you
experienced weird behavior with LALR(1) in prior releases, this should
hopefully resolve all of those problems. Many thanks to
Andrew Waters and Markus Schoepflin for submitting bug reports
and helping me test out the revised LALR(1) support.
Version 1.8
------------------------------
08/02/06: beazley
Fixed a problem related to the handling of default actions in LALR(1)
parsing. If you experienced subtle and/or bizarre behavior when trying
to use the LALR(1) engine, this may correct those problems. Patch
contributed by Russ Cox. Note: This patch has been superceded by
revisions for LALR(1) parsing in Ply-2.0.
08/02/06: beazley
Added support for slicing of productions in yacc.
Patch contributed by Patrick Mezard.
Version 1.7
------------------------------
03/02/06: beazley
Fixed infinite recursion problem ReduceToTerminals() function that
would sometimes come up in LALR(1) table generation. Reported by
Markus Schoepflin.
03/01/06: beazley
Added "reflags" argument to lex(). For example:
lex.lex(reflags=re.UNICODE)
This can be used to specify optional flags to the re.compile() function
used inside the lexer. This may be necessary for special situations such
as processing Unicode (e.g., if you want escapes like \w and \b to consult
the Unicode character property database). The need for this suggested by
Andreas Jung.
03/01/06: beazley
Fixed a bug with an uninitialized variable on repeated instantiations of parser
objects when the write_tables=0 argument was used. Reported by Michael Brown.
03/01/06: beazley
Modified lex.py to accept Unicode strings both as the regular expressions for
tokens and as input. Hopefully this is the only change needed for Unicode support.
Patch contributed by Johan Dahl.
03/01/06: beazley
Modified the class-based interface to work with new-style or old-style classes.
Patch contributed by Michael Brown (although I tweaked it slightly so it would work
with older versions of Python).
Version 1.6
------------------------------
05/27/05: beazley
Incorporated patch contributed by Christopher Stawarz to fix an extremely
devious bug in LALR(1) parser generation. This patch should fix problems
numerous people reported with LALR parsing.
05/27/05: beazley
Fixed problem with lex.py copy constructor. Reported by Dave Aitel, Aaron Lav,
and Thad Austin.
05/27/05: beazley
Added outputdir option to yacc() to control output directory. Contributed
by Christopher Stawarz.
05/27/05: beazley
Added rununit.py test script to run tests using the Python unittest module.
Contributed by Miki Tebeka.
Version 1.5
------------------------------
05/26/04: beazley
Major enhancement. LALR(1) parsing support is now working.
This feature was implemented by Elias Ioup (ezioup@alumni.uchicago.edu)
and optimized by David Beazley. To use LALR(1) parsing do
the following:
yacc.yacc(method="LALR")
Computing LALR(1) parsing tables takes about twice as long as
the default SLR method. However, LALR(1) allows you to handle
more complex grammars. For example, the ANSI C grammar
(in example/ansic) has 13 shift-reduce conflicts with SLR, but
only has 1 shift-reduce conflict with LALR(1).
05/20/04: beazley
Added a __len__ method to parser production lists. Can
be used in parser rules like this:
def p_somerule(p):
"""a : B C D
| E F"
if (len(p) == 3):
# Must have been first rule
elif (len(p) == 2):
# Must be second rule
Suggested by Joshua Gerth and others.