Hello community,

here is the log from the commit of package xonsh for openSUSE:Factory checked 
in at 2019-08-13 13:27:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xonsh (Old)
 and      /work/SRC/openSUSE:Factory/.xonsh.new.9556 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xonsh"

Tue Aug 13 13:27:03 2019 rev:19 rq:722839 version:0.9.10

Changes:
--------
--- /work/SRC/openSUSE:Factory/xonsh/xonsh.changes      2019-08-05 
10:38:35.783318516 +0200
+++ /work/SRC/openSUSE:Factory/.xonsh.new.9556/xonsh.changes    2019-08-13 
13:27:05.169326464 +0200
@@ -1,0 +2,14 @@
+Sat Aug 10 06:07:58 UTC 2019 - Sebastian Wagner <[email protected]>
+
+- update to version 0.9.10:
+ - Added:
+  - $PROMPT_REFRESH_INTERVAL: Automatically invalidate the PROMPT every so 
many seconds.
+  - Allow disabling individual items in gitstatus prompt
+ - Fixed:
+  - Fix ``cat`` can't read pseudo files with zero size such as /proc/\* or 
/sys/\* (#3182, #3199)
+  - command-not-found: now works on non-Debian bansed distributions
+  - Implemented ``'target'`` psuedo-color in ``$LS_COLORS`` for link coloring 
based
+    off of the link target. This was causing issues on some systems where this 
is
+    the default.
+
+-------------------------------------------------------------------

Old:
----
  xonsh-0.9.9.tar.gz

New:
----
  xonsh-0.9.10.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xonsh.spec ++++++
--- /var/tmp/diff_new_pack.zURrmT/_old  2019-08-13 13:27:06.097326220 +0200
+++ /var/tmp/diff_new_pack.zURrmT/_new  2019-08-13 13:27:06.101326219 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           xonsh
-Version:        0.9.9
+Version:        0.9.10
 Release:        0
 Summary:        A general purpose, Python-ish shell
 License:        BSD-3-Clause AND BSD-2-Clause

++++++ xonsh-0.9.9.tar.gz -> xonsh-0.9.10.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/.appveyor.yml 
new/xonsh-0.9.10/.appveyor.yml
--- old/xonsh-0.9.9/.appveyor.yml       2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/.appveyor.yml      2019-08-09 23:11:08.000000000 +0200
@@ -1,4 +1,4 @@
-version: 0.9.9.{build}
+version: 0.9.10.{build}
 os: Windows Server 2012 R2
 environment:
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/.appveyor_install.cmd 
new/xonsh-0.9.10/.appveyor_install.cmd
--- old/xonsh-0.9.9/.appveyor_install.cmd       2019-07-20 00:13:20.000000000 
+0200
+++ new/xonsh-0.9.10/.appveyor_install.cmd      2019-08-09 23:11:08.000000000 
+0200
@@ -4,11 +4,11 @@
     echo "MSYS2 Environment"
     %MSYS2_PATH%\usr\bin\pacman.exe -Syu --noconfirm
     %MSYS2_PATH%\usr\bin\pacman.exe -S --noconfirm python3 python3-pip
-    %MSYS2_PATH%\usr\bin\bash.exe -c "/usr/bin/pip install -r 
requirements-tests.txt"
+    %MSYS2_PATH%\usr\bin\bash.exe -c "/usr/bin/pip install -r 
requirements/tests-35.txt"
     %MSYS2_PATH%\usr\bin\bash.exe -c "/usr/bin/python setup.py install"
 ) ELSE (
     echo "Windows Environment"
-    %PYTHON%\Scripts\pip install -r requirements-tests.txt --upgrade 
--upgrade-strategy eager
+    %PYTHON%\Scripts\pip install -r requirements\\tests-35.txt --upgrade 
--upgrade-strategy eager
     %PYTHON%\python.exe --version
     %PYTHON%\python.exe setup.py install
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/.authors.yml 
new/xonsh-0.9.10/.authors.yml
--- old/xonsh-0.9.9/.authors.yml        2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/.authors.yml       2019-08-09 23:11:08.000000000 +0200
@@ -9,7 +9,7 @@
   - '@vaaaaanquish'
   - vaaaaanquish
   - 6syun9
-  num_commits: 15
+  num_commits: 20
   first_commit: 2018-07-17 01:14:04
   github: vaaaaanquish
 - name: Dan Allan
@@ -61,12 +61,12 @@
   - [email protected]
   - [email protected]
   - [email protected]
-  num_commits: 509
+  num_commits: 510
   first_commit: 2015-10-19 16:04:32
   github: gforsyth
 - name: Morten Enemark Lund
   email: [email protected]
-  num_commits: 464
+  num_commits: 468
   first_commit: 2015-07-10 07:54:10
   github: melund
 - name: Ned Letcher
@@ -185,7 +185,7 @@
   email: [email protected]
   alternate_emails:
   - [email protected]
-  num_commits: 5
+  num_commits: 8
   first_commit: 2015-07-25 03:46:15
   github: michaelaye
 - name: Michael Droettboom
@@ -432,7 +432,7 @@
   github: funkyfuture
 - name: Anthony Scopatz
   email: [email protected]
-  num_commits: 2491
+  num_commits: 2498
   first_commit: 2015-01-21 17:04:13
   github: scopatz
 - name: anatoly techtonik
@@ -963,7 +963,7 @@
   github: ntdef
 - name: virus
   email: [email protected]
-  num_commits: 30
+  num_commits: 35
   first_commit: 2019-03-06 10:36:26
   github: virusbb001
 - name: Steven Kryskalla
@@ -1019,7 +1019,7 @@
   email: [email protected]
   aliases:
   - ke-zhang-rd
-  num_commits: 1
+  num_commits: 2
   first_commit: 2019-07-13 15:02:41
 - name: Daniel Smith
   email: [email protected]
@@ -1027,6 +1027,30 @@
   first_commit: 2019-07-13 12:11:59
 - name: Alexander Steffen
   email: [email protected]
-  num_commits: 4
+  num_commits: 5
   first_commit: 2019-07-13 04:44:55
   github: webmeister
+- name: Sean Farley
+  email: [email protected]
+  num_commits: 2
+  first_commit: 2019-07-13 15:09:39
+- name: Nils ANDRÉ-CHANG
+  email: [email protected]
+  num_commits: 1
+  first_commit: 2019-08-05 17:03:44
+  github: NilsIrl
+- name: László Vaskó
+  email: [email protected]
+  num_commits: 2
+  first_commit: 2019-08-02 10:34:08
+  github: vlaci
+- name: Jan Chren
+  email: [email protected]
+  num_commits: 3
+  first_commit: 2019-08-06 12:38:28
+  github: rindeal
+- name: chengxuncc
+  email: [email protected]
+  num_commits: 1
+  first_commit: 2019-07-28 22:19:49
+  github: chengxuncc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/.mailmap new/xonsh-0.9.10/.mailmap
--- old/xonsh-0.9.9/.mailmap    2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/.mailmap   2019-08-09 23:11:08.000000000 +0200
@@ -31,24 +31,24 @@
 christopher <[email protected]>
 Aaron Griffin <[email protected]>
 Rob Brewer <[email protected]> Robert W. Brewer <[email protected]>
+virus <[email protected]>
 Burak Yiğit Kaya <[email protected]> Burak Yigit Kaya <[email protected]>
 Sagar Tewari <[email protected]> Sagar Tewari <[email protected]>
 Matthias Bussonnier <[email protected]>
-virus <[email protected]>
 Konstantin Molchanov <[email protected]> Konstantin Molchanov 
<[email protected]>
 Guillaume Leclerc <[email protected]> Guillaume Leclerc 
<[email protected]>
 Gordon Ball <[email protected]>
 Travis Shirk <[email protected]>
 Joel Gerber <[email protected]>
+vaaaaanquish <[email protected]> @vaaaaanquish <[email protected]>
+vaaaaanquish <[email protected]> vaaaaanquish <[email protected]>
+vaaaaanquish <[email protected]> 6syun9 <[email protected]>
 Bernardas Ališauskas <[email protected]> Bernardas 
<[email protected]>
 Derek Thomas <[email protected]>
 David Dotson <[email protected]>
 VHarisop <[email protected]>
 JohnLunzer <[email protected]> jlunz 
<[email protected]>
 Paul Goelz <[email protected]>
-vaaaaanquish <[email protected]> @vaaaaanquish <[email protected]>
-vaaaaanquish <[email protected]> vaaaaanquish <[email protected]>
-vaaaaanquish <[email protected]> 6syun9 <[email protected]>
 Frank Sachsenheim <[email protected]> Frank Sachsenheim 
<[email protected]>
 Kurtis Rader <[email protected]>
 cryzed <[email protected]>
@@ -59,6 +59,7 @@
 Justin Moen <[email protected]>
 Stephan Fitzpatrick <[email protected]>
 Raphael Das Gupta <[email protected]>
+K.-Michael Aye <[email protected]> K.-Michael Aye 
<[email protected]>
 Jason R. Coombs <[email protected]>
 halloleo <[email protected]> halloleo 
<[email protected]>
 Will Wykeham <[email protected]>
@@ -80,7 +81,6 @@
 mel <[email protected]>
 Jared Crawford <[email protected]>
 JuanPablo <[email protected]>
-K.-Michael Aye <[email protected]> K.-Michael Aye 
<[email protected]>
 Ollie Terrance <[email protected]>
 Marcel Bollmann <[email protected]>
 mdraw <[email protected]>
@@ -91,6 +91,7 @@
 James Elías <[email protected]>
 anula <[email protected]>
 Jay Tuckey <[email protected]>
+Alexander Steffen <[email protected]>
 Randy Syring <[email protected]>
 Lucas Inojosa <[email protected]> Lucas Inojosa 
<[email protected]>
 Alexey <[email protected]>
@@ -116,7 +117,6 @@
 Fabien Dubosson <[email protected]>
 Kale Kundert <[email protected]>
 Andrés García García <[email protected]> Ad115 
<[email protected]>
-Alexander Steffen <[email protected]>
 Jan Schulz <[email protected]>
 Nickolay Bukreyev <[email protected]>
 Samuel Dion-Girardeau <[email protected]>
@@ -134,6 +134,7 @@
 Niklas Hambüchen <[email protected]>
 Sébastien Pierre <[email protected]>
 shadow-light <[email protected]>
+Jan Chren <[email protected]>
 Mark Wiebe <[email protected]>
 Nathan Hoad <[email protected]>
 Eric Dill <[email protected]>
@@ -156,6 +157,9 @@
 Steven Kryskalla <[email protected]>
 cclauss <[email protected]>
 Eddie Peters <[email protected]>
+Ke Zhang <[email protected]> ke-zhang-rd <[email protected]>
+Sean Farley <[email protected]>
+László Vaskó <[email protected]>
 Dan Allan <[email protected]>
 adam j hartz <[email protected]>
 Ned Letcher <[email protected]>
@@ -214,7 +218,8 @@
 Troy de Freitas <[email protected]>
 Rodrigo Oliveira <[email protected]>
 Gyuri Horak <[email protected]>
-Ke Zhang <[email protected]> ke-zhang-rd <[email protected]>
 Daniel Smith <[email protected]>
+Nils ANDRÉ-CHANG <[email protected]>
+chengxuncc <[email protected]>
 goodboy <[email protected]>
 Atsushi Morimoto <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/.pre-commit-config.yaml 
new/xonsh-0.9.10/.pre-commit-config.yaml
--- old/xonsh-0.9.9/.pre-commit-config.yaml     1970-01-01 01:00:00.000000000 
+0100
+++ new/xonsh-0.9.10/.pre-commit-config.yaml    2019-08-09 23:11:08.000000000 
+0200
@@ -0,0 +1,6 @@
+repos:
+-   repo: https://github.com/ambv/black
+    rev: stable
+    hooks:
+    - id: black
+      language_version: python3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/.travis.yml new/xonsh-0.9.10/.travis.yml
--- old/xonsh-0.9.9/.travis.yml 2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/.travis.yml        2019-08-09 23:11:08.000000000 +0200
@@ -49,10 +49,10 @@
 
 install:
   - if [[ $BUILD_DOCS = true ]]; then
-      pip install --upgrade -r requirements-docs.txt;
+      pip install --upgrade -r requirements/docs.txt;
       python setup.py install;
     else
-      pip install --upgrade -r requirements-tests.txt;
+      pip install --upgrade -r requirements/tests.txt;
       python setup.py install;
     fi
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/AUTHORS.rst new/xonsh-0.9.10/AUTHORS.rst
--- old/xonsh-0.9.9/AUTHORS.rst 2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/AUTHORS.rst        2019-08-09 23:11:08.000000000 +0200
@@ -17,22 +17,22 @@
 * christopher
 * Aaron Griffin
 * Rob Brewer
+* virus
 * Burak Yiğit Kaya
 * Sagar Tewari
 * Matthias Bussonnier
-* virus
 * Konstantin Molchanov
 * Guillaume Leclerc
 * Gordon Ball
 * Travis Shirk
 * Joel Gerber
+* vaaaaanquish
 * Bernardas Ališauskas
 * Derek Thomas
 * David Dotson
 * VHarisop
 * JohnLunzer
 * Paul Goelz
-* vaaaaanquish
 * Frank Sachsenheim
 * Kurtis Rader
 * cryzed
@@ -43,6 +43,7 @@
 * Justin Moen
 * Stephan Fitzpatrick
 * Raphael Das Gupta
+* K.-Michael Aye
 * Jason R. Coombs
 * halloleo
 * Will Wykeham
@@ -64,7 +65,6 @@
 * mel
 * Jared Crawford
 * JuanPablo
-* K.-Michael Aye
 * Ollie Terrance
 * Marcel Bollmann
 * mdraw
@@ -75,6 +75,7 @@
 * James Elías
 * anula
 * Jay Tuckey
+* Alexander Steffen
 * Randy Syring
 * Lucas Inojosa
 * Alexey
@@ -100,7 +101,6 @@
 * Fabien Dubosson
 * Kale Kundert
 * Andrés García García
-* Alexander Steffen
 * Jan Schulz
 * Nickolay Bukreyev
 * Samuel Dion-Girardeau
@@ -118,6 +118,7 @@
 * Niklas Hambüchen
 * Sébastien Pierre
 * shadow-light
+* Jan Chren
 * Mark Wiebe
 * Nathan Hoad
 * Eric Dill
@@ -140,6 +141,9 @@
 * Steven Kryskalla
 * cclauss
 * Eddie Peters
+* Ke Zhang
+* Sean Farley
+* László Vaskó
 * Dan Allan
 * adam j hartz
 * Ned Letcher
@@ -198,8 +202,9 @@
 * Troy de Freitas
 * Rodrigo Oliveira
 * Gyuri Horak
-* Ke Zhang
 * Daniel Smith
+* Nils ANDRÉ-CHANG
+* chengxuncc
 * goodboy
 * Atsushi Morimoto
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/CHANGELOG.rst 
new/xonsh-0.9.10/CHANGELOG.rst
--- old/xonsh-0.9.9/CHANGELOG.rst       2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/CHANGELOG.rst      2019-08-09 23:11:08.000000000 +0200
@@ -4,6 +4,39 @@
 
 .. current developments
 
+v0.9.10
+====================
+
+**Added:**
+
+* $PROMPT_REFRESH_INTERVAL: Automatically invalidate the PROMPT every so many 
seconds.
+* Allow disabling individual items in gitstatus prompt
+
+**Fixed:**
+
+* Fix ``cat`` can't read pseudo files with zero size such as /proc/\* or 
/sys/\* (#3182, #3199)
+* command-not-found: now works on non-Debian bansed distributions
+* Implemented ``'target'`` psuedo-color in ``$LS_COLORS`` for link coloring 
based
+  off of the link target. This was causing issues on some systems where this is
+  the default.
+
+**Authors:**
+
+* Anthony Scopatz
+* Gil Forsyth
+* Morten Enemark Lund
+* virus
+* vaaaaanquish
+* K.-Michael Aye
+* Alexander Steffen
+* Jan Chren
+* Sean Farley
+* László Vaskó
+* Nils ANDRÉ-CHANG
+* chengxuncc
+
+
+
 v0.9.9
 ====================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/CONTRIBUTING.rst 
new/xonsh-0.9.10/CONTRIBUTING.rst
--- old/xonsh-0.9.9/CONTRIBUTING.rst    2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/CONTRIBUTING.rst   2019-08-09 23:11:08.000000000 +0200
@@ -125,6 +125,15 @@
 
     $ pylint $(find tests xonsh -name \*.py | sort)
 
+We also use ``black`` for formatting the code base (which includes running in
+our tests)::
+
+    $ black --check --exclude=xonsh/ply/ xonsh/ xontrib/
+
+To add this as a git pre-commit hook::
+
+    $ pre-commit install
+
 **********
 Imports
 **********
@@ -184,7 +193,7 @@
 
 Prep your environment for running the tests::
 
-    $ pip install -r requirements-tests.txt
+    $ pip install -r requirements/tests.txt
 
 
 ----------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/README.rst new/xonsh-0.9.10/README.rst
--- old/xonsh-0.9.9/README.rst  2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/README.rst 2019-08-09 23:11:08.000000000 +0200
@@ -14,10 +14,6 @@
 .. image:: https://circleci.com/gh/xonsh/xonsh.svg?style=shield
     :target: https://circleci.com/gh/xonsh/xonsh
 
-.. image:: 
https://landscape.io/github/xonsh/xonsh/master/landscape.svg?style=flat
-    :target: https://landscape.io/github/xonsh/xonsh/master
-    :alt: Code Health
-
 .. image:: https://codecov.io/gh/xonsh/xonsh/branch/master/graph/badge.svg
     :target: https://codecov.io/gh/xonsh/xonsh
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/docs/_static/custom.css 
new/xonsh-0.9.10/docs/_static/custom.css
--- old/xonsh-0.9.9/docs/_static/custom.css     1970-01-01 01:00:00.000000000 
+0100
+++ new/xonsh-0.9.10/docs/_static/custom.css    2019-08-09 23:11:08.000000000 
+0200
@@ -0,0 +1,24 @@
+
+th > p:first-child,
+td > p:first-child,
+li > p:first-child,
+dt > p:first-child,
+dd > p:first-child {
+    margin-top: 0px;
+}
+
+th > p:last-child,
+td > p:last-child, 
+li > p:last-child,
+dt > p:last-child,
+dd > p:last-child {
+    margin-bottom: 0px;
+}
+
+li > p:first-child {
+    margin-top: 0px;
+}
+li > p:last-child {
+    margin-bottom: 0px;
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/docs/api/lib/subprocess.rst 
new/xonsh-0.9.10/docs/api/lib/subprocess.rst
--- old/xonsh-0.9.9/docs/api/lib/subprocess.rst 2019-07-20 00:13:20.000000000 
+0200
+++ new/xonsh-0.9.10/docs/api/lib/subprocess.rst        2019-08-09 
23:11:08.000000000 +0200
@@ -1,7 +1,7 @@
 .. _xonsh_lib_subprocess:
 
 ******************************************************
-Subprocesses (``xonsh.lib.subrpocess``)
+Subprocesses (``xonsh.lib.subprocess``)
 ******************************************************
 
 .. automodule:: xonsh.lib.subprocess
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/docs/comparison.rst 
new/xonsh-0.9.10/docs/comparison.rst
--- old/xonsh-0.9.9/docs/comparison.rst 2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/docs/comparison.rst        2019-08-09 23:11:08.000000000 
+0200
@@ -50,7 +50,7 @@
       - ✓
       - ✓
       - ✓
-    * - Man-page completion
+    * - Completion from man-page parsing
       -
       -
       -
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/docs/conf.py 
new/xonsh-0.9.10/docs/conf.py
--- old/xonsh-0.9.9/docs/conf.py        2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/docs/conf.py       2019-08-09 23:11:08.000000000 +0200
@@ -13,7 +13,7 @@
 import inspect
 import importlib
 
-os.environ['XONSH_DEBUG'] = '1'
+os.environ["XONSH_DEBUG"] = "1"
 
 from xonsh import __version__ as XONSH_VERSION
 from xonsh.environ import DEFAULT_DOCS, Env
@@ -23,15 +23,17 @@
 
 if not hasattr(builtins, "__xonsh__"):
     from argparse import Namespace
+
     builtins.__xonsh__ = Namespace()
     builtins.__xonsh__.load = lambda *a, **kw: None
     builtins.__xonsh__.link_builtins = lambda *a, **kw: None
 
-spec = importlib.util.find_spec('prompt_toolkit')
+spec = importlib.util.find_spec("prompt_toolkit")
 if spec is not None:
     # hacky runaround to import PTK-specific events
     builtins.__xonsh__.env = Env()
     from xonsh.platform import ptk_version_info
+
     if ptk_version_info()[0] < 2:
         from xonsh.ptk.shell import events
     else:
@@ -41,102 +43,109 @@
 
 sys.path.insert(0, os.path.dirname(__file__))
 
+
 def setup(sphinx):
     from xonsh.pyghooks import XonshConsoleLexer
+
     sphinx.add_lexer("xonshcon", XonshConsoleLexer())
 
 
 # -- General configuration 
-----------------------------------------------------
 
 # Documentation is being built on readthedocs, this will be true.
-on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
+on_rtd = os.environ.get("READTHEDOCS", None) == "True"
 
 
 # Add any Sphinx extension module names here, as strings. They can be 
extensions
 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.imgmath',
-              'sphinx.ext.inheritance_diagram', 'sphinx.ext.viewcode',
-              #'sphinx.ext.autosummary',
-              'numpydoc', 'cmdhelp',
-              ]
+extensions = [
+    "sphinx.ext.autodoc",
+    "sphinx.ext.doctest",
+    "sphinx.ext.imgmath",
+    "sphinx.ext.inheritance_diagram",
+    "sphinx.ext.viewcode",
+    #'sphinx.ext.autosummary',
+    "numpydoc",
+    "cmdhelp",
+]
 
 # Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
+templates_path = ["_templates"]
 
 # The suffix of source filenames.
-source_suffix = '.rst'
+source_suffix = ".rst"
 
 # The encoding of source files.
-#source_encoding = 'utf-8'
+# source_encoding = 'utf-8'
 
 # The master toctree document.
-master_doc = 'sidebar'
+master_doc = "sidebar"
 
 # General information about the project.
-project = u'xonsh'
-copyright = u'2015, Anthony Scopatz'
+project = u"xonsh"
+copyright = u"2015, Anthony Scopatz"
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # built documents.
 #
 # The short X.Y version.
-version = XONSH_VERSION.rsplit('.',1)[0]
+version = XONSH_VERSION.rsplit(".", 1)[0]
 
 # The full version, including alpha/beta/rc tags.
 release = XONSH_VERSION
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
-#language = None
+# language = None
 
 # There are two options for replacing |today|: either, you set today to some
 # non-false value, then it is used:
-#today = ''
+# today = ''
 # Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
+# today_fmt = '%B %d, %Y'
 
 # List of documents that shouldn't be included in the build.
-exclude_patterns = ['api/blank.rst']
+exclude_patterns = ["api/blank.rst"]
 
 # List of directories, relative to source directory, that shouldn't be searched
 # for source files.
 exclude_trees = []
 
 # The reST default role (used for this markup: `text`) to use for all 
documents.
-#default_role = None
+# default_role = None
 
 # If true, '()' will be appended to :func: etc. cross-reference text.
 add_function_parentheses = True
 
 # If true, the current module name will be prepended to all description
 # unit titles (such as .. function::).
-#add_module_names = True
+# add_module_names = True
 
 # If true, sectionauthor and moduleauthor directives will be shown in the
 # output. They are ignored by default.
-#show_authors = False
+# show_authors = False
 
 # The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-#pygments_style = 'friendly'
-#pygments_style = 'bw'
-#pygments_style = 'fruity'
-#pygments_style = 'manni'
-#pygments_style = 'tango'
-#pygments_style = 'pastie'
+pygments_style = "sphinx"
+# pygments_style = 'friendly'
+# pygments_style = 'bw'
+# pygments_style = 'fruity'
+# pygments_style = 'manni'
+# pygments_style = 'tango'
+# pygments_style = 'pastie'
 
 # A list of ignored prefixes for module index sorting.
-modindex_common_prefix = ['xonsh.']
+modindex_common_prefix = ["xonsh."]
 
 
 # -- Options for HTML output 
---------------------------------------------------
 
 # The theme to use for HTML and HTML Help pages.  Major themes that come with
 # Sphinx are currently 'default' and 'sphinxdoc'.
-#html_theme = 'default'
-#html_theme = 'altered_nature'
-#html_theme = 'sphinxdoc'
+# html_theme = 'default'
+# html_theme = 'altered_nature'
+# html_theme = 'sphinxdoc'
 
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
@@ -145,22 +154,23 @@
 
     import cloud_sptheme as csp
 
-    html_theme = 'cloud'
+    html_theme = "cloud"
 
     html_theme_options = {
-        'max_width': '1250px',
-        'minimal_width': '700px',
-        'relbarbgcolor': '#000000',
-        'footerbgcolor': '#FFFFE7',
-        'sidebarwidth': '322px',
-        'sidebarbgcolor': '#e7e7ff',
+        "max_width": "1250px",
+        "minimal_width": "700px",
+        "relbarbgcolor": "#000000",
+        "footerbgcolor": "#FFFFE7",
+        "sidebarwidth": "322px",
+        "sidebarbgcolor": "#e7e7ff",
         #'googleanalytics_id': 'UA-41934829-1',
-        'stickysidebar': False,
-        'highlighttoc': False,
-        'externalrefs': False,
-        'collapsiblesidebar': True,
-        'default_layout_text_size': "100%",  # prevents division by zero error
-        }
+        "inline_admonitions": True,
+        "stickysidebar": False,
+        "highlighttoc": False,
+        "externalrefs": False,
+        "collapsiblesidebar": True,
+        "default_layout_text_size": "100%",  # prevents division by zero error
+    }
 
     # Add any paths that contain custom themes here, relative to this 
directory.
     html_theme_path = ["_theme", csp.get_theme_dir()]
@@ -168,98 +178,97 @@
 
 # The name for this set of Sphinx documents.  If None, it defaults to
 # "<project> v<release> documentation".
-#html_title = None
+# html_title = None
 
 # A shorter title for the navigation bar.  Default is the same as html_title.
-#html_short_title = None
+# html_short_title = None
 
 # The name of an image file (relative to this directory) to place at the top
 # of the sidebar.
-html_logo = '_static/ascii_conch_part_transparent_tight.png'
+html_logo = "_static/ascii_conch_part_transparent_tight.png"
 
 # The name of an image file (within the static path) to use as favicon of the
 # docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
 # pixels large.
-html_favicon = '_static/magic_conch.ico'
+html_favicon = "_static/magic_conch.ico"
 
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
+html_static_path = ["_static"]
 html_style = "numpy_friendly.css"
 
 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
 # using the given strftime format.
-#html_last_updated_fmt = '%b %d, %Y'
+# html_last_updated_fmt = '%b %d, %Y'
 
 # If true, SmartyPants will be used to convert quotes and dashes to
 # typographically correct entities.
-#html_use_smartypants = True
+# html_use_smartypants = True
 
 # Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
+# html_sidebars = {}
 
 # Additional templates that should be rendered to pages, maps page names to
 # template names.
-#html_additional_pages = {}
+# html_additional_pages = {}
 
 # If false, no module index is generated.
-#html_use_modindex = True
+# html_use_modindex = True
 
 # If false, no index is generated.
-#html_use_index = True
+# html_use_index = True
 
 # If true, the index is split into individual pages for each letter.
-#html_split_index = False
+# html_split_index = False
 
 # If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
+# html_show_sourcelink = True
 
 # If true, an OpenSearch description file will be output, and all pages will
 # contain a <link> tag referring to it.  The value of this option must be the
 # base URL from which the finished HTML is served.
-#html_use_opensearch = ''
+# html_use_opensearch = ''
 
 # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = ''
+# html_file_suffix = ''
 
 # Output file base name for HTML help builder.
-htmlhelp_basename = 'xonshdoc'
+htmlhelp_basename = "xonshdoc"
 
 
 # -- Options for LaTeX output 
--------------------------------------------------
 
 # The paper size ('letter' or 'a4').
-#latex_paper_size = 'letter'
+# latex_paper_size = 'letter'
 
 # The font size ('10pt', '11pt' or '12pt').
-#latex_font_size = '10pt'
+# latex_font_size = '10pt'
 
 # Grouping the document tree into LaTeX files. List of tuples
 # (source start file, target name, title, author, documentclass 
[howto/manual]).
 latex_documents = [
-  ('index', 'xonsh.tex', u'xonsh documentation',
-   u'Anthony Scopatz', 'manual'),
+    ("index", "xonsh.tex", u"xonsh documentation", u"Anthony Scopatz", 
"manual")
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
 # the title page.
-#latex_logo = None
+# latex_logo = None
 
 # For "manual" documents, if this is true, then toplevel headings are parts,
 # not chapters.
-#latex_use_parts = False
+# latex_use_parts = False
 
 # Additional stuff for the LaTeX preamble.
-#latex_preamble = ''
+# latex_preamble = ''
 
 # Documents to append as an appendix to all manuals.
-#latex_appendices = []
+# latex_appendices = []
 
 # If false, no module index is generated.
-#latex_use_modindex = True
+# latex_use_modindex = True
 
-#Autodocumentation Flags
+# Autodocumentation Flags
 autodoc_member_order = "groupwise"
 autoclass_content = "both"
 autosummary_generate = []
@@ -272,146 +281,155 @@
 # Auto-generate some docs
 #
 
+
 def make_envvars():
     env = Env()
     vars = sorted(DEFAULT_DOCS.keys())
-    s = ('.. list-table::\n'
-         '    :header-rows: 0\n\n')
+    s = ".. list-table::\n" "    :header-rows: 0\n\n"
     table = []
     ncol = 3
-    row = '    {0} - :ref:`${1} <{2}>`'
+    row = "    {0} - :ref:`${1} <{2}>`"
     for i, var in enumerate(vars):
-        star = '*' if i%ncol == 0 else ' '
+        star = "*" if i % ncol == 0 else " "
         table.append(row.format(star, var, var.lower()))
-    table.extend(['      -']*((ncol - len(vars)%ncol)%ncol))
-    s += '\n'.join(table) + '\n\n'
-    s += ('Listing\n'
-          '-------\n\n')
-    sec = ('.. _{low}:\n\n'
-           '{title}\n'
-           '{under}\n'
-           '{docstr}\n\n'
-           '**configurable:** {configurable}\n\n'
-           '**default:** {default}\n\n'
-           '**store_as_str:** {store_as_str}\n\n'
-           '-------\n\n')
+    table.extend(["      -"] * ((ncol - len(vars) % ncol) % ncol))
+    s += "\n".join(table) + "\n\n"
+    s += "Listing\n" "-------\n\n"
+    sec = (
+        ".. _{low}:\n\n"
+        "{title}\n"
+        "{under}\n"
+        "{docstr}\n\n"
+        "**configurable:** {configurable}\n\n"
+        "**default:** {default}\n\n"
+        "**store_as_str:** {store_as_str}\n\n"
+        "-------\n\n"
+    )
     for var in vars:
-        title = '$' + var
-        under = '.' * len(title)
+        title = "$" + var
+        under = "." * len(title)
         vd = env.get_docs(var)
-        s += sec.format(low=var.lower(), title=title, under=under,
-                        docstr=vd.docstr, configurable=vd.configurable,
-                        default=vd.default, store_as_str=vd.store_as_str)
+        s += sec.format(
+            low=var.lower(),
+            title=title,
+            under=under,
+            docstr=vd.docstr,
+            configurable=vd.configurable,
+            default=vd.default,
+            store_as_str=vd.store_as_str,
+        )
     s = s[:-9]
-    fname = os.path.join(os.path.dirname(__file__), 'envvarsbody')
-    with open(fname, 'w', encoding='utf-8') as f:
+    fname = os.path.join(os.path.dirname(__file__), "envvarsbody")
+    with open(fname, "w", encoding="utf-8") as f:
         f.write(s)
 
 
 def make_xontribs():
     md = xontrib_metadata()
-    names = sorted(d['name'] for d in md['xontribs'] if 'name' in d)
-    s = ('.. list-table::\n'
-         '    :header-rows: 0\n\n')
+    names = sorted(d["name"] for d in md["xontribs"] if "name" in d)
+    s = ".. list-table::\n" "    :header-rows: 0\n\n"
     table = []
     ncol = 5
-    row = '    {0} - :ref:`{1} <{2}>`'
+    row = "    {0} - :ref:`{1} <{2}>`"
     for i, name in enumerate(names):
-        star = '*' if i%ncol == 0 else ' '
+        star = "*" if i % ncol == 0 else " "
         table.append(row.format(star, name, name.lower()))
-    table.extend(['      -']*((ncol - len(names)%ncol)%ncol))
-    s += '\n'.join(table) + '\n\n'
-    s += ('Information\n'
-          '-----------\n\n')
-    sec = ('.. _{low}:\n\n'
-           '{title}\n'
-           '{under}\n'
-           ':Website: {url}\n'
-           ':Package: {pkg}\n\n'
-           '{desc}\n\n'
-           '{inst}\n\n'
-           '{usage}'
-           '-------\n\n')
+    table.extend(["      -"] * ((ncol - len(names) % ncol) % ncol))
+    s += "\n".join(table) + "\n\n"
+    s += "Information\n" "-----------\n\n"
+    sec = (
+        ".. _{low}:\n\n"
+        "{title}\n"
+        "{under}\n"
+        ":Website: {url}\n"
+        ":Package: {pkg}\n\n"
+        "{desc}\n\n"
+        "{inst}\n\n"
+        "{usage}"
+        "-------\n\n"
+    )
     for name in names:
-        for d in md['xontribs']:
-            if d.get('name', None) == name:
+        for d in md["xontribs"]:
+            if d.get("name", None) == name:
                 break
         title = name
-        under = '.' * len(title)
-        desc = d.get('description', '')
+        under = "." * len(title)
+        desc = d.get("description", "")
         if not isinstance(desc, str):
-            desc = ''.join(desc)
-        pkgname = d.get('package', None)
+            desc = "".join(desc)
+        pkgname = d.get("package", None)
         if pkgname is None:
-            pkg = 'unknown'
-            inst = ''
-            usage = ''
+            pkg = "unknown"
+            inst = ""
+            usage = ""
         else:
-            pd = md['packages'].get(pkgname, {})
+            pd = md["packages"].get(pkgname, {})
             pkg = pkgname
-            if 'url' in pd:
-                pkg = '`{0} website <{1}>`_'.format(pkg, pd['url'])
-            if 'license' in pd:
-                pkg = pkg + ', ' + pd['license']
-            inst = ''
-            installd = pd.get('install', {})
-            if pkgname == 'xonsh':
-                inst = ('This xontrib is preinstalled with xonsh.\n\n')
+            if "url" in pd:
+                pkg = "`{0} website <{1}>`_".format(pkg, pd["url"])
+            if "license" in pd:
+                pkg = pkg + ", " + pd["license"]
+            inst = ""
+            installd = pd.get("install", {})
+            if pkgname == "xonsh":
+                inst = "This xontrib is preinstalled with xonsh.\n\n"
             elif len(installd) > 0:
-                inst = ('**Installation:**\n\n'
-                        '.. code-block:: xonsh\n\n')
-                for k, v in sorted(pd.get('install', {}).items()):
-                    cmd = "\n    ".join(v.split('\n'))
-                    inst += ('    # install with {k}\n'
-                             '    {cmd}').format(k=k, cmd=cmd)
-            usage = ('**Usage:**\n\n'
-                     'Run the following command to enable (or add '
-                     'it to your :doc:`.xonshrc </xonshrc>` file to enable '
-                     'on startup.)\n\n'
-                     '.. code-block:: xonsh\n\n')
-            usage += '    xontrib load {}\n\n'.format(name)
-        s += sec.format(low=name.lower(), title=title, under=under,
-                        url=d.get('url', 'unknown'), desc=desc,
-                        pkg=pkg, inst=inst, usage=usage)
+                inst = "**Installation:**\n\n" ".. code-block:: xonsh\n\n"
+                for k, v in sorted(pd.get("install", {}).items()):
+                    cmd = "\n    ".join(v.split("\n"))
+                    inst += ("    # install with {k}\n" "    {cmd}").format(
+                        k=k, cmd=cmd
+                    )
+            usage = (
+                "**Usage:**\n\n"
+                "Run the following command to enable (or add "
+                "it to your :doc:`.xonshrc </xonshrc>` file to enable "
+                "on startup.)\n\n"
+                ".. code-block:: xonsh\n\n"
+            )
+            usage += "    xontrib load {}\n\n".format(name)
+        s += sec.format(
+            low=name.lower(),
+            title=title,
+            under=under,
+            url=d.get("url", "unknown"),
+            desc=desc,
+            pkg=pkg,
+            inst=inst,
+            usage=usage,
+        )
     s = s[:-9]
-    fname = os.path.join(os.path.dirname(__file__), 'xontribsbody')
-    with open(fname, 'w') as f:
+    fname = os.path.join(os.path.dirname(__file__), "xontribsbody")
+    with open(fname, "w") as f:
         f.write(s)
 
 
 def make_events():
     names = sorted(vars(events).keys())
-    s = ('.. list-table::\n'
-         '    :header-rows: 0\n\n')
+    s = ".. list-table::\n" "    :header-rows: 0\n\n"
     table = []
     ncol = 3
-    row = '    {0} - :ref:`{1} <{2}>`'
+    row = "    {0} - :ref:`{1} <{2}>`"
     for i, var in enumerate(names):
-        star = '*' if i%ncol == 0 else ' '
+        star = "*" if i % ncol == 0 else " "
         table.append(row.format(star, var, var.lower()))
-    table.extend(['      -']*((ncol - len(names)%ncol)%ncol))
-    s += '\n'.join(table) + '\n\n'
-    s += ('Listing\n'
-          '-------\n\n')
-    sec = ('.. _{low}:\n\n'
-           '``{title}``\n'
-           '{under}\n'
-           '{docstr}\n\n'
-           '-------\n\n')
+    table.extend(["      -"] * ((ncol - len(names) % ncol) % ncol))
+    s += "\n".join(table) + "\n\n"
+    s += "Listing\n" "-------\n\n"
+    sec = ".. _{low}:\n\n" "``{title}``\n" "{under}\n" "{docstr}\n\n" 
"-------\n\n"
     for name in names:
         event = getattr(events, name)
         title = name
         docstr = inspect.getdoc(event)
         if docstr.startswith(name):
-          # Assume the first line is a signature
-          title, docstr = docstr.split('\n', 1)
-          docstr = docstr.strip()
-        under = '.' * (len(title) + 4)
-        s += sec.format(low=name.lower(), title=title, under=under,
-                        docstr=docstr)
+            # Assume the first line is a signature
+            title, docstr = docstr.split("\n", 1)
+            docstr = docstr.strip()
+        under = "." * (len(title) + 4)
+        s += sec.format(low=name.lower(), title=title, under=under, 
docstr=docstr)
     s = s[:-9]
-    fname = os.path.join(os.path.dirname(__file__), 'eventsbody')
-    with open(fname, 'w') as f:
+    fname = os.path.join(os.path.dirname(__file__), "eventsbody")
+    with open(fname, "w") as f:
         f.write(s)
 
 
@@ -422,3 +440,7 @@
 builtins.__xonsh__.history = None
 builtins.__xonsh__.env = {}
 builtins.__xonsh__.commands_cache = CommandsCache()
+
+
+def setup(app):
+    app.add_stylesheet("custom.css")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/docs/dependencies.rst 
new/xonsh-0.9.10/docs/dependencies.rst
--- old/xonsh-0.9.9/docs/dependencies.rst       2019-07-20 00:13:20.000000000 
+0200
+++ new/xonsh-0.9.10/docs/dependencies.rst      2019-08-09 23:11:08.000000000 
+0200
@@ -24,4 +24,4 @@
 Development Dependencies
 ------------------------
 
-If you want to develop xonsh, it is extremely recommended to install the 
dependencies listed in `requirements-docs.txt 
<https://github.com/xonsh/xonsh/blob/master/requirements-docs.txt>`_ (to 
generate documentation) and `requirements-tests.txt 
<https://github.com/xonsh/xonsh/blob/master/requirements-tests.txt>`_ (to run 
the test suite).
+If you want to develop xonsh, it is extremely recommended to install the 
dependencies listed in `requirements/docs.txt 
<https://github.com/xonsh/xonsh/blob/master/requirements/docs.txt>`_ (to 
generate documentation) and `requirements/tests.txt 
<https://github.com/xonsh/xonsh/blob/master/requirements/tests.txt>`_ (to run 
the test suite).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/docs/faq.rst 
new/xonsh-0.9.10/docs/faq.rst
--- old/xonsh-0.9.9/docs/faq.rst        2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/docs/faq.rst       2019-08-09 23:11:08.000000000 +0200
@@ -190,3 +190,6 @@
 
 For example double star globbing `**` will only work on Python 3.5+ (ie not on 
3.4)
 as recursive globbing is `new in Python 3.5 
<https://docs.python.org/3/library/glob.html#glob.glob>`_
+
+To keep available packages independent from underlying environments, use the 
provided `xpip` alias in the same way as `pip` is installed.
+It will make sure that the installed packages are available to `xonsh`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/requirements/docs.txt 
new/xonsh-0.9.10/requirements/docs.txt
--- old/xonsh-0.9.9/requirements/docs.txt       1970-01-01 01:00:00.000000000 
+0100
+++ new/xonsh-0.9.10/requirements/docs.txt      2019-08-09 23:11:08.000000000 
+0200
@@ -0,0 +1,12 @@
+cloud_sptheme
+numpydoc
+Sphinx
+prompt_toolkit
+pygments>=2.2
+psutil
+pyzmq
+matplotlib
+doctr
+tornado
+black
+pre-commit
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/requirements/tests-35.txt 
new/xonsh-0.9.10/requirements/tests-35.txt
--- old/xonsh-0.9.9/requirements/tests-35.txt   1970-01-01 01:00:00.000000000 
+0100
+++ new/xonsh-0.9.10/requirements/tests-35.txt  2019-08-09 23:11:08.000000000 
+0200
@@ -0,0 +1,10 @@
+py
+pytest
+flake8
+pytest-flake8
+pytest-cov
+pytest-timeout
+prompt-toolkit
+pygments>=2.2
+codecov
+coverage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/requirements/tests.txt 
new/xonsh-0.9.10/requirements/tests.txt
--- old/xonsh-0.9.9/requirements/tests.txt      1970-01-01 01:00:00.000000000 
+0100
+++ new/xonsh-0.9.10/requirements/tests.txt     2019-08-09 23:11:08.000000000 
+0200
@@ -0,0 +1,12 @@
+py
+pytest
+flake8
+pytest-flake8
+pytest-cov
+pytest-timeout
+prompt-toolkit
+pygments>=2.2
+codecov
+coverage
+black
+pre-commit
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/requirements-docs.txt 
new/xonsh-0.9.10/requirements-docs.txt
--- old/xonsh-0.9.9/requirements-docs.txt       2019-07-20 00:13:20.000000000 
+0200
+++ new/xonsh-0.9.10/requirements-docs.txt      1970-01-01 01:00:00.000000000 
+0100
@@ -1,10 +0,0 @@
-cloud_sptheme
-numpydoc
-Sphinx
-prompt_toolkit
-pygments>=2.2
-psutil
-pyzmq
-matplotlib
-doctr
-tornado
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/requirements-tests.txt 
new/xonsh-0.9.10/requirements-tests.txt
--- old/xonsh-0.9.9/requirements-tests.txt      2019-07-20 00:13:20.000000000 
+0200
+++ new/xonsh-0.9.10/requirements-tests.txt     1970-01-01 01:00:00.000000000 
+0100
@@ -1,10 +0,0 @@
-py
-pytest
-flake8
-pytest-flake8
-pytest-cov
-pytest-timeout
-prompt-toolkit
-pygments>=2.2
-codecov
-coverage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/rever.xsh new/xonsh-0.9.10/rever.xsh
--- old/xonsh-0.9.9/rever.xsh   2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/rever.xsh  2019-08-09 23:11:08.000000000 +0200
@@ -22,9 +22,9 @@
 $GHPAGES_REPO = '[email protected]:xonsh/xonsh-docs.git'
 
 $DOCKER_APT_DEPS = ['man']
-with open('requirements-tests.txt') as f:
+with open('requirements/tests.txt') as f:
     conda_deps = f.read().split()
-with open('requirements-docs.txt') as f:
+with open('requirements/docs.txt') as f:
     conda_deps += f.read().split()
 for delimiter in '=<>':
     conda_deps = {d.lower().split(delimiter)[0] for d in conda_deps}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/tests/test_environ.py 
new/xonsh-0.9.10/tests/test_environ.py
--- old/xonsh-0.9.9/tests/test_environ.py       2019-07-20 00:13:20.000000000 
+0200
+++ new/xonsh-0.9.10/tests/test_environ.py      2019-08-09 23:11:08.000000000 
+0200
@@ -19,6 +19,7 @@
     DEFAULT_VALUES,
     default_env,
     make_args_env,
+    LsColors,
 )
 
 from tools import skip_if_on_unix
