openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
March 2020
- 1 participants
- 5800 discussions
Hello community,
here is the log from the commit of package xz for openSUSE:Factory checked in at 2020-03-31 17:31:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xz (Old)
and /work/SRC/openSUSE:Factory/.xz.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xz"
Tue Mar 31 17:31:11 2020 rev:66 rq:788081 version:5.2.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/xz/xz.changes 2019-09-26 20:36:05.971365634 +0200
+++ /work/SRC/openSUSE:Factory/.xz.new.3160/xz.changes 2020-03-31 17:31:12.392223987 +0200
@@ -1,0 +2,38 @@
+Wed Mar 18 11:11:48 UTC 2020 - Paolo Stivanin <info(a)paolostivanin.com>
+
+- Update to 5.2.5:
+ * liblzma:
+ - Fixed several C99/C11 conformance bugs. Now the code is clean
+ under gcc/clang -fsanitize=undefined. Some of these changes
+ might have a negative effect on performance with old GCC
+ versions or compilers other than GCC and Clang. The configure
+ option --enable-unsafe-type-punning can be used to (mostly)
+ restore the old behavior but it shouldn't normally be used.
+ - Improved API documentation of lzma_properties_decode().
+ - Added a very minor encoder speed optimization.
+ * xz:
+ - Fixed a crash in "xz -dcfv not_an_xz_file". All four options
+ were required to trigger it. The crash occurred in the
+ progress indicator code when xz was in passthru mode where
+ xz works like "cat".
+ - Fixed an integer overflow with 32-bit off_t. It could happen
+ when decompressing a file that has a long run of zero bytes
+ which xz would try to write as a sparse file. Since the build
+ system enables large file support by default, off_t is
+ normally 64-bit even on 32-bit systems.
+ - Fixes for --flush-timeout:
+ * Fix semi-busy-waiting.
+ * Avoid unneeded flushes when no new input has arrived
+ since the previous flush was completed.
+ - Added a special case for 32-bit xz: If --memlimit-compress is
+ used to specify a limit that exceeds 4020 MiB, the limit will
+ be set to 4020 MiB. The values "0" and "max" aren't affected
+ by this and neither is decompression. This hack can be
+ helpful when a 32-bit xz has access to 4 GiB address space
+ but the specified memlimit exceeds 4 GiB. This can happen
+ e.g. with some scripts.
+ - Capsicum sandbox is now enabled by default where available
+ (FreeBSD >= 10). The sandbox debug messages (xz -vv) were
+ removed since they seemed to be more annoying than useful.
+
+-------------------------------------------------------------------
Old:
----
xz-5.2.4.tar.gz
xz-5.2.4.tar.gz.sig
New:
----
xz-5.2.5.tar.gz
xz-5.2.5.tar.gz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xz.spec ++++++
--- /var/tmp/diff_new_pack.Ll4G4c/_old 2020-03-31 17:31:13.092224397 +0200
+++ /var/tmp/diff_new_pack.Ll4G4c/_new 2020-03-31 17:31:13.092224397 +0200
@@ -1,7 +1,7 @@
#
# spec file for package xz
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,12 +19,12 @@
# avoid bootstrapping problem
%define _binary_payload w9.bzdio
Name: xz
-Version: 5.2.4
+Version: 5.2.5
Release: 0
Summary: A Program for Compressing Files with the Lempel–Ziv–Markov algorithm
License: LGPL-2.1-or-later AND GPL-2.0-or-later AND SUSE-Public-Domain
Group: Productivity/Archiving/Compression
-Url: http://tukaani.org/xz/
+URL: http://tukaani.org/xz/
Source0: http://tukaani.org/xz/%{name}-%{version}.tar.gz
Source1: http://tukaani.org/xz/%{name}-%{version}.tar.gz.sig
Source2: baselibs.conf
@@ -124,6 +124,7 @@
%if 0%{?lang_package:1}
%files lang -f %{name}.lang
%defattr(-, root, root)
+%{_mandir}/de/man1/*.1%{ext_man}
%endif
%files
++++++ xz-5.2.4.tar.gz -> xz-5.2.5.tar.gz ++++++
++++ 42849 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package 000product for openSUSE:Leap:15.2:ARM checked in at 2020-03-31 17:27:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2:ARM/000product (Old)
and /work/SRC/openSUSE:Leap:15.2:ARM/.000product.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000product"
Tue Mar 31 17:27:33 2020 rev:141 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openSUSE-dvd5-dvd-aarch64.kiwi ++++++
--- /var/tmp/diff_new_pack.jBZOZA/_old 2020-03-31 17:27:35.968097246 +0200
+++ /var/tmp/diff_new_pack.jBZOZA/_new 2020-03-31 17:27:35.968097246 +0200
@@ -2048,7 +2048,7 @@
<repopackage name="libpinyin-data"/>
<repopackage name="libpinyin13"/>
<repopackage name="libpipeline1"/>
- <repopackage name="libpipewire-0_2-1"/>
+ <repopackage name="libpipewire-0_3-0"/>
<repopackage name="libpixman-1-0"/>
<repopackage name="libpkcs11-helper1"/>
<repopackage name="libplist3"/>
@@ -2427,6 +2427,7 @@
<repopackage name="libvorbisfile3"/>
<repopackage name="libvpx4"/>
<repopackage name="libvte-2_91-0"/>
+ <repopackage name="libvulkan1"/>
<repopackage name="libwacom-data"/>
<repopackage name="libwacom2"/>
<repopackage name="libwavpack1"/>
@@ -3037,7 +3038,7 @@
<repopackage name="pinentry-qt5"/>
<repopackage name="pipewire"/>
<repopackage name="pipewire-modules"/>
- <repopackage name="pipewire-spa-plugins"/>
+ <repopackage name="pipewire-spa-plugins-0_2"/>
<repopackage name="pipewire-spa-tools"/>
<repopackage name="pipewire-tools"/>
<repopackage name="pkcs11-helper"/>
openSUSE-ftp-ftp-armv7hl.kiwi: same change
stub.kiwi: same change
++++++ dvd.group ++++++
--- /var/tmp/diff_new_pack.jBZOZA/_old 2020-03-31 17:27:36.092097319 +0200
+++ /var/tmp/diff_new_pack.jBZOZA/_new 2020-03-31 17:27:36.092097319 +0200
@@ -524,8 +524,8 @@
<package name="glib2-tools" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="glibc" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="glibc-extra" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
- <package name="glibc-locale" supportstatus="unsupported"/> <!-- reason: base:grub2-arm64-efi -->
- <package name="glibc-locale-base" supportstatus="unsupported"/> <!-- reason: base:grub2-arm64-efi -->
+ <package name="glibc-locale" supportstatus="unsupported"/> <!-- reason: base:patterns-base-minimal_base -->
+ <package name="glibc-locale-base" supportstatus="unsupported"/> <!-- reason: base:patterns-base-minimal_base -->
<package name="gmenudbusmenuproxy" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
<package name="gnome-bluetooth" supportstatus="unsupported"/> <!-- reason: gnome:patterns-gnome-gnome -->
<package name="gnome-bluetooth-lang" supportstatus="unsupported"/> <!-- reason: gnome:patterns-gnome-gnome -->
@@ -1894,7 +1894,7 @@
<package name="libiterm1" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="libiw30" supportstatus="unsupported"/> <!-- reason: base:patterns-base-console -->
<package name="libixion-0_15-0" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
- <package name="libjack0" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde_imaging -->
+ <package name="libjack0" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
<package name="libjansson4" supportstatus="unsupported"/> <!-- reason: base:patterns-base-console -->
<package name="libjasper4" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="libjavascriptcoregtk-4_0-18" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
@@ -2123,7 +2123,7 @@
<package name="libpinyin-data" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="libpinyin13" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="libpipeline1" supportstatus="unsupported"/> <!-- reason: base:patterns-base-console -->
- <package name="libpipewire-0_2-1" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
+ <package name="libpipewire-0_3-0" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
<package name="libpixman-1-0" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="libpkcs11-helper1" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
<package name="libplist3" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
@@ -2460,6 +2460,7 @@
<package name="libvorbisfile3" supportstatus="unsupported"/> <!-- reason: x11:patterns-base-x11 -->
<package name="libvpx4" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="libvte-2_91-0" supportstatus="unsupported"/> <!-- reason: gnome:patterns-gnome-gnome -->
+ <package name="libvulkan1" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
<package name="libwacom-data" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="libwacom2" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="libwavpack1" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
@@ -2663,7 +2664,7 @@
<package name="mpg123-pulse" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
<package name="mpt-firmware" supportstatus="unsupported"/> <!-- reason: supplements:mpt-firmware -->
<package name="mtd-utils" supportstatus="unsupported"/> <!-- reason: supplements:mtd-utils -->
- <package name="mtools" supportstatus="unsupported"/> <!-- reason: base:grub2-arm64-efi -->
+ <package name="mtools" supportstatus="unsupported"/> <!-- reason: base:patterns-base-console -->
<package name="mugshot" supportstatus="unsupported"/> <!-- reason: xfce:patterns-xfce-xfce -->
<package name="multipath-tools" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="mutt" supportstatus="unsupported"/> <!-- reason: base:patterns-base-console -->
@@ -2987,7 +2988,7 @@
<package name="pinentry-qt5" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
<package name="pipewire" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
<package name="pipewire-modules" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
- <package name="pipewire-spa-plugins" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
+ <package name="pipewire-spa-plugins-0_2" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
<package name="pipewire-spa-tools" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
<package name="pipewire-tools" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
<package name="pkcs11-helper" supportstatus="unsupported"/> <!-- reason: kde:patterns-kde-kde -->
++++++ openSUSE-dvd5-dvd-aarch64.kwd ++++++
--- /var/tmp/diff_new_pack.jBZOZA/_old 2020-03-31 17:27:36.120097335 +0200
+++ /var/tmp/diff_new_pack.jBZOZA/_new 2020-03-31 17:27:36.120097335 +0200
@@ -2120,7 +2120,7 @@
libpinyin-data: +Kwd:\nsupport_unsupported\n-Kwd:
libpinyin13: +Kwd:\nsupport_unsupported\n-Kwd:
libpipeline1: +Kwd:\nsupport_unsupported\n-Kwd:
-libpipewire-0_2-1: +Kwd:\nsupport_unsupported\n-Kwd:
+libpipewire-0_3-0: +Kwd:\nsupport_unsupported\n-Kwd:
libpixman-1-0: +Kwd:\nsupport_unsupported\n-Kwd:
libpkcs11-helper1: +Kwd:\nsupport_unsupported\n-Kwd:
libplist3: +Kwd:\nsupport_unsupported\n-Kwd:
@@ -2457,6 +2457,7 @@
libvorbisfile3: +Kwd:\nsupport_unsupported\n-Kwd:
libvpx4: +Kwd:\nsupport_unsupported\n-Kwd:
libvte-2_91-0: +Kwd:\nsupport_unsupported\n-Kwd:
+libvulkan1: +Kwd:\nsupport_unsupported\n-Kwd:
libwacom-data: +Kwd:\nsupport_unsupported\n-Kwd:
libwacom2: +Kwd:\nsupport_unsupported\n-Kwd:
libwavpack1: +Kwd:\nsupport_unsupported\n-Kwd:
@@ -2986,7 +2987,7 @@
pinentry-qt5: +Kwd:\nsupport_unsupported\n-Kwd:
pipewire: +Kwd:\nsupport_unsupported\n-Kwd:
pipewire-modules: +Kwd:\nsupport_unsupported\n-Kwd:
-pipewire-spa-plugins: +Kwd:\nsupport_unsupported\n-Kwd:
+pipewire-spa-plugins-0_2: +Kwd:\nsupport_unsupported\n-Kwd:
pipewire-spa-tools: +Kwd:\nsupport_unsupported\n-Kwd:
pipewire-tools: +Kwd:\nsupport_unsupported\n-Kwd:
pkcs11-helper: +Kwd:\nsupport_unsupported\n-Kwd:
++++++ unsorted.yml ++++++
--- /var/tmp/diff_new_pack.jBZOZA/_old 2020-03-31 17:27:36.164097360 +0200
+++ /var/tmp/diff_new_pack.jBZOZA/_new 2020-03-31 17:27:36.168097363 +0200
@@ -3187,6 +3187,7 @@
- freecell-solver-devel
- freeciv
- freeciv-gtk3
+ - freeciv-lang
- freeciv-qt
- freedoom
- freedoom-freedm
@@ -5064,6 +5065,7 @@
- grpc-source
- grsync
- grsync-lang
+ - grub2-arm64-efi-debug
- grub2-branding-upstream
- grub2-theme-breeze
- grubby
@@ -7283,7 +7285,7 @@
- libMagick++-devel
- libMathMLSolver0_3
- libMrm4
- - libMyGUIEngine3
+ - libMyGUIEngine3_4_0
- libOIS-1_3_0
- libOIS-devel
- libOSMesa-devel
@@ -7597,7 +7599,7 @@
- libalut0
- libamtk-3-0
- libamtk-5-0
- - libangelscript2_31_2
+ - libangelscript2_34_0
- libanjuta-3-0
- libansilove-devel
- libansilove1
@@ -9136,6 +9138,7 @@
- libixion-devel
- libixion-tools
- libjack-devel
+ - libjack-pw0_3_1
- libjackasyn
- libjacknet0
- libjackserver0
@@ -10102,6 +10105,9 @@
- libptscotch_6_0_7-gnu-openmpi3-hpc
- libpugixml1
- libpulse-devel
+ - libpulse-mainloop-glib-pw0_3_1
+ - libpulse-pw0_3_1
+ - libpulse-simple-pw0_3_1
- libpurple-branding-upstream
- libpurple-devel
- libpurple-plugin-bot-sentry
@@ -10726,6 +10732,7 @@
- libsodium-devel
- libsofia-sip-ua-glib3
- libsofia-sip-ua0
+ - libsolarus-gui1
- libsolarus1
- libsolv-demo
- libsolv-devel
@@ -11228,7 +11235,6 @@
- libvtk1
- libvtk1-openmpi
- libvtk1-openmpi2
- - libvulkan1
- libwacom-devel
- libwacom-tools
- libwaffle-1-0
@@ -16073,6 +16079,7 @@
- pipenightdreams
- piper
- pipewire-devel
+ - pipewire-doc
- pithos
- pitivi
- pitivi-lang
@@ -16621,6 +16628,7 @@
- python-barbicanclient-doc
- python-bcdoc
- python-beautifulsoup
+ - python-beautifulsoup4-doc
- python-billiard-doc
- python-binplist
- python-blinker-doc
@@ -16947,7 +16955,6 @@
- python-solv
- python-sqlalchemy-migrate-doc
- python-stevedore-doc
- - python-subprocess32
- python-sushy-doc
- python-svg2rlg
- python-svm
@@ -17009,7 +17016,6 @@
- python2-Babel
- python2-Beaker
- python2-BitVector
- - python2-Bottleneck
- python2-Brotli
- python2-CDDB
- python2-CXX
@@ -17424,7 +17430,6 @@
- python2-bcc
- python2-bcrypt
- python2-beautifulsoup4
- - python2-beautifulsoup4-doc
- python2-behave
- python2-bencode
- python2-beniget
@@ -17694,7 +17699,6 @@
- python2-django-webpack-loader
- python2-django-webtest
- python2-djvulibre
- - python2-dns-lexicon
- python2-dnspython
- python2-docformatter
- python2-docker
@@ -18882,6 +18886,7 @@
- python2-sortinghat
- python2-soundcloud
- python2-sounddevice
+ - python2-soupsieve
- python2-spake2
- python2-spark_parser
- python2-sparse
@@ -18935,6 +18940,7 @@
- python2-structlog
- python2-subgrab
- python2-subliminal
+ - python2-subprocess32
- python2-subst
- python2-suds-jurko
- python2-sunpy
@@ -19618,7 +19624,6 @@
- python3-bashate
- python3-bcc
- python3-beautifulsoup4
- - python3-beautifulsoup4-doc
- python3-behave
- python3-bencode
- python3-beniget
@@ -20240,6 +20245,8 @@
- python3-ijson
- python3-imageio
- python3-imbox
+ - python3-img-proof
+ - python3-img-proof-tests
- python3-img2pdf
- python3-iminuit
- python3-immutables
@@ -21322,6 +21329,7 @@
- python3-sortinghat
- python3-soundcloud
- python3-sounddevice
+ - python3-soupsieve
- python3-spake2
- python3-spark_parser
- python3-sparse
@@ -23392,6 +23400,8 @@
- solarfighter
- solarus
- solarus-devel
+ - solarus-gui
+ - solarus-gui-lang
- solarus-quest-editor
- solarwolf
- solarwolf_we
1
0
Hello community,
here is the log from the commit of package 000release-packages for openSUSE:Leap:15.2:ARM checked in at 2020-03-31 17:27:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2:ARM/000release-packages (Old)
and /work/SRC/openSUSE:Leap:15.2:ARM/.000release-packages.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000release-packages"
Tue Mar 31 17:27:30 2020 rev:124 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
stub.spec: same change
++++++ weakremovers.inc ++++++
--- /var/tmp/diff_new_pack.mTbkbW/_old 2020-03-31 17:27:32.460095192 +0200
+++ /var/tmp/diff_new_pack.mTbkbW/_new 2020-03-31 17:27:32.460095192 +0200
@@ -9083,6 +9083,7 @@
Provides: weakremover(python2-djangorestframework)
Provides: weakremover(python2-djet)
Provides: weakremover(python2-djvulibre)
+Provides: weakremover(python2-dns-lexicon)
Provides: weakremover(python2-dukpy)
Provides: weakremover(python2-dukpy-kovidgoyal)
Provides: weakremover(python2-dulwich)
1
0
Hello community,
here is the log from the commit of package dtv-scan-tables for openSUSE:Factory checked in at 2020-03-31 17:17:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dtv-scan-tables (Old)
and /work/SRC/openSUSE:Factory/.dtv-scan-tables.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dtv-scan-tables"
Tue Mar 31 17:17:56 2020 rev:17 rq:790153 version:20200311
Changes:
--------
--- /work/SRC/openSUSE:Factory/dtv-scan-tables/dtv-scan-tables.changes 2018-10-18 15:38:12.774169260 +0200
+++ /work/SRC/openSUSE:Factory/.dtv-scan-tables.new.3160/dtv-scan-tables.changes 2020-03-31 17:18:00.763733048 +0200
@@ -1,0 +2,16 @@
+Tue Mar 31 10:53:58 UTC 2020 - Martin Pluskal <mpluskal(a)suse.com>
+
+- Update to version 20200311:
+ * Add a table for DVB-C in Dresden (Vodafone)
+ * Add scan table for DVB-T2 channels in Perm (Russia)
+ * isdb-t: update tables
+ * dvb-s: update all tables from LyngSat
+ * ke-Nairobi: fix delivery system for two DVB-T2 channels
+ * Makefile: fix dvbv3/dvbv5 output
+ * Improve Makefile to avoid "Argument list too long" error
+ * UPC Czech Republic: added mux 538 MHz with 256 QAM
+ * UPC Czech Republic: added more muxes and change QAM/256 on 626 MHz
+ * Update Astra-19.2E
+- Switch _service to obs_scm
+
+-------------------------------------------------------------------
Old:
----
dtv-scan-tables-20180927.tar.xz
New:
----
dtv-scan-tables-20200311.obscpio
dtv-scan-tables.obsinfo
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ dtv-scan-tables.spec ++++++
--- /var/tmp/diff_new_pack.iZqCqt/_old 2020-03-31 17:18:03.143734560 +0200
+++ /var/tmp/diff_new_pack.iZqCqt/_new 2020-03-31 17:18:03.143734560 +0200
@@ -1,7 +1,7 @@
#
# spec file for package dtv-scan-tables
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,13 +17,13 @@
Name: dtv-scan-tables
-Version: 20180927
+Version: 20200311
Release: 0
Summary: Scan files for digital TV applications v3
License: GPL-2.0-or-later AND LGPL-2.1-only
Group: Hardware/TV
-URL: http://linuxtv.org/
-Source0: %{name}-%{version}.tar.xz
+URL: https://linuxtv.org/
+Source0: %{name}-%{version}.tar.gz
BuildRequires: dvb-utils
BuildRequires: fdupes
BuildArch: noarch
@@ -44,7 +44,7 @@
%setup -q
%build
-make %{?_smp_mflags} dvbv3 dvbv5
+%make_build dvbv3 dvbv5
%install
%make_install DVBV3DIR=dvb DATADIR=%{buildroot}/%{_datadir} install_v3
++++++ _service ++++++
--- /var/tmp/diff_new_pack.iZqCqt/_old 2020-03-31 17:18:03.203734597 +0200
+++ /var/tmp/diff_new_pack.iZqCqt/_new 2020-03-31 17:18:03.203734597 +0200
@@ -1,14 +1,15 @@
<services>
- <service mode="disabled" name="tar_scm">
+ <service mode="disabled" name="obs_scm">
<param name="url">git://linuxtv.org/dtv-scan-tables.git</param>
<param name="scm">git</param>
<param name="changesgenerate">enable</param>
<param name="filename">dtv-scan-tables</param>
<param name="versionformat">%cd</param>
</service>
- <service mode="disabled" name="recompress">
+ <service mode="disabled" name="set_version"/>
+ <service name="tar" mode="buildtime"/>
+ <service name="recompress" mode="buildtime">
<param name="file">*.tar</param>
- <param name="compression">xz</param>
+ <param name="compression">gz</param>
</service>
- <service mode="disabled" name="set_version"/>
</services>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.iZqCqt/_old 2020-03-31 17:18:03.219734608 +0200
+++ /var/tmp/diff_new_pack.iZqCqt/_new 2020-03-31 17:18:03.219734608 +0200
@@ -1,4 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">git://linuxtv.org/dtv-scan-tables.git</param>
- <param name="changesrevision">59f4a9b1dfbd573bafe33d238a08da95e4f0263a</param></service></servicedata>
\ No newline at end of file
+ <param name="changesrevision">bb0b4e9a8197f093d6c6663729b3285b6dd194d6</param></service></servicedata>
\ No newline at end of file
++++++ dtv-scan-tables.obsinfo ++++++
name: dtv-scan-tables
version: 20200311
mtime: 1583963762
commit: bb0b4e9a8197f093d6c6663729b3285b6dd194d6
1
0
Hello community,
here is the log from the commit of package libqmatrixclient for openSUSE:Factory checked in at 2020-03-31 17:17:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqmatrixclient (Old)
and /work/SRC/openSUSE:Factory/.libqmatrixclient.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqmatrixclient"
Tue Mar 31 17:17:51 2020 rev:7 rq:790121 version:0.5.3.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/libqmatrixclient/libqmatrixclient.changes 2020-03-30 23:03:52.388192573 +0200
+++ /work/SRC/openSUSE:Factory/.libqmatrixclient.new.3160/libqmatrixclient.changes 2020-03-31 17:17:54.523729085 +0200
@@ -1,0 +2,12 @@
+Tue Mar 31 11:29:21 UTC 2020 - ecsos(a)opensuse.org
+
+- Update to 0.5.3.1
+ One more "sustaining" release that fixes a long-standing problem
+ with job objects lifetime lasting beyond their connection
+ lifetime, leading to crashes on connection removal (#397/#398).
+ This problem became very apparent with introduction of SSO in
+ Quaternion, where connection objects are removed as soon as the
+ login dialog is cancelled; this release is aimed solely at fixing
+ that.
+
+-------------------------------------------------------------------
Old:
----
libqmatrixclient-0.5.3.tar.gz
New:
----
libqmatrixclient-0.5.3.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libqmatrixclient.spec ++++++
--- /var/tmp/diff_new_pack.XojZhb/_old 2020-03-31 17:17:55.599729768 +0200
+++ /var/tmp/diff_new_pack.XojZhb/_new 2020-03-31 17:17:55.599729768 +0200
@@ -22,7 +22,7 @@
%define sname libQuotient
Name: libqmatrixclient
-Version: 0.5.3
+Version: 0.5.3.1
Release: 0
Summary: Library for Qt Matrix Clients
License: LGPL-2.1-only
++++++ libqmatrixclient-0.5.3.tar.gz -> libqmatrixclient-0.5.3.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libQuotient-0.5.3/CMakeLists.txt new/libQuotient-0.5.3.1/CMakeLists.txt
--- old/libQuotient-0.5.3/CMakeLists.txt 2020-03-27 18:07:13.000000000 +0100
+++ new/libQuotient-0.5.3.1/CMakeLists.txt 2020-03-31 07:46:55.000000000 +0200
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.1)
set(API_VERSION "0.5.1") # Normally it should just include major.minor
-project(qmatrixclient VERSION "0.5.3" LANGUAGES CXX)
+project(qmatrixclient VERSION "0.5.3.1" LANGUAGES CXX)
option(QMATRIXCLIENT_INSTALL_EXAMPLE "install qmc-example application" ON)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libQuotient-0.5.3/lib/connection.cpp new/libQuotient-0.5.3.1/lib/connection.cpp
--- old/libQuotient-0.5.3/lib/connection.cpp 2020-03-27 18:07:13.000000000 +0100
+++ new/libQuotient-0.5.3.1/lib/connection.cpp 2020-03-31 07:46:55.000000000 +0200
@@ -175,52 +175,60 @@
maybeBaseUrl.setScheme("https"); // Instead of the Qt-default "http"
if (!match.hasMatch() || !maybeBaseUrl.isValid())
{
- emit resolveError(
- tr("%1 is not a valid homeserver address")
- .arg(maybeBaseUrl.toString()));
+ emit resolveError(tr("%1 is not a valid homeserver address")
+ .arg(maybeBaseUrl.toString()));
return;
}
- setHomeserver(maybeBaseUrl);
-
auto domain = maybeBaseUrl.host();
qCDebug(MAIN) << "Finding the server" << domain;
+ d->data->setBaseUrl(maybeBaseUrl); // Just enough to check .well-known file
auto getWellKnownJob = callApi<GetWellknownJob>();
- connect(getWellKnownJob, &BaseJob::finished, [this, getWellKnownJob, maybeBaseUrl] {
- if (getWellKnownJob->status() == BaseJob::NotFoundError) {
- qCDebug(MAIN) << "No .well-known file, IGNORE";
- } else if (getWellKnownJob->status() != BaseJob::Success) {
- qCDebug(MAIN) << "Fetching .well-known file failed, FAIL_PROMPT";
- emit resolveError(tr("Fetching .well-known file failed"));
- return;
- } else if (getWellKnownJob->data().homeserver.baseUrl.isEmpty()) {
- qCDebug(MAIN) << "base_url not provided, FAIL_PROMPT";
- emit resolveError(tr("base_url not provided"));
- return;
- } else if (!QUrl(getWellKnownJob->data().homeserver.baseUrl).isValid()) {
- qCDebug(MAIN) << "base_url invalid, FAIL_ERROR";
- emit resolveError(tr("base_url invalid"));
- return;
- } else {
- QUrl baseUrl(getWellKnownJob->data().homeserver.baseUrl);
-
- qCDebug(MAIN) << ".well-known for" << maybeBaseUrl.host() << "is" << baseUrl.authority();
- setHomeserver(baseUrl);
- }
-
- auto getVersionsJob = callApi<GetVersionsJob>();
-
- connect(getVersionsJob, &BaseJob::finished, [this, getVersionsJob] {
- if (getVersionsJob->status() == BaseJob::Success) {
- qCDebug(MAIN) << "homeserver url is valid";
- emit resolved();
+ // This is a workaround for 0.5.x; due to the way Quaternion's login dialog
+ // operates, Connection can disappear any moment during server resolution.
+ // Quotient 0.6 will reparent all jobs to enforce lifetimes. See also #398.
+ getWellKnownJob->setParent(this);
+ connect(getWellKnownJob, &BaseJob::finished, this,
+ [this, getWellKnownJob, maybeBaseUrl] {
+ if (getWellKnownJob->status() != BaseJob::NotFoundError) {
+ if (getWellKnownJob->status() != BaseJob::Success) {
+ qCWarning(MAIN)
+ << "Fetching .well-known file failed, FAIL_PROMPT";
+ emit resolveError(tr("Failed resolving the homeserver"));
+ return;
+ }
+ QUrl baseUrl { getWellKnownJob->data().homeserver.baseUrl };
+ if (baseUrl.isEmpty()) {
+ qCWarning(MAIN) << "base_url not provided, FAIL_PROMPT";
+ emit resolveError(
+ tr("The homeserver base URL is not provided"));
+ return;
+ }
+ if (!baseUrl.isValid()) {
+ qCWarning(MAIN) << "base_url invalid, FAIL_ERROR";
+ emit resolveError(tr("The homeserver base URL is invalid"));
+ return;
+ }
+ qCInfo(MAIN) << ".well-known URL for" << maybeBaseUrl.host()
+ << "is" << baseUrl.authority();
+ setHomeserver(baseUrl);
} else {
- qCDebug(MAIN) << "homeserver url invalid";
- emit resolveError(tr("homeserver url invalid"));
+ qCInfo(MAIN) << "No .well-known file, using" << maybeBaseUrl
+ << "for base URL";
+ setHomeserver(maybeBaseUrl);
}
+
+ auto getVersionsJob = callApi<GetVersionsJob>();
+ getVersionsJob->setParent(this); // Same workaround as above
+ connect(getVersionsJob, &BaseJob::success, this,
+ &Connection::resolved);
+ connect(getVersionsJob, &BaseJob::failure, this, [this] {
+ qCWarning(MAIN) << "Homeserver base URL invalid";
+ emit resolveError(tr("The homeserver base URL "
+ "doesn't seem to work"));
+ });
});
- });
}
inline UserIdentifier makeUserIdentifier(const QString& id)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libQuotient-0.5.3/lib/jobs/basejob.cpp new/libQuotient-0.5.3.1/lib/jobs/basejob.cpp
--- old/libQuotient-0.5.3/lib/jobs/basejob.cpp 2020-03-27 18:07:13.000000000 +0100
+++ new/libQuotient-0.5.3.1/lib/jobs/basejob.cpp 2020-03-31 07:46:55.000000000 +0200
@@ -104,6 +104,7 @@
BaseJob::~BaseJob()
{
stop();
+ d->retryTimer.stop(); // See #398
qCDebug(d->logCat) << this << "destroyed";
}
@@ -210,6 +211,7 @@
// some sources claim that there are issues with QT 5.8
req.setAttribute(QNetworkRequest::HTTP2AllowedAttribute, true);
#endif
+ Q_ASSERT(req.url().isValid());
for (auto it = requestHeaders.cbegin(); it != requestHeaders.cend(); ++it)
req.setRawHeader(it.key(), it.value());
switch( verb )
@@ -240,16 +242,23 @@
void BaseJob::start(const ConnectionData* connData, bool inBackground)
{
- d->connection = connData;
- d->retryTimer.setSingleShot(true);
- connect (&d->retryTimer, &QTimer::timeout,
- this, [this,inBackground] { sendRequest(inBackground); });
-
- beforeStart(connData);
- if (status().good())
- sendRequest(inBackground);
- if (status().good())
- afterStart(connData, d->reply.data());
+ if (connData && connData->baseUrl().isValid()) {
+ d->connection = connData;
+ d->retryTimer.setSingleShot(true);
+ connect(&d->retryTimer, &QTimer::timeout, this,
+ [this, inBackground] { sendRequest(inBackground); });
+
+ beforeStart(connData);
+ if (status().good())
+ sendRequest(inBackground);
+ if (status().good())
+ afterStart(connData, d->reply.data());
+ } else {
+ qCCritical(d->logCat)
+ << "Developers, ensure the Connection is valid before using it";
+ Q_ASSERT(false);
+ setStatus(IncorrectRequestError, tr("Invalid server connection"));
+ }
if (!status().good())
QTimer::singleShot(0, this, &BaseJob::finishJob);
}
@@ -641,6 +650,8 @@
void BaseJob::abandon()
{
beforeAbandon(d->reply ? d->reply.data() : nullptr);
+ d->timer.stop();
+ d->retryTimer.stop(); // In case abandon() was called between retries
setStatus(Abandoned);
if (d->reply)
d->reply->disconnect(this);
1
0
Hello community,
here is the log from the commit of package python-click-help-colors for openSUSE:Factory checked in at 2020-03-31 17:17:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-click-help-colors (Old)
and /work/SRC/openSUSE:Factory/.python-click-help-colors.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-click-help-colors"
Tue Mar 31 17:17:48 2020 rev:3 rq:790143 version:0.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-click-help-colors/python-click-help-colors.changes 2019-09-27 14:47:22.248932893 +0200
+++ /work/SRC/openSUSE:Factory/.python-click-help-colors.new.3160/python-click-help-colors.changes 2020-03-31 17:17:51.327727056 +0200
@@ -1,0 +2,8 @@
+Tue Mar 31 12:18:10 UTC 2020 - Marketa Calabkova <mcalabkova(a)suse.com>
+
+- Update to 0.8
+ * Add support for NO_COLOR <https://no-color.org/>
+ * Add support for MultiCommands
+ * Add support for version_option
+
+-------------------------------------------------------------------
Old:
----
click-help-colors-0.6.tar.gz
New:
----
click-help-colors-0.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-click-help-colors.spec ++++++
--- /var/tmp/diff_new_pack.YDQ0Kj/_old 2020-03-31 17:17:52.371727718 +0200
+++ /var/tmp/diff_new_pack.YDQ0Kj/_new 2020-03-31 17:17:52.383727726 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-click-help-colors
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-click-help-colors
-Version: 0.6
+Version: 0.8
Release: 0
Summary: Colorization of help messages in Click
License: MIT
@@ -32,6 +32,7 @@
BuildArch: noarch
# SECTION test requirements
BuildRequires: %{python_module click >= 7.0}
+BuildRequires: %{python_module pytest}
# /SECTION
%python_subpackages
@@ -48,6 +49,9 @@
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
+%check
+%pytest
+
%files %{python_files}
%doc README.rst
%license LICENSE.txt
++++++ click-help-colors-0.6.tar.gz -> click-help-colors-0.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/CHANGES.rst new/click-help-colors-0.8/CHANGES.rst
--- old/click-help-colors-0.6/CHANGES.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/click-help-colors-0.8/CHANGES.rst 2020-03-13 15:03:35.000000000 +0100
@@ -0,0 +1,9 @@
+[0.8]
+-------------------------------
+- Add missing files to sdist
+
+[0.7]
+-------------------------------
+- Add support for NO_COLOR <https://no-color.org/>
+- Add support for MultiCommands
+- Add support for version_option
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/MANIFEST.in new/click-help-colors-0.8/MANIFEST.in
--- old/click-help-colors-0.6/MANIFEST.in 2019-07-19 08:59:51.000000000 +0200
+++ new/click-help-colors-0.8/MANIFEST.in 2020-03-13 14:52:57.000000000 +0100
@@ -1,2 +1,8 @@
# Include the license file
include LICENSE.txt
+include CHANGES.rst
+include tox.ini
+graft tests
+graft examples
+prune examples/screenshots
+global-exclude *.py[cod]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/PKG-INFO new/click-help-colors-0.8/PKG-INFO
--- old/click-help-colors-0.6/PKG-INFO 2019-07-19 09:02:53.000000000 +0200
+++ new/click-help-colors-0.8/PKG-INFO 2020-03-13 15:08:10.000000000 +0100
@@ -1,12 +1,176 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: click-help-colors
-Version: 0.6
+Version: 0.8
Summary: Colorization of help messages in Click
Home-page: https://github.com/r-m-n/click-help-colors
-Author: UNKNOWN
-Author-email: UNKNOWN
License: MIT
-Download-URL: https://github.com/r-m-n/click-help-colors/archive/0.6.tar.gz
-Description: UNKNOWN
+Description: =================
+ click-help-colors
+ =================
+
+ |build| |pypi| |downloads|
+
+ Colorization of help messages in Click_.
+
+ Usage
+ -----
+
+ .. code:: python
+
+ import click
+ from click_help_colors import HelpColorsGroup, HelpColorsCommand
+
+ @click.group(
+ cls=HelpColorsGroup,
+ help_headers_color='yellow',
+ help_options_color='green'
+ )
+ def cli():
+ pass
+
+ @cli.command()
+ @click.option('--count', default=1, help='Some number.')
+ def command1(count):
+ click.echo('command 1')
+
+ @cli.command(
+ cls=HelpColorsCommand,
+ help_options_color='blue'
+ )
+ @click.option('--name', help='Some string.')
+ def command2(name):
+ click.echo('command 2')
+
+ .. code-block:: console
+
+ $ python example.py --help
+
+ .. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
+
+ .. code-block:: console
+
+ $ python example.py command1 --help
+
+ .. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
+
+ .. code-block:: console
+
+ $ python example.py command2 --help
+
+ .. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
+
+ .. code:: python
+
+ import click
+ from click_help_colors import HelpColorsGroup, HelpColorsCommand
+
+ @click.group(
+ cls=HelpColorsGroup,
+ help_headers_color='yellow',
+ help_options_color='green',
+ help_options_custom_colors={'command3': 'red', 'command4': 'cyan'}
+ )
+ def cli():
+ pass
+
+
+ @cli.command(
+ cls=HelpColorsCommand,
+ help_headers_color=None,
+ help_options_color=None,
+ help_options_custom_colors={'--count': 'red', '--subtract': 'green'}
+ )
+ @click.option('--count', default=1, help='Count help text.')
+ @click.option('--add', default=1, help='Add help text.')
+ @click.option('--subtract', default=1, help='Subtract help text.')
+ def command1(count, add, subtract):
+ """A command"""
+ click.echo('command 1')
+
+ ...
+
+ .. code-block:: console
+
+ $ python example_with_custom_colors.py --help
+
+ .. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
+
+ .. code-block:: console
+
+ $ python example_with_custom_colors.py --help
+
+ .. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
+
+ .. code:: python
+
+ from click_help_colors import version_option
+
+ @click.group()
+ def cli():
+ pass
+
+ @cli.command()
+ @version_option(
+ version='1.0',
+ prog_name='example',
+ message_color='green'
+ )
+ def cmd1():
+ pass
+
+ @cli.command()
+ @version_option(
+ version='1.0',
+ prog_name='example',
+ version_color='green',
+ prog_name_color='yellow'
+ )
+ def cmd2():
+ pass
+
+ @cli.command()
+ @version_option(
+ version='1.0',
+ prog_name='example',
+ version_color='green',
+ prog_name_color='white',
+ message='%(prog)s %(version)s\n python=3.7',
+ message_color='bright_black'
+ )
+ def cmd3():
+ pass
+
+ .. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
+
+ Installation
+ ------------
+
+ With ``pip``:
+
+ .. code-block:: console
+
+ $ pip install click-help-colors
+
+ From source:
+
+ .. code-block:: console
+
+ $ git clone https://github.com/r-m-n/click-help-colors.git
+ $ cd click-help-colors
+ $ python setup.py install
+
+ .. _Click: http://click.pocoo.org/
+
+
+ .. |pypi| image:: https://img.shields.io/pypi/v/click-help-colors
+ :alt: PyPI
+
+ .. |build| image:: https://travis-ci.com/click-contrib/click-help-colors.svg?branch=master
+ :target: https://travis-ci.com/click-contrib/click-help-colors
+
+ .. |downloads| image:: https://img.shields.io/pypi/dm/click-help-colors
+ :alt: PyPI - Downloads
+
Keywords: click
Platform: UNKNOWN
+Provides-Extra: dev
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/README.rst new/click-help-colors-0.8/README.rst
--- old/click-help-colors-0.6/README.rst 2019-07-19 08:59:51.000000000 +0200
+++ new/click-help-colors-0.8/README.rst 2020-02-29 12:45:09.000000000 +0100
@@ -2,6 +2,8 @@
click-help-colors
=================
+|build| |pypi| |downloads|
+
Colorization of help messages in Click_.
Usage
@@ -37,19 +39,19 @@
$ python example.py --help
-.. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/1…
+.. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
.. code-block:: console
$ python example.py command1 --help
-.. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/2…
+.. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
.. code-block:: console
$ python example.py command2 --help
-.. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/3…
+.. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
.. code:: python
@@ -85,14 +87,55 @@
$ python example_with_custom_colors.py --help
-.. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/4…
+.. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
.. code-block:: console
$ python example_with_custom_colors.py --help
-.. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/5…
-
+.. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
+
+.. code:: python
+
+ from click_help_colors import version_option
+
+ @click.group()
+ def cli():
+ pass
+
+ @cli.command()
+ @version_option(
+ version='1.0',
+ prog_name='example',
+ message_color='green'
+ )
+ def cmd1():
+ pass
+
+ @cli.command()
+ @version_option(
+ version='1.0',
+ prog_name='example',
+ version_color='green',
+ prog_name_color='yellow'
+ )
+ def cmd2():
+ pass
+
+ @cli.command()
+ @version_option(
+ version='1.0',
+ prog_name='example',
+ version_color='green',
+ prog_name_color='white',
+ message='%(prog)s %(version)s\n python=3.7',
+ message_color='bright_black'
+ )
+ def cmd3():
+ pass
+
+.. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
+
Installation
------------
@@ -111,3 +154,13 @@
$ python setup.py install
.. _Click: http://click.pocoo.org/
+
+
+.. |pypi| image:: https://img.shields.io/pypi/v/click-help-colors
+ :alt: PyPI
+
+.. |build| image:: https://travis-ci.com/click-contrib/click-help-colors.svg?branch=master
+ :target: https://travis-ci.com/click-contrib/click-help-colors
+
+.. |downloads| image:: https://img.shields.io/pypi/dm/click-help-colors
+ :alt: PyPI - Downloads
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/click_help_colors/__init__.py new/click-help-colors-0.8/click_help_colors/__init__.py
--- old/click-help-colors-0.6/click_help_colors/__init__.py 2019-07-19 08:59:51.000000000 +0200
+++ new/click-help-colors-0.8/click_help_colors/__init__.py 2020-03-13 14:55:20.000000000 +0100
@@ -1,88 +1,19 @@
-import click
-from click.termui import _ansi_colors, _ansi_reset_all
+from .core import HelpColorsFormatter, HelpColorsMixin, HelpColorsGroup, \
+ HelpColorsCommand, HelpColorsMultiCommand
+from .utils import _colorize, HelpColorsException
-def _colorize(text, color=None):
- if not color:
- return text
- try:
- return '\033[%dm' % (_ansi_colors[color]) + text + _ansi_reset_all
- except KeyError:
- raise TypeError('Unknown color %r' % color)
-
-
-class HelpColorsFormatter(click.HelpFormatter):
- def __init__(self, headers_color=None, options_color=None,
- options_custom_colors=None, *args, **kwargs):
- self.headers_color = headers_color
- self.options_color = options_color
- self.options_custom_colors = options_custom_colors
- super(HelpColorsFormatter, self).__init__(*args, **kwargs)
-
- def _pick_color(self, option_name):
- opt = option_name.split()[0]
- if (self.options_custom_colors and
- (opt in self.options_custom_colors.keys())):
- return self.options_custom_colors[opt]
- else:
- return self.options_color
-
- def write_usage(self, prog, args='', prefix='Usage: '):
- colorized_prefix = _colorize(prefix, color=self.headers_color)
- super(HelpColorsFormatter, self).write_usage(prog,
- args,
- prefix=colorized_prefix)
-
- def write_heading(self, heading):
- colorized_heading = _colorize(heading, color=self.headers_color)
- super(HelpColorsFormatter, self).write_heading(colorized_heading)
-
- def write_dl(self, rows, **kwargs):
- colorized_rows = [(_colorize(row[0], self._pick_color(row[0])), row[1])
- for row in rows]
- super(HelpColorsFormatter, self).write_dl(colorized_rows, **kwargs)
-
-
-class HelpColorsMixin(object):
- def __init__(self, help_headers_color=None, help_options_color=None,
- help_options_custom_colors=None, *args, **kwargs):
- self.help_headers_color = help_headers_color
- self.help_options_color = help_options_color
- self.help_options_custom_colors = help_options_custom_colors
- super(HelpColorsMixin, self).__init__(*args, **kwargs)
-
- def get_help(self, ctx):
- formatter = HelpColorsFormatter(
- width=ctx.terminal_width,
- max_width=ctx.max_content_width,
- headers_color=self.help_headers_color,
- options_color=self.help_options_color,
- options_custom_colors=self.help_options_custom_colors)
- self.format_help(ctx, formatter)
- return formatter.getvalue().rstrip('\n')
-
-
-class HelpColorsGroup(HelpColorsMixin, click.Group):
- def __init__(self, *args, **kwargs):
- super(HelpColorsGroup, self).__init__(*args, **kwargs)
-
- def command(self, *args, **kwargs):
- kwargs.setdefault('cls', HelpColorsCommand)
- kwargs.setdefault('help_headers_color', self.help_headers_color)
- kwargs.setdefault('help_options_color', self.help_options_color)
- kwargs.setdefault('help_options_custom_colors',
- self.help_options_custom_colors)
- return super(HelpColorsGroup, self).command(*args, **kwargs)
-
- def group(self, *args, **kwargs):
- kwargs.setdefault('cls', HelpColorsGroup)
- kwargs.setdefault('help_headers_color', self.help_headers_color)
- kwargs.setdefault('help_options_color', self.help_options_color)
- kwargs.setdefault('help_options_custom_colors',
- self.help_options_custom_colors)
- return super(HelpColorsGroup, self).group(*args, **kwargs)
-
-
-class HelpColorsCommand(HelpColorsMixin, click.Command):
- def __init__(self, *args, **kwargs):
- super(HelpColorsCommand, self).__init__(*args, **kwargs)
+from .decorators import version_option
+
+
+__all__ = [
+ 'HelpColorsFormatter', 'HelpColorsMixin', 'HelpColorsGroup',
+ 'HelpColorsCommand', 'HelpColorsMultiCommand',
+
+ '_colorize', 'HelpColorsException',
+
+ 'version_option'
+]
+
+
+__version__ = '0.8'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/click_help_colors/core.py new/click-help-colors-0.8/click_help_colors/core.py
--- old/click-help-colors-0.6/click_help_colors/core.py 1970-01-01 01:00:00.000000000 +0100
+++ new/click-help-colors-0.8/click_help_colors/core.py 2020-02-29 08:50:17.000000000 +0100
@@ -0,0 +1,103 @@
+import click
+
+from .utils import _colorize, _extend_instance
+
+
+class HelpColorsFormatter(click.HelpFormatter):
+ def __init__(self, headers_color=None, options_color=None,
+ options_custom_colors=None, *args, **kwargs):
+ self.headers_color = headers_color
+ self.options_color = options_color
+ self.options_custom_colors = options_custom_colors
+ super(HelpColorsFormatter, self).__init__(*args, **kwargs)
+
+ def _pick_color(self, option_name):
+ opt = option_name.split()[0]
+ if (self.options_custom_colors and
+ (opt in self.options_custom_colors.keys())):
+ return self.options_custom_colors[opt]
+ else:
+ return self.options_color
+
+ def write_usage(self, prog, args='', prefix='Usage: '):
+ colorized_prefix = _colorize(prefix, color=self.headers_color)
+ super(HelpColorsFormatter, self).write_usage(prog,
+ args,
+ prefix=colorized_prefix)
+
+ def write_heading(self, heading):
+ colorized_heading = _colorize(heading, color=self.headers_color)
+ super(HelpColorsFormatter, self).write_heading(colorized_heading)
+
+ def write_dl(self, rows, **kwargs):
+ colorized_rows = [(_colorize(row[0], self._pick_color(row[0])), row[1])
+ for row in rows]
+ super(HelpColorsFormatter, self).write_dl(colorized_rows, **kwargs)
+
+
+class HelpColorsMixin(object):
+ def __init__(self, help_headers_color=None, help_options_color=None,
+ help_options_custom_colors=None, *args, **kwargs):
+ self.help_headers_color = help_headers_color
+ self.help_options_color = help_options_color
+ self.help_options_custom_colors = help_options_custom_colors
+ super(HelpColorsMixin, self).__init__(*args, **kwargs)
+
+ def get_help(self, ctx):
+ formatter = HelpColorsFormatter(
+ width=ctx.terminal_width,
+ max_width=ctx.max_content_width,
+ headers_color=self.help_headers_color,
+ options_color=self.help_options_color,
+ options_custom_colors=self.help_options_custom_colors)
+ self.format_help(ctx, formatter)
+ return formatter.getvalue().rstrip('\n')
+
+
+class HelpColorsGroup(HelpColorsMixin, click.Group):
+ def __init__(self, *args, **kwargs):
+ super(HelpColorsGroup, self).__init__(*args, **kwargs)
+
+ def command(self, *args, **kwargs):
+ kwargs.setdefault('cls', HelpColorsCommand)
+ kwargs.setdefault('help_headers_color', self.help_headers_color)
+ kwargs.setdefault('help_options_color', self.help_options_color)
+ kwargs.setdefault('help_options_custom_colors',
+ self.help_options_custom_colors)
+ return super(HelpColorsGroup, self).command(*args, **kwargs)
+
+ def group(self, *args, **kwargs):
+ kwargs.setdefault('cls', HelpColorsGroup)
+ kwargs.setdefault('help_headers_color', self.help_headers_color)
+ kwargs.setdefault('help_options_color', self.help_options_color)
+ kwargs.setdefault('help_options_custom_colors',
+ self.help_options_custom_colors)
+ return super(HelpColorsGroup, self).group(*args, **kwargs)
+
+
+class HelpColorsCommand(HelpColorsMixin, click.Command):
+ def __init__(self, *args, **kwargs):
+ super(HelpColorsCommand, self).__init__(*args, **kwargs)
+
+
+class HelpColorsMultiCommand(HelpColorsMixin, click.MultiCommand):
+ def __init__(self, *args, **kwargs):
+ super(HelpColorsMultiCommand, self).__init__(*args, **kwargs)
+
+ def resolve_command(self, ctx, args):
+ cmd_name, cmd, args[1:] = super(HelpColorsMultiCommand, self).resolve_command(ctx, args)
+
+ if not isinstance(cmd, HelpColorsMixin):
+ if isinstance(cmd, click.Group):
+ _extend_instance(cmd, HelpColorsGroup)
+ if isinstance(cmd, click.Command):
+ _extend_instance(cmd, HelpColorsCommand)
+
+ if not getattr(cmd, 'help_headers_color', None):
+ cmd.help_headers_color = self.help_headers_color
+ if not getattr(cmd, 'help_options_color', None):
+ cmd.help_options_color = self.help_options_color
+ if not getattr(cmd, 'help_options_custom_colors', None):
+ cmd.help_options_custom_colors = self.help_options_custom_colors
+
+ return cmd_name, cmd, args[1:]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/click_help_colors/decorators.py new/click-help-colors-0.8/click_help_colors/decorators.py
--- old/click-help-colors-0.6/click_help_colors/decorators.py 1970-01-01 01:00:00.000000000 +0100
+++ new/click-help-colors-0.8/click_help_colors/decorators.py 2020-02-29 10:47:05.000000000 +0100
@@ -0,0 +1,79 @@
+import sys
+import re
+
+from click import echo
+from click.decorators import option
+from click._compat import iteritems
+
+from .utils import _colorize
+
+
+def version_option(version=None, *param_decls, **attrs):
+ """Adds a ``--version`` option which immediately ends the program
+ printing out the version number. This is implemented as an eager
+ option that prints the version and exits the program in the callback.
+
+ :param version: the version number to show. If not provided Click
+ attempts an auto discovery via setuptools.
+ :param prog_name: the name of the program (defaults to autodetection)
+ :param message: custom message to show instead of the default
+ (``'%(prog)s, version %(version)s'``)
+ :param prog_name_color: color of the prog_name
+ :param version_color: color of the version
+ :param message_color: default color of the message
+ :param others: everything else is forwarded to :func:`option`.
+ """
+ if version is None:
+ if hasattr(sys, '_getframe'):
+ module = sys._getframe(1).f_globals.get('__name__')
+ else:
+ module = ''
+
+ def decorator(f):
+ prog_name = attrs.pop('prog_name', None)
+ message = attrs.pop('message', '%(prog)s, version %(version)s')
+ message_color = attrs.pop('message_color', None)
+ prog_name_color = attrs.pop('prog_name_color', message_color)
+ version_color = attrs.pop('version_color', message_color)
+
+ def callback(ctx, param, value):
+ if not value or ctx.resilient_parsing:
+ return
+ prog = prog_name
+ if prog is None:
+ prog = ctx.find_root().info_name
+ ver = version
+ if ver is None:
+ try:
+ import pkg_resources
+ except ImportError:
+ pass
+ else:
+ for dist in pkg_resources.working_set:
+ scripts = dist.get_entry_map().get('console_scripts') or {}
+ for script_name, entry_point in iteritems(scripts):
+ if entry_point.module_name == module:
+ ver = dist.version
+ break
+ if ver is None:
+ raise RuntimeError('Could not determine version')
+
+ msg_parts = []
+ for s in re.split(r'(%\(version\)s|%\(prog\)s)', message):
+ if s == '%(prog)s':
+ msg_parts.append(_colorize(prog_name, prog_name_color))
+ elif s == '%(version)s':
+ msg_parts.append(_colorize(version, version_color))
+ else:
+ msg_parts.append(_colorize(s, message_color))
+
+ echo(''.join(msg_parts))
+ ctx.exit()
+
+ attrs.setdefault('is_flag', True)
+ attrs.setdefault('expose_value', False)
+ attrs.setdefault('is_eager', True)
+ attrs.setdefault('help', 'Show the version and exit.')
+ attrs['callback'] = callback
+ return option(*(param_decls or ('--version',)), **attrs)(f)
+ return decorator
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/click_help_colors/utils.py new/click-help-colors-0.8/click_help_colors/utils.py
--- old/click-help-colors-0.6/click_help_colors/utils.py 1970-01-01 01:00:00.000000000 +0100
+++ new/click-help-colors-0.8/click_help_colors/utils.py 2020-02-24 20:50:26.000000000 +0100
@@ -0,0 +1,23 @@
+import os
+
+from click.termui import _ansi_colors, _ansi_reset_all
+
+
+class HelpColorsException(Exception):
+ pass
+
+
+def _colorize(text, color=None):
+ if not color or "NO_COLOR" in os.environ:
+ return text
+ try:
+ return '\033[%dm' % (_ansi_colors[color]) + text + _ansi_reset_all
+ except KeyError:
+ raise HelpColorsException('Unknown color %r' % color)
+
+
+def _extend_instance(obj, cls):
+ """Apply mixin to a class instance after creation"""
+ base_cls = obj.__class__
+ base_cls_name = obj.__class__.__name__
+ obj.__class__ = type(base_cls_name, (cls, base_cls), {})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/click_help_colors.egg-info/PKG-INFO new/click-help-colors-0.8/click_help_colors.egg-info/PKG-INFO
--- old/click-help-colors-0.6/click_help_colors.egg-info/PKG-INFO 2019-07-19 09:02:53.000000000 +0200
+++ new/click-help-colors-0.8/click_help_colors.egg-info/PKG-INFO 2020-03-13 15:08:10.000000000 +0100
@@ -1,12 +1,176 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: click-help-colors
-Version: 0.6
+Version: 0.8
Summary: Colorization of help messages in Click
Home-page: https://github.com/r-m-n/click-help-colors
-Author: UNKNOWN
-Author-email: UNKNOWN
License: MIT
-Download-URL: https://github.com/r-m-n/click-help-colors/archive/0.6.tar.gz
-Description: UNKNOWN
+Description: =================
+ click-help-colors
+ =================
+
+ |build| |pypi| |downloads|
+
+ Colorization of help messages in Click_.
+
+ Usage
+ -----
+
+ .. code:: python
+
+ import click
+ from click_help_colors import HelpColorsGroup, HelpColorsCommand
+
+ @click.group(
+ cls=HelpColorsGroup,
+ help_headers_color='yellow',
+ help_options_color='green'
+ )
+ def cli():
+ pass
+
+ @cli.command()
+ @click.option('--count', default=1, help='Some number.')
+ def command1(count):
+ click.echo('command 1')
+
+ @cli.command(
+ cls=HelpColorsCommand,
+ help_options_color='blue'
+ )
+ @click.option('--name', help='Some string.')
+ def command2(name):
+ click.echo('command 2')
+
+ .. code-block:: console
+
+ $ python example.py --help
+
+ .. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
+
+ .. code-block:: console
+
+ $ python example.py command1 --help
+
+ .. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
+
+ .. code-block:: console
+
+ $ python example.py command2 --help
+
+ .. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
+
+ .. code:: python
+
+ import click
+ from click_help_colors import HelpColorsGroup, HelpColorsCommand
+
+ @click.group(
+ cls=HelpColorsGroup,
+ help_headers_color='yellow',
+ help_options_color='green',
+ help_options_custom_colors={'command3': 'red', 'command4': 'cyan'}
+ )
+ def cli():
+ pass
+
+
+ @cli.command(
+ cls=HelpColorsCommand,
+ help_headers_color=None,
+ help_options_color=None,
+ help_options_custom_colors={'--count': 'red', '--subtract': 'green'}
+ )
+ @click.option('--count', default=1, help='Count help text.')
+ @click.option('--add', default=1, help='Add help text.')
+ @click.option('--subtract', default=1, help='Subtract help text.')
+ def command1(count, add, subtract):
+ """A command"""
+ click.echo('command 1')
+
+ ...
+
+ .. code-block:: console
+
+ $ python example_with_custom_colors.py --help
+
+ .. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
+
+ .. code-block:: console
+
+ $ python example_with_custom_colors.py --help
+
+ .. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
+
+ .. code:: python
+
+ from click_help_colors import version_option
+
+ @click.group()
+ def cli():
+ pass
+
+ @cli.command()
+ @version_option(
+ version='1.0',
+ prog_name='example',
+ message_color='green'
+ )
+ def cmd1():
+ pass
+
+ @cli.command()
+ @version_option(
+ version='1.0',
+ prog_name='example',
+ version_color='green',
+ prog_name_color='yellow'
+ )
+ def cmd2():
+ pass
+
+ @cli.command()
+ @version_option(
+ version='1.0',
+ prog_name='example',
+ version_color='green',
+ prog_name_color='white',
+ message='%(prog)s %(version)s\n python=3.7',
+ message_color='bright_black'
+ )
+ def cmd3():
+ pass
+
+ .. image:: https://raw.githubusercontent.com/r-m-n/click-help-colors/master/examples/s…
+
+ Installation
+ ------------
+
+ With ``pip``:
+
+ .. code-block:: console
+
+ $ pip install click-help-colors
+
+ From source:
+
+ .. code-block:: console
+
+ $ git clone https://github.com/r-m-n/click-help-colors.git
+ $ cd click-help-colors
+ $ python setup.py install
+
+ .. _Click: http://click.pocoo.org/
+
+
+ .. |pypi| image:: https://img.shields.io/pypi/v/click-help-colors
+ :alt: PyPI
+
+ .. |build| image:: https://travis-ci.com/click-contrib/click-help-colors.svg?branch=master
+ :target: https://travis-ci.com/click-contrib/click-help-colors
+
+ .. |downloads| image:: https://img.shields.io/pypi/dm/click-help-colors
+ :alt: PyPI - Downloads
+
Keywords: click
Platform: UNKNOWN
+Provides-Extra: dev
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/click_help_colors.egg-info/SOURCES.txt new/click-help-colors-0.8/click_help_colors.egg-info/SOURCES.txt
--- old/click-help-colors-0.6/click_help_colors.egg-info/SOURCES.txt 2019-07-19 09:02:53.000000000 +0200
+++ new/click-help-colors-0.8/click_help_colors.egg-info/SOURCES.txt 2020-03-13 15:08:10.000000000 +0100
@@ -1,10 +1,25 @@
+CHANGES.rst
LICENSE.txt
MANIFEST.in
README.rst
setup.py
+tox.ini
click_help_colors/__init__.py
+click_help_colors/core.py
+click_help_colors/decorators.py
+click_help_colors/utils.py
click_help_colors.egg-info/PKG-INFO
click_help_colors.egg-info/SOURCES.txt
click_help_colors.egg-info/dependency_links.txt
click_help_colors.egg-info/requires.txt
-click_help_colors.egg-info/top_level.txt
\ No newline at end of file
+click_help_colors.egg-info/top_level.txt
+examples/example.py
+examples/example_with_custom_colors.py
+examples/multi_commands.py
+examples/version_option.py
+tests/__init__.py
+tests/conftest.py
+tests/test_basic.py
+tests/test_custom_colors.py
+tests/test_multi_commands.py
+tests/test_version_option.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/click_help_colors.egg-info/requires.txt new/click-help-colors-0.8/click_help_colors.egg-info/requires.txt
--- old/click-help-colors-0.6/click_help_colors.egg-info/requires.txt 2019-07-19 09:02:53.000000000 +0200
+++ new/click-help-colors-0.8/click_help_colors.egg-info/requires.txt 2020-03-13 15:08:10.000000000 +0100
@@ -1 +1,4 @@
click>=7.0
+
+[dev]
+pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/examples/example.py new/click-help-colors-0.8/examples/example.py
--- old/click-help-colors-0.6/examples/example.py 1970-01-01 01:00:00.000000000 +0100
+++ new/click-help-colors-0.8/examples/example.py 2020-02-29 11:29:22.000000000 +0100
@@ -0,0 +1,28 @@
+import click
+from click_help_colors import HelpColorsGroup, HelpColorsCommand
+
+
+(a)click.group(
+ cls=HelpColorsGroup,
+ help_headers_color='yellow',
+ help_options_color='green'
+)
+def cli():
+ pass
+
+(a)cli.command()
+(a)click.option('--count', default=1, help='Some number.')
+def command1(count):
+ click.echo('command 1')
+
+(a)cli.command(
+ cls=HelpColorsCommand,
+ help_options_color='blue'
+)
+(a)click.option('--name', help='Some string.')
+def command2(name):
+ click.echo('command 2')
+
+
+if __name__ == '__main__':
+ cli()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/examples/example_with_custom_colors.py new/click-help-colors-0.8/examples/example_with_custom_colors.py
--- old/click-help-colors-0.6/examples/example_with_custom_colors.py 1970-01-01 01:00:00.000000000 +0100
+++ new/click-help-colors-0.8/examples/example_with_custom_colors.py 2020-02-09 14:28:54.000000000 +0100
@@ -0,0 +1,51 @@
+import click
+from click_help_colors import HelpColorsGroup, HelpColorsCommand
+
+
+(a)click.group(
+ cls=HelpColorsGroup,
+ help_headers_color='yellow',
+ help_options_color='green',
+ help_options_custom_colors={'command3': 'red', 'command4': 'cyan'}
+)
+def cli():
+ pass
+
+
+(a)cli.command(
+ cls=HelpColorsCommand,
+ help_headers_color=None,
+ help_options_color=None,
+ help_options_custom_colors={'--count': 'red', '--subtract': 'green'}
+)
+(a)click.option('--count', default=1, help='Count help text.')
+(a)click.option('--add', default=1, help='Add help text.')
+(a)click.option('--subtract', default=1, help='Subtract help text.')
+def command1(count, add, subtract):
+ """A command"""
+ click.echo('command 1')
+
+
+(a)cli.command()
+(a)click.option('--name', help='Some string.')
+def command2(name):
+ """Another command"""
+ click.echo('command 2')
+
+
+(a)cli.command()
+(a)click.option('--name', help='Some string.')
+def command3(name):
+ """Yet another command"""
+ click.echo('command 3')
+
+
+(a)cli.command()
+(a)click.option('--name', help='Some string.')
+def command4(name):
+ """One last command"""
+ click.echo('command 4')
+
+
+if __name__ == '__main__':
+ cli()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/examples/multi_commands.py new/click-help-colors-0.8/examples/multi_commands.py
--- old/click-help-colors-0.6/examples/multi_commands.py 1970-01-01 01:00:00.000000000 +0100
+++ new/click-help-colors-0.8/examples/multi_commands.py 2020-02-24 16:44:02.000000000 +0100
@@ -0,0 +1,49 @@
+import click
+from click_help_colors import HelpColorsGroup, HelpColorsMultiCommand
+
+
+(a)click.group()
+def cmd1():
+ pass
+
+
+(a)cmd1.command()
+(a)click.option('--count', default=1, help='Some number.')
+def command1(count):
+ click.echo('command 1')
+
+
+(a)click.group(
+ cls=HelpColorsGroup,
+ help_headers_color='red',
+ help_options_color='blue'
+)
+def cmd2():
+ pass
+
+
+(a)cmd2.command()
+(a)click.option('--name', help='Some string.')
+def command2(name):
+ click.echo('command 2')
+
+
+class MyCLI(HelpColorsMultiCommand):
+ def list_commands(self, ctx):
+ return ['cmd1', 'cmd2']
+
+ def get_command(self, ctx, name):
+ return globals()[name]
+
+
+(a)click.command(
+ cls=MyCLI,
+ help_headers_color='yellow',
+ help_options_color='green'
+)
+def cli():
+ pass
+
+
+if __name__ == '__main__':
+ cli()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/examples/version_option.py new/click-help-colors-0.8/examples/version_option.py
--- old/click-help-colors-0.6/examples/version_option.py 1970-01-01 01:00:00.000000000 +0100
+++ new/click-help-colors-0.8/examples/version_option.py 2020-02-29 12:45:40.000000000 +0100
@@ -0,0 +1,42 @@
+import click
+from click_help_colors import version_option
+
+
+(a)click.group()
+def cli():
+ pass
+
+(a)cli.command()
+@version_option(
+ version='1.0',
+ prog_name='example',
+ message_color='green'
+)
+def cmd1():
+ pass
+
+(a)cli.command()
+@version_option(
+ version='1.0',
+ prog_name='example',
+ version_color='green',
+ prog_name_color='yellow'
+)
+def cmd2():
+ pass
+
+(a)cli.command()
+@version_option(
+ version='1.0',
+ prog_name='example',
+ version_color='green',
+ prog_name_color='white',
+ message='%(prog)s %(version)s\n python=3.7',
+ message_color='bright_black'
+)
+def cmd3():
+ pass
+
+
+if __name__ == '__main__':
+ cli()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/setup.py new/click-help-colors-0.8/setup.py
--- old/click-help-colors-0.6/setup.py 2019-07-19 08:59:51.000000000 +0200
+++ new/click-help-colors-0.8/setup.py 2020-03-13 13:50:41.000000000 +0100
@@ -1,16 +1,32 @@
# -*- coding: utf-8 -*-
+import io
+import re
from setuptools import setup
+
+with io.open("README.rst", "rt", encoding="utf8") as f:
+ readme = f.read()
+
+
+with io.open("click_help_colors/__init__.py", "rt", encoding="utf8") as f:
+ version = re.search(r"__version__ = '(.*?)'", f.read()).group(1)
+
+
setup(
name='click-help-colors',
- version=0.6,
+ version=version,
packages=['click_help_colors'],
description='Colorization of help messages in Click',
+ long_description=readme,
url='https://github.com/r-m-n/click-help-colors',
- download_url='https://github.com/r-m-n/click-help-colors/archive/0.6.tar.gz',
keywords=['click'],
license='MIT',
install_requires=[
'click>=7.0'
- ]
+ ],
+ extras_require={
+ "dev": [
+ "pytest",
+ ]
+ }
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/tests/conftest.py new/click-help-colors-0.8/tests/conftest.py
--- old/click-help-colors-0.6/tests/conftest.py 1970-01-01 01:00:00.000000000 +0100
+++ new/click-help-colors-0.8/tests/conftest.py 2020-02-09 14:28:54.000000000 +0100
@@ -0,0 +1,9 @@
+import pytest
+
+import click
+from click.testing import CliRunner
+
+
+(a)pytest.fixture
+def runner():
+ return CliRunner()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/tests/test_basic.py new/click-help-colors-0.8/tests/test_basic.py
--- old/click-help-colors-0.6/tests/test_basic.py 1970-01-01 01:00:00.000000000 +0100
+++ new/click-help-colors-0.8/tests/test_basic.py 2020-02-09 16:47:49.000000000 +0100
@@ -0,0 +1,98 @@
+import click
+import pytest
+
+from click_help_colors import HelpColorsGroup, HelpColorsException
+
+
+def test_basic_group(runner):
+ @click.command(
+ cls=HelpColorsGroup,
+ help_headers_color='yellow',
+ help_options_color='green'
+ )
+ @click.option('--name', help='The person to greet.')
+ def cli(count):
+ pass
+
+ result = runner.invoke(cli, ['--help'], color=True)
+ assert not result.exception
+ assert result.output.splitlines() == [
+ '\x1b[33mUsage: \x1b[0mcli [OPTIONS] COMMAND [ARGS]...',
+ '',
+ '\x1b[33mOptions\x1b[0m:',
+ ' \x1b[32m--name TEXT\x1b[0m The person to greet.',
+ ' \x1b[32m--help\x1b[0m Show this message and exit.'
+ ]
+
+
+def test_basic_command(runner):
+ @click.group(
+ cls=HelpColorsGroup,
+ help_headers_color='yellow',
+ help_options_color='green'
+ )
+ def cli():
+ pass
+
+ @cli.command()
+ @click.option('--name', help='The person to greet.')
+ def command(name):
+ pass
+
+ result = runner.invoke(cli, ['--help'], color=True)
+ assert not result.exception
+ assert result.output.splitlines() == [
+ '\x1b[33mUsage: \x1b[0mcli [OPTIONS] COMMAND [ARGS]...',
+ '',
+ '\x1b[33mOptions\x1b[0m:',
+ ' \x1b[32m--help\x1b[0m Show this message and exit.',
+ '',
+ '\x1b[33mCommands\x1b[0m:',
+ ' \x1b[32mcommand\x1b[0m'
+ ]
+
+ result = runner.invoke(cli, ['command', '--help'], color=True)
+ assert not result.exception
+ assert result.output.splitlines() == [
+ '\x1b[33mUsage: \x1b[0mcli command [OPTIONS]',
+ '',
+ '\x1b[33mOptions\x1b[0m:',
+ ' \x1b[32m--name TEXT\x1b[0m The person to greet.',
+ ' \x1b[32m--help\x1b[0m Show this message and exit.'
+ ]
+
+
+def test_unknown_color(runner):
+ @click.command(
+ cls=HelpColorsGroup,
+ help_headers_color='unknwnclr'
+ )
+ @click.option('--name', help='The person to greet.')
+ def cli(count):
+ pass
+
+ result = runner.invoke(cli, ['--help'], color=True)
+ assert result.exception
+ assert isinstance(result.exception, HelpColorsException)
+ assert str(result.exception) == "Unknown color 'unknwnclr'"
+
+
+def test_env_no_color(runner):
+ @click.command(
+ cls=HelpColorsGroup,
+ help_headers_color='yellow',
+ help_options_color='green'
+ )
+ @click.option('--name', help='The person to greet.')
+ def cli(count):
+ pass
+
+ result = runner.invoke(cli, ['--help'], color=True, env={'NO_COLOR': '1'})
+ assert not result.exception
+ assert result.output.splitlines() == [
+ 'Usage: cli [OPTIONS] COMMAND [ARGS]...',
+ '',
+ 'Options:',
+ ' --name TEXT The person to greet.',
+ ' --help Show this message and exit.'
+ ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/tests/test_custom_colors.py new/click-help-colors-0.8/tests/test_custom_colors.py
--- old/click-help-colors-0.6/tests/test_custom_colors.py 1970-01-01 01:00:00.000000000 +0100
+++ new/click-help-colors-0.8/tests/test_custom_colors.py 2020-02-09 14:28:54.000000000 +0100
@@ -0,0 +1,64 @@
+import click
+
+from click_help_colors import HelpColorsGroup, HelpColorsCommand
+
+
+def test_command_custom_colors(runner):
+ @click.group(
+ cls=HelpColorsGroup,
+ help_headers_color='yellow',
+ help_options_color='green'
+ )
+ def cli():
+ pass
+
+ @cli.command(
+ cls=HelpColorsCommand,
+ help_headers_color='red',
+ help_options_color='blue'
+ )
+ @click.option('--name', help='The person to greet.')
+ def command(name):
+ pass
+
+ result = runner.invoke(cli, ['command', '--help'], color=True)
+ assert not result.exception
+ assert result.output.splitlines() == [
+ '\x1b[31mUsage: \x1b[0mcli command [OPTIONS]',
+ '',
+ '\x1b[31mOptions\x1b[0m:',
+ ' \x1b[34m--name TEXT\x1b[0m The person to greet.',
+ ' \x1b[34m--help\x1b[0m Show this message and exit.'
+ ]
+
+
+def test_custom_option_color(runner):
+ @click.group(
+ cls=HelpColorsGroup,
+ help_headers_color='yellow',
+ help_options_color='green',
+ help_options_custom_colors={'command1': 'red'}
+ )
+ def cli():
+ pass
+
+ @cli.command()
+ def command1(name):
+ pass
+
+ @cli.command()
+ def command2(name):
+ pass
+
+ result = runner.invoke(cli, ['--help'], color=True)
+ assert not result.exception
+ assert result.output.splitlines() == [
+ '\x1b[33mUsage: \x1b[0mcli [OPTIONS] COMMAND [ARGS]...',
+ '',
+ '\x1b[33mOptions\x1b[0m:',
+ ' \x1b[32m--help\x1b[0m Show this message and exit.',
+ '',
+ '\x1b[33mCommands\x1b[0m:',
+ ' \x1b[31mcommand1\x1b[0m',
+ ' \x1b[32mcommand2\x1b[0m'
+ ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/tests/test_multi_commands.py new/click-help-colors-0.8/tests/test_multi_commands.py
--- old/click-help-colors-0.6/tests/test_multi_commands.py 1970-01-01 01:00:00.000000000 +0100
+++ new/click-help-colors-0.8/tests/test_multi_commands.py 2020-02-24 17:28:21.000000000 +0100
@@ -0,0 +1,84 @@
+import click
+import pytest
+
+from click_help_colors import HelpColorsMultiCommand, HelpColorsGroup
+
+
+def test_multi_command(runner):
+ @click.group()
+ def cmd1():
+ pass
+
+ @cmd1.command()
+ @click.option('--count', default=1, help='Some number.')
+ def command1(count):
+ click.echo('command 1')
+
+ @click.group(
+ cls=HelpColorsGroup,
+ help_headers_color='red',
+ help_options_color='blue'
+ )
+ def cmd2():
+ pass
+
+ @cmd2.command()
+ @click.option('--name', help='Some string.')
+ def command2(name):
+ click.echo('command 2')
+
+ class MyCLI(HelpColorsMultiCommand):
+ def list_commands(self, ctx):
+ return ['cmd1', 'cmd2']
+
+ def get_command(self, ctx, name):
+ commands = {
+ 'cmd1': cmd1,
+ 'cmd2': cmd2
+ }
+ return commands[name]
+
+ @click.command(
+ cls=MyCLI,
+ help_headers_color='yellow',
+ help_options_color='green'
+ )
+ def cli():
+ pass
+
+ result = runner.invoke(cli, ['--help'], color=True)
+ assert not result.exception
+ assert result.output.splitlines() == [
+ '\x1b[33mUsage: \x1b[0mcli [OPTIONS] COMMAND [ARGS]...',
+ '',
+ '\x1b[33mOptions\x1b[0m:',
+ ' \x1b[32m--help\x1b[0m Show this message and exit.',
+ '',
+ '\x1b[33mCommands\x1b[0m:',
+ ' \x1b[32mcmd1\x1b[0m',
+ ' \x1b[32mcmd2\x1b[0m'
+ ]
+
+ result = runner.invoke(cli, ['cmd1', '--help'], color=True)
+ assert not result.exception
+ assert result.output.splitlines() == [
+ '\x1b[33mUsage: \x1b[0mcli cmd1 [OPTIONS] COMMAND [ARGS]...',
+ '',
+ '\x1b[33mOptions\x1b[0m:',
+ ' \x1b[32m--help\x1b[0m Show this message and exit.',
+ '',
+ '\x1b[33mCommands\x1b[0m:',
+ ' \x1b[32mcommand1\x1b[0m'
+ ]
+
+ result = runner.invoke(cli, ['cmd2', '--help'], color=True)
+ assert not result.exception
+ assert result.output.splitlines() == [
+ '\x1b[31mUsage: \x1b[0mcli cmd2 [OPTIONS] COMMAND [ARGS]...',
+ '',
+ '\x1b[31mOptions\x1b[0m:',
+ ' \x1b[34m--help\x1b[0m Show this message and exit.',
+ '',
+ '\x1b[31mCommands\x1b[0m:',
+ ' \x1b[34mcommand2\x1b[0m'
+ ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/tests/test_version_option.py new/click-help-colors-0.8/tests/test_version_option.py
--- old/click-help-colors-0.6/tests/test_version_option.py 1970-01-01 01:00:00.000000000 +0100
+++ new/click-help-colors-0.8/tests/test_version_option.py 2020-02-29 11:27:38.000000000 +0100
@@ -0,0 +1,59 @@
+import click
+
+from click_help_colors import version_option
+
+
+def test_message_color(runner):
+ @click.group()
+ @version_option(
+ version='1.0',
+ prog_name='example',
+ message_color='green'
+ )
+ def cli():
+ pass
+
+ result = runner.invoke(cli, ['--version'], color=True)
+ assert not result.exception
+ assert result.output.splitlines() == [
+ '\x1b[32m\x1b[0m\x1b[32mexample\x1b[0m\x1b[32m, version \x1b[0m\x1b[32m1.0\x1b[0m\x1b[32m\x1b[0m'
+ ]
+
+
+def test_version_and_prog_name_color(runner):
+ @click.group()
+ @version_option(
+ version='1.0',
+ prog_name='example',
+ version_color='green',
+ prog_name_color='yellow'
+ )
+ def cli():
+ pass
+
+ result = runner.invoke(cli, ['--version'], color=True)
+ assert not result.exception
+ assert result.output.splitlines() == [
+ '\x1b[33mexample\x1b[0m, version \x1b[32m1.0\x1b[0m'
+ ]
+
+
+def test_custom_message(runner):
+ @click.group()
+ @version_option(
+ version='1.0',
+ prog_name='example',
+ version_color='green',
+ prog_name_color='white',
+ message='%(prog)s %(version)s\n python=3.7',
+ message_color='bright_black'
+ )
+ def cli():
+ pass
+
+ result = runner.invoke(cli, ['--version'], color=True)
+ assert not result.exception
+ assert result.output.splitlines() == [
+ '\x1b[90m\x1b[0m\x1b[37mexample\x1b[0m\x1b[90m \x1b[0m\x1b[32m1.0\x1b[0m\x1b[90m',
+ ' python=3.7\x1b[0m'
+ ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-help-colors-0.6/tox.ini new/click-help-colors-0.8/tox.ini
--- old/click-help-colors-0.6/tox.ini 1970-01-01 01:00:00.000000000 +0100
+++ new/click-help-colors-0.8/tox.ini 2020-02-09 14:28:54.000000000 +0100
@@ -0,0 +1,7 @@
+[tox]
+envlist = py27,py37
+
+[testenv]
+deps = pytest
+commands =
+ pytest
1
0
Hello community,
here is the log from the commit of package python-click-completion for openSUSE:Factory checked in at 2020-03-31 17:17:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-click-completion (Old)
and /work/SRC/openSUSE:Factory/.python-click-completion.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-click-completion"
Tue Mar 31 17:17:46 2020 rev:3 rq:790139 version:0.5.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-click-completion/python-click-completion.changes 2019-03-26 15:44:23.716151719 +0100
+++ /work/SRC/openSUSE:Factory/.python-click-completion.new.3160/python-click-completion.changes 2020-03-31 17:17:48.563725300 +0200
@@ -1,0 +2,7 @@
+Tue Mar 31 12:13:46 UTC 2020 - Marketa Calabkova <mcalabkova(a)suse.com>
+
+- Update to 0.5.2
+ * fix slow completion on projects that provide a cached
+ get_command_short_help
+
+-------------------------------------------------------------------
Old:
----
click-completion-0.5.1.tar.gz
New:
----
click-completion-0.5.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-click-completion.spec ++++++
--- /var/tmp/diff_new_pack.0puBLK/_old 2020-03-31 17:17:49.587725951 +0200
+++ /var/tmp/diff_new_pack.0puBLK/_new 2020-03-31 17:17:49.587725951 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-click-completion
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-click-completion
-Version: 0.5.1
+Version: 0.5.2
Release: 0
Summary: Fish, Bash, Zsh and PowerShell completion for Click
License: MIT
++++++ click-completion-0.5.1.tar.gz -> click-completion-0.5.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-completion-0.5.1/README.md new/click-completion-0.5.2/README.md
--- old/click-completion-0.5.1/README.md 2019-03-24 10:31:53.000000000 +0100
+++ new/click-completion-0.5.2/README.md 2019-10-15 18:18:56.000000000 +0200
@@ -46,10 +46,6 @@
`click-completion` obviously depends on `click`. `Jinja2` is used to
generate the shell specific code.
-The shell currently used can be automatically detected when `psutil` is
-installed. When not installed, the functions that require the shell type
-are raising an exception if the shell type is not passed explicitly.
-
And of course to make it useful, you'll need to use fish, Bash, Zsh or
PowerShell.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-completion-0.5.1/click_completion/__init__.py new/click-completion-0.5.2/click_completion/__init__.py
--- old/click-completion-0.5.1/click_completion/__init__.py 2019-03-24 10:31:53.000000000 +0100
+++ new/click-completion-0.5.2/click_completion/__init__.py 2019-10-15 18:18:56.000000000 +0200
@@ -13,7 +13,7 @@
from click_completion.lib import get_auto_shell
from click_completion.patch import patch as _patch
-__version__ = '0.5.1'
+__version__ = '0.5.2'
_initialized = False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-completion-0.5.1/click_completion/core.py new/click-completion-0.5.2/click_completion/core.py
--- old/click-completion-0.5.1/click_completion/core.py 2019-03-24 10:31:53.000000000 +0100
+++ new/click-completion-0.5.2/click_completion/core.py 2019-10-15 18:18:56.000000000 +0200
@@ -114,6 +114,9 @@
else:
for param in ctx.command.get_params(ctx):
if (completion_configuration.complete_options or incomplete and not incomplete[:1].isalnum()) and isinstance(param, Option):
+ # filter hidden click.Option
+ if getattr(param, 'hidden', False):
+ continue
for opt in param.opts:
if match(opt, incomplete):
choices.append((opt, param.help))
@@ -124,9 +127,8 @@
choices.append((opt, None))
if isinstance(ctx.command, MultiCommand):
for name in ctx.command.list_commands(ctx):
- command = ctx.command.get_command(ctx, name)
- if match(name, incomplete) and not command.hidden:
- choices.append((name, command.get_short_help_str()))
+ if match(name, incomplete):
+ choices.append((name, ctx.command.get_command_short_help(ctx, name)))
for item, help in choices:
yield (item, help)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-completion-0.5.1/click_completion/lib.py new/click-completion-0.5.2/click_completion/lib.py
--- old/click-completion-0.5.1/click_completion/lib.py 2019-03-24 10:31:53.000000000 +0100
+++ new/click-completion-0.5.2/click_completion/lib.py 2019-10-15 18:18:56.000000000 +0200
@@ -121,7 +121,5 @@
def get_auto_shell():
- """Returns the current shell
-
- This feature depends on psutil and will not work if it is not available"""
+ """Returns the current shell"""
return shellingham.detect_shell()[0]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-completion-0.5.1/click_completion/patch.py new/click-completion-0.5.2/click_completion/patch.py
--- old/click-completion-0.5.1/click_completion/patch.py 2019-03-24 10:31:53.000000000 +0100
+++ new/click-completion-0.5.2/click_completion/patch.py 2019-10-15 18:18:56.000000000 +0200
@@ -75,7 +75,29 @@
str
The sub command short help
"""
- return self.get_command(ctx, cmd_name).short_help
+ return self.get_command(ctx, cmd_name).get_short_help_str()
+
+
+def multicommand_get_command_hidden(self, ctx, cmd_name):
+ """Returns the short help of a subcommand
+
+ It allows MultiCommand subclasses to implement more efficient ways to provide the subcommand hidden attribute, for
+ example by leveraging some caching.
+
+ Parameters
+ ----------
+ ctx : click.core.Context
+ The current context
+ cmd_name :
+ The sub command name
+
+ Returns
+ -------
+ bool
+ The sub command hidden status
+ """
+ cmd = self.get_command(ctx, cmd_name)
+ return cmd.hidden if cmd else False
def _shellcomplete(cli, prog_name, complete_var=None):
@@ -139,4 +161,5 @@
click.types.ParamType.complete = param_type_complete
click.types.Choice.complete = choice_complete
click.core.MultiCommand.get_command_short_help = multicommand_get_command_short_help
+ click.core.MultiCommand.get_command_hidden = multicommand_get_command_hidden
click.core._bashcomplete = _shellcomplete
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/click-completion-0.5.1/examples/click-completion-callback new/click-completion-0.5.2/examples/click-completion-callback
--- old/click-completion-0.5.1/examples/click-completion-callback 2019-03-24 10:31:53.000000000 +0100
+++ new/click-completion-0.5.2/examples/click-completion-callback 2019-10-15 18:18:56.000000000 +0200
@@ -22,7 +22,7 @@
@click.command()
@click.option('--install', is_flag=True, callback=install_callback, expose_value=False,
- help="Install completion for the current shell. Make sure to have psutil installed.")
+ help="Install completion for the current shell.")
@click.option('--upper/--lower', default=None, help="Change text to upper or lower case")
@click.argument('args', nargs=-1)
def echo(upper, args):
1
0
Hello community,
here is the log from the commit of package python-cleo for openSUSE:Factory checked in at 2020-03-31 17:17:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-cleo (Old)
and /work/SRC/openSUSE:Factory/.python-cleo.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-cleo"
Tue Mar 31 17:17:43 2020 rev:4 rq:790138 version:0.8.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-cleo/python-cleo.changes 2020-03-26 23:32:01.866748109 +0100
+++ /work/SRC/openSUSE:Factory/.python-cleo.new.3160/python-cleo.changes 2020-03-31 17:17:46.355723898 +0200
@@ -1,0 +2,6 @@
+Tue Mar 31 11:45:54 UTC 2020 - Marketa Calabkova <mcalabkova(a)suse.com>
+
+- update to 0.8.0
+ * Errors are now rendered in a nicer way for Python 3.6+.
+
+-------------------------------------------------------------------
Old:
----
0.7.6.tar.gz
New:
----
0.8.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-cleo.spec ++++++
--- /var/tmp/diff_new_pack.8GKx8o/_old 2020-03-31 17:17:47.059724345 +0200
+++ /var/tmp/diff_new_pack.8GKx8o/_new 2020-03-31 17:17:47.067724350 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-cleo
-Version: 0.7.6
+Version: 0.8.0
Release: 0
Summary: Python module for creating testable command-line interfaces
License: MIT
++++++ 0.7.6.tar.gz -> 0.8.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cleo-0.7.6/.appveyor.yml new/cleo-0.8.0/.appveyor.yml
--- old/cleo-0.7.6/.appveyor.yml 2019-10-25 14:52:21.000000000 +0200
+++ new/cleo-0.8.0/.appveyor.yml 1970-01-01 01:00:00.000000000 +0100
@@ -1,27 +0,0 @@
-build: false
-
-environment:
- PYTHONIOENCODING: "UTF-8"
-
- matrix:
- - PYTHON: "C:/Python27-x64"
- - PYTHON: "C:/Python35-x64"
- - PYTHON: "C:/Python36-x64"
- - PYTHON: "C:/Python37-x64"
-
-
-install:
- - "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"
-
- # Installing Poetry
- - "curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python"
- - "SET PATH=%USERPROFILE%\\.poetry\\bin;%PATH%"
-
- # Ensure latest pip in Poetry's virtualenv
- - "poetry run python -m pip install -U pip"
-
- # Install dependencies
- - "poetry install -v"
-
-test_script:
- - "poetry run pytest --cov cleo tests/"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cleo-0.7.6/.github/workflows/release.yml new/cleo-0.8.0/.github/workflows/release.yml
--- old/cleo-0.7.6/.github/workflows/release.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/cleo-0.8.0/.github/workflows/release.yml 2020-03-26 23:10:48.000000000 +0100
@@ -0,0 +1,130 @@
+name: Release
+
+on:
+ push:
+ tags:
+ - '*.*.*'
+
+jobs:
+
+ Linux:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Get tag
+ id: tag
+ run: |
+ echo ::set-output name=tag::${GITHUB_REF#refs/tags/}
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v1
+ with:
+ python-version: 3.8
+ - name: Install and set up Poetry
+ run: |
+ curl -fsS -o get-poetry.py https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py
+ python get-poetry.py --preview -y
+ - name: Build distributions
+ run: |
+ source $HOME/.poetry/env
+ poetry build -vvv
+ - name: Upload distribution artifacts
+ uses: actions/upload-artifact@v1
+ with:
+ name: project-dist
+ path: dist
+
+ MacOS:
+ runs-on: macos-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Get tag
+ id: tag
+ run: |
+ echo ::set-output name=tag::${GITHUB_REF#refs/tags/}
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v1
+ with:
+ python-version: 3.8
+ - name: Install and set up Poetry
+ run: |
+ curl -fsS -o get-poetry.py https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py
+ python get-poetry.py --preview -y
+ - name: Build distributions
+ run: |
+ source $HOME/.poetry/env
+ poetry build -vvv
+ - name: Upload distribution artifacts
+ uses: actions/upload-artifact@v1
+ with:
+ name: project-dist
+ path: dist
+
+ Windows:
+ runs-on: windows-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Get tag
+ id: tag
+ shell: bash
+ run: |
+ echo ::set-output name=tag::${GITHUB_REF#refs/tags/}
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v1
+ with:
+ python-version: 3.8
+ - name: Install and setup Poetry
+ run: |
+ Invoke-WebRequest https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py -O get-poetry.py
+ python get-poetry.py --preview -y
+ - name: Build distributions
+ run: |
+ $env:Path += ";$env:Userprofile\.poetry\bin"
+ poetry build -vvv
+ - name: Upload distribution artifact
+ uses: actions/upload-artifact@v1
+ with:
+ name: project-dist
+ path: dist
+
+ Release:
+ needs: [Linux, MacOS, Windows]
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+ - name: Get tag
+ id: tag
+ run: |
+ echo ::set-output name=tag::${GITHUB_REF#refs/tags/}
+ - name: Download distribution artifact
+ uses: actions/download-artifact@master
+ with:
+ name: project-dist
+ path: dist
+ - name: Install and set up Poetry
+ run: |
+ curl -fsS -o get-poetry.py https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py
+ python get-poetry.py --preview -y
+ - name: Check distributions
+ run: |
+ ls -la dist
+ - name: Publish to PyPI
+ env:
+ POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }}
+ run: |
+ source $HOME/.poetry/env
+ poetry publish
+ - name: Create Release
+ id: create_release
+ uses: actions/create-release@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
+ with:
+ tag_name: ${{ steps.tag.outputs.tag }}
+ release_name: ${{ steps.tag.outputs.tag }}
+ draft: false
+ prerelease: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cleo-0.7.6/.github/workflows/tests.yml new/cleo-0.8.0/.github/workflows/tests.yml
--- old/cleo-0.7.6/.github/workflows/tests.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/cleo-0.8.0/.github/workflows/tests.yml 2020-03-26 23:10:48.000000000 +0100
@@ -0,0 +1,129 @@
+name: Tests
+
+on: [push, pull_request]
+
+jobs:
+ Linting:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python 3.8
+ uses: actions/setup-python@v1
+ with:
+ python-version: 3.8
+ - name: Linting
+ run: |
+ pip install pre-commit
+ pre-commit run --all-files
+ Linux:
+ needs: Linting
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: [2.7, 3.5, 3.6, 3.7, 3.8, pypy2, pypy3]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v1
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Get full python version
+ id: full-python-version
+ run: |
+ echo ::set-output name=version::$(python -c "import sys; print('-'.join(str(v) for v in sys.version_info))")
+ - name: Install and set up Poetry
+ run: |
+ curl -fsS -o get-poetry.py https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py
+ python get-poetry.py --preview -y
+ source $HOME/.poetry/env
+ poetry config virtualenvs.in-project true
+ - name: Set up cache
+ uses: actions/cache@v1
+ with:
+ path: .venv
+ key: venv-${{ runner.os }}-${{ steps.full-python-version.outputs.version }}-${{ hashFiles('**/poetry.lock') }}
+ - name: Install dependencies
+ run: |
+ source $HOME/.poetry/env
+ poetry install
+ - name: Test
+ run: |
+ source $HOME/.poetry/env
+ poetry run pytest -q tests
+ poetry install
+
+ MacOS:
+ needs: Linting
+ runs-on: macos-latest
+ strategy:
+ matrix:
+ python-version: [2.7, 3.5, 3.6, 3.7, 3.8, pypy2, pypy3]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v1
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Get full python version
+ id: full-python-version
+ run: |
+ echo ::set-output name=version::$(python -c "import sys; print('-'.join(str(v) for v in sys.version_info))")
+ - name: Install and set up Poetry
+ run: |
+ curl -fsS -o get-poetry.py https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py
+ python get-poetry.py --preview -y
+ source $HOME/.poetry/env
+ poetry config virtualenvs.in-project true
+ - name: Set up cache
+ uses: actions/cache@v1
+ with:
+ path: .venv
+ key: venv-${{ runner.os }}-${{ steps.full-python-version.outputs.version }}-${{ hashFiles('**/poetry.lock') }}
+ - name: Install dependencies
+ run: |
+ source $HOME/.poetry/env
+ poetry install
+ - name: Test
+ run: |
+ source $HOME/.poetry/env
+ poetry run pytest -q tests
+ Windows:
+ needs: Linting
+ runs-on: windows-latest
+ strategy:
+ matrix:
+ python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v1
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Get full python version
+ id: full-python-version
+ shell: bash
+ run: |
+ echo ::set-output name=version::$(python -c "import sys; print('-'.join(str(v) for v in sys.version_info))")
+ - name: Install and setup Poetry
+ run: |
+ Invoke-WebRequest https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py -O get-poetry.py
+ python get-poetry.py --preview -y
+ $env:Path += ";$env:Userprofile\.poetry\bin"
+ poetry config virtualenvs.in-project true
+ - name: Set up cache
+ uses: actions/cache@v1
+ with:
+ path: .venv
+ key: venv-${{ runner.os }}-${{ steps.full-python-version.outputs.version }}-${{ hashFiles('**/poetry.lock') }}
+ - name: Install dependencies
+ run: |
+ $env:Path += ";$env:Userprofile\.poetry\bin"
+ poetry install
+ - name: Test
+ run: |
+ $env:Path += ";$env:Userprofile\.poetry\bin"
+ poetry run pytest -q tests
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cleo-0.7.6/.gitignore new/cleo-0.8.0/.gitignore
--- old/cleo-0.7.6/.gitignore 2019-10-25 14:52:21.000000000 +0200
+++ new/cleo-0.8.0/.gitignore 2020-03-26 23:10:48.000000000 +0100
@@ -21,6 +21,5 @@
test.py
/test
-poetry.lock
.pytest_cache
.vscode
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cleo-0.7.6/.travis.yml new/cleo-0.8.0/.travis.yml
--- old/cleo-0.7.6/.travis.yml 2019-10-25 14:52:21.000000000 +0200
+++ new/cleo-0.8.0/.travis.yml 1970-01-01 01:00:00.000000000 +0100
@@ -1,33 +0,0 @@
-language: python
-
-stages:
- - linting
- - test
-
-cache:
- pip: true
- directories:
- - $HOME/.cache/pypoetry
-
-install:
- - curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python
- - source $HOME/.poetry/env
- - poetry install
-
-script: pytest --cov cleo -q tests/
-
-jobs:
- include:
- - python: "2.7"
- - python: "3.5"
- - python: "3.6"
- - python: "3.7"
- dist: xenial
-
- - stage: linting
- python: "3.6"
- install:
- - pip install pre-commit
- - pre-commit install-hooks
- script:
- - pre-commit run --all-files
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cleo-0.7.6/CHANGELOG.md new/cleo-0.8.0/CHANGELOG.md
--- old/cleo-0.7.6/CHANGELOG.md 2019-10-25 14:52:21.000000000 +0200
+++ new/cleo-0.8.0/CHANGELOG.md 2020-03-26 23:10:48.000000000 +0100
@@ -1,5 +1,12 @@
# Change Log
+## [0.8.0] - 2020-03-26
+
+### Added
+
+- Errors are now rendered in a nicer way for Python 3.6+.
+
+
## [0.7.6] - 2019-10-25
### Fixed
@@ -212,7 +219,8 @@
-[Unreleased]: https://github.com/sdispater/cleo/compare/0.7.6...master
+[Unreleased]: https://github.com/sdispater/cleo/compare/0.8.0...master
+[0.8.0]: https://github.com/sdispater/cleo/releases/tag/0.8.0
[0.7.6]: https://github.com/sdispater/cleo/releases/tag/0.7.6
[0.7.5]: https://github.com/sdispater/cleo/releases/tag/0.7.5
[0.7.4]: https://github.com/sdispater/cleo/releases/tag/0.7.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cleo-0.7.6/cleo/__init__.py new/cleo-0.8.0/cleo/__init__.py
--- old/cleo-0.7.6/cleo/__init__.py 2019-10-25 14:52:21.000000000 +0200
+++ new/cleo-0.8.0/cleo/__init__.py 2020-03-26 23:10:48.000000000 +0100
@@ -6,4 +6,4 @@
from .testers import ApplicationTester, CommandTester
-__version__ = "0.7.6"
+__version__ = "0.8.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cleo-0.7.6/poetry.lock new/cleo-0.8.0/poetry.lock
--- old/cleo-0.7.6/poetry.lock 1970-01-01 01:00:00.000000000 +0100
+++ new/cleo-0.8.0/poetry.lock 2020-03-26 23:10:48.000000000 +0100
@@ -0,0 +1,1150 @@
+[[package]]
+category = "dev"
+description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+name = "appdirs"
+optional = false
+python-versions = "*"
+version = "1.4.3"
+
+[[package]]
+category = "dev"
+description = "A few extensions to pyyaml."
+name = "aspy.yaml"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "1.3.0"
+
+[package.dependencies]
+pyyaml = "*"
+
+[[package]]
+category = "dev"
+description = "Atomic file writes."
+name = "atomicwrites"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "1.3.0"
+
+[[package]]
+category = "dev"
+description = "Classes Without Boilerplate"
+name = "attrs"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "19.3.0"
+
+[package.extras]
+azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"]
+dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "pre-commit"]
+docs = ["sphinx", "zope.interface"]
+tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"]
+
+[[package]]
+category = "dev"
+description = "The uncompromising code formatter."
+marker = "python_version >= \"3.6\" and implementation_name != \"pypy\""
+name = "black"
+optional = false
+python-versions = ">=3.6"
+version = "19.10b0"
+
+[package.dependencies]
+appdirs = "*"
+attrs = ">=18.1.0"
+click = ">=6.5"
+pathspec = ">=0.6,<1"
+regex = "*"
+toml = ">=0.9.4"
+typed-ast = ">=1.4.0"
+
+[package.extras]
+d = ["aiohttp (>=3.3.2)", "aiohttp-cors"]
+
+[[package]]
+category = "dev"
+description = "Validate configuration and produce human readable error messages."
+name = "cfgv"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "2.0.1"
+
+[package.dependencies]
+six = "*"
+
+[[package]]
+category = "dev"
+description = "Composable command line interface toolkit"
+marker = "python_version >= \"3.6\" and implementation_name != \"pypy\""
+name = "click"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "7.1.1"
+
+[[package]]
+category = "main"
+description = "CliKit is a group of utilities to build beautiful and testable command line interfaces."
+name = "clikit"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "0.5.0"
+
+[package.dependencies]
+pastel = ">=0.2.0,<0.3.0"
+pylev = ">=1.3,<2.0"
+
+[package.dependencies.enum34]
+python = ">=2.7,<2.8"
+version = ">=1.1,<2.0"
+
+[package.dependencies.typing]
+python = ">=2.7,<2.8 || >=3.4,<3.5"
+version = ">=3.6,<4.0"
+
+[package.dependencies.typing-extensions]
+python = ">=3.5.0,<3.5.4"
+version = ">=3.6,<4.0"
+
+[package.dependencies.woops]
+python = ">=3.6,<4.0"
+version = ">=0.2.1,<0.3.0"
+
+[[package]]
+category = "dev"
+description = "Cross-platform colored terminal text."
+marker = "sys_platform == \"win32\" and python_version == \"3.4\""
+name = "colorama"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "0.4.1"
+
+[[package]]
+category = "dev"
+description = "Cross-platform colored terminal text."
+marker = "sys_platform == \"win32\" and python_version != \"3.4\" or platform_system == \"Windows\""
+name = "colorama"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "0.4.3"
+
+[[package]]
+category = "dev"
+description = "Updated configparser from Python 3.7 for Python 2.6+."
+marker = "python_version < \"3\""
+name = "configparser"
+optional = false
+python-versions = ">=2.6"
+version = "4.0.2"
+
+[package.extras]
+docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
+testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2)", "pytest-flake8", "pytest-black-multipy"]
+
+[[package]]
+category = "dev"
+description = "Backports and enhancements for the contextlib module"
+marker = "python_version < \"3.4\""
+name = "contextlib2"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "0.6.0.post1"
+
+[[package]]
+category = "dev"
+description = "Code coverage measurement for Python"
+name = "coverage"
+optional = false
+python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4"
+version = "4.5.4"
+
+[[package]]
+category = "dev"
+description = "Code coverage measurement for Python"
+name = "coverage"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
+version = "5.0.4"
+
+[package.extras]
+toml = ["toml"]
+
+[[package]]
+category = "dev"
+description = "Distribution utilities"
+name = "distlib"
+optional = false
+python-versions = "*"
+version = "0.3.0"
+
+[[package]]
+category = "main"
+description = "Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4"
+marker = "python_version >= \"2.7\" and python_version < \"2.8\""
+name = "enum34"
+optional = false
+python-versions = "*"
+version = "1.1.10"
+
+[[package]]
+category = "dev"
+description = "A platform independent file lock."
+name = "filelock"
+optional = false
+python-versions = "*"
+version = "3.0.12"
+
+[[package]]
+category = "dev"
+description = "Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2+"
+marker = "python_version < \"3.0\""
+name = "funcsigs"
+optional = false
+python-versions = "*"
+version = "1.0.2"
+
+[[package]]
+category = "dev"
+description = "Backport of the concurrent.futures package from Python 3"
+marker = "python_version < \"3.2\""
+name = "futures"
+optional = false
+python-versions = ">=2.6, <3"
+version = "3.3.0"
+
+[[package]]
+category = "dev"
+description = "File identification library for Python"
+name = "identify"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
+version = "1.4.13"
+
+[package.extras]
+license = ["editdistance"]
+
+[[package]]
+category = "dev"
+description = "Read metadata from Python packages"
+name = "importlib-metadata"
+optional = false
+python-versions = ">=2.7,!=3.0,!=3.1,!=3.2,!=3.3"
+version = "0.23"
+
+[package.dependencies]
+zipp = ">=0.5"
+
+[package.extras]
+docs = ["sphinx", "rst.linker"]
+testing = ["packaging", "importlib-resources"]
+
+[[package]]
+category = "dev"
+description = "Read metadata from Python packages"
+marker = "python_version < \"3.8\""
+name = "importlib-metadata"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+version = "1.5.2"
+
+[package.dependencies]
+zipp = ">=0.5"
+
+[package.dependencies.configparser]
+python = "<3"
+version = ">=3.5"
+
+[package.dependencies.contextlib2]
+python = "<3"
+version = "*"
+
+[package.dependencies.pathlib2]
+python = "<3"
+version = "*"
+
+[package.extras]
+docs = ["sphinx", "rst.linker"]
+testing = ["packaging", "importlib-resources"]
+
+[[package]]
+category = "dev"
+description = "Read resources from Python packages"
+marker = "python_version < \"3.7\""
+name = "importlib-resources"
+optional = false
+python-versions = ">=2.7,!=3.0,!=3.1,!=3.2,!=3.3"
+version = "1.0.2"
+
+[package.dependencies]
+[package.dependencies.typing]
+python = "<3.5"
+version = "*"
+
+[[package]]
+category = "dev"
+description = "Read resources from Python packages"
+marker = "python_version < \"3.7\""
+name = "importlib-resources"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+version = "1.4.0"
+
+[package.dependencies]
+[package.dependencies.contextlib2]
+python = "<3"
+version = "*"
+
+[package.dependencies.importlib-metadata]
+python = "<3.8"
+version = "*"
+
+[package.dependencies.pathlib2]
+python = "<3"
+version = "*"
+
+[package.dependencies.singledispatch]
+python = "<3.4"
+version = "*"
+
+[package.dependencies.typing]
+python = "<3.5"
+version = "*"
+
+[package.dependencies.zipp]
+python = "<3.8"
+version = ">=0.4"
+
+[package.extras]
+docs = ["sphinx", "rst.linker", "jaraco.packaging"]
+
+[[package]]
+category = "dev"
+description = "Rolling backport of unittest.mock for all Pythons"
+marker = "python_version < \"3.0\""
+name = "mock"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "3.0.5"
+
+[package.dependencies]
+six = "*"
+
+[package.dependencies.funcsigs]
+python = "<3.3"
+version = ">=1"
+
+[package.extras]
+build = ["twine", "wheel", "blurb"]
+docs = ["sphinx"]
+test = ["pytest", "pytest-cov"]
+
+[[package]]
+category = "dev"
+description = "More routines for operating on iterables, beyond itertools"
+marker = "python_version <= \"2.7\""
+name = "more-itertools"
+optional = false
+python-versions = "*"
+version = "5.0.0"
+
+[package.dependencies]
+six = ">=1.0.0,<2.0.0"
+
+[[package]]
+category = "dev"
+description = "More routines for operating on iterables, beyond itertools"
+marker = "python_version > \"2.7\""
+name = "more-itertools"
+optional = false
+python-versions = ">=3.4"
+version = "7.2.0"
+
+[[package]]
+category = "dev"
+description = "More routines for operating on iterables, beyond itertools"
+marker = "python_version > \"2.7\""
+name = "more-itertools"
+optional = false
+python-versions = ">=3.5"
+version = "8.2.0"
+
+[[package]]
+category = "dev"
+description = "Node.js virtual environment builder"
+name = "nodeenv"
+optional = false
+python-versions = "*"
+version = "1.3.5"
+
+[[package]]
+category = "dev"
+description = "Core utilities for Python packages"
+name = "packaging"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "20.3"
+
+[package.dependencies]
+pyparsing = ">=2.0.2"
+six = "*"
+
+[[package]]
+category = "main"
+description = "Bring colors to your terminal."
+name = "pastel"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "0.2.0"
+
+[[package]]
+category = "dev"
+description = "Object-oriented filesystem paths"
+marker = "python_version < \"3.6\" or python_version < \"3.4\" and sys_platform != \"win32\""
+name = "pathlib2"
+optional = false
+python-versions = "*"
+version = "2.3.5"
+
+[package.dependencies]
+six = "*"
+
+[package.dependencies.scandir]
+python = "<3.5"
+version = "*"
+
+[[package]]
+category = "dev"
+description = "Utility library for gitignore style pattern matching of file paths."
+marker = "python_version >= \"3.6\" and implementation_name != \"pypy\""
+name = "pathspec"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "0.7.0"
+
+[[package]]
+category = "dev"
+description = "plugin and hook calling mechanisms for python"
+name = "pluggy"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "0.13.1"
+
+[package.dependencies]
+[package.dependencies.importlib-metadata]
+python = "<3.8"
+version = ">=0.12"
+
+[package.extras]
+dev = ["pre-commit", "tox"]
+
+[[package]]
+category = "dev"
+description = "A framework for managing and maintaining multi-language pre-commit hooks."
+name = "pre-commit"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "1.18.3"
+
+[package.dependencies]
+"aspy.yaml" = "*"
+cfgv = ">=2.0.0"
+identify = ">=1.0.0"
+importlib-metadata = "*"
+nodeenv = ">=0.11.1"
+pyyaml = "*"
+six = "*"
+toml = "*"
+virtualenv = ">=15.2"
+
+[package.dependencies.importlib-resources]
+python = "<3.7"
+version = "*"
+
+[[package]]
+category = "dev"
+description = "A framework for managing and maintaining multi-language pre-commit hooks."
+name = "pre-commit"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+version = "1.21.0"
+
+[package.dependencies]
+"aspy.yaml" = "*"
+cfgv = ">=2.0.0"
+identify = ">=1.0.0"
+nodeenv = ">=0.11.1"
+pyyaml = "*"
+six = "*"
+toml = "*"
+virtualenv = ">=15.2"
+
+[package.dependencies.futures]
+python = "<3.2"
+version = "*"
+
+[package.dependencies.importlib-metadata]
+python = "<3.8"
+version = "*"
+
+[package.dependencies.importlib-resources]
+python = "<3.7"
+version = "*"
+
+[[package]]
+category = "dev"
+description = "library with cross-python path, ini-parsing, io, code, log facilities"
+name = "py"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "1.8.1"
+
+[[package]]
+category = "main"
+description = "A pure Python Levenshtein implementation that's not freaking GPL'd."
+name = "pylev"
+optional = false
+python-versions = "*"
+version = "1.3.0"
+
+[[package]]
+category = "dev"
+description = "Python parsing module"
+name = "pyparsing"
+optional = false
+python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
+version = "2.4.6"
+
+[[package]]
+category = "dev"
+description = "pytest: simple powerful testing with Python"
+name = "pytest"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
+version = "4.6.9"
+
+[package.dependencies]
+atomicwrites = ">=1.0"
+attrs = ">=17.4.0"
+packaging = "*"
+pluggy = ">=0.12,<1.0"
+py = ">=1.5.0"
+six = ">=1.10.0"
+wcwidth = "*"
+
+[[package.dependencies.colorama]]
+python = "<3.4.0 || >=3.5.0"
+version = "*"
+
+[[package.dependencies.colorama]]
+python = ">=3.4,<3.5"
+version = "<=0.4.1"
+
+[[package.dependencies.more-itertools]]
+python = "<2.8"
+version = ">=4.0.0,<6.0.0"
+
+[[package.dependencies.more-itertools]]
+python = ">=2.8"
+version = ">=4.0.0"
+
+[package.dependencies.funcsigs]
+python = "<3.0"
+version = ">=1.0"
+
+[package.dependencies.importlib-metadata]
+python = "<3.8"
+version = ">=0.12"
+
+[package.dependencies.pathlib2]
+python = "<3.6"
+version = ">=2.2.0"
+
+[package.extras]
+testing = ["argcomplete", "hypothesis (>=3.56)", "nose", "requests", "mock"]
+
+[[package]]
+category = "dev"
+description = "Pytest plugin for measuring coverage."
+name = "pytest-cov"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "2.8.1"
+
+[package.dependencies]
+coverage = ">=4.4"
+pytest = ">=3.6"
+
+[package.extras]
+testing = ["fields", "hunter", "process-tests (2.0.2)", "six", "virtualenv"]
+
+[[package]]
+category = "dev"
+description = "Thin-wrapper around the mock package for easier use with py.test"
+name = "pytest-mock"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "1.13.0"
+
+[package.dependencies]
+pytest = ">=2.7"
+
+[package.dependencies.mock]
+python = "<3.0"
+version = "*"
+
+[package.extras]
+dev = ["pre-commit", "tox"]
+
+[[package]]
+category = "dev"
+description = "YAML parser and emitter for Python"
+name = "pyyaml"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "5.2"
+
+[[package]]
+category = "dev"
+description = "YAML parser and emitter for Python"
+name = "pyyaml"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "5.3.1"
+
+[[package]]
+category = "dev"
+description = "Alternative regular expression module, to replace re."
+marker = "python_version >= \"3.6\" and implementation_name != \"pypy\""
+name = "regex"
+optional = false
+python-versions = "*"
+version = "2020.2.20"
+
+[[package]]
+category = "dev"
+description = "scandir, a better directory iterator and faster os.walk()"
+marker = "python_version < \"3.5\" or python_version < \"3.4\" and sys_platform != \"win32\""
+name = "scandir"
+optional = false
+python-versions = "*"
+version = "1.10.0"
+
+[[package]]
+category = "dev"
+description = "This library brings functools.singledispatch from Python 3.4 to Python 2.6-3.3."
+marker = "python_version < \"3.4\""
+name = "singledispatch"
+optional = false
+python-versions = "*"
+version = "3.4.0.3"
+
+[package.dependencies]
+six = "*"
+
+[[package]]
+category = "dev"
+description = "Python 2 and 3 compatibility utilities"
+name = "six"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+version = "1.14.0"
+
+[[package]]
+category = "dev"
+description = "Python Library for Tom's Obvious, Minimal Language"
+name = "toml"
+optional = false
+python-versions = "*"
+version = "0.10.0"
+
+[[package]]
+category = "dev"
+description = "tox is a generic virtualenv management and test command line tool"
+name = "tox"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "3.14.0"
+
+[package.dependencies]
+filelock = ">=3.0.0,<4"
+packaging = ">=14"
+pluggy = ">=0.12.0,<1"
+py = ">=1.4.17,<2"
+six = ">=1.0.0,<2"
+toml = ">=0.9.4"
+virtualenv = ">=14.0.0"
+
+[package.dependencies.importlib-metadata]
+python = "<3.8"
+version = ">=0.12,<1"
+
+[package.extras]
+docs = ["sphinx (>=2.0.0,<3)", "towncrier (>=18.5.0)", "pygments-github-lexers (>=0.0.5)", "sphinxcontrib-autoprogram (>=0.1.5)"]
+testing = ["freezegun (>=0.3.11,<1)", "pathlib2 (>=2.3.3,<3)", "pytest (>=4.0.0,<6)", "pytest-cov (>=2.5.1,<3)", "pytest-mock (>=1.10.0,<2)", "pytest-xdist (>=1.22.2,<2)", "pytest-randomly (>=1.2.3,<2)", "flaky (>=3.4.0,<4)", "psutil (>=5.6.1,<6)"]
+
+[[package]]
+category = "dev"
+description = "tox is a generic virtualenv management and test command line tool"
+name = "tox"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+version = "3.14.6"
+
+[package.dependencies]
+colorama = ">=0.4.1"
+filelock = ">=3.0.0,<4"
+packaging = ">=14"
+pluggy = ">=0.12.0,<1"
+py = ">=1.4.17,<2"
+six = ">=1.14.0,<2"
+toml = ">=0.9.4"
+virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2,<20.0.3 || >20.0.3,<20.0.4 || >20.0.4,<20.0.5 || >20.0.5,<20.0.6 || >20.0.6,<20.0.7 || >20.0.7"
+
+[package.dependencies.importlib-metadata]
+python = "<3.8"
+version = ">=0.12,<2"
+
+[package.extras]
+docs = ["sphinx (>=2.0.0,<3)", "towncrier (>=18.5.0)", "pygments-github-lexers (>=0.0.5)", "sphinxcontrib-autoprogram (>=0.1.5)"]
+testing = ["freezegun (>=0.3.11,<1)", "pathlib2 (>=2.3.3,<3)", "pytest (>=4.0.0,<6)", "pytest-cov (>=2.5.1,<3)", "pytest-mock (>=1.10.0,<2)", "pytest-xdist (>=1.22.2,<2)", "pytest-randomly (>=1.0.0,<4)", "flaky (>=3.4.0,<4)", "psutil (>=5.6.1,<6)"]
+
+[[package]]
+category = "dev"
+description = "a fork of Python 2 and 3 ast modules with type comment support"
+marker = "python_version >= \"3.6\" and implementation_name != \"pypy\""
+name = "typed-ast"
+optional = false
+python-versions = "*"
+version = "1.4.1"
+
+[[package]]
+category = "main"
+description = "Type Hints for Python"
+marker = "python_version >= \"2.7\" and python_version < \"2.8\" or python_version >= \"3.4\" and python_version < \"3.5\" or python_version < \"3.5\""
+name = "typing"
+optional = false
+python-versions = "*"
+version = "3.7.4.1"
+
+[[package]]
+category = "main"
+description = "Backported and Experimental Type Hints for Python 3.5+"
+marker = "python_version >= \"3.5.0\" and python_version < \"3.5.4\""
+name = "typing-extensions"
+optional = false
+python-versions = "*"
+version = "3.7.4.1"
+
+[[package]]
+category = "dev"
+description = "Virtual Python Environment builder"
+name = "virtualenv"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
+version = "20.0.14"
+
+[package.dependencies]
+appdirs = ">=1.4.3,<2"
+distlib = ">=0.3.0,<1"
+filelock = ">=3.0.0,<4"
+six = ">=1.9.0,<2"
+
+[package.dependencies.contextlib2]
+python = "<3.3"
+version = ">=0.6.0,<1"
+
+[package.dependencies.importlib-metadata]
+python = "<3.8"
+version = ">=0.12,<2"
+
+[package.dependencies.importlib-resources]
+python = "<3.7"
+version = ">=1.0,<2"
+
+[package.dependencies.pathlib2]
+python = "<3.4"
+version = ">=2.3.3,<3"
+
+[package.extras]
+docs = ["sphinx (>=2.0.0,<3)", "sphinx-argparse (>=0.2.5,<1)", "sphinx-rtd-theme (>=0.4.3,<1)", "towncrier (>=19.9.0rc1)", "proselint (>=0.10.2,<1)"]
+testing = ["pytest (>=4.0.0,<6)", "coverage (>=4.5.1,<6)", "pytest-mock (>=2.0.0,<3)", "pytest-env (>=0.6.2,<1)", "pytest-timeout (>=1.3.4,<2)", "packaging (>=20.0)", "xonsh (>=0.9.13,<1)"]
+
+[[package]]
+category = "dev"
+description = "Measures number of Terminal column cells of wide-character codes"
+name = "wcwidth"
+optional = false
+python-versions = "*"
+version = "0.1.9"
+
+[[package]]
+category = "main"
+description = "Handle and manage Python errors with ease"
+marker = "python_version >= \"3.6\" and python_version < \"4.0\""
+name = "woops"
+optional = false
+python-versions = ">=3.6,<4.0"
+version = "0.2.1"
+
+[[package]]
+category = "dev"
+description = "Backport of pathlib-compatible object wrapper for zip files"
+marker = "python_version < \"3.8\""
+name = "zipp"
+optional = false
+python-versions = ">=2.7"
+version = "1.2.0"
+
+[package.dependencies]
+[package.dependencies.contextlib2]
+python = "<3.4"
+version = "*"
+
+[package.extras]
+docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
+testing = ["pathlib2", "unittest2", "jaraco.itertools", "func-timeout"]
+
+[metadata]
+content-hash = "e87bb40be41d772da9ab42c5698d3c25fa6f8b2f09c798af1b58baad09f817a8"
+python-versions = "~2.7 || ^3.4"
+
+[metadata.files]
+appdirs = [
+ {file = "appdirs-1.4.3-py2.py3-none-any.whl", hash = "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e"},
+ {file = "appdirs-1.4.3.tar.gz", hash = "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92"},
+]
+"aspy.yaml" = [
+ {file = "aspy.yaml-1.3.0-py2.py3-none-any.whl", hash = "sha256:463372c043f70160a9ec950c3f1e4c3a82db5fca01d334b6bc89c7164d744bdc"},
+ {file = "aspy.yaml-1.3.0.tar.gz", hash = "sha256:e7c742382eff2caed61f87a39d13f99109088e5e93f04d76eb8d4b28aa143f45"},
+]
+atomicwrites = [
+ {file = "atomicwrites-1.3.0-py2.py3-none-any.whl", hash = "sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4"},
+ {file = "atomicwrites-1.3.0.tar.gz", hash = "sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6"},
+]
+attrs = [
+ {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"},
+ {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"},
+]
+black = [
+ {file = "black-19.10b0-py36-none-any.whl", hash = "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b"},
+ {file = "black-19.10b0.tar.gz", hash = "sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539"},
+]
+cfgv = [
+ {file = "cfgv-2.0.1-py2.py3-none-any.whl", hash = "sha256:fbd93c9ab0a523bf7daec408f3be2ed99a980e20b2d19b50fc184ca6b820d289"},
+ {file = "cfgv-2.0.1.tar.gz", hash = "sha256:edb387943b665bf9c434f717bf630fa78aecd53d5900d2e05da6ad6048553144"},
+]
+click = [
+ {file = "click-7.1.1-py2.py3-none-any.whl", hash = "sha256:e345d143d80bf5ee7534056164e5e112ea5e22716bbb1ce727941f4c8b471b9a"},
+ {file = "click-7.1.1.tar.gz", hash = "sha256:8a18b4ea89d8820c5d0c7da8a64b2c324b4dabb695804dbfea19b9be9d88c0cc"},
+]
+clikit = [
+ {file = "clikit-0.5.0-py2.py3-none-any.whl", hash = "sha256:b811a96e6fa8191567fd70def540c4de673de1e9d471741b4eb989da89f566e7"},
+ {file = "clikit-0.5.0.tar.gz", hash = "sha256:57fc734d902a5d373d48fa0b2328dfdbde10b03381dc40306e93279cbd130a82"},
+]
+colorama = [
+ {file = "colorama-0.4.1-py2.py3-none-any.whl", hash = "sha256:f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48"},
+ {file = "colorama-0.4.1.tar.gz", hash = "sha256:05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d"},
+ {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"},
+ {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"},
+]
+configparser = [
+ {file = "configparser-4.0.2-py2.py3-none-any.whl", hash = "sha256:254c1d9c79f60c45dfde850850883d5aaa7f19a23f13561243a050d5a7c3fe4c"},
+ {file = "configparser-4.0.2.tar.gz", hash = "sha256:c7d282687a5308319bf3d2e7706e575c635b0a470342641c93bea0ea3b5331df"},
+]
+contextlib2 = [
+ {file = "contextlib2-0.6.0.post1-py2.py3-none-any.whl", hash = "sha256:3355078a159fbb44ee60ea80abd0d87b80b78c248643b49aa6d94673b413609b"},
+ {file = "contextlib2-0.6.0.post1.tar.gz", hash = "sha256:01f490098c18b19d2bd5bb5dc445b2054d2fa97f09a4280ba2c5f3c394c8162e"},
+]
+coverage = [
+ {file = "coverage-4.5.4-cp26-cp26m-macosx_10_12_x86_64.whl", hash = "sha256:eee64c616adeff7db37cc37da4180a3a5b6177f5c46b187894e633f088fb5b28"},
+ {file = "coverage-4.5.4-cp27-cp27m-macosx_10_12_x86_64.whl", hash = "sha256:ef824cad1f980d27f26166f86856efe11eff9912c4fed97d3804820d43fa550c"},
+ {file = "coverage-4.5.4-cp27-cp27m-macosx_10_13_intel.whl", hash = "sha256:9a334d6c83dfeadae576b4d633a71620d40d1c379129d587faa42ee3e2a85cce"},
+ {file = "coverage-4.5.4-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:7494b0b0274c5072bddbfd5b4a6c6f18fbbe1ab1d22a41e99cd2d00c8f96ecfe"},
+ {file = "coverage-4.5.4-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:826f32b9547c8091679ff292a82aca9c7b9650f9fda3e2ca6bf2ac905b7ce888"},
+ {file = "coverage-4.5.4-cp27-cp27m-win32.whl", hash = "sha256:63a9a5fc43b58735f65ed63d2cf43508f462dc49857da70b8980ad78d41d52fc"},
+ {file = "coverage-4.5.4-cp27-cp27m-win_amd64.whl", hash = "sha256:e2ede7c1d45e65e209d6093b762e98e8318ddeff95317d07a27a2140b80cfd24"},
+ {file = "coverage-4.5.4-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:dd579709a87092c6dbee09d1b7cfa81831040705ffa12a1b248935274aee0437"},
+ {file = "coverage-4.5.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:08907593569fe59baca0bf152c43f3863201efb6113ecb38ce7e97ce339805a6"},
+ {file = "coverage-4.5.4-cp33-cp33m-macosx_10_10_x86_64.whl", hash = "sha256:6b62544bb68106e3f00b21c8930e83e584fdca005d4fffd29bb39fb3ffa03cb5"},
+ {file = "coverage-4.5.4-cp34-cp34m-macosx_10_12_x86_64.whl", hash = "sha256:331cb5115673a20fb131dadd22f5bcaf7677ef758741312bee4937d71a14b2ef"},
+ {file = "coverage-4.5.4-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:bf1ef9eb901113a9805287e090452c05547578eaab1b62e4ad456fcc049a9b7e"},
+ {file = "coverage-4.5.4-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:386e2e4090f0bc5df274e720105c342263423e77ee8826002dcffe0c9533dbca"},
+ {file = "coverage-4.5.4-cp34-cp34m-win32.whl", hash = "sha256:fa964bae817babece5aa2e8c1af841bebb6d0b9add8e637548809d040443fee0"},
+ {file = "coverage-4.5.4-cp34-cp34m-win_amd64.whl", hash = "sha256:df6712284b2e44a065097846488f66840445eb987eb81b3cc6e4149e7b6982e1"},
+ {file = "coverage-4.5.4-cp35-cp35m-macosx_10_12_x86_64.whl", hash = "sha256:efc89291bd5a08855829a3c522df16d856455297cf35ae827a37edac45f466a7"},
+ {file = "coverage-4.5.4-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:e4ef9c164eb55123c62411f5936b5c2e521b12356037b6e1c2617cef45523d47"},
+ {file = "coverage-4.5.4-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:ff37757e068ae606659c28c3bd0d923f9d29a85de79bf25b2b34b148473b5025"},
+ {file = "coverage-4.5.4-cp35-cp35m-win32.whl", hash = "sha256:bf0a7aed7f5521c7ca67febd57db473af4762b9622254291fbcbb8cd0ba5e33e"},
+ {file = "coverage-4.5.4-cp35-cp35m-win_amd64.whl", hash = "sha256:19e4df788a0581238e9390c85a7a09af39c7b539b29f25c89209e6c3e371270d"},
+ {file = "coverage-4.5.4-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:60851187677b24c6085248f0a0b9b98d49cba7ecc7ec60ba6b9d2e5574ac1ee9"},
+ {file = "coverage-4.5.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:245388cda02af78276b479f299bbf3783ef0a6a6273037d7c60dc73b8d8d7755"},
+ {file = "coverage-4.5.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:c0afd27bc0e307a1ffc04ca5ec010a290e49e3afbe841c5cafc5c5a80ecd81c9"},
+ {file = "coverage-4.5.4-cp36-cp36m-win32.whl", hash = "sha256:6ba744056423ef8d450cf627289166da65903885272055fb4b5e113137cfa14f"},
+ {file = "coverage-4.5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:af7ed8a8aa6957aac47b4268631fa1df984643f07ef00acd374e456364b373f5"},
+ {file = "coverage-4.5.4-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:3a794ce50daee01c74a494919d5ebdc23d58873747fa0e288318728533a3e1ca"},
+ {file = "coverage-4.5.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:0be0f1ed45fc0c185cfd4ecc19a1d6532d72f86a2bac9de7e24541febad72650"},
+ {file = "coverage-4.5.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:eca2b7343524e7ba246cab8ff00cab47a2d6d54ada3b02772e908a45675722e2"},
+ {file = "coverage-4.5.4-cp37-cp37m-win32.whl", hash = "sha256:93715dffbcd0678057f947f496484e906bf9509f5c1c38fc9ba3922893cda5f5"},
+ {file = "coverage-4.5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:23cc09ed395b03424d1ae30dcc292615c1372bfba7141eb85e11e50efaa6b351"},
+ {file = "coverage-4.5.4-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:141f08ed3c4b1847015e2cd62ec06d35e67a3ac185c26f7635f4406b90afa9c5"},
+ {file = "coverage-4.5.4.tar.gz", hash = "sha256:e07d9f1a23e9e93ab5c62902833bf3e4b1f65502927379148b6622686223125c"},
+ {file = "coverage-5.0.4-cp27-cp27m-macosx_10_12_x86_64.whl", hash = "sha256:8a620767b8209f3446197c0e29ba895d75a1e272a36af0786ec70fe7834e4307"},
+ {file = "coverage-5.0.4-cp27-cp27m-macosx_10_13_intel.whl", hash = "sha256:73aa6e86034dad9f00f4bbf5a666a889d17d79db73bc5af04abd6c20a014d9c8"},
+ {file = "coverage-5.0.4-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:408ce64078398b2ee2ec08199ea3fcf382828d2f8a19c5a5ba2946fe5ddc6c31"},
+ {file = "coverage-5.0.4-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:cda33311cb9fb9323958a69499a667bd728a39a7aa4718d7622597a44c4f1441"},
+ {file = "coverage-5.0.4-cp27-cp27m-win32.whl", hash = "sha256:5f587dfd83cb669933186661a351ad6fc7166273bc3e3a1531ec5c783d997aac"},
+ {file = "coverage-5.0.4-cp27-cp27m-win_amd64.whl", hash = "sha256:9fad78c13e71546a76c2f8789623eec8e499f8d2d799f4b4547162ce0a4df435"},
+ {file = "coverage-5.0.4-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:2e08c32cbede4a29e2a701822291ae2bc9b5220a971bba9d1e7615312efd3037"},
+ {file = "coverage-5.0.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:922fb9ef2c67c3ab20e22948dcfd783397e4c043a5c5fa5ff5e9df5529074b0a"},
+ {file = "coverage-5.0.4-cp35-cp35m-macosx_10_12_x86_64.whl", hash = "sha256:c3fc325ce4cbf902d05a80daa47b645d07e796a80682c1c5800d6ac5045193e5"},
+ {file = "coverage-5.0.4-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:046a1a742e66d065d16fb564a26c2a15867f17695e7f3d358d7b1ad8a61bca30"},
+ {file = "coverage-5.0.4-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6ad6ca45e9e92c05295f638e78cd42bfaaf8ee07878c9ed73e93190b26c125f7"},
+ {file = "coverage-5.0.4-cp35-cp35m-win32.whl", hash = "sha256:eda55e6e9ea258f5e4add23bcf33dc53b2c319e70806e180aecbff8d90ea24de"},
+ {file = "coverage-5.0.4-cp35-cp35m-win_amd64.whl", hash = "sha256:4a8a259bf990044351baf69d3b23e575699dd60b18460c71e81dc565f5819ac1"},
+ {file = "coverage-5.0.4-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:f372cdbb240e09ee855735b9d85e7f50730dcfb6296b74b95a3e5dea0615c4c1"},
+ {file = "coverage-5.0.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a37c6233b28e5bc340054cf6170e7090a4e85069513320275a4dc929144dccf0"},
+ {file = "coverage-5.0.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:443be7602c790960b9514567917af538cac7807a7c0c0727c4d2bbd4014920fd"},
+ {file = "coverage-5.0.4-cp36-cp36m-win32.whl", hash = "sha256:165a48268bfb5a77e2d9dbb80de7ea917332a79c7adb747bd005b3a07ff8caf0"},
+ {file = "coverage-5.0.4-cp36-cp36m-win_amd64.whl", hash = "sha256:0a907199566269e1cfa304325cc3b45c72ae341fbb3253ddde19fa820ded7a8b"},
+ {file = "coverage-5.0.4-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:513e6526e0082c59a984448f4104c9bf346c2da9961779ede1fc458e8e8a1f78"},
+ {file = "coverage-5.0.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:3844c3dab800ca8536f75ae89f3cf566848a3eb2af4d9f7b1103b4f4f7a5dad6"},
+ {file = "coverage-5.0.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:641e329e7f2c01531c45c687efcec8aeca2a78a4ff26d49184dce3d53fc35014"},
+ {file = "coverage-5.0.4-cp37-cp37m-win32.whl", hash = "sha256:db1d4e38c9b15be1521722e946ee24f6db95b189d1447fa9ff18dd16ba89f732"},
+ {file = "coverage-5.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:62061e87071497951155cbccee487980524d7abea647a1b2a6eb6b9647df9006"},
+ {file = "coverage-5.0.4-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:65a7e00c00472cd0f59ae09d2fb8a8aaae7f4a0cf54b2b74f3138d9f9ceb9cb2"},
+ {file = "coverage-5.0.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1f66cf263ec77af5b8fe14ef14c5e46e2eb4a795ac495ad7c03adc72ae43fafe"},
+ {file = "coverage-5.0.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:85596aa5d9aac1bf39fe39d9fa1051b0f00823982a1de5766e35d495b4a36ca9"},
+ {file = "coverage-5.0.4-cp38-cp38-win32.whl", hash = "sha256:86a0ea78fd851b313b2e712266f663e13b6bc78c2fb260b079e8b67d970474b1"},
+ {file = "coverage-5.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:03f630aba2b9b0d69871c2e8d23a69b7fe94a1e2f5f10df5049c0df99db639a0"},
+ {file = "coverage-5.0.4-cp39-cp39-win32.whl", hash = "sha256:7c9762f80a25d8d0e4ab3cb1af5d9dffbddb3ee5d21c43e3474c84bf5ff941f7"},
+ {file = "coverage-5.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:4482f69e0701139d0f2c44f3c395d1d1d37abd81bfafbf9b6efbe2542679d892"},
+ {file = "coverage-5.0.4.tar.gz", hash = "sha256:1b60a95fc995649464e0cd48cecc8288bac5f4198f21d04b8229dc4097d76823"},
+]
+distlib = [
+ {file = "distlib-0.3.0.zip", hash = "sha256:2e166e231a26b36d6dfe35a48c4464346620f8645ed0ace01ee31822b288de21"},
+]
+enum34 = [
+ {file = "enum34-1.1.10-py2-none-any.whl", hash = "sha256:a98a201d6de3f2ab3db284e70a33b0f896fbf35f8086594e8c9e74b909058d53"},
+ {file = "enum34-1.1.10-py3-none-any.whl", hash = "sha256:c3858660960c984d6ab0ebad691265180da2b43f07e061c0f8dca9ef3cffd328"},
+ {file = "enum34-1.1.10.tar.gz", hash = "sha256:cce6a7477ed816bd2542d03d53db9f0db935dd013b70f336a95c73979289f248"},
+]
+filelock = [
+ {file = "filelock-3.0.12-py3-none-any.whl", hash = "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836"},
+ {file = "filelock-3.0.12.tar.gz", hash = "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59"},
+]
+funcsigs = [
+ {file = "funcsigs-1.0.2-py2.py3-none-any.whl", hash = "sha256:330cc27ccbf7f1e992e69fef78261dc7c6569012cf397db8d3de0234e6c937ca"},
+ {file = "funcsigs-1.0.2.tar.gz", hash = "sha256:a7bb0f2cf3a3fd1ab2732cb49eba4252c2af4240442415b4abce3b87022a8f50"},
+]
+futures = [
+ {file = "futures-3.3.0-py2-none-any.whl", hash = "sha256:49b3f5b064b6e3afc3316421a3f25f66c137ae88f068abbf72830170033c5e16"},
+ {file = "futures-3.3.0.tar.gz", hash = "sha256:7e033af76a5e35f58e56da7a91e687706faf4e7bdfb2cbc3f2cca6b9bcda9794"},
+]
+identify = [
+ {file = "identify-1.4.13-py2.py3-none-any.whl", hash = "sha256:a7577a1f55cee1d21953a5cf11a3c839ab87f5ef909a4cba6cf52ed72b4c6059"},
+ {file = "identify-1.4.13.tar.gz", hash = "sha256:ab246293e6585a1c6361a505b68d5b501a0409310932b7de2c2ead667b564d89"},
+]
+importlib-metadata = [
+ {file = "importlib_metadata-0.23-py2.py3-none-any.whl", hash = "sha256:d5f18a79777f3aa179c145737780282e27b508fc8fd688cb17c7a813e8bd39af"},
+ {file = "importlib_metadata-0.23.tar.gz", hash = "sha256:aa18d7378b00b40847790e7c27e11673d7fed219354109d0e7b9e5b25dc3ad26"},
+ {file = "importlib_metadata-1.5.2-py2.py3-none-any.whl", hash = "sha256:298a914c82144c6b3b06c568a8973b89ad2176685f43cd1ea9ba968307300fa9"},
+ {file = "importlib_metadata-1.5.2.tar.gz", hash = "sha256:dfc83688553a91a786c6c91eeb5f3b1d31f24d71877bbd94ecbf5484e57690a2"},
+]
+importlib-resources = [
+ {file = "importlib_resources-1.0.2-py2.py3-none-any.whl", hash = "sha256:6e2783b2538bd5a14678284a3962b0660c715e5a0f10243fd5e00a4b5974f50b"},
+ {file = "importlib_resources-1.0.2.tar.gz", hash = "sha256:d3279fd0f6f847cced9f7acc19bd3e5df54d34f93a2e7bb5f238f81545787078"},
+ {file = "importlib_resources-1.4.0-py2.py3-none-any.whl", hash = "sha256:dd98ceeef3f5ad2ef4cc287b8586da4ebad15877f351e9688987ad663a0a29b8"},
+ {file = "importlib_resources-1.4.0.tar.gz", hash = "sha256:4019b6a9082d8ada9def02bece4a76b131518866790d58fdda0b5f8c603b36c2"},
+]
+mock = [
+ {file = "mock-3.0.5-py2.py3-none-any.whl", hash = "sha256:d157e52d4e5b938c550f39eb2fd15610db062441a9c2747d3dbfa9298211d0f8"},
+ {file = "mock-3.0.5.tar.gz", hash = "sha256:83657d894c90d5681d62155c82bda9c1187827525880eda8ff5df4ec813437c3"},
+]
+more-itertools = [
+ {file = "more-itertools-5.0.0.tar.gz", hash = "sha256:38a936c0a6d98a38bcc2d03fdaaedaba9f412879461dd2ceff8d37564d6522e4"},
+ {file = "more_itertools-5.0.0-py2-none-any.whl", hash = "sha256:c0a5785b1109a6bd7fac76d6837fd1feca158e54e521ccd2ae8bfe393cc9d4fc"},
+ {file = "more_itertools-5.0.0-py3-none-any.whl", hash = "sha256:fe7a7cae1ccb57d33952113ff4fa1bc5f879963600ed74918f1236e212ee50b9"},
+ {file = "more-itertools-7.2.0.tar.gz", hash = "sha256:409cd48d4db7052af495b09dec721011634af3753ae1ef92d2b32f73a745f832"},
+ {file = "more_itertools-7.2.0-py3-none-any.whl", hash = "sha256:92b8c4b06dac4f0611c0729b2f2ede52b2e1bac1ab48f089c7ddc12e26bb60c4"},
+ {file = "more-itertools-8.2.0.tar.gz", hash = "sha256:b1ddb932186d8a6ac451e1d95844b382f55e12686d51ca0c68b6f61f2ab7a507"},
+ {file = "more_itertools-8.2.0-py3-none-any.whl", hash = "sha256:5dd8bcf33e5f9513ffa06d5ad33d78f31e1931ac9a18f33d37e77a180d393a7c"},
+]
+nodeenv = [
+ {file = "nodeenv-1.3.5-py2.py3-none-any.whl", hash = "sha256:5b2438f2e42af54ca968dd1b374d14a1194848955187b0e5e4be1f73813a5212"},
+]
+packaging = [
+ {file = "packaging-20.3-py2.py3-none-any.whl", hash = "sha256:82f77b9bee21c1bafbf35a84905d604d5d1223801d639cf3ed140bd651c08752"},
+ {file = "packaging-20.3.tar.gz", hash = "sha256:3c292b474fda1671ec57d46d739d072bfd495a4f51ad01a055121d81e952b7a3"},
+]
+pastel = [
+ {file = "pastel-0.2.0-py2.py3-none-any.whl", hash = "sha256:18b559dc3ad4ba9b8bd5baebe6503f25f36d21460f021cf27a8d889cb5d17840"},
+ {file = "pastel-0.2.0.tar.gz", hash = "sha256:46155fc523bdd4efcd450bbcb3f2b94a6e3b25edc0eb493e081104ad09e1ca36"},
+]
+pathlib2 = [
+ {file = "pathlib2-2.3.5-py2.py3-none-any.whl", hash = "sha256:0ec8205a157c80d7acc301c0b18fbd5d44fe655968f5d947b6ecef5290fc35db"},
+ {file = "pathlib2-2.3.5.tar.gz", hash = "sha256:6cd9a47b597b37cc57de1c05e56fb1a1c9cc9fab04fe78c29acd090418529868"},
+]
+pathspec = [
+ {file = "pathspec-0.7.0-py2.py3-none-any.whl", hash = "sha256:163b0632d4e31cef212976cf57b43d9fd6b0bac6e67c26015d611a647d5e7424"},
+ {file = "pathspec-0.7.0.tar.gz", hash = "sha256:562aa70af2e0d434367d9790ad37aed893de47f1693e4201fd1d3dca15d19b96"},
+]
+pluggy = [
+ {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"},
+ {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"},
+]
+pre-commit = [
+ {file = "pre_commit-1.18.3-py2.py3-none-any.whl", hash = "sha256:fa78ff96e8e9ac94c748388597693f18b041a181c94a4f039ad20f45287ba44a"},
+ {file = "pre_commit-1.18.3.tar.gz", hash = "sha256:1d3c0587bda7c4e537a46c27f2c84aa006acc18facf9970bf947df596ce91f3f"},
+ {file = "pre_commit-1.21.0-py2.py3-none-any.whl", hash = "sha256:f92a359477f3252452ae2e8d3029de77aec59415c16ae4189bcfba40b757e029"},
+ {file = "pre_commit-1.21.0.tar.gz", hash = "sha256:8f48d8637bdae6fa70cc97db9c1dd5aa7c5c8bf71968932a380628c25978b850"},
+]
+py = [
+ {file = "py-1.8.1-py2.py3-none-any.whl", hash = "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0"},
+ {file = "py-1.8.1.tar.gz", hash = "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa"},
+]
+pylev = [
+ {file = "pylev-1.3.0-py2.py3-none-any.whl", hash = "sha256:1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e"},
+ {file = "pylev-1.3.0.tar.gz", hash = "sha256:063910098161199b81e453025653ec53556c1be7165a9b7c50be2f4d57eae1c3"},
+]
+pyparsing = [
+ {file = "pyparsing-2.4.6-py2.py3-none-any.whl", hash = "sha256:c342dccb5250c08d45fd6f8b4a559613ca603b57498511740e65cd11a2e7dcec"},
+ {file = "pyparsing-2.4.6.tar.gz", hash = "sha256:4c830582a84fb022400b85429791bc551f1f4871c33f23e44f353119e92f969f"},
+]
+pytest = [
+ {file = "pytest-4.6.9-py2.py3-none-any.whl", hash = "sha256:c77a5f30a90e0ce24db9eaa14ddfd38d4afb5ea159309bdd2dae55b931bc9324"},
+ {file = "pytest-4.6.9.tar.gz", hash = "sha256:19e8f75eac01dd3f211edd465b39efbcbdc8fc5f7866d7dd49fedb30d8adf339"},
+]
+pytest-cov = [
+ {file = "pytest-cov-2.8.1.tar.gz", hash = "sha256:cc6742d8bac45070217169f5f72ceee1e0e55b0221f54bcf24845972d3a47f2b"},
+ {file = "pytest_cov-2.8.1-py2.py3-none-any.whl", hash = "sha256:cdbdef4f870408ebdbfeb44e63e07eb18bb4619fae852f6e760645fa36172626"},
+]
+pytest-mock = [
+ {file = "pytest-mock-1.13.0.tar.gz", hash = "sha256:e24a911ec96773022ebcc7030059b57cd3480b56d4f5d19b7c370ec635e6aed5"},
+ {file = "pytest_mock-1.13.0-py2.py3-none-any.whl", hash = "sha256:67e414b3caef7bff6fc6bd83b22b5bc39147e4493f483c2679bc9d4dc485a94d"},
+]
+pyyaml = [
+ {file = "PyYAML-5.2-cp27-cp27m-win32.whl", hash = "sha256:35ace9b4147848cafac3db142795ee42deebe9d0dad885ce643928e88daebdcc"},
+ {file = "PyYAML-5.2-cp27-cp27m-win_amd64.whl", hash = "sha256:ebc4ed52dcc93eeebeae5cf5deb2ae4347b3a81c3fa12b0b8c976544829396a4"},
+ {file = "PyYAML-5.2-cp35-cp35m-win32.whl", hash = "sha256:38a4f0d114101c58c0f3a88aeaa44d63efd588845c5a2df5290b73db8f246d15"},
+ {file = "PyYAML-5.2-cp35-cp35m-win_amd64.whl", hash = "sha256:483eb6a33b671408c8529106df3707270bfacb2447bf8ad856a4b4f57f6e3075"},
+ {file = "PyYAML-5.2-cp36-cp36m-win32.whl", hash = "sha256:7f38e35c00e160db592091751d385cd7b3046d6d51f578b29943225178257b31"},
+ {file = "PyYAML-5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:0e7f69397d53155e55d10ff68fdfb2cf630a35e6daf65cf0bdeaf04f127c09dc"},
+ {file = "PyYAML-5.2-cp37-cp37m-win32.whl", hash = "sha256:e4c015484ff0ff197564917b4b4246ca03f411b9bd7f16e02a2f586eb48b6d04"},
+ {file = "PyYAML-5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:4b6be5edb9f6bb73680f5bf4ee08ff25416d1400fbd4535fe0069b2994da07cd"},
+ {file = "PyYAML-5.2-cp38-cp38-win32.whl", hash = "sha256:8100c896ecb361794d8bfdb9c11fce618c7cf83d624d73d5ab38aef3bc82d43f"},
+ {file = "PyYAML-5.2-cp38-cp38-win_amd64.whl", hash = "sha256:2e9f0b7c5914367b0916c3c104a024bb68f269a486b9d04a2e8ac6f6597b7803"},
+ {file = "PyYAML-5.2.tar.gz", hash = "sha256:c0ee8eca2c582d29c3c2ec6e2c4f703d1b7f1fb10bc72317355a746057e7346c"},
+ {file = "PyYAML-5.3.1-cp27-cp27m-win32.whl", hash = "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f"},
+ {file = "PyYAML-5.3.1-cp27-cp27m-win_amd64.whl", hash = "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76"},
+ {file = "PyYAML-5.3.1-cp35-cp35m-win32.whl", hash = "sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2"},
+ {file = "PyYAML-5.3.1-cp35-cp35m-win_amd64.whl", hash = "sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c"},
+ {file = "PyYAML-5.3.1-cp36-cp36m-win32.whl", hash = "sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2"},
+ {file = "PyYAML-5.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648"},
+ {file = "PyYAML-5.3.1-cp37-cp37m-win32.whl", hash = "sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a"},
+ {file = "PyYAML-5.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf"},
+ {file = "PyYAML-5.3.1-cp38-cp38-win32.whl", hash = "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97"},
+ {file = "PyYAML-5.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee"},
+ {file = "PyYAML-5.3.1.tar.gz", hash = "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d"},
+]
+regex = [
+ {file = "regex-2020.2.20-cp27-cp27m-win32.whl", hash = "sha256:99272d6b6a68c7ae4391908fc15f6b8c9a6c345a46b632d7fdb7ef6c883a2bbb"},
+ {file = "regex-2020.2.20-cp27-cp27m-win_amd64.whl", hash = "sha256:974535648f31c2b712a6b2595969f8ab370834080e00ab24e5dbb9d19b8bfb74"},
+ {file = "regex-2020.2.20-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5de40649d4f88a15c9489ed37f88f053c15400257eeb18425ac7ed0a4e119400"},
+ {file = "regex-2020.2.20-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:82469a0c1330a4beb3d42568f82dffa32226ced006e0b063719468dcd40ffdf0"},
+ {file = "regex-2020.2.20-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:d58a4fa7910102500722defbde6e2816b0372a4fcc85c7e239323767c74f5cbc"},
+ {file = "regex-2020.2.20-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:f1ac2dc65105a53c1c2d72b1d3e98c2464a133b4067a51a3d2477b28449709a0"},
+ {file = "regex-2020.2.20-cp36-cp36m-win32.whl", hash = "sha256:8c2b7fa4d72781577ac45ab658da44c7518e6d96e2a50d04ecb0fd8f28b21d69"},
+ {file = "regex-2020.2.20-cp36-cp36m-win_amd64.whl", hash = "sha256:269f0c5ff23639316b29f31df199f401e4cb87529eafff0c76828071635d417b"},
+ {file = "regex-2020.2.20-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:bed7986547ce54d230fd8721aba6fd19459cdc6d315497b98686d0416efaff4e"},
+ {file = "regex-2020.2.20-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:046e83a8b160aff37e7034139a336b660b01dbfe58706f9d73f5cdc6b3460242"},
+ {file = "regex-2020.2.20-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:b33ebcd0222c1d77e61dbcd04a9fd139359bded86803063d3d2d197b796c63ce"},
+ {file = "regex-2020.2.20-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:bba52d72e16a554d1894a0cc74041da50eea99a8483e591a9edf1025a66843ab"},
+ {file = "regex-2020.2.20-cp37-cp37m-win32.whl", hash = "sha256:01b2d70cbaed11f72e57c1cfbaca71b02e3b98f739ce33f5f26f71859ad90431"},
+ {file = "regex-2020.2.20-cp37-cp37m-win_amd64.whl", hash = "sha256:113309e819634f499d0006f6200700c8209a2a8bf6bd1bdc863a4d9d6776a5d1"},
+ {file = "regex-2020.2.20-cp38-cp38-manylinux1_i686.whl", hash = "sha256:25f4ce26b68425b80a233ce7b6218743c71cf7297dbe02feab1d711a2bf90045"},
+ {file = "regex-2020.2.20-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:9b64a4cc825ec4df262050c17e18f60252cdd94742b4ba1286bcfe481f1c0f26"},
+ {file = "regex-2020.2.20-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:9ff16d994309b26a1cdf666a6309c1ef51ad4f72f99d3392bcd7b7139577a1f2"},
+ {file = "regex-2020.2.20-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:c7f58a0e0e13fb44623b65b01052dae8e820ed9b8b654bb6296bc9c41f571b70"},
+ {file = "regex-2020.2.20-cp38-cp38-win32.whl", hash = "sha256:200539b5124bc4721247a823a47d116a7a23e62cc6695744e3eb5454a8888e6d"},
+ {file = "regex-2020.2.20-cp38-cp38-win_amd64.whl", hash = "sha256:7f78f963e62a61e294adb6ff5db901b629ef78cb2a1cfce3cf4eeba80c1c67aa"},
+ {file = "regex-2020.2.20.tar.gz", hash = "sha256:9e9624440d754733eddbcd4614378c18713d2d9d0dc647cf9c72f64e39671be5"},
+]
+scandir = [
+ {file = "scandir-1.10.0-cp27-cp27m-win32.whl", hash = "sha256:92c85ac42f41ffdc35b6da57ed991575bdbe69db895507af88b9f499b701c188"},
+ {file = "scandir-1.10.0-cp27-cp27m-win_amd64.whl", hash = "sha256:cb925555f43060a1745d0a321cca94bcea927c50114b623d73179189a4e100ac"},
+ {file = "scandir-1.10.0-cp34-cp34m-win32.whl", hash = "sha256:2c712840c2e2ee8dfaf36034080108d30060d759c7b73a01a52251cc8989f11f"},
+ {file = "scandir-1.10.0-cp34-cp34m-win_amd64.whl", hash = "sha256:2586c94e907d99617887daed6c1d102b5ca28f1085f90446554abf1faf73123e"},
+ {file = "scandir-1.10.0-cp35-cp35m-win32.whl", hash = "sha256:2b8e3888b11abb2217a32af0766bc06b65cc4a928d8727828ee68af5a967fa6f"},
+ {file = "scandir-1.10.0-cp35-cp35m-win_amd64.whl", hash = "sha256:8c5922863e44ffc00c5c693190648daa6d15e7c1207ed02d6f46a8dcc2869d32"},
+ {file = "scandir-1.10.0-cp36-cp36m-win32.whl", hash = "sha256:2ae41f43797ca0c11591c0c35f2f5875fa99f8797cb1a1fd440497ec0ae4b022"},
+ {file = "scandir-1.10.0-cp36-cp36m-win_amd64.whl", hash = "sha256:7d2d7a06a252764061a020407b997dd036f7bd6a175a5ba2b345f0a357f0b3f4"},
+ {file = "scandir-1.10.0-cp37-cp37m-win32.whl", hash = "sha256:67f15b6f83e6507fdc6fca22fedf6ef8b334b399ca27c6b568cbfaa82a364173"},
+ {file = "scandir-1.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b24086f2375c4a094a6b51e78b4cf7ca16c721dcee2eddd7aa6494b42d6d519d"},
+ {file = "scandir-1.10.0.tar.gz", hash = "sha256:4d4631f6062e658e9007ab3149a9b914f3548cb38bfb021c64f39a025ce578ae"},
+]
+singledispatch = [
+ {file = "singledispatch-3.4.0.3-py2.py3-none-any.whl", hash = "sha256:833b46966687b3de7f438c761ac475213e53b306740f1abfaa86e1d1aae56aa8"},
+ {file = "singledispatch-3.4.0.3.tar.gz", hash = "sha256:5b06af87df13818d14f08a028e42f566640aef80805c3b50c5056b086e3c2b9c"},
+]
+six = [
+ {file = "six-1.14.0-py2.py3-none-any.whl", hash = "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c"},
+ {file = "six-1.14.0.tar.gz", hash = "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a"},
+]
+toml = [
+ {file = "toml-0.10.0-py2.7.egg", hash = "sha256:f1db651f9657708513243e61e6cc67d101a39bad662eaa9b5546f789338e07a3"},
+ {file = "toml-0.10.0-py2.py3-none-any.whl", hash = "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e"},
+ {file = "toml-0.10.0.tar.gz", hash = "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c"},
+]
+tox = [
+ {file = "tox-3.14.0-py2.py3-none-any.whl", hash = "sha256:0bc216b6a2e6afe764476b4a07edf2c1dab99ed82bb146a1130b2e828f5bff5e"},
+ {file = "tox-3.14.0.tar.gz", hash = "sha256:c4f6b319c20ba4913dbfe71ebfd14ff95d1853c4231493608182f66e566ecfe1"},
+ {file = "tox-3.14.6-py2.py3-none-any.whl", hash = "sha256:b2c4b91c975ea5c11463d9ca00bebf82654439c5df0f614807b9bdec62cc9471"},
+ {file = "tox-3.14.6.tar.gz", hash = "sha256:a4a6689045d93c208d77230853b28058b7513f5123647b67bf012f82fa168303"},
+]
+typed-ast = [
+ {file = "typed_ast-1.4.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3"},
+ {file = "typed_ast-1.4.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb"},
+ {file = "typed_ast-1.4.1-cp35-cp35m-win32.whl", hash = "sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919"},
+ {file = "typed_ast-1.4.1-cp35-cp35m-win_amd64.whl", hash = "sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01"},
+ {file = "typed_ast-1.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75"},
+ {file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652"},
+ {file = "typed_ast-1.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7"},
+ {file = "typed_ast-1.4.1-cp36-cp36m-win32.whl", hash = "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1"},
+ {file = "typed_ast-1.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa"},
+ {file = "typed_ast-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614"},
+ {file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41"},
+ {file = "typed_ast-1.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b"},
+ {file = "typed_ast-1.4.1-cp37-cp37m-win32.whl", hash = "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe"},
+ {file = "typed_ast-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355"},
+ {file = "typed_ast-1.4.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6"},
+ {file = "typed_ast-1.4.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907"},
+ {file = "typed_ast-1.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d"},
+ {file = "typed_ast-1.4.1-cp38-cp38-win32.whl", hash = "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c"},
+ {file = "typed_ast-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4"},
+ {file = "typed_ast-1.4.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34"},
+ {file = "typed_ast-1.4.1.tar.gz", hash = "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b"},
+]
+typing = [
+ {file = "typing-3.7.4.1-py2-none-any.whl", hash = "sha256:c8cabb5ab8945cd2f54917be357d134db9cc1eb039e59d1606dc1e60cb1d9d36"},
+ {file = "typing-3.7.4.1-py3-none-any.whl", hash = "sha256:f38d83c5a7a7086543a0f649564d661859c5146a85775ab90c0d2f93ffaa9714"},
+ {file = "typing-3.7.4.1.tar.gz", hash = "sha256:91dfe6f3f706ee8cc32d38edbbf304e9b7583fb37108fef38229617f8b3eba23"},
+]
+typing-extensions = [
+ {file = "typing_extensions-3.7.4.1-py2-none-any.whl", hash = "sha256:910f4656f54de5993ad9304959ce9bb903f90aadc7c67a0bef07e678014e892d"},
+ {file = "typing_extensions-3.7.4.1-py3-none-any.whl", hash = "sha256:cf8b63fedea4d89bab840ecbb93e75578af28f76f66c35889bd7065f5af88575"},
+ {file = "typing_extensions-3.7.4.1.tar.gz", hash = "sha256:091ecc894d5e908ac75209f10d5b4f118fbdb2eb1ede6a63544054bb1edb41f2"},
+]
+virtualenv = [
+ {file = "virtualenv-20.0.14-py2.py3-none-any.whl", hash = "sha256:cb1dab893f9e39b3e68d9118c555dcd86526d531c128c3f72e1551939723b72f"},
+ {file = "virtualenv-20.0.14.tar.gz", hash = "sha256:6f4c2882a943d20714076679f8dcc5675e953d6c29bfea3bc5d08bb6cdea5d36"},
+]
+wcwidth = [
+ {file = "wcwidth-0.1.9-py2.py3-none-any.whl", hash = "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1"},
+ {file = "wcwidth-0.1.9.tar.gz", hash = "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1"},
+]
+woops = [
+ {file = "woops-0.2.1-py3-none-any.whl", hash = "sha256:77f7179941d0a3d354d923f71428ee2c2519e0b86f465ed5882b98a6d00ec7f0"},
+ {file = "woops-0.2.1.tar.gz", hash = "sha256:f95dee22e055b61980209fdf481f33e743e02d5ef135853c9089d0061370f94a"},
+]
+zipp = [
+ {file = "zipp-1.2.0-py2.py3-none-any.whl", hash = "sha256:e0d9e63797e483a30d27e09fffd308c59a700d365ec34e93cc100844168bf921"},
+ {file = "zipp-1.2.0.tar.gz", hash = "sha256:c70410551488251b0fee67b460fb9a536af8d6f9f008ad10ac51f615b6a521b1"},
+]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cleo-0.7.6/pyproject.toml new/cleo-0.8.0/pyproject.toml
--- old/cleo-0.7.6/pyproject.toml 2019-10-25 14:52:21.000000000 +0200
+++ new/cleo-0.8.0/pyproject.toml 2020-03-26 23:10:48.000000000 +0100
@@ -1,6 +1,6 @@
[tool.poetry]
name = "cleo"
-version = "0.7.6"
+version = "0.8.0"
description = "Cleo allows you to create beautiful and testable command-line interfaces."
authors = [
"Sébastien Eustace <sebastien(a)eustace.io>"
@@ -16,7 +16,7 @@
# Requirements
[tool.poetry.dependencies]
python = "~2.7 || ^3.4"
-clikit = "^0.4.0"
+clikit = "^0.5.0"
[tool.poetry.dev-dependencies]
@@ -25,9 +25,9 @@
pre-commit = "^1.12"
pytest-cov = "^2.6"
tox = "^3.5"
-black = {version = "^19.3b0", python = "^3.6"}
+black = {version = "^19.3b0", markers= "python_version >= '3.6' and implementation_name != 'pypy'"}
[build-system]
-requires = ["poetry>=1.0.0b2"]
-build-backend = "poetry.masonry.api"
+requires = ["poetry-core>=1.0.0a3"]
+build-backend = "poetry_core.masonry.api"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cleo-0.7.6/tests/testers/test_application_tester.py new/cleo-0.8.0/tests/testers/test_application_tester.py
--- old/cleo-0.7.6/tests/testers/test_application_tester.py 2019-10-25 14:52:21.000000000 +0200
+++ new/cleo-0.8.0/tests/testers/test_application_tester.py 2020-03-26 23:10:48.000000000 +0100
@@ -35,4 +35,4 @@
def test_execute(tester):
assert 0 == tester.execute("foo bar")
assert 0 == tester.status_code
- assert "bar" + os.linesep == tester.io.fetch_output()
+ assert "bar\n" == tester.io.fetch_output()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cleo-0.7.6/tests/testers/test_command_tester.py new/cleo-0.8.0/tests/testers/test_command_tester.py
--- old/cleo-0.7.6/tests/testers/test_command_tester.py 2019-10-25 14:52:21.000000000 +0200
+++ new/cleo-0.8.0/tests/testers/test_command_tester.py 2020-03-26 23:10:48.000000000 +0100
@@ -26,4 +26,4 @@
def test_execute(tester):
assert 0 == tester.execute("bar")
assert 0 == tester.status_code
- assert "bar" + os.linesep == tester.io.fetch_output()
+ assert "bar\n" == tester.io.fetch_output()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cleo-0.7.6/tox.ini new/cleo-0.8.0/tox.ini
--- old/cleo-0.7.6/tox.ini 2019-10-25 14:52:21.000000000 +0200
+++ new/cleo-0.8.0/tox.ini 2020-03-26 23:10:48.000000000 +0100
@@ -1,9 +1,9 @@
[tox]
isolated_build = true
-envlist = py27, py35, py36, py37
+envlist = py27, py35, py36, py37, py38
[testenv]
whitelist_externals = poetry
commands =
- poetry install -v
+ poetry install --no-root -v
poetry run pytest tests/
1
0
Hello community,
here is the log from the commit of package python-gspread for openSUSE:Factory checked in at 2020-03-31 17:17:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-gspread (Old)
and /work/SRC/openSUSE:Factory/.python-gspread.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-gspread"
Tue Mar 31 17:17:39 2020 rev:5 rq:790117 version:3.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-gspread/python-gspread.changes 2019-03-19 09:58:38.420096988 +0100
+++ /work/SRC/openSUSE:Factory/.python-gspread.new.3160/python-gspread.changes 2020-03-31 17:17:43.623722163 +0200
@@ -1,0 +2,5 @@
+Tue Mar 31 11:34:39 UTC 2020 - Paolo Stivanin <info(a)paolostivanin.com>
+
+- remove nose dep since we are not running tests
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-gspread.spec ++++++
--- /var/tmp/diff_new_pack.0nZ0OG/_old 2020-03-31 17:17:44.479722707 +0200
+++ /var/tmp/diff_new_pack.0nZ0OG/_new 2020-03-31 17:17:44.483722710 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-gspread
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -26,7 +26,6 @@
URL: https://github.com/burnash/gspread
Source: https://github.com/burnash/gspread/archive/v%{version}.tar.gz
BuildRequires: %{python_module betamax}
-BuildRequires: %{python_module nose}
BuildRequires: %{python_module oauth2client}
BuildRequires: %{python_module requests >= 2.2.1}
BuildRequires: %{python_module xml}
1
0
Hello community,
here is the log from the commit of package python-cfgv for openSUSE:Factory checked in at 2020-03-31 17:17:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-cfgv (Old)
and /work/SRC/openSUSE:Factory/.python-cfgv.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-cfgv"
Tue Mar 31 17:17:35 2020 rev:4 rq:790114 version:3.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-cfgv/python-cfgv.changes 2019-07-26 17:35:20.108065297 +0200
+++ /work/SRC/openSUSE:Factory/.python-cfgv.new.3160/python-cfgv.changes 2020-03-31 17:17:41.023720512 +0200
@@ -1,0 +2,6 @@
+Mon Mar 30 13:55:49 UTC 2020 - Marketa Calabkova <mcalabkova(a)suse.com>
+
+- update to version 3.1.0
+ * cfgv: python3.6+
+
+-------------------------------------------------------------------
Old:
----
cfgv-2.0.1.tar.gz
New:
----
cfgv-3.1.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-cfgv.spec ++++++
--- /var/tmp/diff_new_pack.7908GC/_old 2020-03-31 17:17:42.067721175 +0200
+++ /var/tmp/diff_new_pack.7908GC/_new 2020-03-31 17:17:42.071721177 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-cfgv
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,8 +17,9 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%define skip_python2 1
Name: python-cfgv
-Version: 2.0.1
+Version: 3.1.0
Release: 0
Summary: Configuration validator producing human readable error messages
License: MIT
@@ -28,12 +29,9 @@
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-six
BuildArch: noarch
# SECTION test requirements
-BuildRequires: %{python_module mock}
-BuildRequires: %{python_module pytest-runner}
-BuildRequires: %{python_module six}
+BuildRequires: %{python_module pytest}
# /SECTION
%python_subpackages
@@ -51,7 +49,7 @@
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
-%python_exec setup.py pytest
+%pytest
%files %{python_files}
%doc README.md
++++++ cfgv-2.0.1.tar.gz -> cfgv-3.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cfgv-2.0.1/.pre-commit-config.yaml new/cfgv-3.1.0/.pre-commit-config.yaml
--- old/cfgv-2.0.1/.pre-commit-config.yaml 2019-07-21 16:23:55.000000000 +0200
+++ new/cfgv-3.1.0/.pre-commit-config.yaml 2020-02-25 00:53:07.000000000 +0100
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v2.1.0
+ rev: v2.5.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
@@ -10,18 +10,29 @@
- id: name-tests-test
- id: requirements-txt-fixer
- repo: https://gitlab.com/pycqa/flake8
- rev: 3.7.7
+ rev: 3.7.9
hooks:
- id: flake8
- repo: https://github.com/pre-commit/mirrors-autopep8
- rev: v1.4.3
+ rev: v1.5
hooks:
- id: autopep8
- repo: https://github.com/asottile/reorder_python_imports
- rev: v1.4.0
+ rev: v1.9.0
hooks:
- id: reorder-python-imports
+ args: [--py3-plus]
+- repo: https://github.com/asottile/pyupgrade
+ rev: v1.26.2
+ hooks:
+ - id: pyupgrade
+ args: [--py36-plus]
- repo: https://github.com/asottile/add-trailing-comma
- rev: v1.0.0
+ rev: v1.5.0
hooks:
- id: add-trailing-comma
+ args: [--py36-plus]
+- repo: https://github.com/asottile/setup-cfg-fmt
+ rev: v1.6.0
+ hooks:
+ - id: setup-cfg-fmt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cfgv-2.0.1/azure-pipelines.yml new/cfgv-3.1.0/azure-pipelines.yml
--- old/cfgv-2.0.1/azure-pipelines.yml 2019-07-21 16:23:55.000000000 +0200
+++ new/cfgv-3.1.0/azure-pipelines.yml 2020-02-25 00:53:07.000000000 +0100
@@ -10,11 +10,11 @@
type: github
endpoint: github
name: asottile/azure-pipeline-templates
- ref: refs/tags/v0.0.16
+ ref: refs/tags/v1.0.1
jobs:
- template: job--pre-commit.yml@asottile
- template: job--python-tox.yml@asottile
parameters:
- toxenvs: [pypy, pypy3, py27, py36, py37]
+ toxenvs: [pypy3, py36, py37, py38]
os: linux
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cfgv-2.0.1/cfgv.py new/cfgv-3.1.0/cfgv.py
--- old/cfgv-2.0.1/cfgv.py 2019-07-21 16:23:55.000000000 +0200
+++ new/cfgv-3.1.0/cfgv.py 2020-02-25 00:53:07.000000000 +0100
@@ -1,19 +1,13 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
import collections
import contextlib
-import io
import os.path
import re
import sys
-import six
-
class ValidationError(ValueError):
def __init__(self, error_msg, ctx=None):
- super(ValidationError, self).__init__(error_msg)
+ super().__init__(error_msg)
self.error_msg = error_msg
self.ctx = ctx
@@ -21,9 +15,9 @@
out = '\n'
err = self
while err.ctx is not None:
- out += '==> {}\n'.format(err.ctx)
+ out += f'==> {err.ctx}\n'
err = err.error_msg
- out += '=====> {}'.format(err.error_msg)
+ out += f'=====> {err.error_msg}'
return out
@@ -37,7 +31,7 @@
yield
except ValidationError as e:
_, _, tb = sys.exc_info()
- six.reraise(ValidationError, ValidationError(e, ctx=msg), tb)
+ raise ValidationError(e, ctx=msg).with_traceback(tb)
@contextlib.contextmanager
@@ -46,7 +40,7 @@
yield
except ValidationError as e:
_, _, tb = sys.exc_info()
- six.reraise(tp, tp(e), tb)
+ raise tp(e).with_traceback(tb)
def _dct_noop(self, dct):
@@ -56,7 +50,7 @@
def _check_optional(self, dct):
if self.key not in dct:
return
- with validate_context('At key: {}'.format(self.key)):
+ with validate_context(f'At key: {self.key}'):
self.check_fn(dct[self.key])
@@ -71,7 +65,7 @@
def _require_key(self, dct):
if self.key not in dct:
- raise ValidationError('Missing required key: {}'.format(self.key))
+ raise ValidationError(f'Missing required key: {self.key}')
def _check_required(self, dct):
@@ -117,15 +111,10 @@
if hasattr(self.condition_value, 'describe_opposite'):
explanation = self.condition_value.describe_opposite()
else:
- explanation = 'is not {!r}'.format(self.condition_value)
+ explanation = f'is not {self.condition_value!r}'
raise ValidationError(
- 'Expected {key} to be absent when {cond_key} {explanation}, '
- 'found {key}: {val!r}'.format(
- key=self.key,
- val=dct[self.key],
- cond_key=self.condition_key,
- explanation=explanation,
- ),
+ f'Expected {self.key} to be absent when {self.condition_key} '
+ f'{explanation}, found {self.key}: {dct[self.key]!r}',
)
return _check_conditional
@@ -153,12 +142,11 @@
def _no_additional_keys_check(self, dct):
extra = sorted(set(dct) - set(self.keys))
if extra:
+ extra_s = ', '.join(str(x) for x in extra)
+ keys_s = ', '.join(str(x) for x in self.keys)
raise ValidationError(
- 'Additional keys found: {}. '
- 'Only these keys are allowed: {}'.format(
- ', '.join(str(x) for x in extra),
- ', '.join(str(x) for x in self.keys),
- ),
+ f'Additional keys found: {extra_s}. '
+ f'Only these keys are allowed: {keys_s}',
)
@@ -238,21 +226,19 @@
__slots__ = ()
def __new__(cls, object_name, id_key, *items):
- return super(Map, cls).__new__(cls, object_name, id_key, items)
+ return super().__new__(cls, object_name, id_key, items)
def check(self, v):
if not isinstance(v, dict):
raise ValidationError(
- 'Expected a {} map but got a {}'.format(
- self.object_name, type(v).__name__,
- ),
+ f'Expected a {self.object_name} map but got a '
+ f'{type(v).__name__}',
)
if self.id_key is None:
- context = 'At {}()'.format(self.object_name)
+ context = f'At {self.object_name}()'
else:
- context = 'At {}({}={!r})'.format(
- self.object_name, self.id_key, v.get(self.id_key, MISSING),
- )
+ key_v_s = v.get(self.id_key, MISSING)
+ context = f'At {self.object_name}({self.id_key}={key_v_s!r})'
with validate_context(context):
for item in self.items:
item.check(v)
@@ -274,13 +260,13 @@
__slots__ = ()
def __new__(cls, of, allow_empty=True):
- return super(Array, cls).__new__(cls, of=of, allow_empty=allow_empty)
+ return super().__new__(cls, of=of, allow_empty=allow_empty)
def check(self, v):
check_array(check_any)(v)
if not self.allow_empty and not v:
raise ValidationError(
- "Expected at least 1 '{}'".format(self.of.object_name),
+ f"Expected at least 1 '{self.of.object_name}'",
)
for val in v:
validate(val, self.of)
@@ -296,7 +282,7 @@
__slots__ = ()
def describe_opposite(self):
- return 'is {!r}'.format(self.val)
+ return f'is {self.val!r}'
def __eq__(self, other):
return other is not MISSING and other != self.val
@@ -306,10 +292,10 @@
__slots__ = ()
def __new__(cls, *values):
- return super(NotIn, cls).__new__(cls, values=values)
+ return super().__new__(cls, values=values)
def describe_opposite(self):
- return 'is any of {!r}'.format(self.values)
+ return f'is any of {self.values!r}'
def __eq__(self, other):
return other is not MISSING and other not in self.values
@@ -319,10 +305,10 @@
__slots__ = ()
def __new__(cls, *values):
- return super(In, cls).__new__(cls, values=values)
+ return super().__new__(cls, values=values)
def describe_opposite(self):
- return 'is not any of {!r}'.format(self.values)
+ return f'is not any of {self.values!r}'
def __eq__(self, other):
return other is not MISSING and other in self.values
@@ -335,28 +321,26 @@
def check_type(tp, typename=None):
def check_type_fn(v):
if not isinstance(v, tp):
+ typename_s = typename or tp.__name__
raise ValidationError(
- 'Expected {} got {}'.format(
- typename or tp.__name__, type(v).__name__,
- ),
+ f'Expected {typename_s} got {type(v).__name__}',
)
return check_type_fn
check_bool = check_type(bool)
-check_bytes = check_type(bytes, typename='bytes')
+check_bytes = check_type(bytes)
check_int = check_type(int)
-check_string = check_type(six.string_types, typename='string')
-check_text = check_type(six.text_type, typename='text')
+check_string = check_type(str, typename='string')
+check_text = check_type(str, typename='text')
def check_one_of(possible):
def check_one_of_fn(v):
if v not in possible:
+ possible_s = ', '.join(str(x) for x in sorted(possible))
raise ValidationError(
- 'Expected one of {} but got: {!r}'.format(
- ', '.join(str(x) for x in sorted(possible)), v,
- ),
+ f'Expected one of {possible_s} but got: {v!r}',
)
return check_one_of_fn
@@ -365,18 +349,18 @@
try:
re.compile(v)
except re.error:
- raise ValidationError('{!r} is not a valid python regex'.format(v))
+ raise ValidationError(f'{v!r} is not a valid python regex')
def check_array(inner_check):
def check_array_fn(v):
if not isinstance(v, (list, tuple)):
raise ValidationError(
- 'Expected array but got {!r}'.format(type(v).__name__),
+ f'Expected array but got {type(v).__name__!r}',
)
for i, val in enumerate(v):
- with validate_context('At index {}'.format(i)):
+ with validate_context(f'At index {i}'):
inner_check(val)
return check_array_fn
@@ -409,12 +393,12 @@
):
with reraise_as(exc_tp):
if not os.path.exists(filename):
- raise ValidationError('{} does not exist'.format(filename))
+ raise ValidationError(f'{filename} does not exist')
- with io.open(filename, encoding='utf-8') as f:
+ with open(filename, encoding='utf-8') as f:
contents = f.read()
- with validate_context('File {}'.format(filename)):
+ with validate_context(f'File {filename}'):
try:
data = load_strategy(contents)
except Exception as e:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cfgv-2.0.1/requirements-dev.txt new/cfgv-3.1.0/requirements-dev.txt
--- old/cfgv-2.0.1/requirements-dev.txt 2019-07-21 16:23:55.000000000 +0200
+++ new/cfgv-3.1.0/requirements-dev.txt 2020-02-25 00:53:07.000000000 +0100
@@ -1,5 +1,3 @@
coverage
-flake8
-mock
pre-commit
pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cfgv-2.0.1/setup.cfg new/cfgv-3.1.0/setup.cfg
--- old/cfgv-2.0.1/setup.cfg 2019-07-21 16:23:55.000000000 +0200
+++ new/cfgv-3.1.0/setup.cfg 2020-02-25 00:53:07.000000000 +0100
@@ -1,6 +1,6 @@
[metadata]
name = cfgv
-version = 2.0.1
+version = 3.1.0
description = Validate configuration and produce human readable error messages.
long_description = file: README.md
long_description_content_type = text/markdown
@@ -11,20 +11,17 @@
license_file = LICENSE
classifiers =
License :: OSI Approved :: MIT License
- Programming Language :: Python :: 2
- Programming Language :: Python :: 2.7
Programming Language :: Python :: 3
- Programming Language :: Python :: 3.4
- Programming Language :: Python :: 3.5
+ Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
Programming Language :: Python :: Implementation :: CPython
Programming Language :: Python :: Implementation :: PyPy
[options]
py_modules = cfgv
-install_requires = six
-python_requires = >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
+python_requires = >=3.6.1
[bdist_wheel]
universal = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cfgv-2.0.1/tests/cfgv_test.py new/cfgv-3.1.0/tests/cfgv_test.py
--- old/cfgv-2.0.1/tests/cfgv_test.py 2019-07-21 16:23:55.000000000 +0200
+++ new/cfgv-3.1.0/tests/cfgv_test.py 2020-02-25 00:53:07.000000000 +0100
@@ -1,9 +1,6 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
import json
+from unittest import mock
-import mock
import pytest
from cfgv import apply_defaults
@@ -79,7 +76,7 @@
def test_check_regex():
with pytest.raises(ValidationError) as excinfo:
- check_regex(str('('))
+ check_regex('(')
assert excinfo.value.error_msg == "'(' is not a valid python regex"
@@ -106,13 +103,13 @@
check(True)
assert excinfo.value.error_msg == 'Expected str got bool'
with pytest.raises(ValidationError) as excinfo:
- check(str('('))
+ check('(')
assert excinfo.value.error_msg == "'(' is not a valid python regex"
def test_check_and_ok():
check = check_and(check_type(str), check_regex)
- check(str('^$'))
+ check('^$')
@pytest.mark.parametrize(
@@ -541,7 +538,7 @@
with pytest.raises(Error) as excinfo:
load_from_filename(f.strpath, map_required, json.loads, Error)
# ANY is json's error message
- expected = ('File {}'.format(f.strpath), mock.ANY)
+ expected = (f'File {f.strpath}', mock.ANY)
_assert_exception_trace(excinfo.value.args[0], expected)
@@ -551,7 +548,7 @@
with pytest.raises(Error) as excinfo:
load_from_filename(f.strpath, map_required, json.loads, Error)
expected = (
- 'File {}'.format(f.strpath),
+ f'File {f.strpath}',
'At foo(key=MISSING)',
'Missing required key: key',
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cfgv-2.0.1/tox.ini new/cfgv-3.1.0/tox.ini
--- old/cfgv-2.0.1/tox.ini 2019-07-21 16:23:55.000000000 +0200
+++ new/cfgv-3.1.0/tox.ini 2020-02-25 00:53:07.000000000 +0100
@@ -1,5 +1,5 @@
[tox]
-envlist = py27,py36,py37,pypy,pypy3,pre-commit
+envlist = py36,py37,pypy3,pre-commit
[testenv]
deps = -rrequirements-dev.txt
1
0