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)