@@ -292,3 +293,9 @@
     assert env[a_key] == a_value
     del env[a_key]
     assert env[a_key] == a_value
+
+
+def test_lscolors_target():
+    lsc = LsColors.fromstring("ln=target")
+    assert lsc["ln"] == ("TARGET",)
+    assert lsc.detype() == "ln=target"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/tests/test_xoreutils.py 
new/xonsh-0.9.10/tests/test_xoreutils.py
--- old/xonsh-0.9.9/tests/test_xoreutils.py     2019-07-20 00:13:20.000000000 
+0200
+++ new/xonsh-0.9.10/tests/test_xoreutils.py    2019-08-09 23:11:08.000000000 
+0200
@@ -191,6 +191,24 @@
         assert stdout_buf.getvalue() == bytes(expected_content, "utf-8")
         assert stderr_buf.getvalue() == b''
 
+    def test_cat_single_file_with_end_newline(self, cat_env_fixture):
+        content = "this is a content withe \\n\nfor testing xoreutil's cat\n"
+        with open(self.tempfile, "w") as f:
+            f.write(content)
+        expected_content = content.replace("\n", os.linesep)
+
+        stdin = io.StringIO()
+        stdout_buf = io.BytesIO()
+        stderr_buf = io.BytesIO()
+        stdout = io.TextIOWrapper(stdout_buf)
+        stderr = io.TextIOWrapper(stderr_buf)
+        opts = cat._cat_parse_args([])
+        cat._cat_single_file(opts, self.tempfile, stdin, stdout, stderr)
+        stdout.flush()
+        stderr.flush()
+        assert stdout_buf.getvalue() == bytes(expected_content, "utf-8")
+        assert stderr_buf.getvalue() == b''
+
     def test_cat_empty_file(self, cat_env_fixture):
         with open(self.tempfile, "w") as f:
             f.write("")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/xonsh/__init__.py 
new/xonsh-0.9.10/xonsh/__init__.py
--- old/xonsh-0.9.9/xonsh/__init__.py   2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/xonsh/__init__.py  2019-08-09 23:11:08.000000000 +0200
@@ -1,4 +1,4 @@
-__version__ = "0.9.9"
+__version__ = "0.9.10"
 
 
 # amalgamate exclude jupyter_kernel parser_table parser_test_table pyghooks
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/xonsh/environ.py 
new/xonsh-0.9.10/xonsh/environ.py
--- old/xonsh-0.9.9/xonsh/environ.py    2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/xonsh/environ.py   2019-08-09 23:11:08.000000000 +0200
@@ -184,7 +184,8 @@
 
 class LsColors(cabc.MutableMapping):
     """Helps convert to/from $LS_COLORS format, respecting the xonsh color 
style.
-    This accepts the same inputs as dict().
+    This accepts the same inputs as dict(). The link ``target`` is represented
+    by the special ``"TARGET"`` color.
     """
 
     default_settings = {
@@ -368,7 +369,12 @@
                     key
                     + "="
                     + ";".join(
-                        [ansi_color_name_to_escape_code(v, cmap=style) for v 
in val]
+                        [
+                            "target"
+                            if v == "TARGET"
+                            else ansi_color_name_to_escape_code(v, cmap=style)
+                            for v in val
+                        ]
                     )
                     for key, val in sorted(self._d.items())
                 ]
@@ -408,10 +414,13 @@
             key, eq, esc = item.partition("=")
             if not eq:
                 # not a valid item
-                continue
-            data[key] = ansi_color_escape_code_to_name(
-                esc, "default", reversed_style=reversed_default
-            )
+                pass
+            elif esc == "target":
+                data[key] = ("TARGET",)
+            else:
+                data[key] = ansi_color_escape_code_to_name(
+                    esc, "default", reversed_style=reversed_default
+                )
         obj._d = data
         return obj
 
@@ -545,6 +554,7 @@
         "PRETTY_PRINT_RESULTS": (is_bool, to_bool, bool_to_str),
         "PROMPT": (is_string_or_callable, ensure_string, ensure_string),
         "PROMPT_FIELDS": (always_true, None, None),
+        "PROMPT_REFRESH_INTERVAL": (is_float, float, str),
         "PROMPT_TOOLKIT_COLOR_DEPTH": (
             always_false,
             ptk2_color_depth_setter,
@@ -731,6 +741,7 @@
         "PATHEXT": [".COM", ".EXE", ".BAT", ".CMD"] if ON_WINDOWS else [],
         "PRETTY_PRINT_RESULTS": True,
         "PROMPT": prompt.default_prompt(),
+        "PROMPT_REFRESH_INTERVAL": 0,
         "PROMPT_TOOLKIT_COLOR_DEPTH": "",
         "PTK_STYLE_OVERRIDES": dict(PTK2_STYLE),
         "PUSHD_MINUS": False,
@@ -874,15 +885,15 @@
             "completions, auto-suggestions, etc.\n\nChanging it at runtime 
will "
             "take immediate effect, so you can quickly disable and enable "
             "completions during shell sessions.\n\n"
-            "- If ``$COMPLETIONS_DISPLAY`` is ``none`` or ``false``, do not 
display\n"
-            "  those completions.\n"
+            "- If ``$COMPLETIONS_DISPLAY`` is ``none`` or ``false``, do not 
display"
+            " those completions.\n"
             "- If ``$COMPLETIONS_DISPLAY`` is ``single``, display completions 
in a\n"
             "  single column while typing.\n"
-            "- If ``$COMPLETIONS_DISPLAY`` is ``multi`` or ``true``, display 
completions\n"
-            "  in multiple columns while typing.\n\n"
+            "- If ``$COMPLETIONS_DISPLAY`` is ``multi`` or ``true``, display 
completions"
+            " in multiple columns while typing.\n\n"
             "- If ``$COMPLETIONS_DISPLAY`` is ``readline``, display 
completions\n"
             "  will emulate the behavior of readline.\n\n"
-            "These option values are not case- or type-sensitive, so e.g."
+            "These option values are not case- or type-sensitive, so e.g. "
             "writing ``$COMPLETIONS_DISPLAY = None`` "
             "and ``$COMPLETIONS_DISPLAY = 'none'`` are equivalent. Only usable 
with "
             "``$SHELL_TYPE=prompt_toolkit``"
@@ -902,9 +913,9 @@
             "for confirmation."
         ),
         "COMPLETION_IN_THREAD": VarDocs(
-            "When generating the completions takes a lot of time, "
-            "it’s better to do this in a background thed."
-            "When this is True, background theads is used for completion."
+            "When generating the completions takes time, "
+            "it’s better to do this in a background thread. "
+            "When this is True, background threads is used for completion."
         ),
         "DIRSTACK_SIZE": VarDocs("Maximum size of the directory stack."),
         "DOTGLOB": VarDocs(
@@ -1059,6 +1070,11 @@
             "This value is never inherited from parent processes.",
             default="``xonsh.environ.DEFAULT_PROMPT``",
         ),
+        "PROMPT_REFRESH_INTERVAL": VarDocs(
+            "Evaluate $PROMPT, $RIGHT_PROMPT and $BOTTOM_TOOLBAR every so many 
seconds."
+            "This param default is zero."
+            "And if using this param, $UPDATE_COMPLETIONS_ON_KEYPRESS must be 
True."
+        ),
         "PROMPT_TOOLKIT_COLOR_DEPTH": VarDocs(
             "The color depth used by prompt toolkit 2. Possible values are: "
             "``DEPTH_1_BIT``, ``DEPTH_4_BIT``, ``DEPTH_8_BIT``, 
``DEPTH_24_BIT`` "
@@ -1348,8 +1364,8 @@
             "Logging to a file is not enabled by default."
         ),
         "XONSH_DATETIME_FORMAT": VarDocs(
-            "The format that is used for ``datetime.strptime()`` in various 
places"
-            "i.e the history timestamp option"
+            "The format that is used for ``datetime.strptime()`` in various 
places, "
+            "i.e the history timestamp option."
         ),
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/xonsh/prompt/gitstatus.py 
new/xonsh-0.9.10/xonsh/prompt/gitstatus.py
--- old/xonsh-0.9.9/xonsh/prompt/gitstatus.py   2019-07-20 00:13:20.000000000 
+0200
+++ new/xonsh-0.9.10/xonsh/prompt/gitstatus.py  2019-08-09 23:11:08.000000000 
+0200
@@ -187,20 +187,23 @@
     if s.operations:
         ret += _get_def("OPERATION") + "|" + "|".join(s.operations)
     ret += "|"
-    if s.staged > 0:
-        ret += _get_def("STAGED") + str(s.staged) + "{NO_COLOR}"
-    if s.conflicts > 0:
-        ret += _get_def("CONFLICTS") + str(s.conflicts) + "{NO_COLOR}"
-    if s.changed > 0:
-        ret += _get_def("CHANGED") + str(s.changed) + "{NO_COLOR}"
-    if s.deleted > 0:
-        ret += _get_def("DELETED") + str(s.deleted) + "{NO_COLOR}"
-    if s.untracked > 0:
-        ret += _get_def("UNTRACKED") + str(s.untracked) + "{NO_COLOR}"
-    if s.stashed > 0:
-        ret += _get_def("STASHED") + str(s.stashed) + "{NO_COLOR}"
+    for category in (
+        "staged",
+        "conflicts",
+        "changed",
+        "deleted",
+        "untracked",
+        "stashed",
+    ):
+        symbol = _get_def(category.upper())
+        value = getattr(s, category)
+        if symbol and value > 0:
+            ret += symbol + str(value) + "{NO_COLOR}"
     if s.staged + s.conflicts + s.changed + s.deleted + s.untracked + 
s.stashed == 0:
-        ret += _get_def("CLEAN") + "{NO_COLOR}"
+        symbol = _get_def("CLEAN")
+        if symbol:
+            ret += symbol + "{NO_COLOR}"
+    ret = ret.rstrip("|")
     ret += "{NO_COLOR}"
 
     return ret
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/xonsh/ptk2/shell.py 
new/xonsh-0.9.10/xonsh/ptk2/shell.py
--- old/xonsh-0.9.9/xonsh/ptk2/shell.py 2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/xonsh/ptk2/shell.py        2019-08-09 23:11:08.000000000 
+0200
@@ -86,6 +86,8 @@
         env = builtins.__xonsh__.env
         mouse_support = env.get("MOUSE_SUPPORT")
         auto_suggest = auto_suggest if env.get("AUTO_SUGGEST") else None
+        refresh_interval = env.get("PROMPT_REFRESH_INTERVAL")
+        refresh_interval = refresh_interval if refresh_interval > 0 else None
         complete_in_thread = env.get("COMPLETION_IN_THREAD")
         completions_display = env.get("COMPLETIONS_DISPLAY")
         complete_style = 
self.completion_displays_to_styles[completions_display]
@@ -138,6 +140,7 @@
             "complete_style": complete_style,
             "complete_while_typing": complete_while_typing,
             "include_default_pygments_style": False,
+            "refresh_interval": refresh_interval,
             "complete_in_thread": complete_in_thread,
         }
         if builtins.__xonsh__.env.get("COLOR_INPUT"):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/xonsh/tools.py 
new/xonsh-0.9.10/xonsh/tools.py
--- old/xonsh-0.9.9/xonsh/tools.py      2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/xonsh/tools.py     2019-08-09 23:11:08.000000000 +0200
@@ -832,12 +832,20 @@
     """
     if not ON_LINUX:
         return ""
-    elif not os.path.isfile("/usr/lib/command-not-found"):
-        # utility is not on PATH
+
+    cnf = builtins.__xonsh__.commands_cache.lazyget(
+        "command-not-found", ("/usr/lib/command-not-found",)
+    )[0]
+
+    if not os.path.isfile(cnf):
         return ""
-    c = "/usr/lib/command-not-found {0}; exit 0"
+
+    c = "{0} {1}; exit 0"
     s = subprocess.check_output(
-        c.format(cmd), universal_newlines=True, stderr=subprocess.STDOUT, 
shell=True
+        c.format(cnf, cmd),
+        universal_newlines=True,
+        stderr=subprocess.STDOUT,
+        shell=True,
     )
     s = "\n".join(s.rstrip().splitlines()).strip()
     return s
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/xonsh/xontribs.json 
new/xonsh-0.9.10/xonsh/xontribs.json
--- old/xonsh-0.9.9/xonsh/xontribs.json 2019-07-20 00:13:20.000000000 +0200
+++ new/xonsh-0.9.10/xonsh/xontribs.json        2019-08-09 23:11:08.000000000 
+0200
@@ -38,11 +38,6 @@
   "url": "https://github.com/ErickTucto/xontrib-base16-shell";,
   "description": ["Change base16 shell themes"]
  },
- {"name": "click_tabcomplete",
-  "package": "xonsh-click-tabcomplete",
-  "url": "https://github.com/Granitosaurus/xonsh-click-tabcomplete";,
-  "description": ["Adds tabcomplete functionality to click based python 
applications inside of xonsh."]
- },
  {"name": "coreutils",
   "package": "xonsh",
   "url": "http://xon.sh";,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xonsh-0.9.9/xonsh/xoreutils/cat.py 
new/xonsh-0.9.10/xonsh/xoreutils/cat.py
--- old/xonsh-0.9.9/xonsh/xoreutils/cat.py      2019-07-20 00:13:20.000000000 
+0200
+++ new/xonsh-0.9.10/xonsh/xoreutils/cat.py     2019-08-09 23:11:08.000000000 
+0200
@@ -1,6 +1,5 @@
 """Implements a cat command for xonsh."""
 import os
-import stat
 import time
 import builtins
 
@@ -12,15 +11,17 @@
     f, sep, last_was_blank, line_count, opts, out, enc, enc_errors, read_size
 ):
     _r = r = f.readline(size=80)
+    restore_newline = False
     if isinstance(_r, str):
         _r = r = _r.encode(enc, enc_errors)
     if r == b"":
-        last_was_blank, line_count, read_size, True
+        return last_was_blank, line_count, read_size, True
     if r.endswith(sep):
         _r = _r[: -len(sep)]
+        restore_newline = True
     this_one_blank = _r == b""
     if last_was_blank and this_one_blank and opts["squeeze_blank"]:
-        last_was_blank, line_count, read_size, False
+        return last_was_blank, line_count, read_size, False
     last_was_blank = this_one_blank
     if opts["number_all"] or (opts["number_nonblank"] and not this_one_blank):
         start = ("%6d " % line_count).encode(enc, enc_errors)
@@ -28,6 +29,8 @@
         line_count += 1
     if opts["show_ends"]:
         _r = _r + b"$"
+    if restore_newline:
+        _r = _r + sep
     out.buffer.write(_r)
     out.flush()
     read_size += len(r)
@@ -49,9 +52,8 @@
         print("cat: No such file or directory: {}".format(fname), file=err)
         return True, line_count
     else:
-        fstat = os.stat(fname)
-        file_size = fstat.st_size
-        if file_size == 0 and not stat.S_ISREG(fstat.st_mode):
+        file_size = os.stat(fname).st_size
+        if file_size == 0:
             file_size = None
         fobj = open(fname, "rb")
         f = xproc.NonBlockingFDReader(fobj.fileno(), timeout=0.1)


Reply via email to