openSUSE Commits
Threads by month
- ----- 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
May 2019
- 1 participants
- 2232 discussions
Hello community,
here is the log from the commit of package mate-panel for openSUSE:Factory checked in at 2019-05-22 11:17:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mate-panel (Old)
and /work/SRC/openSUSE:Factory/.mate-panel.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mate-panel"
Wed May 22 11:17:24 2019 rev:34 rq:704507 version:1.22.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/mate-panel/mate-panel.changes 2019-05-16 22:05:28.730542116 +0200
+++ /work/SRC/openSUSE:Factory/.mate-panel.new.5148/mate-panel.changes 2019-05-22 11:17:24.530473134 +0200
@@ -1,0 +2,10 @@
+Sun May 12 18:13:56 UTC 2019 - Alexei Sorokin <sor.alexei(a)meowr.ru>
+
+- Update to version 1.22.1:
+ * Add volume-applet to fedora layout.
+ * help: Update copyright.
+ * [Security] panel-keyfile: Use "g_strlcpy" instead of "strcpy".
+ * Update translations.
+- Rebase mate-panel-layouts-suse.patch.
+
+-------------------------------------------------------------------
Old:
----
mate-panel-1.22.0.tar.xz
New:
----
mate-panel-1.22.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mate-panel.spec ++++++
--- /var/tmp/diff_new_pack.6VvtWC/_old 2019-05-22 11:17:25.258472625 +0200
+++ /var/tmp/diff_new_pack.6VvtWC/_new 2019-05-22 11:17:25.258472625 +0200
@@ -21,7 +21,7 @@
%define typelib typelib-1_0-MatePanelApplet-4_0
%define _version 1.22
Name: mate-panel
-Version: 1.22.0
+Version: 1.22.1
Release: 0
Summary: MATE Desktop Panel
License: GPL-2.0-or-later
@@ -127,6 +127,7 @@
%prep
%autosetup -p1
+
cp -a %{SOURCE1} zz-mate-panel-upream-branding.gschema.override
%build
++++++ mate-panel-1.22.0.tar.xz -> mate-panel-1.22.1.tar.xz ++++++
++++ 72984 lines of diff (skipped)
++++++ mate-panel-layouts-suse.patch ++++++
--- /var/tmp/diff_new_pack.6VvtWC/_old 2019-05-22 11:17:26.666471640 +0200
+++ /var/tmp/diff_new_pack.6VvtWC/_new 2019-05-22 11:17:26.670471637 +0200
@@ -15,23 +15,6 @@
position=10
panel-right-stick=true
locked=true
---- a/data/fedora.layout
-+++ b/data/fedora.layout
-@@ -39,6 +39,14 @@ locked=true
- object-type=applet
- applet-iid=NotificationAreaAppletFactory::NotificationArea
- toplevel-id=top
-+position=20
-+panel-right-stick=true
-+locked=true
-+
-+[Object volume-control]
-+object-type=applet
-+applet-iid=GvcAppletFactory::GvcApplet
-+toplevel-id=top
- position=10
- panel-right-stick=true
- locked=true
--- a/data/linuxmint.layout
+++ b/data/linuxmint.layout
@@ -28,6 +28,14 @@ locked=true
1
0
Hello community,
here is the log from the commit of package mate-netbook for openSUSE:Factory checked in at 2019-05-22 11:17:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mate-netbook (Old)
and /work/SRC/openSUSE:Factory/.mate-netbook.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mate-netbook"
Wed May 22 11:17:20 2019 rev:17 rq:704497 version:1.22.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/mate-netbook/mate-netbook.changes 2019-05-16 22:04:12.938613115 +0200
+++ /work/SRC/openSUSE:Factory/.mate-netbook.new.5148/mate-netbook.changes 2019-05-22 11:17:23.218474053 +0200
@@ -1,0 +2,7 @@
+Sun May 12 18:13:56 UTC 2019 - Alexei Sorokin <sor.alexei(a)meowr.ru>
+
+- Update to version 1.22.1:
+ * maximus: Fix a segmentation fault.
+ * Update translations.
+
+-------------------------------------------------------------------
Old:
----
mate-netbook-1.22.0.tar.xz
New:
----
mate-netbook-1.22.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mate-netbook.spec ++++++
--- /var/tmp/diff_new_pack.IX05fk/_old 2019-05-22 11:17:23.930473554 +0200
+++ /var/tmp/diff_new_pack.IX05fk/_new 2019-05-22 11:17:23.942473546 +0200
@@ -18,7 +18,7 @@
%define _version 1.22
Name: mate-netbook
-Version: 1.22.0
+Version: 1.22.1
Release: 0
Summary: MATE Desktop window management tool
License: GPL-3.0-only
++++++ mate-netbook-1.22.0.tar.xz -> mate-netbook-1.22.1.tar.xz ++++++
++++ 9250 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package mate-icon-theme for openSUSE:Factory checked in at 2019-05-22 11:17:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mate-icon-theme (Old)
and /work/SRC/openSUSE:Factory/.mate-icon-theme.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mate-icon-theme"
Wed May 22 11:17:15 2019 rev:16 rq:704491 version:1.22.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/mate-icon-theme/mate-icon-theme.changes 2019-05-16 22:04:09.254616566 +0200
+++ /work/SRC/openSUSE:Factory/.mate-icon-theme.new.5148/mate-icon-theme.changes 2019-05-22 11:17:19.402476722 +0200
@@ -1,0 +2,11 @@
+Sun May 12 18:13:56 UTC 2019 - Alexei Sorokin <sor.alexei(a)meowr.ru>
+
+- Update to version 1.22.1:
+ * Display the volume status with a better contrast in panels.
+ * Upgrade svg source files to Inkscape 0.92.4.
+ * Gen png icons from source - mate theme.
+ * Gen png icons from source. mate: apps, categories & devices.
+ * Update terminal icons for mate theme.
+ * Update translations.
+
+-------------------------------------------------------------------
Old:
----
mate-icon-theme-1.22.0.tar.xz
New:
----
mate-icon-theme-1.22.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mate-icon-theme.spec ++++++
--- /var/tmp/diff_new_pack.WX3rAo/_old 2019-05-22 11:17:21.278475410 +0200
+++ /var/tmp/diff_new_pack.WX3rAo/_new 2019-05-22 11:17:21.306475390 +0200
@@ -18,7 +18,7 @@
%define _version 1.22
Name: mate-icon-theme
-Version: 1.22.0
+Version: 1.22.1
Release: 0
Summary: MATE icon theme
License: LGPL-3.0-only AND CC-BY-3.0
++++++ mate-icon-theme-1.22.0.tar.xz -> mate-icon-theme-1.22.1.tar.xz ++++++
/work/SRC/openSUSE:Factory/mate-icon-theme/mate-icon-theme-1.22.0.tar.xz /work/SRC/openSUSE:Factory/.mate-icon-theme.new.5148/mate-icon-theme-1.22.1.tar.xz differ: char 26, line 1
1
0
Hello community,
here is the log from the commit of package kio-gdrive for openSUSE:Factory checked in at 2019-05-22 11:17:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kio-gdrive (Old)
and /work/SRC/openSUSE:Factory/.kio-gdrive.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kio-gdrive"
Wed May 22 11:17:11 2019 rev:15 rq:704462 version:1.2.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/kio-gdrive/kio-gdrive.changes 2019-04-28 20:14:42.946371408 +0200
+++ /work/SRC/openSUSE:Factory/.kio-gdrive.new.5148/kio-gdrive.changes 2019-05-22 11:17:14.134480409 +0200
@@ -1,0 +2,6 @@
+Tue May 21 12:40:13 UTC 2019 - wbauer(a)tmo.at
+
+- Update to 1.2.6
+ * Updated translations
+
+-------------------------------------------------------------------
Old:
----
kio-gdrive-1.2.5.tar.xz
New:
----
kio-gdrive-1.2.6.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kio-gdrive.spec ++++++
--- /var/tmp/diff_new_pack.7MaQbw/_old 2019-05-22 11:17:14.898479874 +0200
+++ /var/tmp/diff_new_pack.7MaQbw/_new 2019-05-22 11:17:14.914479863 +0200
@@ -18,7 +18,7 @@
%bcond_without lang
Name: kio-gdrive
-Version: 1.2.5
+Version: 1.2.6
Release: 0
Summary: Google Drive KIO slave for KDE applications
License: GPL-2.0-or-later
++++++ kio-gdrive-1.2.5.tar.xz -> kio-gdrive-1.2.6.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/CMakeLists.txt new/kio-gdrive-1.2.6/CMakeLists.txt
--- old/kio-gdrive-1.2.5/CMakeLists.txt 2018-10-21 13:26:25.000000000 +0200
+++ new/kio-gdrive-1.2.6/CMakeLists.txt 2019-05-19 13:01:31.000000000 +0200
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.0)
-set(GDRIVE_VERSION 1.2.5)
+set(GDRIVE_VERSION 1.2.6)
project(kio-gdrive VERSION ${GDRIVE_VERSION})
set(QT_MIN_VERSION 5.2.0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/desktop/org.kde.kio-gdrive.appdata.xml new/kio-gdrive-1.2.6/desktop/org.kde.kio-gdrive.appdata.xml
--- old/kio-gdrive-1.2.5/desktop/org.kde.kio-gdrive.appdata.xml 2018-10-21 13:25:48.000000000 +0200
+++ new/kio-gdrive-1.2.6/desktop/org.kde.kio-gdrive.appdata.xml 2019-05-19 13:00:51.000000000 +0200
@@ -17,6 +17,7 @@
<name xml:lang="fi">KIO GDrive</name>
<name xml:lang="fr">KIO GDrive</name>
<name xml:lang="gl">KIO GDrive</name>
+ <name xml:lang="id">KIO GDrive</name>
<name xml:lang="it">KIO GDrive</name>
<name xml:lang="ko">KIO GDrive</name>
<name xml:lang="nl">KIO GDrive</name>
@@ -40,6 +41,7 @@
<summary xml:lang="fi">Google Drive -integrointi KDE Plasmaan ja KDE-sovelluksiin</summary>
<summary xml:lang="fr">Intégration de Google Drive à KDE Plasma et aux applications KDE</summary>
<summary xml:lang="gl">Integración de Google Drive con KDE Plasma e os aplicativos de KDE</summary>
+ <summary xml:lang="id">Google Drive terintegrasi dengan Plasma KDE dan aplikasi KDE</summary>
<summary xml:lang="it">Integrazione di Google Drive con le applicazioni di KDE e KDE Plasma</summary>
<summary xml:lang="ko">KDE Plasma 및 KDE 프로그램과 Google 드라이브 통합</summary>
<summary xml:lang="nl">Integratie van Google Drive met KDE Plasma en KDE applications</summary>
@@ -52,6 +54,7 @@
<summary xml:lang="sv">Integrering av Google Drive med KDE Plasma och KDE-program</summary>
<summary xml:lang="uk">Інтеграція Диска Google із Плазмою KDE та програмами KDE</summary>
<summary xml:lang="x-test">xxGoogle Drive integration with KDE Plasma and KDE applicationsxx</summary>
+ <summary xml:lang="zh-CN">KDE Plasma 和 KDE 应用的 Google 云端硬盘整合</summary>
<description>
<p>KIO GDrive is a KIO slave that enables KIO-aware applications (such as Dolphin, Kate or Gwenview) to access and edit Google Drive files on the cloud.</p>
<p xml:lang="ca">El KIO GDrive és un esclau del KIO que habilita les aplicacions preparades per al KIO (com el Dolphin, el Kate o el Gwenview) per accedir i editar fitxers del Drive de Google en el núvol.</p>
@@ -62,6 +65,7 @@
<p xml:lang="fi">KIO GDrive on KIO-asiakas, joka sallii KIO-sovellusten (kuten Dolphinin, Katen tai Gwenview’n) päästä käsiksi Google Driven tiedostoihin pilvessä.</p>
<p xml:lang="fr">KIO GDrive est un module d'entrée / sortie qui permet aux applications prenant en charge KIO (comme Dolphin, Kate ou Gwenview) d'accéder aux fichiers stockés en ligne sur Google Drive et de les modifier.</p>
<p xml:lang="gl">KIO GDrive é un escravo de KIO que permite aos aplicativos que usan KIO (como Dolphin, Kate ou Gwenview) acceder e editar ficheiros de Google Drive na nube.</p>
+ <p xml:lang="id">KIO GDrive adalah sebuah KIO slave yang memungkinkan aplikasi KIO-aware (sepertihalnya Dolphin, Kate or Gwenview) untuk mengakses dan mengedit file-file Google Drive di cloud.</p>
<p xml:lang="it">KIO GDrive è un KIO slave che consente alle applicazioni che gestiscono KIO (come Dolphin, Kate o Gwenview) di accedere e modificare i file di Google Drive sul cloud.</p>
<p xml:lang="ko">KIO GDrive는 KIO를 사용할 수 있는 프로그램(Dolphin, Kate, Gwenview 등)에서 Google 드라이브에 저장된 파일을 보고 편집할 수 있는 KIO 슬레이브입니다.</p>
<p xml:lang="nl">KIO GDrive is een KIO-slave die met KIO bekende toepassingen (zoals Dolphin, Kate of Gwenview) toegang geeft tot bestanden en deze bewerkt op Google Drive in de cloud.</p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/kaccounts/gdrive.notifyrc new/kio-gdrive-1.2.6/kaccounts/gdrive.notifyrc
--- old/kio-gdrive-1.2.5/kaccounts/gdrive.notifyrc 2018-10-21 13:25:48.000000000 +0200
+++ new/kio-gdrive-1.2.6/kaccounts/gdrive.notifyrc 2019-05-19 13:00:51.000000000 +0200
@@ -24,6 +24,7 @@
Comment[uk]=KIO GDrive
Comment[x-test]=xxKIO GDrivexx
Comment[zh_CN]=KIO GDrive
+Comment[zh_TW]=KIO GDrive
[Event/new-account-added]
Name=New Account Added
@@ -50,6 +51,7 @@
Name[uk]=Додано новий обліковий запис
Name[x-test]=xxNew Account Addedxx
Name[zh_CN]=新帐户已添加
+Name[zh_TW]=已新增帳號
Comment= Shortcut to browse Google Drive files as soon as a new Google account has been added.
Comment[ca]=Drecera per explorar els fitxers de Google Drive tan aviat com s'afegeixi un compte nou de Google.
Comment[ca@valencia]=Drecera per explorar els fitxers de Google Drive tan prompte com s'afija un compte nou de Google.
@@ -72,4 +74,5 @@
Comment[uk]=Кнопка для перегляду файлів Google Диск після додавання нового облікового запису Google.
Comment[x-test]=xx Shortcut to browse Google Drive files as soon as a new Google account has been added.xx
Comment[zh_CN]= 浏览 Google 云端硬盘的文件的快捷方式,只要 Google 账号被添加即可使用。
+Comment[zh_TW]=只要新增 Google 帳號即可以快速瀏覽 Google 雲端硬碟上的檔案。
Action=Popup
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/ca/kio5_gdrive.po new/kio-gdrive-1.2.6/po/ca/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/ca/kio5_gdrive.po 2018-10-21 13:26:00.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/ca/kio5_gdrive.po 2019-05-19 13:01:05.000000000 +0200
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: kio5_gdrive\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2017-11-23 22:43+0100\n"
"Last-Translator: Josep Ma. Ferrer <txemaq(a)gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/ca(a)valencia/kio5_gdrive.po new/kio-gdrive-1.2.6/po/ca(a)valencia/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/ca(a)valencia/kio5_gdrive.po 2018-10-21 13:26:00.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/ca(a)valencia/kio5_gdrive.po 2019-05-19 13:01:05.000000000 +0200
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: kio5_gdrive\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2017-11-23 22:43+0100\n"
"Last-Translator: Josep Ma. Ferrer <txemaq(a)gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/cs/kio5_gdrive.po new/kio-gdrive-1.2.6/po/cs/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/cs/kio5_gdrive.po 2018-10-21 13:26:00.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/cs/kio5_gdrive.po 2019-05-19 13:01:05.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2017-11-30 09:44+0100\n"
"Last-Translator: Vit Pelcak <vit(a)pelcak.org>\n"
"Language-Team: Czech <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/da/kio5_gdrive.po new/kio-gdrive-1.2.6/po/da/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/da/kio5_gdrive.po 2018-10-21 13:26:01.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/da/kio5_gdrive.po 2019-05-19 13:01:05.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2017-07-23 12:57+0100\n"
"Last-Translator: Martin Schlander <mschlander(a)opensuse.org>\n"
"Language-Team: Danish <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/de/kio5_gdrive.po new/kio-gdrive-1.2.6/po/de/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/de/kio5_gdrive.po 2018-10-21 13:26:01.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/de/kio5_gdrive.po 2019-05-19 13:01:05.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2017-11-26 21:23+0100\n"
"Last-Translator: Burkhard Lück <lueck(a)hube-lueck.de>\n"
"Language-Team: German <kde-i18n-de(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/en_GB/kio5_gdrive.po new/kio-gdrive-1.2.6/po/en_GB/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/en_GB/kio5_gdrive.po 2018-10-21 13:26:02.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/en_GB/kio5_gdrive.po 2019-05-19 13:01:06.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2017-11-26 20:53+0000\n"
"Last-Translator: Steve Allewell <steve.allewell(a)gmail.com>\n"
"Language-Team: British English <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/es/kio5_gdrive.po new/kio-gdrive-1.2.6/po/es/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/es/kio5_gdrive.po 2018-10-21 13:26:02.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/es/kio5_gdrive.po 2019-05-19 13:01:06.000000000 +0200
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: kio5_gdrive\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2018-01-05 23:40+0100\n"
"Last-Translator: Javier Vinal <fjvinal(a)gmail.com>\n"
"Language-Team: Spanish <kde-l10n-es(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/et/kio5_gdrive.po new/kio-gdrive-1.2.6/po/et/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/et/kio5_gdrive.po 2018-10-21 13:26:02.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/et/kio5_gdrive.po 2019-05-19 13:01:06.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2016-08-20 03:09+0300\n"
"Last-Translator: Marek Laane <qiilaq69(a)gmail.com>\n"
"Language-Team: Estonian <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/fi/kio5_gdrive.po new/kio-gdrive-1.2.6/po/fi/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/fi/kio5_gdrive.po 2018-10-21 13:26:03.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/fi/kio5_gdrive.po 2019-05-19 13:01:07.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2018-07-24 20:23+0200\n"
"Last-Translator: Tommi Nieminen <translator(a)legisign.org>\n"
"Language-Team: Finnish <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/fr/kio5_gdrive.po new/kio-gdrive-1.2.6/po/fr/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/fr/kio5_gdrive.po 2018-10-21 13:26:03.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/fr/kio5_gdrive.po 2019-05-19 13:01:07.000000000 +0200
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2018-06-25 17:09+0800\n"
"Last-Translator: Simon Depiets <sdepiets(a)gmail.com>\n"
"Language-Team: French <kde-francophone(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/gl/kio5_gdrive.po new/kio-gdrive-1.2.6/po/gl/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/gl/kio5_gdrive.po 2018-10-21 13:26:03.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/gl/kio5_gdrive.po 2019-05-19 13:01:08.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2018-04-20 19:42+0100\n"
"Last-Translator: Adrian Chaves <adrian(a)chaves.io>\n"
"Language-Team: Galician <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/it/kio5_gdrive.po new/kio-gdrive-1.2.6/po/it/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/it/kio5_gdrive.po 2018-10-21 13:26:05.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/it/kio5_gdrive.po 2019-05-19 13:01:10.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: kio-gdrive\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2017-11-25 23:50+0100\n"
"Last-Translator: Luigi Toscano <luigi.toscano(a)tiscali.it>\n"
"Language-Team: Italian <kde-i18n-it(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/ja/kio5_gdrive.po new/kio-gdrive-1.2.6/po/ja/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/ja/kio5_gdrive.po 2018-10-21 13:26:06.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/ja/kio5_gdrive.po 2019-05-19 13:01:10.000000000 +0200
@@ -2,11 +2,11 @@
msgstr ""
"Project-Id-Version: kio5_gdrive\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2016-08-15 22:30-0700\n"
"Last-Translator: Japanese KDE translation team <kde-jp(a)kde.org>\n"
"Language-Team: Japanese <kde-jp(a)kde.org>\n"
-"Language: \n"
+"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/ko/kio5_gdrive.po new/kio-gdrive-1.2.6/po/ko/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/ko/kio5_gdrive.po 2018-10-21 13:26:07.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/ko/kio5_gdrive.po 2019-05-19 13:01:11.000000000 +0200
@@ -6,10 +6,10 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2018-08-17 10:59+0100\n"
"Last-Translator: Shinjo Park <kde(a)peremen.name>\n"
-"Language-Team: Korean <kde-i18n-doc(a)kde.org>\n"
+"Language-Team: Korean <kde-kr(a)kde.org>\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/nl/kio5_gdrive.po new/kio-gdrive-1.2.6/po/nl/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/nl/kio5_gdrive.po 2018-10-21 13:26:08.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/nl/kio5_gdrive.po 2019-05-19 13:01:14.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2017-11-23 14:39+0100\n"
"Last-Translator: Freek de Kruijf <freekdekruijf(a)kde.nl>\n"
"Language-Team: Dutch <kde-i18n-nl(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/nn/kio5_gdrive.po new/kio-gdrive-1.2.6/po/nn/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/nn/kio5_gdrive.po 2018-10-21 13:26:09.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/nn/kio5_gdrive.po 2019-05-19 13:01:14.000000000 +0200
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2018-05-27 12:26+0100\n"
"Last-Translator: Karl Ove Hufthammer <karl(a)huftis.org>\n"
"Language-Team: Norwegian Nynorsk <i18n-nn(a)lister.ping.uio.no>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/pl/kio5_gdrive.po new/kio-gdrive-1.2.6/po/pl/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/pl/kio5_gdrive.po 2018-10-21 13:26:10.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/pl/kio5_gdrive.po 2019-05-19 13:01:15.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2017-12-02 07:24+0100\n"
"Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz(a)gmail.com>\n"
"Language-Team: Polish <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/pt/kio5_gdrive.po new/kio-gdrive-1.2.6/po/pt/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/pt/kio5_gdrive.po 2018-10-21 13:26:10.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/pt/kio5_gdrive.po 2019-05-19 13:01:15.000000000 +0200
@@ -2,7 +2,7 @@
msgstr ""
"Project-Id-Version: kio5_gdrive\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2017-11-23 10:26+0000\n"
"Last-Translator: José Nuno Coelho Pires <zepires(a)gmail.com>\n"
"Language-Team: Portuguese <kde-i18n-pt(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/pt_BR/kio5_gdrive.po new/kio-gdrive-1.2.6/po/pt_BR/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/pt_BR/kio5_gdrive.po 2018-10-21 13:26:10.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/pt_BR/kio5_gdrive.po 2019-05-19 13:01:15.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2018-02-21 09:43-0300\n"
"Last-Translator: Luiz Fernando Ranghetti <elchevive(a)opensuse.org>\n"
"Language-Team: Portuguese <kde-i18n-pt_BR(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/ru/docs/kioslave5/gdrive/index.docbook new/kio-gdrive-1.2.6/po/ru/docs/kioslave5/gdrive/index.docbook
--- old/kio-gdrive-1.2.5/po/ru/docs/kioslave5/gdrive/index.docbook 1970-01-01 01:00:00.000000000 +0100
+++ new/kio-gdrive-1.2.6/po/ru/docs/kioslave5/gdrive/index.docbook 2019-05-19 13:01:29.000000000 +0200
@@ -0,0 +1,81 @@
+<?xml version="1.0" ?>
+<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN" "dtd/kdedbx45.dtd" [
+<!ENTITY % addindex "IGNORE">
+<!ENTITY % Russian "INCLUDE">
+]>
+
+<article lang="&language;" id="gdrive">
+<title
+>gdrive</title>
+
+<articleinfo>
+
+<authorgroup>
+ <author
+><firstname
+>Elvis</firstname
+><surname
+>Angelaccio</surname
+> <affiliation
+> <address
+> <email
+>elvis.angelaccio(a)kde.org</email>
+ </address>
+ </affiliation>
+ </author>
+<othercredit role="translator"
+><firstname
+>Александр</firstname
+><surname
+>Поташев</surname
+><affiliation
+><address
+><email
+>aspotashev(a)gmail.com</email
+></address
+></affiliation
+><contrib
+>Перевод на русский язык</contrib
+></othercredit
+>
+</authorgroup>
+
+<date
+>3 октября 2016 г.</date>
+<releaseinfo
+>kio-gdrive 1.0.1</releaseinfo>
+
+</articleinfo>
+
+<para
+>KIO GDrive позволяет просматривать и редактировать файлы, хранящиеся на Google Диске, в приложениях KDE с поддержкой KIO.</para>
+
+<para
+>Протокол gdrive можно использовать, например, следующим образом:</para>
+<para
+><userinput
+>gdrive://</userinput
+> или <userinput
+>gdrive://<replaceable
+>foo(a)example.com</replaceable
+></userinput
+>.</para>
+
+<para
+>Первый адрес откроет диалог входа в учётную запись по OAuth, если ещё не был выполнен вход ни в одну учётную запись Google Диска, либо список доступных учётных записей — в противном случае.</para>
+
+<para
+>Адрес <userinput
+>gdrive://</userinput
+> также можно использовать для добавления ещё одной учётной записи.</para>
+
+<para
+>По адресу <userinput
+>gdrive://<replaceable
+>foo(a)example.com</replaceable
+></userinput
+> будут показаны файлы и каталоги верхнего уровня, хранящиеся на Google Диске для учётной записи <userinput
+>foo(a)example.com</userinput
+>.</para>
+
+</article>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/ru/kio5_gdrive.po new/kio-gdrive-1.2.6/po/ru/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/ru/kio5_gdrive.po 2018-10-21 13:26:10.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/ru/kio5_gdrive.po 2019-05-19 13:01:16.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2017-10-15 14:34+0300\n"
"Last-Translator: Alexander Potashev <aspotashev(a)gmail.com>\n"
"Language-Team: Russian <kde-russian(a)lists.kde.ru>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/sk/kio5_gdrive.po new/kio-gdrive-1.2.6/po/sk/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/sk/kio5_gdrive.po 2018-10-21 13:26:11.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/sk/kio5_gdrive.po 2019-05-19 13:01:17.000000000 +0200
@@ -4,7 +4,7 @@
msgstr ""
"Project-Id-Version: kio5_gdrive\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2017-11-24 20:34+0100\n"
"Last-Translator: Roman Paholik <wizzardsk(a)gmail.com>\n"
"Language-Team: Slovak <kde-sk(a)linux.sk>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/sl/kio5_gdrive.po new/kio-gdrive-1.2.6/po/sl/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/sl/kio5_gdrive.po 2018-10-21 13:26:11.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/sl/kio5_gdrive.po 2019-05-19 13:01:17.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2018-01-12 18:23+0100\n"
"Last-Translator: Andrej Mernik <andrejm(a)ubuntu.si>\n"
"Language-Team: Slovenian <lugos-slo(a)lugos.si>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/sv/kio5_gdrive.po new/kio-gdrive-1.2.6/po/sv/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/sv/kio5_gdrive.po 2018-10-21 13:26:12.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/sv/kio5_gdrive.po 2019-05-19 13:01:18.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2017-11-26 10:53+0100\n"
"Last-Translator: Stefan Asserhäll <stefan.asserhall(a)bredband.net>\n"
"Language-Team: Swedish <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/uk/kio5_gdrive.po new/kio-gdrive-1.2.6/po/uk/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/uk/kio5_gdrive.po 2018-10-21 13:26:14.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/uk/kio5_gdrive.po 2019-05-19 13:01:20.000000000 +0200
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: kio5_gdrive\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
"PO-Revision-Date: 2017-11-23 19:47+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor(a)ukr.net>\n"
"Language-Team: Ukrainian <kde-i18n-uk(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/zh_CN/kio5_gdrive.po new/kio-gdrive-1.2.6/po/zh_CN/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/zh_CN/kio5_gdrive.po 2018-10-21 13:26:15.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/zh_CN/kio5_gdrive.po 2019-05-19 13:01:21.000000000 +0200
@@ -6,9 +6,9 @@
msgstr ""
"Project-Id-Version: kdeorg\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
-"PO-Revision-Date: 2018-10-09 18:49\n"
-"Last-Translator: guoyunhe <i(a)guoyunhe.me>\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
+"PO-Revision-Date: 2019-05-05 22:34\n"
+"Last-Translator: Guo Yunhe (guoyunhe)\n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kio-gdrive-1.2.5/po/zh_TW/kio5_gdrive.po new/kio-gdrive-1.2.6/po/zh_TW/kio5_gdrive.po
--- old/kio-gdrive-1.2.5/po/zh_TW/kio5_gdrive.po 2018-10-21 13:26:15.000000000 +0200
+++ new/kio-gdrive-1.2.6/po/zh_TW/kio5_gdrive.po 2019-05-19 13:01:21.000000000 +0200
@@ -2,27 +2,26 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Jeff Huang <s8321414(a)gmail.com>, 2016.
+# pan93412 <pan93412(a)gmail.com>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: kio5_gdrive\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2018-06-30 06:21+0200\n"
-"PO-Revision-Date: 2016-11-24 08:13+0800\n"
-"Last-Translator: Jeff Huang <s8321414(a)gmail.com>\n"
-"Language-Team: Chinese <kde-i18n-doc(a)kde.org>\n"
+"POT-Creation-Date: 2019-03-18 07:49+0100\n"
+"PO-Revision-Date: 2018-12-15 14:14+0800\n"
+"Last-Translator: pan93412 <pan93412(a)gmail.com>\n"
+"Language-Team: Chinese <zh-l10n(a)linux.org.tw>\n"
"Language: Traditional Chinese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 2.0\n"
+"X-Generator: Lokalize 18.12.0\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: kaccounts/kaccountsplugin.cpp:44
-#, fuzzy, kde-format
-#| msgctxt "login in a new google account"
-#| msgid "New account"
+#, kde-format
msgid "New Online Account"
-msgstr "新增帳戶"
+msgstr "新增線上帳號"
#: kaccounts/kaccountsplugin.cpp:45
#, kde-kuit-format
@@ -31,16 +30,17 @@
"You can now manage the Google Drive files of your <emphasis strong='true'>"
"%1</emphasis> account."
msgstr ""
+"您可以管理您的 <emphasis strong='true'>%1</emphasis> 的 Google 雲端硬碟檔案。"
#: kaccounts/kaccountsplugin.cpp:46
#, kde-format
msgid "Open"
-msgstr ""
+msgstr "開啟"
#: src/kio_gdrive.cpp:269
#, kde-format
msgid "There are no Google Drive accounts enabled. Please add at least one."
-msgstr ""
+msgstr "未啟用 Google 雲端硬碟的帳號。請至少新增一個。"
#: src/kio_gdrive.cpp:292
#, kde-format
1
0
Hello community,
here is the log from the commit of package pdns-recursor for openSUSE:Factory checked in at 2019-05-22 11:17:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pdns-recursor (Old)
and /work/SRC/openSUSE:Factory/.pdns-recursor.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pdns-recursor"
Wed May 22 11:17:08 2019 rev:28 rq:704461 version:4.1.13
Changes:
--------
--- /work/SRC/openSUSE:Factory/pdns-recursor/pdns-recursor.changes 2019-04-26 22:55:51.449260722 +0200
+++ /work/SRC/openSUSE:Factory/.pdns-recursor.new.5148/pdns-recursor.changes 2019-05-22 11:17:09.654483544 +0200
@@ -1,0 +2,8 @@
+Tue May 21 12:17:26 UTC 2019 - Adam Majer <adam.majer(a)suse.de>
+
+- update to 4.1.13:
+ * Add the disable-real-memory-usage setting to skip expensive
+ collection of detailed memory usage info
+ * Fix DNSSEC validation of wildcards expanded onto themselves.
+
+-------------------------------------------------------------------
Old:
----
pdns-recursor-4.1.12.tar.bz2
pdns-recursor-4.1.12.tar.bz2.sig
New:
----
pdns-recursor-4.1.13.tar.bz2
pdns-recursor-4.1.13.tar.bz2.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pdns-recursor.spec ++++++
--- /var/tmp/diff_new_pack.qxZkbG/_old 2019-05-22 11:17:10.166483185 +0200
+++ /var/tmp/diff_new_pack.qxZkbG/_new 2019-05-22 11:17:10.170483183 +0200
@@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@@ -35,7 +35,7 @@
%endif
Name: pdns-recursor
-Version: 4.1.12
+Version: 4.1.13
Release: 0
BuildRequires: autoconf
BuildRequires: automake
++++++ pdns-recursor-4.1.12.tar.bz2 -> pdns-recursor-4.1.13.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-recursor-4.1.12/.version new/pdns-recursor-4.1.13/.version
--- old/pdns-recursor-4.1.12/.version 2019-04-02 12:31:34.000000000 +0200
+++ new/pdns-recursor-4.1.13/.version 2019-05-21 07:47:40.000000000 +0200
@@ -1 +1 @@
-4.1.12
+4.1.13
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-recursor-4.1.12/configure new/pdns-recursor-4.1.13/configure
--- old/pdns-recursor-4.1.12/configure 2019-04-02 12:31:33.000000000 +0200
+++ new/pdns-recursor-4.1.13/configure 2019-05-21 07:47:39.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for pdns-recursor 4.1.12.
+# Generated by GNU Autoconf 2.69 for pdns-recursor 4.1.13.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@
# Identity of this package.
PACKAGE_NAME='pdns-recursor'
PACKAGE_TARNAME='pdns-recursor'
-PACKAGE_VERSION='4.1.12'
-PACKAGE_STRING='pdns-recursor 4.1.12'
+PACKAGE_VERSION='4.1.13'
+PACKAGE_STRING='pdns-recursor 4.1.13'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1445,7 +1445,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures pdns-recursor 4.1.12 to adapt to many kinds of systems.
+\`configure' configures pdns-recursor 4.1.13 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1515,7 +1515,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of pdns-recursor 4.1.12:";;
+ short | recursive ) echo "Configuration of pdns-recursor 4.1.13:";;
esac
cat <<\_ACEOF
@@ -1677,7 +1677,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-pdns-recursor configure 4.1.12
+pdns-recursor configure 4.1.13
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2270,7 +2270,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by pdns-recursor $as_me 4.1.12, which was
+It was created by pdns-recursor $as_me 4.1.13, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3133,7 +3133,7 @@
# Define the identity of the package.
PACKAGE='pdns-recursor'
- VERSION='4.1.12'
+ VERSION='4.1.13'
cat >>confdefs.h <<_ACEOF
@@ -21846,7 +21846,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by pdns-recursor $as_me 4.1.12, which was
+This file was extended by pdns-recursor $as_me 4.1.13, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -21912,7 +21912,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-pdns-recursor config.status 4.1.12
+pdns-recursor config.status 4.1.13
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-recursor-4.1.12/effective_tld_names.dat new/pdns-recursor-4.1.13/effective_tld_names.dat
--- old/pdns-recursor-4.1.12/effective_tld_names.dat 2019-04-02 12:32:28.000000000 +0200
+++ new/pdns-recursor-4.1.13/effective_tld_names.dat 2019-05-21 07:48:32.000000000 +0200
@@ -6191,34 +6191,33 @@
edu.to
mil.to
-// subTLDs: https://www.nic.tr/forms/eng/policies.pdf
-// and: https://www.nic.tr/forms/politikalar.pdf
-// Submitted by <mehmetgurevin(a)gmail.com>
+// tr : https://nic.tr/
+// https://nic.tr/forms/eng/policies.pdf
+// https://nic.tr/index.php?USRACTN=PRICELST
tr
-com.tr
-info.tr
-biz.tr
-net.tr
-org.tr
-web.tr
-gen.tr
-tv.tr
av.tr
-dr.tr
bbs.tr
-name.tr
-tel.tr
-gov.tr
bel.tr
-pol.tr
+biz.tr
+com.tr
+dr.tr
+edu.tr
+gen.tr
+gov.tr
+info.tr
mil.tr
k12.tr
-edu.tr
kep.tr
-
+name.tr
+net.tr
+org.tr
+pol.tr
+tel.tr
+tsk.tr
+tv.tr
+web.tr
// Used by Northern Cyprus
nc.tr
-
// Used by government agencies of Northern Cyprus
gov.nc.tr
@@ -7941,9 +7940,6 @@
// dog : 2014-12-04 Binky Moon, LLC
dog
-// doha : 2014-09-18 Communications Regulatory Authority (CRA)
-doha
-
// domains : 2013-10-17 Binky Moon, LLC
domains
@@ -10844,6 +10840,10 @@
// Submitted by Anthony Voutas <anthony(a)backplane.io>
backplaneapp.io
+// Banzai Cloud
+// Submitted by Gabor Kozma <info(a)banzaicloud.com>
+app.banzaicloud.io
+
// BetaInABox
// Submitted by Adrian <adrian(a)betainabox.com>
betainabox.com
@@ -10879,6 +10879,7 @@
// Bytemark Hosting : https://www.bytemark.co.uk
// Submitted by Paul Cammish <paul.cammish(a)bytemark.co.uk>
+uk0.bigv.io
dh.bytemark.co.uk
vm.bytemark.co.uk
@@ -10947,6 +10948,10 @@
// Submitted by Alex Stoddard <alex.stoddard(a)citrix.com>
xenapponazure.com
+// Civilized Discourse Construction Kit, Inc. : https://www.discourse.org/
+// Submitted by Rishabh Nambiar <rishabh.nambiar(a)discourse.org>
+discourse.group
+
// ClearVox : http://www.clearvox.nl/
// Submitted by Leon Rowland <leon(a)clearvox.nl>
virtueeldomein.nl
@@ -11717,6 +11722,11 @@
// Submitted by Alex Hanselka <alex(a)gitlab.com>
gitlab.io
+// GOV.UK Platform as a Service : https://www.cloud.service.gov.uk/
+// Submitted by Tom Whitwell <tom.whitwell(a)digital.cabinet-office.gov.uk>
+cloudapps.digital
+london.cloudapps.digital
+
// UKHomeOffice : https://www.gov.uk/government/organisations/home-office
// Submitted by Jon Shanks <jon.shanks(a)digital.homeoffice.gov.uk>
homeoffice.gov.uk
@@ -12084,6 +12094,10 @@
org.ru
pp.ru
+// Nabu Casa : https://www.nabucasa.com
+// Submitted by Paulus Schoutsen <infra(a)nabucasa.com>
+ui.nabu.casa
+
// Netlify : https://www.netlify.com
// Submitted by Jessica Parsons <jessica(a)netlify.com>
bitballoon.com
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-recursor-4.1.12/pdns_recursor.1 new/pdns-recursor-4.1.13/pdns_recursor.1
--- old/pdns-recursor-4.1.12/pdns_recursor.1 2019-04-02 12:32:28.000000000 +0200
+++ new/pdns-recursor-4.1.13/pdns_recursor.1 2019-05-21 07:48:32.000000000 +0200
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "PDNS_RECURSOR" "1" "Apr 02, 2019" "4.1" "PowerDNS Recursor"
+.TH "PDNS_RECURSOR" "1" "May 21, 2019" "4.1" "PowerDNS Recursor"
.SH NAME
pdns_recursor \- The PowerDNS Recursor binary
.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-recursor-4.1.12/pdns_recursor.cc new/pdns-recursor-4.1.13/pdns_recursor.cc
--- old/pdns-recursor-4.1.12/pdns_recursor.cc 2019-04-02 12:31:21.000000000 +0200
+++ new/pdns-recursor-4.1.13/pdns_recursor.cc 2019-05-21 07:47:27.000000000 +0200
@@ -3652,6 +3652,7 @@
::arg().setSwitch("log-rpz-changes", "Log additions and removals to RPZ zones at Info level")="no";
::arg().set("distribution-load-factor", "The load factor used when PowerDNS is distributing queries to worker threads")="0.0";
+ ::arg().setSwitch("disable-real-memory-usage", "Disable expensive real-memory-usage metric")= "no";
::arg().setCmd("help","Provide a helpful message");
::arg().setCmd("version","Print version string");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-recursor-4.1.12/pubsuffix.cc new/pdns-recursor-4.1.13/pubsuffix.cc
--- old/pdns-recursor-4.1.12/pubsuffix.cc 2019-04-02 12:32:28.000000000 +0200
+++ new/pdns-recursor-4.1.13/pubsuffix.cc 2019-05-21 07:48:32.000000000 +0200
@@ -5015,26 +5015,27 @@
"org.to",
"edu.to",
"mil.to",
-"com.tr",
-"info.tr",
-"biz.tr",
-"net.tr",
-"org.tr",
-"web.tr",
-"gen.tr",
-"tv.tr",
"av.tr",
-"dr.tr",
"bbs.tr",
-"name.tr",
-"tel.tr",
-"gov.tr",
"bel.tr",
-"pol.tr",
+"biz.tr",
+"com.tr",
+"dr.tr",
+"edu.tr",
+"gen.tr",
+"gov.tr",
+"info.tr",
"mil.tr",
"k12.tr",
-"edu.tr",
"kep.tr",
+"name.tr",
+"net.tr",
+"org.tr",
+"pol.tr",
+"tel.tr",
+"tsk.tr",
+"tv.tr",
+"web.tr",
"nc.tr",
"gov.nc.tr",
"co.tt",
@@ -5588,6 +5589,7 @@
"wpcomstaging.com",
"myfritz.net",
"backplaneapp.io",
+"app.banzaicloud.io",
"betainabox.com",
"bnr.la",
"blackbaudcdn.net",
@@ -5600,6 +5602,7 @@
"bplaced.net",
"square7.net",
"browsersafetymark.io",
+"uk0.bigv.io",
"dh.bytemark.co.uk",
"vm.bytemark.co.uk",
"mycd.eu",
@@ -5638,6 +5641,7 @@
"c.la",
"certmgr.org",
"xenapponazure.com",
+"discourse.group",
"virtueeldomein.nl",
"cleverapps.io",
"c66.me",
@@ -6211,6 +6215,8 @@
"github.io",
"githubusercontent.com",
"gitlab.io",
+"cloudapps.digital",
+"london.cloudapps.digital",
"homeoffice.gov.uk",
"ro.im",
"shop.ro",
@@ -6436,6 +6442,7 @@
"net.ru",
"org.ru",
"pp.ru",
+"ui.nabu.casa",
"bitballoon.com",
"netlify.com",
"4u.com",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-recursor-4.1.12/rec_channel_rec.cc new/pdns-recursor-4.1.13/rec_channel_rec.cc
--- old/pdns-recursor-4.1.12/rec_channel_rec.cc 2019-04-02 12:31:21.000000000 +0200
+++ new/pdns-recursor-4.1.13/rec_channel_rec.cc 2019-05-21 07:47:27.000000000 +0200
@@ -884,6 +884,10 @@
return 0;
}
+uint64_t getFakeMemoryUsage(const std::string&) {
+ return 0;
+}
+
extern ResponseStats g_rs;
void registerAllStats()
@@ -1005,7 +1009,11 @@
addGetStat("noedns-outqueries", &g_stats.noEdnsOutQueries);
addGetStat("uptime", calculateUptime);
- addGetStat("real-memory-usage", boost::bind(getRealMemoryUsage, string()));
+ if (::arg().mustDo("disable-real-memory-usage"))
+ addGetStat("real-memory-usage", boost::bind(getFakeMemoryUsage, string()));
+ else
+ addGetStat("real-memory-usage", boost::bind(getRealMemoryUsage, string()));
+
addGetStat("fd-usage", boost::bind(getOpenFileDescriptors, string()));
// addGetStat("query-rate", getQueryRate);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-recursor-4.1.12/rec_control.1 new/pdns-recursor-4.1.13/rec_control.1
--- old/pdns-recursor-4.1.12/rec_control.1 2019-04-02 12:32:28.000000000 +0200
+++ new/pdns-recursor-4.1.13/rec_control.1 2019-05-21 07:48:32.000000000 +0200
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH "REC_CONTROL" "1" "Apr 02, 2019" "4.1" "PowerDNS Recursor"
+.TH "REC_CONTROL" "1" "May 21, 2019" "4.1" "PowerDNS Recursor"
.SH NAME
rec_control \- Command line tool to control a running Recursor
.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-recursor-4.1.12/syncres.cc new/pdns-recursor-4.1.13/syncres.cc
--- old/pdns-recursor-4.1.12/syncres.cc 2019-04-02 12:31:21.000000000 +0200
+++ new/pdns-recursor-4.1.13/syncres.cc 2019-05-21 07:47:27.000000000 +0200
@@ -1920,7 +1920,7 @@
return Bogus;
}
-RCode::rcodes_ SyncRes::updateCacheFromRecords(unsigned int depth, LWResult& lwr, const DNSName& qname, const QType& qtype, const DNSName& auth, bool wasForwarded, const boost::optional<Netmask> ednsmask, vState& state, bool& needWildcardProof, unsigned int& wildcardLabelsCount, bool rdQuery)
+RCode::rcodes_ SyncRes::updateCacheFromRecords(unsigned int depth, LWResult& lwr, const DNSName& qname, const QType& qtype, const DNSName& auth, bool wasForwarded, const boost::optional<Netmask> ednsmask, vState& state, bool& needWildcardProof, bool& gatherWildcardProof, unsigned int& wildcardLabelsCount, bool rdQuery)
{
bool wasForwardRecurse = wasForwarded && rdQuery;
tcache_t tcache;
@@ -1946,7 +1946,7 @@
/* if we have a positive answer synthetized from a wildcard,
we need to store the corresponding NSEC/NSEC3 records proving
that the exact name did not exist in the negative cache */
- if(needWildcardProof) {
+ if(gatherWildcardProof) {
if (nsecTypes.count(rec.d_type)) {
authorityRecs.push_back(std::make_shared<DNSRecord>(rec));
}
@@ -1964,9 +1964,20 @@
count can be lower than the name's label count if it was
synthetized from the wildcard. Note that the difference might
be > 1. */
- if (rec.d_name == qname && rrsig->d_labels < labelCount) {
- LOG(prefix<<qname<<": RRSIG indicates the name was synthetized from a wildcard, we need a wildcard proof"<<endl);
- needWildcardProof = true;
+ if (rec.d_name == qname && isWildcardExpanded(labelCount, rrsig)) {
+ gatherWildcardProof = true;
+ if (!isWildcardExpandedOntoItself(rec.d_name, labelCount, rrsig)) {
+ /* if we have a wildcard expanded onto itself, we don't need to prove
+ that the exact name doesn't exist because it actually does.
+ We still want to gather the corresponding NSEC/NSEC3 records
+ to pass them to our client in case it wants to validate by itself.
+ */
+ LOG(prefix<<qname<<": RRSIG indicates the name was synthetized from a wildcard, we need a wildcard proof"<<endl);
+ needWildcardProof = true;
+ }
+ else {
+ LOG(prefix<<qname<<": RRSIG indicates the name was synthetized from a wildcard expanded onto itself, we need to gather wildcard proof"<<endl);
+ }
wildcardLabelsCount = rrsig->d_labels;
}
@@ -2204,7 +2215,7 @@
return getDenial(csp, ne.d_name, ne.d_qtype.getCode(), referralToUnsigned, expectedState == NXQTYPE);
}
-bool SyncRes::processRecords(const std::string& prefix, const DNSName& qname, const QType& qtype, const DNSName& auth, LWResult& lwr, const bool sendRDQuery, vector<DNSRecord>& ret, set<DNSName>& nsset, DNSName& newtarget, DNSName& newauth, bool& realreferral, bool& negindic, vState& state, const bool needWildcardProof, const unsigned int wildcardLabelsCount)
+bool SyncRes::processRecords(const std::string& prefix, const DNSName& qname, const QType& qtype, const DNSName& auth, LWResult& lwr, const bool sendRDQuery, vector<DNSRecord>& ret, set<DNSName>& nsset, DNSName& newtarget, DNSName& newauth, bool& realreferral, bool& negindic, vState& state, const bool needWildcardProof, const bool gatherWildcardProof, const unsigned int wildcardLabelsCount)
{
bool done = false;
@@ -2263,7 +2274,7 @@
/* if we have a positive answer synthetized from a wildcard, we need to
return the corresponding NSEC/NSEC3 records from the AUTHORITY section
proving that the exact name did not exist */
- else if(needWildcardProof && (rec.d_type==QType::RRSIG || rec.d_type==QType::NSEC || rec.d_type==QType::NSEC3) && rec.d_place==DNSResourceRecord::AUTHORITY) {
+ else if(gatherWildcardProof && (rec.d_type==QType::RRSIG || rec.d_type==QType::NSEC || rec.d_type==QType::NSEC3) && rec.d_place==DNSResourceRecord::AUTHORITY) {
ret.push_back(rec); // enjoy your DNSSEC
}
// for ANY answers we *must* have an authoritative answer, unless we are forwarding recursively
@@ -2538,8 +2549,9 @@
}
bool needWildcardProof = false;
+ bool gatherWildcardProof = false;
unsigned int wildcardLabelsCount;
- *rcode = updateCacheFromRecords(depth, lwr, qname, qtype, auth, wasForwarded, ednsmask, state, needWildcardProof, wildcardLabelsCount, sendRDQuery);
+ *rcode = updateCacheFromRecords(depth, lwr, qname, qtype, auth, wasForwarded, ednsmask, state, needWildcardProof, gatherWildcardProof, wildcardLabelsCount, sendRDQuery);
if (*rcode != RCode::NoError) {
return true;
}
@@ -2551,7 +2563,7 @@
DNSName newauth;
DNSName newtarget;
- bool done = processRecords(prefix, qname, qtype, auth, lwr, sendRDQuery, ret, nsset, newtarget, newauth, realreferral, negindic, state, needWildcardProof, wildcardLabelsCount);
+ bool done = processRecords(prefix, qname, qtype, auth, lwr, sendRDQuery, ret, nsset, newtarget, newauth, realreferral, negindic, state, needWildcardProof, gatherWildcardProof, wildcardLabelsCount);
if(done){
LOG(prefix<<qname<<": status=got results, this level of recursion done"<<endl);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-recursor-4.1.12/syncres.hh new/pdns-recursor-4.1.13/syncres.hh
--- old/pdns-recursor-4.1.12/syncres.hh 2019-04-02 12:31:21.000000000 +0200
+++ new/pdns-recursor-4.1.13/syncres.hh 2019-05-21 07:47:27.000000000 +0200
@@ -753,8 +753,9 @@
bool throttledOrBlocked(const std::string& prefix, const ComboAddress& remoteIP, const DNSName& qname, const QType& qtype, bool pierceDontQuery);
vector<ComboAddress> retrieveAddressesForNS(const std::string& prefix, const DNSName& qname, vector<DNSName >::const_iterator& tns, const unsigned int depth, set<GetBestNSAnswer>& beenthere, const vector<DNSName >& rnameservers, NsSet& nameservers, bool& sendRDQuery, bool& pierceDontQuery, bool& flawedNSSet, bool cacheOnly);
- RCode::rcodes_ updateCacheFromRecords(unsigned int depth, LWResult& lwr, const DNSName& qname, const QType& qtype, const DNSName& auth, bool wasForwarded, const boost::optional<Netmask>, vState& state, bool& needWildcardProof, unsigned int& wildcardLabelsCount, bool sendRDQuery);
- bool processRecords(const std::string& prefix, const DNSName& qname, const QType& qtype, const DNSName& auth, LWResult& lwr, const bool sendRDQuery, vector<DNSRecord>& ret, set<DNSName>& nsset, DNSName& newtarget, DNSName& newauth, bool& realreferral, bool& negindic, vState& state, const bool needWildcardProof, const unsigned int wildcardLabelsCount);
+
+ RCode::rcodes_ updateCacheFromRecords(unsigned int depth, LWResult& lwr, const DNSName& qname, const QType& qtype, const DNSName& auth, bool wasForwarded, const boost::optional<Netmask>, vState& state, bool& needWildcardProof, bool& gatherWildcardProof, unsigned int& wildcardLabelsCount, bool sendRDQuery);
+ bool processRecords(const std::string& prefix, const DNSName& qname, const QType& qtype, const DNSName& auth, LWResult& lwr, const bool sendRDQuery, vector<DNSRecord>& ret, set<DNSName>& nsset, DNSName& newtarget, DNSName& newauth, bool& realreferral, bool& negindic, vState& state, const bool needWildcardProof, const bool gatherwildcardProof, const unsigned int wildcardLabelsCount);
bool doSpecialNamesResolve(const DNSName &qname, const QType &qtype, const uint16_t qclass, vector<DNSRecord> &ret);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-recursor-4.1.12/test-syncres_cc.cc new/pdns-recursor-4.1.13/test-syncres_cc.cc
--- old/pdns-recursor-4.1.12/test-syncres_cc.cc 2019-04-02 12:31:21.000000000 +0200
+++ new/pdns-recursor-4.1.13/test-syncres_cc.cc 2019-05-21 07:47:27.000000000 +0200
@@ -6153,6 +6153,123 @@
BOOST_CHECK_EQUAL(queriesCount, 9);
}
+BOOST_AUTO_TEST_CASE(test_dnssec_validation_wildcard_expanded_onto_itself) {
+ std::unique_ptr<SyncRes> sr;
+ initSR(sr, true);
+
+ setDNSSECValidation(sr, DNSSECMode::ValidateAll);
+
+ primeHints();
+ const DNSName target("*.powerdns.com.");
+ testkeysset_t keys;
+
+ auto luaconfsCopy = g_luaconfs.getCopy();
+ luaconfsCopy.dsAnchors.clear();
+ generateKeyMaterial(g_rootdnsname, DNSSECKeeper::ECDSA256, DNSSECKeeper::SHA256, keys, luaconfsCopy.dsAnchors);
+ generateKeyMaterial(DNSName("com."), DNSSECKeeper::ECDSA256, DNSSECKeeper::SHA256, keys, luaconfsCopy.dsAnchors);
+ generateKeyMaterial(DNSName("powerdns.com."), DNSSECKeeper::ECDSA256, DNSSECKeeper::SHA256, keys, luaconfsCopy.dsAnchors);
+
+ g_luaconfs.setState(luaconfsCopy);
+
+ sr->setAsyncCallback([target,keys](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, std::shared_ptr<RemoteLogger> outgoingLogger, LWResult* res, bool* chained) {
+
+ if (type == QType::DS || type == QType::DNSKEY) {
+ if (domain == target) {
+ const auto auth = DNSName("powerdns.com.");
+ /* we don't want a cut there */
+ setLWResult(res, 0, true, false, true);
+ addRecordToLW(res, auth, QType::SOA, "foo. bar. 2017032800 1800 900 604800 86400", DNSResourceRecord::AUTHORITY, 86400);
+ addRRSIG(keys, res->d_records, auth, 300);
+ /* add a NSEC denying the DS */
+ std::set<uint16_t> types = { QType::NSEC };
+ addNSECRecordToLW(domain, DNSName("z") + domain, types, 600, res->d_records);
+ addRRSIG(keys, res->d_records, auth, 300);
+ return 1;
+ }
+ return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
+ }
+ else {
+ setLWResult(res, 0, true, false, true);
+ addRecordToLW(res, domain, QType::A, "192.0.2.42");
+ addRRSIG(keys, res->d_records, DNSName("powerdns.com."), 300, false, boost::none, DNSName("*.powerdns.com"));
+ /* we don't _really_ need to add the proof that the exact name does not exist because it does,
+ it's the wildcard itself, but let's do it so other validators don't choke on it */
+ addNSECRecordToLW(DNSName("*.powerdns.com."), DNSName("wwz.powerdns.com."), { QType::A, QType::NSEC, QType::RRSIG }, 600, res->d_records);
+ addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300, false, boost::none, DNSName("*.powerdns.com"));
+ return 1;
+ }
+ });
+
+ vector<DNSRecord> ret;
+ int res = sr->beginResolve(target, QType(QType::A), QClass::IN, ret);
+ BOOST_CHECK_EQUAL(res, RCode::NoError);
+ BOOST_CHECK_EQUAL(sr->getValidationState(), Secure);
+ /* A + RRSIG, NSEC + RRSIG */
+ BOOST_REQUIRE_EQUAL(ret.size(), 4);
+}
+
+BOOST_AUTO_TEST_CASE(test_dnssec_validation_wildcard_like_expanded_from_wildcard) {
+ std::unique_ptr<SyncRes> sr;
+ initSR(sr, true);
+
+ setDNSSECValidation(sr, DNSSECMode::ValidateAll);
+
+ primeHints();
+ const DNSName target("*.sub.powerdns.com.");
+ testkeysset_t keys;
+
+ auto luaconfsCopy = g_luaconfs.getCopy();
+ luaconfsCopy.dsAnchors.clear();
+ generateKeyMaterial(g_rootdnsname, DNSSECKeeper::ECDSA256, DNSSECKeeper::SHA256, keys, luaconfsCopy.dsAnchors);
+ generateKeyMaterial(DNSName("com."), DNSSECKeeper::ECDSA256, DNSSECKeeper::SHA256, keys, luaconfsCopy.dsAnchors);
+ generateKeyMaterial(DNSName("powerdns.com."), DNSSECKeeper::ECDSA256, DNSSECKeeper::SHA256, keys, luaconfsCopy.dsAnchors);
+
+ g_luaconfs.setState(luaconfsCopy);
+
+ sr->setAsyncCallback([target,keys](const ComboAddress& ip, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int EDNS0Level, struct timeval* now, boost::optional<Netmask>& srcmask, boost::optional<const ResolveContext&> context, std::shared_ptr<RemoteLogger> outgoingLogger, LWResult* res, bool* chained) {
+
+ if (type == QType::DS || type == QType::DNSKEY) {
+ if (domain == target) {
+ const auto auth = DNSName("powerdns.com.");
+ /* we don't want a cut there */
+ setLWResult(res, 0, true, false, true);
+ addRecordToLW(res, auth, QType::SOA, "foo. bar. 2017032800 1800 900 604800 86400", DNSResourceRecord::AUTHORITY, 86400);
+ addRRSIG(keys, res->d_records, auth, 300);
+ addNSECRecordToLW(DNSName("*.powerdns.com."), DNSName("wwz.powerdns.com."), { QType::A, QType::NSEC, QType::RRSIG }, 600, res->d_records);
+ addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300, false, boost::none, DNSName("*.powerdns.com"));
+ return 1;
+ }
+ else if (domain == DNSName("sub.powerdns.com.")) {
+ const auto auth = DNSName("powerdns.com.");
+ /* we don't want a cut there */
+ setLWResult(res, 0, true, false, true);
+ addRecordToLW(res, auth, QType::SOA, "foo. bar. 2017032800 1800 900 604800 86400", DNSResourceRecord::AUTHORITY, 86400);
+ addRRSIG(keys, res->d_records, auth, 300);
+ /* add a NSEC denying the DS */
+ addNSECRecordToLW(DNSName("*.powerdns.com."), DNSName("wwz.powerdns.com."), { QType::A, QType::NSEC, QType::RRSIG }, 600, res->d_records);
+ addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300, false, boost::none, DNSName("*.powerdns.com"));
+ return 1;
+ }
+ return genericDSAndDNSKEYHandler(res, domain, domain, type, keys);
+ }
+ else {
+ setLWResult(res, 0, true, false, true);
+ addRecordToLW(res, domain, QType::A, "192.0.2.42");
+ addRRSIG(keys, res->d_records, DNSName("powerdns.com."), 300, false, boost::none, DNSName("*.powerdns.com"));
+ addNSECRecordToLW(DNSName("*.powerdns.com."), DNSName("wwz.powerdns.com."), { QType::A, QType::NSEC, QType::RRSIG }, 600, res->d_records);
+ addRRSIG(keys, res->d_records, DNSName("powerdns.com"), 300, false, boost::none, DNSName("*.powerdns.com"));
+ return 1;
+ }
+ });
+
+ vector<DNSRecord> ret;
+ int res = sr->beginResolve(target, QType(QType::A), QClass::IN, ret);
+ BOOST_CHECK_EQUAL(res, RCode::NoError);
+ BOOST_CHECK_EQUAL(sr->getValidationState(), Secure);
+ /* A + RRSIG, NSEC + RRSIG */
+ BOOST_REQUIRE_EQUAL(ret.size(), 4);
+}
+
BOOST_AUTO_TEST_CASE(test_dnssec_no_ds_on_referral_secure) {
std::unique_ptr<SyncRes> sr;
initSR(sr, true);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-recursor-4.1.12/validate.cc new/pdns-recursor-4.1.13/validate.cc
--- old/pdns-recursor-4.1.12/validate.cc 2019-04-02 12:31:21.000000000 +0200
+++ new/pdns-recursor-4.1.13/validate.cc 2019-05-21 07:47:27.000000000 +0200
@@ -116,6 +116,15 @@
Labels field of the covering RRSIG RR, then the RRset and its
covering RRSIG RR were created as a result of wildcard expansion."
*/
+bool isWildcardExpanded(unsigned int labelCount, const std::shared_ptr<RRSIGRecordContent>& sign)
+{
+ if (sign && sign->d_labels < labelCount) {
+ return true;
+ }
+
+ return false;
+}
+
static bool isWildcardExpanded(const DNSName& owner, const std::vector<std::shared_ptr<RRSIGRecordContent> >& signatures)
{
if (signatures.empty()) {
@@ -124,13 +133,29 @@
const auto& sign = signatures.at(0);
unsigned int labelsCount = owner.countLabels();
- if (sign && sign->d_labels < labelsCount) {
+ return isWildcardExpanded(labelsCount, sign);
+}
+
+bool isWildcardExpandedOntoItself(const DNSName& owner, unsigned int labelCount, const std::shared_ptr<RRSIGRecordContent>& sign)
+{
+ if (owner.isWildcard() && (labelCount - 1) == sign->d_labels) {
+ /* this is a wildcard alright, but it has not been expanded */
return true;
}
-
return false;
}
+static bool isWildcardExpandedOntoItself(const DNSName& owner, const std::vector<std::shared_ptr<RRSIGRecordContent> >& signatures)
+{
+ if (signatures.empty()) {
+ return false;
+ }
+
+ const auto& sign = signatures.at(0);
+ unsigned int labelsCount = owner.countLabels();
+ return isWildcardExpandedOntoItself(owner, labelsCount, sign);
+}
+
/* if this is a wildcard NSEC, the owner name has been modified
to match the name. Make sure we use the original '*' form. */
static DNSName getNSECOwnerName(const DNSName& initialOwner, const std::vector<std::shared_ptr<RRSIGRecordContent> >& signatures)
@@ -385,7 +410,7 @@
/* we know that the name exists (but this qtype doesn't) so except
if the answer was generated by a wildcard expansion, no wildcard
could have matched (rfc4035 section 5.4 bullet 1) */
- if (!isWildcardExpanded(owner, v.second.signatures)) {
+ if (!isWildcardExpanded(owner, v.second.signatures) || isWildcardExpandedOntoItself(owner, v.second.signatures)) {
needWildcardProof = false;
}
@@ -399,6 +424,7 @@
/* check if the whole NAME is denied existing */
if(isCoveredByNSEC(qname, owner, nsec->d_next)) {
+ LOG(qname<<" is covered ");
/* if the name is an ENT and we received a NODATA answer,
we are fine with a NSEC proving that the name does not exist. */
if (wantsNoDataProof && nsecProvesENT(qname, owner, nsec->d_next)) {
@@ -407,15 +433,19 @@
}
if (!needWildcardProof) {
+ LOG("and we did not need a wildcard proof"<<endl);
return NXDOMAIN;
}
+ LOG("but we do need a wildcard proof so ");
if (wantsNoDataProof) {
+ LOG("looking for NODATA proof"<<endl);
if (provesNoDataWildCard(qname, qtype, validrrsets)) {
return NXQTYPE;
}
}
else {
+ LOG("looking for NO wildcard proof"<<endl);
if (provesNoWildCard(qname, qtype, validrrsets)) {
return NXDOMAIN;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-recursor-4.1.12/validate.hh new/pdns-recursor-4.1.13/validate.hh
--- old/pdns-recursor-4.1.12/validate.hh 2019-04-02 12:31:21.000000000 +0200
+++ new/pdns-recursor-4.1.13/validate.hh 2019-05-21 07:47:27.000000000 +0200
@@ -77,3 +77,5 @@
DNSName getSigner(const std::vector<std::shared_ptr<RRSIGRecordContent> >& signatures);
bool denialProvesNoDelegation(const DNSName& zone, const std::vector<DNSRecord>& dsrecords);
bool isRRSIGNotExpired(const time_t now, const shared_ptr<RRSIGRecordContent> sig);
+bool isWildcardExpanded(unsigned int labelCount, const std::shared_ptr<RRSIGRecordContent>& sign);
+bool isWildcardExpandedOntoItself(const DNSName& owner, unsigned int labelCount, const std::shared_ptr<RRSIGRecordContent>& sign);
1
0
Hello community,
here is the log from the commit of package kronometer for openSUSE:Factory checked in at 2019-05-22 11:17:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kronometer (Old)
and /work/SRC/openSUSE:Factory/.kronometer.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kronometer"
Wed May 22 11:17:05 2019 rev:3 rq:704460 version:2.2.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/kronometer/kronometer.changes 2018-01-31 19:49:49.451245520 +0100
+++ /work/SRC/openSUSE:Factory/.kronometer.new.5148/kronometer.changes 2019-05-22 11:17:06.810485534 +0200
@@ -1,0 +2,8 @@
+Tue May 21 12:36:04 UTC 2019 - wbauer(a)tmo.at
+
+- Update to 2.2.2:
+ * Updated translations
+- Update URL, www.aelog.org doesn't exist anymore
+- Run spec-cleaner
+
+-------------------------------------------------------------------
Old:
----
kronometer-2.2.1.tar.xz
New:
----
kronometer-2.2.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kronometer.spec ++++++
--- /var/tmp/diff_new_pack.I1zQJ6/_old 2019-05-22 11:17:07.362485148 +0200
+++ /var/tmp/diff_new_pack.I1zQJ6/_new 2019-05-22 11:17:07.370485142 +0200
@@ -1,7 +1,7 @@
#
# spec file for package kronometer
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,17 +12,18 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
+
Name: kronometer
-Version: 2.2.1
+Version: 2.2.2
Release: 0
Summary: A stopwatch application by KDE
-License: GPL-2.0+
+License: GPL-2.0-or-later
Group: Productivity/Other
-Url: http://www.aelog.org/kronometer/
-Source: http://download.kde.org/stable/kronometer/%{version}/src/%{name}-%{version}…
+URL: https://userbase.kde.org/Kronometer
+Source: https://download.kde.org/stable/kronometer/%{version}/src/%{name}-%{version…
BuildRequires: cmake(KF5Config)
BuildRequires: cmake(KF5Crash)
BuildRequires: cmake(KF5DocTools)
@@ -60,13 +61,13 @@
%kf5_makeinstall -C build
%find_lang %{name} --with-kde --with-man
%if 0%{?opensuse_version} > 1320 || 0%{?sle_version} >= 120300
- %kf5_find_htmldocs
+ %{kf5_find_htmldocs}
%else
# %%kf5_find_htmldocs is only defined since Leap 42.3
CURDIR=`pwd`
pushd %{buildroot}%{_kf5_htmldir}
for i in *; do
- if ! [ -d "/usr/share/locale/${i}" ]; then
+ if ! [ -d "%{_datadir}/locale/${i}" ]; then
echo "Removing unsupported translation %{_kf5_htmldir}/${i}"
rm -rf "$i"
elif [ "$i" != "en" ]; then
@@ -77,8 +78,8 @@
%endif
%files -f %{name}.lang
-%defattr(-, root, root)
-%doc COPYING README
+%license COPYING
+%doc README
%{_kf5_applicationsdir}/org.kde.kronometer.desktop
%{_kf5_bindir}/%{name}
%dir %{_kf5_configkcfgdir}
++++++ kronometer-2.2.1.tar.xz -> kronometer-2.2.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/CHANGELOG new/kronometer-2.2.2/CHANGELOG
--- old/kronometer-2.2.1/CHANGELOG 2018-01-27 18:51:52.000000000 +0100
+++ new/kronometer-2.2.2/CHANGELOG 2019-05-19 12:48:43.000000000 +0200
@@ -1,3 +1,6 @@
+v2.2.2
+* Updated translations.
+
v2.2.1
* Fixed laps sorting.
* Updated translations.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/CMakeLists.txt new/kronometer-2.2.2/CMakeLists.txt
--- old/kronometer-2.2.1/CMakeLists.txt 2018-01-27 18:53:47.000000000 +0100
+++ new/kronometer-2.2.2/CMakeLists.txt 2019-05-19 12:49:16.000000000 +0200
@@ -4,7 +4,7 @@
set(QT_MIN_VERSION 5.9.0)
set(KF5_MIN_VERSION 5.26.0)
-set(PROJECT_VERSION 2.2.1)
+set(PROJECT_VERSION 2.2.2)
set(CMAKE_CXX_STANDARD 14)
set(CXX_STANDARD_REQUIRED ON)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/desktop/org.kde.kronometer.appdata.xml new/kronometer-2.2.2/desktop/org.kde.kronometer.appdata.xml
--- old/kronometer-2.2.1/desktop/org.kde.kronometer.appdata.xml 2018-01-27 18:51:52.000000000 +0100
+++ new/kronometer-2.2.2/desktop/org.kde.kronometer.appdata.xml 2019-05-19 12:48:43.000000000 +0200
@@ -19,6 +19,7 @@
<name xml:lang="fi">Kronometer</name>
<name xml:lang="fr">Kronometer</name>
<name xml:lang="gl">Kronometer</name>
+ <name xml:lang="id">Kronometer</name>
<name xml:lang="it">Kronometer</name>
<name xml:lang="ko">Kronometer</name>
<name xml:lang="nds">Kronometer</name>
@@ -49,6 +50,7 @@
<summary xml:lang="fi">Sekuntikello</summary>
<summary xml:lang="fr">Chronomètre</summary>
<summary xml:lang="gl">Cronómetro</summary>
+ <summary xml:lang="id">Pencatat Waktu</summary>
<summary xml:lang="it">Cronometro</summary>
<summary xml:lang="ko">크로노미터</summary>
<summary xml:lang="nds">Tietmeter</summary>
@@ -79,7 +81,8 @@
<p xml:lang="et">Kronometer on stopperirakendus. See pakub põhilisi stopperi omadusi (paus/jätkamine/taastamine/ringid) ning võimaldab aegu salvestada ja neid hiljem taastada. Kronometer kuulub KDE lisarakenduste (Extragear) hulka.</p>
<p xml:lang="fi">Kronometer on sekuntikellosovellus. Siinä on sekuntikellon perustoiminnot (tauko/jatkaminen/nollaaminen/kierrokset) sekä mahdollisuus tallentaa ajat ja jatkaa tallennettuja aikoja myöhemmin. Kronometer kuuluu KDE Extragearin Työkalut-aliyksikköön.</p>
<p xml:lang="fr">Kronometer est une application de chronomètre. Il fournit les actions de base d'un chronomètre (pause/reprise/remise à zéro/temps intermédiaires), ainsi que la possibilité d'enregistrer les temps dans un fichier et les reprendre plus tard. Kronometer fait partie du sous-module Utils de la collection KDE Extragear</p>
- <p xml:lang="gl">Kronometer é un aplicativo para cronometrar. Conta con accións básicas de cronometraxe (deter, continuar, reiniciar, voltas), e permite gardar tempos para continualos máis adiante. Kronometer é parte do módulo de ferramentas da colección Extragear de KDE.</p>
+ <p xml:lang="gl">Kronometer é un aplicativo para cronometrar. Goza de accións básicas de cronometraxe (deter, continuar, reiniciar, voltas), e permite gardar tempos para continualos máis adiante. Kronometer é parte do módulo de ferramentas da colección Extragear de KDE.</p>
+ <p xml:lang="id">Kronometer adalah aplikasi stopwatch. Ini fitur aksi stopwatch dasar (jeda/lanjut/reset/lap), serta kemampuan untuk menghemat waktu dan melanjutkannya nanti. Kronometer adalah bagian dari koleksi KDE Extragear, dalam sub-modul Utils.</p>
<p xml:lang="it">Kronometer è un cronometro. Include le azioni fondamentali di un cronometro (pausa, riavvio, azzeramento, giri), oltre alla possibilità di salvare i tempi e caricarli in seguito. Kronometer fa parte della raccolta Extragear di KDE, nel modulo delle Utilità.</p>
<p xml:lang="ko">Kronometer는 초시계 프로그램입니다. 일시 정지/초기화/랩 등 기본 초시계 동작을 지원하며 시간을 저장했다가 나중에 다시 시작하는 기능도 제공합니다. Kronometer는 KDE Extragear 모음집의 일부이며, Utils 하위 모듈에 속합니다.</p>
<p xml:lang="nl">Kronometer is een toepassing voor een stopwatch gemaakt. Het biedt de basisacties van een stopwatch (pauzeren/hervatten/reset/rondetijden), evenals de mogelijkheid om de tijden op te slaan en later te hervatten. Kronometer is onderdeel van de verzameling KDE Extragear, binnen de sub-module Utils.</p>
@@ -108,6 +111,7 @@
<p xml:lang="fi">Ominaisuuksia:</p>
<p xml:lang="fr">Fonctionnalités :</p>
<p xml:lang="gl">Funcionalidades:</p>
+ <p xml:lang="id">Fitur:</p>
<p xml:lang="it">Funzionalità:</p>
<p xml:lang="ko">기능:</p>
<p xml:lang="nds">Markmalen:</p>
@@ -138,6 +142,7 @@
<li xml:lang="fi">Sekuntikellon perustoiminnot: käynnistäminen, tauko, jatkaminen</li>
<li xml:lang="fr">Démarrage/mise en pause/reprise du chronomètre</li>
<li xml:lang="gl">Permite iniciar, deter e continuar o trebello de cronómetro.</li>
+ <li xml:lang="id">Widget stopwatch mulai/jeda/lanjut</li>
<li xml:lang="it">Oggetto per avviare, mettere in pausa e riavviare il cronometro</li>
<li xml:lang="ko">초시계 위쳇 시작/일시 정지/다시 시작</li>
<li xml:lang="nds">Anfangen, anhollen un wiedermaken över dat Stoppklock-Lüttprogramm</li>
@@ -156,7 +161,7 @@
<li>Laps recording: you can capture the stopwatch time when you want</li>
<li xml:lang="bs">Snimanje krugova: možete snimiti vrijeme štoperice kada god želite</li>
<li xml:lang="ca">Enregistra les voltes: podeu capturar el temps del cronòmetre quan vulgueu</li>
- <li xml:lang="ca-valencia">Grava les voltes: podeu capturar el temps del cronòmetre quan vulgueu</li>
+ <li xml:lang="ca-valencia">Enregistra les voltes: podeu capturar el temps del cronòmetre quan vulgueu</li>
<li xml:lang="da">Optagelse af omgange: du kan optage stopurstiden når du vil</li>
<li xml:lang="de">Zwischenzeiten: Sie können eine Zeit festhalten, wann sie möchten</li>
<li xml:lang="el">Εγγραφή γύρων: μπορείτε να συλλάβετε τη χρονομέτρηση όποτε θέλετε</li>
@@ -166,6 +171,7 @@
<li xml:lang="fi">Kierrosten tallentaminen: sekuntikellon nykyisen ajan voi tallentaa milloin haluaa</li>
<li xml:lang="fr">Temps intermédiaires : vous pouvez mémoriser le temps du chronomètre quand vous voulez</li>
<li xml:lang="gl">Captura de voltas: permite capturar o tempo do cronómetro en calquera momento.</li>
+ <li xml:lang="id">Perekaman lap: kamu bisa menangkap waktu stopwatch ketika kamu inginkan</li>
<li xml:lang="it">Registrazione dei giri: puoi catturare il tempo del cronometro ogni volta che vuoi</li>
<li xml:lang="ko">랩 기록: 필요한 시간을 기록할 수 있습니다</li>
<li xml:lang="nds">Runnen opnehmen: Du kannst de Stoppklock-Tiet aflesen, wenn Du dat wullt</li>
@@ -194,6 +200,7 @@
<li xml:lang="fi">Kierrosaikojen järjestäminen: lyhimmän tai pisimmän kierrosajan löytäminen on helppoa</li>
<li xml:lang="fr">Tri des temps intermédiaires : vous pouvez facilement trouver le temps le plus court et le plus long</li>
<li xml:lang="gl">Ordenación dos tempos de voltas: permite atopar facilmente os tempos de volta máis curtos ou máis longos.</li>
+ <li xml:lang="id">Pengurutan waktu lap: Kamu bisa dengan mudah menemukan waktu lap terpendek atau terpanjang</li>
<li xml:lang="it">Ordinamento dei tempi sul giro: puoi facilmente trovare il tempo sul giro più breve o più lungo</li>
<li xml:lang="ko">랩 시간 정렬: 가장 짧은 시간과 가장 긴 시간을 찾을 수 있습니다</li>
<li xml:lang="nds">Runnentieden sorteren: Du kannst de körtste oder de längste Runntiet heel eenfach rutfinnen</li>
@@ -222,6 +229,7 @@
<li xml:lang="fi">Sekuntikellon nollaaminen ja kierrosajat</li>
<li xml:lang="fr">Remise à zéro du chronomètre et des temps intermédiaires</li>
<li xml:lang="gl">Permite reiniciar o trebello de cronómetro e os tempos de voltas.</li>
+ <li xml:lang="id">Reset widget stopwatch dan waktu lap</li>
<li xml:lang="it">Oggetto per azzerare il cronometro e i tempi sul giro</li>
<li xml:lang="ko">초시계 위젯과 랩 시간 초기화</li>
<li xml:lang="nds">Dat Stoppklock-Lüttprogramm un de Runnentieden torüchsetten</li>
@@ -250,6 +258,7 @@
<li xml:lang="fi">Ajan muodon asetukset: sekuntikellon tarkkuus on valittavissa</li>
<li xml:lang="fr">Réglages du format d'heure : vous pouvez choisir la granularité du chronomètre</li>
<li xml:lang="gl">Configuración do formato de tempo: permite escoller o nivel de detalle do tempo do cronómetro.</li>
+ <li xml:lang="id">Setelan format waktu: kamu bisa memilih stopwatch secara terperinci</li>
<li xml:lang="it">Impostazioni del formato del tempo: puoi scegliere la risoluzione del cronometro</li>
<li xml:lang="ko">시간 형식 설정: 초시계의 정밀도를 설정할 수 있습니다</li>
<li xml:lang="nds">Tietformaat instellen: Du kannst de Oplösen vun de Stoppklock utsöken</li>
@@ -277,6 +286,7 @@
<li xml:lang="fi">Aikojen tallentaminen ja jatkaminen: sekuntikellon tilan voi tallentaa, ja siitä voi jatkaa myöhemmin</li>
<li xml:lang="fr">Mémorisation et reprise des temps : vous pouvez enregistrer l'état du chronomètre dans un fichier et le reprendre plus tard</li>
<li xml:lang="gl">Gardar e cargar tempos: permite gardar o estado do cronómetro e continualo máis adiante.</li>
+ <li xml:lang="id">Pelanjutan dan penyimpanan waktu: kamu bisa menyimpan status stopwatch dan melanjutkannya</li>
<li xml:lang="it">Salvataggio e ripristino dei tempi: puoi salvare lo stato del cronometro e ripristinarlo più avanti</li>
<li xml:lang="ko">시간 저장 및 복원: 초시계 상태를 저장하여 나중에 다시 시작할 수 있습니다</li>
<li xml:lang="nl">Tijden opslaan en hervatten: u kunt de status van de stopwatch opslaan en deze later hervatten</li>
@@ -304,6 +314,7 @@
<li xml:lang="fi">Fonttien muokkaaminen: sekuntikellon jokaisen numeron fontti on valittavissa</li>
<li xml:lang="fr">Personnalisation des fontes : vous pouvez choisir les fontes pour chaque chiffre du chronomètre</li>
<li xml:lang="gl">Personalización do tipo de letra: pode escoller o tipo de letra que queira para os díxitos do cronómetro.</li>
+ <li xml:lang="id">Kustomisasi font: kamu bisa memilih font-font untuk setiap digit stopwatch</li>
<li xml:lang="it">Configurazione dei caratteri: puoi scegliere i caratteri per ciascuna cifra del cronometro</li>
<li xml:lang="ko">글꼴 사용자 정의: 개별 초시계 숫자 글꼴을 별경할 수 있습니다</li>
<li xml:lang="nds">Schrift topassen: Du kannst de Schrift för elkeen Tall op de Stoppklock utsöken</li>
@@ -332,6 +343,7 @@
<li xml:lang="fi">Värien muokkaaminen: sekuntikellon numeroiden ja taustan värit ovat valittavissa</li>
<li xml:lang="fr">Personnalisation de la couleur : vous pouvez choisir la couleur des chiffres de la couleur de fond du chronomètre</li>
<li xml:lang="gl">Personalización das cores: pode escoller as cores que queira para os díxitos e o fondo do cronómetro.</li>
+ <li xml:lang="id">Kustomisasi warna: kamu bisa memilih warna untuk digit stopwatch dan latarbelakang stopwatch</li>
<li xml:lang="it">Configurazione dei colori: puoi scegliere il colore delle cifre e dello sfondo del cronometro</li>
<li xml:lang="ko">색 사용자 정의: 초시계 숫자와 배경색을 변경할 수 있습니다</li>
<li xml:lang="nds">Klöör topassen: Du kannst de Klöör för de Stoppklock-Tallen un de Achtergrundklöör utsöken.</li>
@@ -356,12 +368,15 @@
<li xml:lang="es">Exportar los tiempos de las vueltas: puede exportar los tiempos de las vueltas en un archivo usando los formatos JSON o CSV</li>
<li xml:lang="fi">Kierrosaikojen vienti: kierrosajat voi viedä JSON- tai CSV-muotoiseen tiedostoon</li>
<li xml:lang="fr">Exportation des temps intermédiaires : vous pouvez exporter les temps intermédiaire dans un fichier au format JSON ou CSV</li>
+ <li xml:lang="gl">Exportar os tempos de voltas: permítelle exportar os tempos de voltas a un ficheiro en formato JSON ou CSV.</li>
+ <li xml:lang="id">Ekspor waktu lap: kamu bisa mengekspor waktu lap ke file menggunakan format JSON atau CSV</li>
<li xml:lang="it">Esportazione dei tempi sul giro: puoi esportare i tempi sul giro su file nei formati JSON o CSV</li>
<li xml:lang="ko">랩 시간 내보내기: JSON이나 CSV 형식으로 랩 시간을 내보낼 수 있습니다</li>
<li xml:lang="nl">Exporteren van rondetijden: u kunt de rondetijden exporteren naar een bestand met het JSON- of CSV-formaat</li>
<li xml:lang="nn">Eksportering av rundetider. Du kan eksportera rundetidene til JSON- og CSV-format</li>
<li xml:lang="pl">Eksportowanie czasów okrążeń: można eksportować czasy okrążeń do pliku przy użyciu formatu JSON lub CSV</li>
<li xml:lang="pt">Exportação dos tempos das voltas: poderá exportar os tempos das voltas para um ficheiro em JSON ou CSV</li>
+ <li xml:lang="pt-BR">Exportação dos tempos das voltas: Você pode exportar os tempos das voltas para um arquivo no formato JSON ou CSV</li>
<li xml:lang="sk">Export časov kôl: môžete exportovať časy kôl do súboru pomocou formátu JSON alebo CSV</li>
<li xml:lang="sv">Export av varvtider: Det går att exportera varvtider till en fil med JSON- eller CSV-format</li>
<li xml:lang="tr">Tur zamanlarını dışa aktarma: tur zamanlarını JSON veya CSV biçiminde bir dosyaya aktarabilirsiniz</li>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/desktop/org.kde.kronometer.desktop new/kronometer-2.2.2/desktop/org.kde.kronometer.desktop
--- old/kronometer-2.2.1/desktop/org.kde.kronometer.desktop 2018-01-27 18:51:52.000000000 +0100
+++ new/kronometer-2.2.2/desktop/org.kde.kronometer.desktop 2019-05-19 12:48:43.000000000 +0200
@@ -76,15 +76,21 @@
Comment[de]=Eine einfache Anwendung für die Zeitmessung von KDE
Comment[en_GB]=A simple chronometer application by KDE
Comment[es]=Una sencilla aplicación de cronómetro creada por KDE
+Comment[fi]=KDE:n yksinkertainen sekuntikellosovellus
+Comment[fr]=Une simple application de chronomètre par KDE
+Comment[gl]=Un aplicativo sinxelo creado por KDE para cronometrar.
Comment[it]=Un semplice cronometro da KDE
Comment[ko]=KDE의 간단한 크로노미터 프로그램
Comment[nl]=Een eenvoudige chronometer-toepassing door KDE
+Comment[nn]=Enkelt kronometerprogram frå KDE
Comment[pl]=Prosta aplikacja chronometru autorstwa KDE
Comment[pt]=Uma aplicação simples de cronómetro do KDE
+Comment[pt_BR]=Um cronômetro simples do KDE
Comment[sk]=Jednoduchá aplikácia chronometra pre KDE
Comment[sv]=Ett enkelt kronometerprogram av KDE
Comment[tr]=Kde için basit bir kronometre uygulaması
Comment[uk]=Проста програма-хронометр від KDE
Comment[x-test]=xxA simple chronometer application by KDExx
+Comment[zh_TW]=來自 KDE 的精密計時應用程式
Categories=Qt;KDE;Utility;Clock;
X-DocPath=kronometer/index.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/ast/kronometer.po new/kronometer-2.2.2/po/ast/kronometer.po
--- old/kronometer-2.2.1/po/ast/kronometer.po 2018-01-27 18:52:23.000000000 +0100
+++ new/kronometer-2.2.2/po/ast/kronometer.po 2019-05-19 12:48:53.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2016-02-13 23:46+0100\n"
"Last-Translator: enolp <enolp(a)softastur.org>\n"
"Language-Team: Asturian <>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/bs/kronometer.po new/kronometer-2.2.2/po/bs/kronometer.po
--- old/kronometer-2.2.1/po/bs/kronometer.po 2018-01-27 18:52:28.000000000 +0100
+++ new/kronometer-2.2.2/po/bs/kronometer.po 2019-05-19 12:48:54.000000000 +0200
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: Kronometer\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2015-02-24 22:48+0100\n"
"Last-Translator: Samir Ribić <megaribi(a)epn.ba>\n"
"Language-Team: Bosnian <bs(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/ca/docs/kronometer/index.docbook new/kronometer-2.2.2/po/ca/docs/kronometer/index.docbook
--- old/kronometer-2.2.1/po/ca/docs/kronometer/index.docbook 2018-01-27 18:53:25.000000000 +0100
+++ new/kronometer-2.2.2/po/ca/docs/kronometer/index.docbook 2019-05-19 12:49:09.000000000 +0200
@@ -48,7 +48,7 @@
<abstract>
<para
->El &kronometer; és una senzilla aplicació de cronòmetre. Pot utilitzar-se per a tasques bàsiques com iniciar/pausar/reprendre el temporitzador, així com prendre els temps de la volta. </para>
+>El &kronometer; és una senzilla aplicació de cronòmetre. Pot utilitzar-se per a tasques bàsiques com iniciar/posar en pausa/reprendre el temporitzador, així com prendre els temps de la volta. </para>
<para
>El &kronometer; és capaç de desar una sessió completa (temporitzador i els temps per volta) i restaurar-la més endavant. </para>
</abstract>
@@ -74,7 +74,7 @@
<itemizedlist>
<listitem>
<para
->El &kronometer; proporciona un temporitzador que es pot iniciar, pausar, reprendre i restablir. </para>
+>El &kronometer; proporciona un temporitzador que es pot iniciar, posar en pausa, reprendre i restablir. </para>
</listitem>
<listitem>
<para
@@ -98,7 +98,7 @@
<title
>Ús general</title>
<para
->El cas d'ús principal del &kronometer; és, per descomptat, la interacció amb el temporitzador. Podeu iniciar/pausar/reprendre el temporitzador fent clic a les accions apropiades a la barra d'eines o al menú del &kronometer;. </para>
+>El cas d'ús principal del &kronometer; és, per descomptat, la interacció amb el temporitzador. Podeu iniciar/posar en pausa/reprendre el temporitzador fent clic a les accions apropiades a la barra d'eines o al menú del &kronometer;. </para>
<para
>Fins i tot més simple, podeu utilitzar el teclat en comptes del ratolí: iniciar el temporitzador amb la tecla <keycap
>Espai</keycap
@@ -114,8 +114,8 @@
>Nota</emphasis
>. </para>
<para
->La barra de menú (per omissió oculta), que proporciona accés a totes les ordres i opcions de configuració. La barra de menú es pot alternar amb <guimenuitem
->Mostra la barra de menú</guimenuitem
+>La barra de menús (per omissió oculta), que proporciona accés a totes les ordres i opcions de configuració. La barra de menús es pot alternar amb <guimenuitem
+>Mostra la barra de menús</guimenuitem
> (<keycombo action="simul"
>&Ctrl;<keycap
>M</keycap
@@ -238,7 +238,7 @@
</sect2>
<sect2 id="font_settings">
<title
->Ajustaments del tipus de lletra</title>
+>Arranjament del tipus de lletra</title>
<para
>A la pàgina de configuració per al tipus de lletra, podreu personalitzar el tipus de lletra per a la pantalla del cronòmetre. Podeu escollir entre diferents famílies, estils i mides de tipus de lletra per a cada component del temporitzador (hores, minuts, &etc;). Per omissió, tots els components del temporitzador empraran el mateix tipus de lletra, d'acord amb el tipus de lletra per omissió del sistema. </para>
</sect2>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/ca/kronometer.po new/kronometer-2.2.2/po/ca/kronometer.po
--- old/kronometer-2.2.1/po/ca/kronometer.po 2018-01-27 18:52:28.000000000 +0100
+++ new/kronometer-2.2.2/po/ca/kronometer.po 2019-05-19 12:48:54.000000000 +0200
@@ -1,16 +1,16 @@
# Translation of kronometer.po to Catalan
-# Copyright (C) 2014-2017 This_file_is_part_of_KDE
+# Copyright (C) 2014-2018 This_file_is_part_of_KDE
# This file is distributed under the license LGPL version 2.1 or
# version 3 or later versions approved by the membership of KDE e.V.
#
# Antoni Bella Pérez <antonibella5(a)yahoo.com>, 2014, 2015, 2016, 2017.
-# Josep Ma. Ferrer <txemaq(a)gmail.com>, 2015, 2017.
+# Josep Ma. Ferrer <txemaq(a)gmail.com>, 2015, 2017, 2018.
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
-"PO-Revision-Date: 2017-12-10 00:42+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"PO-Revision-Date: 2018-07-07 19:06+0100\n"
"Last-Translator: Josep Ma. Ferrer <txemaq(a)gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca(a)kde.org>\n"
"Language: ca\n"
@@ -136,21 +136,21 @@
#: src/gui/generalsettings.ui:100 src/gui/generalsettings.ui:240
#, kde-format
msgid "up to Tenths"
-msgstr "fins les dècimes"
+msgstr "fins a les dècimes"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_fractionsType)
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_lapFractionsType)
#: src/gui/generalsettings.ui:105 src/gui/generalsettings.ui:245
#, kde-format
msgid "up to Hundredths"
-msgstr "fins les centèsimes"
+msgstr "fins a les centèsimes"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_fractionsType)
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_lapFractionsType)
#: src/gui/generalsettings.ui:110 src/gui/generalsettings.ui:250
#, kde-format
msgid "up to Milliseconds"
-msgstr "fins els mil·lisegons"
+msgstr "fins als mil·lisegons"
#. i18n: @title:tab
#. i18n: ectx: attribute (title), widget (QWidget, tab_2)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/ca(a)valencia/kronometer.po new/kronometer-2.2.2/po/ca(a)valencia/kronometer.po
--- old/kronometer-2.2.1/po/ca(a)valencia/kronometer.po 2018-01-27 18:52:28.000000000 +0100
+++ new/kronometer-2.2.2/po/ca(a)valencia/kronometer.po 2019-05-19 12:48:54.000000000 +0200
@@ -1,16 +1,16 @@
# Translation of kronometer.po to Catalan (Valencian)
-# Copyright (C) 2014-2017 This_file_is_part_of_KDE
+# Copyright (C) 2014-2018 This_file_is_part_of_KDE
# This file is distributed under the license LGPL version 2.1 or
# version 3 or later versions approved by the membership of KDE e.V.
#
# Antoni Bella Pérez <antonibella5(a)yahoo.com>, 2014, 2015, 2016, 2017.
-# Josep Ma. Ferrer <txemaq(a)gmail.com>, 2015, 2017.
+# Josep Ma. Ferrer <txemaq(a)gmail.com>, 2015, 2017, 2018.
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
-"PO-Revision-Date: 2017-12-10 00:42+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"PO-Revision-Date: 2018-07-07 19:06+0100\n"
"Last-Translator: Josep Ma. Ferrer <txemaq(a)gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca(a)kde.org>\n"
"Language: ca@valencia\n"
@@ -136,21 +136,21 @@
#: src/gui/generalsettings.ui:100 src/gui/generalsettings.ui:240
#, kde-format
msgid "up to Tenths"
-msgstr "fins les dècimes"
+msgstr "fins a les dècimes"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_fractionsType)
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_lapFractionsType)
#: src/gui/generalsettings.ui:105 src/gui/generalsettings.ui:245
#, kde-format
msgid "up to Hundredths"
-msgstr "fins les centèsimes"
+msgstr "fins a les centèsimes"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_fractionsType)
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_lapFractionsType)
#: src/gui/generalsettings.ui:110 src/gui/generalsettings.ui:250
#, kde-format
msgid "up to Milliseconds"
-msgstr "fins els mil·lisegons"
+msgstr "fins als mil·lisegons"
#. i18n: @title:tab
#. i18n: ectx: attribute (title), widget (QWidget, tab_2)
@@ -163,13 +163,13 @@
#: src/gui/generalsettings.ui:157
#, kde-format
msgid "Whether to enable the laps recording feature"
-msgstr "Si s'ha d'habilitar la característica per gravar les voltes"
+msgstr "Si s'ha d'habilitar la característica per enregistrar les voltes"
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_isLapsRecordingEnabled)
#: src/gui/generalsettings.ui:160
#, kde-format
msgid "Enable Laps Recording"
-msgstr "Habilita l'gravació\t de les voltes"
+msgstr "Habilita l'enregistrament de les voltes"
#. i18n: ectx: property (title), widget (QGroupBox, groupBox)
#: src/gui/generalsettings.ui:176
@@ -286,7 +286,7 @@
#: src/gui/mainwindow.cpp:299
#, kde-format
msgid "You can choose a name for this session:"
-msgstr "Podeu triar un nom per a esta sessió:"
+msgstr "Podeu triar un nom per a aquesta sessió:"
#: src/gui/mainwindow.cpp:308
#, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/cs/kronometer.po new/kronometer-2.2.2/po/cs/kronometer.po
--- old/kronometer-2.2.1/po/cs/kronometer.po 2018-01-27 18:52:28.000000000 +0100
+++ new/kronometer-2.2.2/po/cs/kronometer.po 2019-05-19 12:48:54.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2017-09-12 12:13+0100\n"
"Last-Translator: Vít Pelčák <vit(a)pelcak.org>\n"
"Language-Team: Czech <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/da/kronometer.po new/kronometer-2.2.2/po/da/kronometer.po
--- old/kronometer-2.2.1/po/da/kronometer.po 2018-01-27 18:52:30.000000000 +0100
+++ new/kronometer-2.2.2/po/da/kronometer.po 2019-05-19 12:48:55.000000000 +0200
@@ -1,12 +1,12 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
-# scootergrisen, 2017.
+# scootergrisen, 2017-2018.
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
-"PO-Revision-Date: 2017-11-12 14:30+0200\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"PO-Revision-Date: 2018-03-18 00:00+0200\n"
"Last-Translator: scootergrisen\n"
"Language-Team: Danish\n"
"Language: da\n"
@@ -23,7 +23,7 @@
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
-msgstr ","
+msgstr ""
#. i18n: ectx: property (text), widget (QLabel, label)
#: src/gui/colorsettings.ui:20
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/de/kronometer.po new/kronometer-2.2.2/po/de/kronometer.po
--- old/kronometer-2.2.1/po/de/kronometer.po 2018-01-27 18:52:30.000000000 +0100
+++ new/kronometer-2.2.2/po/de/kronometer.po 2019-05-19 12:48:55.000000000 +0200
@@ -4,7 +4,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2017-11-26 13:49+0100\n"
"Last-Translator: Burkhard Lück <lueck(a)hube-lueck.de>\n"
"Language-Team: German <kde-i18n-de(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/el/kronometer.po new/kronometer-2.2.2/po/el/kronometer.po
--- old/kronometer-2.2.1/po/el/kronometer.po 2018-01-27 18:52:30.000000000 +0100
+++ new/kronometer-2.2.2/po/el/kronometer.po 2019-05-19 12:48:55.000000000 +0200
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: kronometer\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2015-10-31 20:22+0200\n"
"Last-Translator: Stelios <sstavra(a)gmail.com>\n"
"Language-Team: Greek <kde-i18n-el(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/en_GB/kronometer.po new/kronometer-2.2.2/po/en_GB/kronometer.po
--- old/kronometer-2.2.1/po/en_GB/kronometer.po 2018-01-27 18:52:33.000000000 +0100
+++ new/kronometer-2.2.2/po/en_GB/kronometer.po 2019-05-19 12:48:56.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2017-11-26 20:54+0000\n"
"Last-Translator: Steve Allewell <steve.allewell(a)gmail.com>\n"
"Language-Team: British English <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/es/kronometer.po new/kronometer-2.2.2/po/es/kronometer.po
--- old/kronometer-2.2.1/po/es/kronometer.po 2018-01-27 18:52:33.000000000 +0100
+++ new/kronometer-2.2.2/po/es/kronometer.po 2019-05-19 12:48:56.000000000 +0200
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2017-11-22 16:59+0100\n"
"Last-Translator: Sofia Priego <spriego(a)darksylvania.net>\n"
"Language-Team: Spanish <kde-l10n-es(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/et/kronometer.po new/kronometer-2.2.2/po/et/kronometer.po
--- old/kronometer-2.2.1/po/et/kronometer.po 2018-01-27 18:52:33.000000000 +0100
+++ new/kronometer-2.2.2/po/et/kronometer.po 2019-05-19 12:48:56.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2016-08-19 00:30+0300\n"
"Last-Translator: Marek Laane <qiilaq69(a)gmail.com>\n"
"Language-Team: Estonian <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/fi/kronometer.po new/kronometer-2.2.2/po/fi/kronometer.po
--- old/kronometer-2.2.1/po/fi/kronometer.po 2018-01-27 18:52:35.000000000 +0100
+++ new/kronometer-2.2.2/po/fi/kronometer.po 2019-05-19 12:48:57.000000000 +0200
@@ -1,14 +1,15 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
# Lasse Liehu <lasse.liehu(a)gmail.com>, 2014, 2015, 2016.
+# Tommi Nieminen <translator(a)legisign.org>, 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
-"PO-Revision-Date: 2016-04-30 23:46+0200\n"
-"Last-Translator: Lasse Liehu <lasse.liehu(a)gmail.com>\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"PO-Revision-Date: 2018-02-09 12:54+0200\n"
+"Last-Translator: Tommi Nieminen <translator(a)legisign.org>\n"
"Language-Team: Finnish <kde-i18n-doc(a)kde.org>\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
@@ -20,12 +21,12 @@
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
-msgstr "Lasse Liehu"
+msgstr "Lasse Liehu, Tommi Nieminen"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
-msgstr "lasse.liehu(a)gmail.com"
+msgstr "lasse.liehu(a)gmail.com, translator(a)legisign.org"
#. i18n: ectx: property (text), widget (QLabel, label)
#: src/gui/colorsettings.ui:20
@@ -335,7 +336,7 @@
#: src/gui/mainwindow.cpp:742
#, kde-format
msgid "A stopwatch is running."
-msgstr ""
+msgstr "Sekuntikello on käynnissä."
#: src/gui/sessiondialog.cpp:48
#, kde-format
@@ -364,9 +365,7 @@
#. i18n: @title:window
#. i18n: ectx: property (windowTitle), widget (QDialog, SessionDialog)
#: src/gui/sessiondialog.ui:14
-#, fuzzy, kde-format
-#| msgctxt "@title:window"
-#| msgid "Open Session"
+#, kde-format
msgid "Open Session"
msgstr "Avaa istunto"
@@ -391,36 +390,28 @@
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_hourGroup)
#: src/gui/timedisplay.ui:18
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Hours"
+#, kde-format
msgid "Hours"
msgstr "Tunnit"
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_minGroup)
#: src/gui/timedisplay.ui:30
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Minutes"
+#, kde-format
msgid "Minutes"
msgstr "Minuutit"
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_secGroup)
#: src/gui/timedisplay.ui:42
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Seconds"
+#, kde-format
msgid "Seconds"
msgstr "Sekunnit"
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_fracGroup)
#: src/gui/timedisplay.ui:54
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Hundredths"
+#, kde-format
msgid "Hundredths"
msgstr "Sadasosat"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/fr/kronometer.po new/kronometer-2.2.2/po/fr/kronometer.po
--- old/kronometer-2.2.1/po/fr/kronometer.po 2018-01-27 18:52:35.000000000 +0100
+++ new/kronometer-2.2.2/po/fr/kronometer.po 2019-05-19 12:48:57.000000000 +0200
@@ -2,14 +2,15 @@
# This file is distributed under the same license as the PACKAGE package.
# Vincent Pinon <vpinon(a)kde.org>, 2014.
# Thomas Vergnaud <thomas.vergnaud(a)gmx.fr>, 2014, 2015, 2016.
+# Simon Depiets <sdepiets(a)gmail.com>, 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
-"PO-Revision-Date: 2016-12-17 11:00+0100\n"
-"Last-Translator: Thomas Vergnaud <thomas.vergnaud(a)gmx.fr>\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"PO-Revision-Date: 2018-07-09 17:19+0800\n"
+"Last-Translator: Simon Depiets <sdepiets(a)gmail.com>\n"
"Language-Team: French <kde-francophone(a)kde.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -340,7 +341,7 @@
#: src/gui/mainwindow.cpp:742
#, kde-format
msgid "A stopwatch is running."
-msgstr ""
+msgstr "Un chronomètre est lancé."
#: src/gui/sessiondialog.cpp:48
#, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/gl/kronometer.po new/kronometer-2.2.2/po/gl/kronometer.po
--- old/kronometer-2.2.1/po/gl/kronometer.po 2018-01-27 18:52:38.000000000 +0100
+++ new/kronometer-2.2.2/po/gl/kronometer.po 2019-05-19 12:48:57.000000000 +0200
@@ -2,14 +2,14 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Adrián Chaves Fernández <adriyetichaves(a)gmail.com>, 2015, 2016.
-# Adrián Chaves (Gallaecio) <adrian(a)chaves.io>, 2017.
+# Adrián Chaves (Gallaecio) <adrian(a)chaves.io>, 2017, 2018.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
-"PO-Revision-Date: 2017-09-08 22:15+0100\n"
-"Last-Translator: Adrián Chaves (Gallaecio) <adrian(a)chaves.io>\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"PO-Revision-Date: 2018-04-18 20:20+0100\n"
+"Last-Translator: Adrian Chaves <adrian(a)chaves.io>\n"
"Language-Team: Galician <kde-i18n-doc(a)kde.org>\n"
"Language: gl\n"
"MIME-Version: 1.0\n"
@@ -275,9 +275,7 @@
msgstr "Configuración das cores"
#: src/gui/mainwindow.cpp:298
-#, fuzzy, kde-format
-#| msgctxt "@title:window"
-#| msgid "Save session"
+#, kde-format
msgctxt "@title:window"
msgid "Save Session"
msgstr "Gardar a sesión"
@@ -294,9 +292,7 @@
msgstr "Sesión sen título"
#: src/gui/mainwindow.cpp:318
-#, fuzzy, kde-format
-#| msgctxt "@title:window"
-#| msgid "Export laps"
+#, kde-format
msgctxt "@title:window"
msgid "Export Laps"
msgstr "Exportar as voltas"
@@ -340,7 +336,7 @@
#: src/gui/mainwindow.cpp:742
#, kde-format
msgid "A stopwatch is running."
-msgstr ""
+msgstr "Hai un cronómetro en marcha."
#: src/gui/sessiondialog.cpp:48
#, kde-format
@@ -369,9 +365,7 @@
#. i18n: @title:window
#. i18n: ectx: property (windowTitle), widget (QDialog, SessionDialog)
#: src/gui/sessiondialog.ui:14
-#, fuzzy, kde-format
-#| msgctxt "@title:window"
-#| msgid "Open Session"
+#, kde-format
msgid "Open Session"
msgstr "Abrir a sesión"
@@ -396,36 +390,28 @@
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_hourGroup)
#: src/gui/timedisplay.ui:18
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Hours"
+#, kde-format
msgid "Hours"
msgstr "Horas"
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_minGroup)
#: src/gui/timedisplay.ui:30
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Minutes"
+#, kde-format
msgid "Minutes"
msgstr "Minutos"
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_secGroup)
#: src/gui/timedisplay.ui:42
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Seconds"
+#, kde-format
msgid "Seconds"
msgstr "Segundos"
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_fracGroup)
#: src/gui/timedisplay.ui:54
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Hundredths"
+#, kde-format
msgid "Hundredths"
msgstr "Centésimas"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/hu/kronometer.po new/kronometer-2.2.2/po/hu/kronometer.po
--- old/kronometer-2.2.1/po/hu/kronometer.po 2018-01-27 18:52:45.000000000 +0100
+++ new/kronometer-2.2.2/po/hu/kronometer.po 2019-05-19 12:48:59.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2014-02-16 19:50+0100\n"
"Last-Translator: Balázs Úr <urbalazs(a)gmail.com>\n"
"Language-Team: Hungarian <kde-l10n-hu(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/it/kronometer.po new/kronometer-2.2.2/po/it/kronometer.po
--- old/kronometer-2.2.1/po/it/kronometer.po 2018-01-27 18:52:44.000000000 +0100
+++ new/kronometer-2.2.2/po/it/kronometer.po 2019-05-19 12:48:59.000000000 +0200
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2017-07-09 20:11+0100\n"
"Last-Translator: Luigi Toscano <luigi.toscano(a)tiscali.it>\n"
"Language-Team: Italian <kde-i18n-it(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/ja/kronometer.po new/kronometer-2.2.2/po/ja/kronometer.po
--- old/kronometer-2.2.1/po/ja/kronometer.po 2018-01-27 18:52:44.000000000 +0100
+++ new/kronometer-2.2.2/po/ja/kronometer.po 2019-05-19 12:48:59.000000000 +0200
@@ -2,7 +2,7 @@
msgstr ""
"Project-Id-Version: kronometer\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2014-02-22 22:23-0800\n"
"Last-Translator: Japanese KDE translation team <kde-jp(a)kde.org>\n"
"Language-Team: Japanese <kde-jp(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/ko/kronometer.po new/kronometer-2.2.2/po/ko/kronometer.po
--- old/kronometer-2.2.1/po/ko/kronometer.po 2018-01-27 18:52:46.000000000 +0100
+++ new/kronometer-2.2.2/po/ko/kronometer.po 2019-05-19 12:49:00.000000000 +0200
@@ -1,15 +1,15 @@
# Copyright (C) YEAR This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
-# Shinjo Park <kde(a)peremen.name>, 2017.
+# Shinjo Park <kde(a)peremen.name>, 2017, 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2017-12-03 23:49+0100\n"
"Last-Translator: Shinjo Park <kde(a)peremen.name>\n"
-"Language-Team: Korean <kde(a)peremen.name>\n"
+"Language-Team: Korean <kde-kr(a)kde.org>\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/lt/kronometer.po new/kronometer-2.2.2/po/lt/kronometer.po
--- old/kronometer-2.2.1/po/lt/kronometer.po 2018-01-27 18:52:49.000000000 +0100
+++ new/kronometer-2.2.2/po/lt/kronometer.po 2019-05-19 12:49:00.000000000 +0200
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: l 10n\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2014-07-02 01:51+0000\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/nds/kronometer.po new/kronometer-2.2.2/po/nds/kronometer.po
--- old/kronometer-2.2.1/po/nds/kronometer.po 2018-01-27 18:52:53.000000000 +0100
+++ new/kronometer-2.2.2/po/nds/kronometer.po 2019-05-19 12:49:02.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2014-08-15 14:38+0200\n"
"Last-Translator: Sönke Dibbern <s_dibbern(a)web.de>\n"
"Language-Team: Low Saxon <kde-i18n-nds(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/nl/kronometer.po new/kronometer-2.2.2/po/nl/kronometer.po
--- old/kronometer-2.2.1/po/nl/kronometer.po 2018-01-27 18:52:59.000000000 +0100
+++ new/kronometer-2.2.2/po/nl/kronometer.po 2019-05-19 12:49:02.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2017-11-22 11:04+0100\n"
"Last-Translator: Freek de Kruijf <freekdekruijf(a)kde.nl>\n"
"Language-Team: Dutch <kde-i18n-nl(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/nn/kronometer.po new/kronometer-2.2.2/po/nn/kronometer.po
--- old/kronometer-2.2.1/po/nn/kronometer.po 2018-01-27 18:52:59.000000000 +0100
+++ new/kronometer-2.2.2/po/nn/kronometer.po 2019-05-19 12:49:02.000000000 +0200
@@ -1,13 +1,14 @@
# Translation of kronometer to Norwegian Nynorsk
#
# Karl Ove Hufthammer <karl(a)huftis.org>, 2016.
+# Øystein Steffensen-Alværvik <ystein(a)posteo.net>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
-"PO-Revision-Date: 2016-10-30 14:54+0100\n"
-"Last-Translator: Karl Ove Hufthammer <karl(a)huftis.org>\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"PO-Revision-Date: 2018-05-10 22:00+0100\n"
+"Last-Translator: Øystein Steffensen-Alværvik <ystein(a)posteo.net>\n"
"Language-Team: Norwegian Nynorsk <i18n-nn(a)lister.ping.uio.no>\n"
"Language: nn\n"
"MIME-Version: 1.0\n"
@@ -15,6 +16,9 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 2.0\n"
+"X-Environment: kde\n"
+"X-Accelerator-Marker: &\n"
+"X-Text-Markup: kde4\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -48,7 +52,7 @@
#: src/gui/colorsettings.ui:41
#, kde-format
msgid "Color of the stopwatch display digits"
-msgstr "Farge på siffer i stoppeklokke"
+msgstr "Farge på siffer i stoppeklokka"
#. i18n: ectx: property (text), widget (QLabel, label)
#: src/gui/fontsettings.ui:20
@@ -336,7 +340,7 @@
#: src/gui/mainwindow.cpp:742
#, kde-format
msgid "A stopwatch is running."
-msgstr ""
+msgstr "Ei stoppeklokke køyrer."
#: src/gui/sessiondialog.cpp:48
#, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/pl/kronometer.po new/kronometer-2.2.2/po/pl/kronometer.po
--- old/kronometer-2.2.1/po/pl/kronometer.po 2018-01-27 18:52:58.000000000 +0100
+++ new/kronometer-2.2.2/po/pl/kronometer.po 2019-05-19 12:49:03.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2017-12-16 06:09+0100\n"
"Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz(a)gmail.com>\n"
"Language-Team: Polish <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/pt/docs/kronometer/index.docbook new/kronometer-2.2.2/po/pt/docs/kronometer/index.docbook
--- old/kronometer-2.2.1/po/pt/docs/kronometer/index.docbook 1970-01-01 01:00:00.000000000 +0100
+++ new/kronometer-2.2.2/po/pt/docs/kronometer/index.docbook 2019-05-19 12:49:14.000000000 +0200
@@ -0,0 +1,314 @@
+<?xml version="1.0" ?>
+<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN" "dtd/kdedbx45.dtd" [
+ <!ENTITY kronometer "<application
+>Kronometer</application
+>">
+ <!ENTITY kappname "&kronometer;">
+ <!ENTITY % addindex "IGNORE">
+ <!ENTITY % Portuguese "INCLUDE">
+]>
+
+<book id="kronometer" lang="&language;">
+
+<bookinfo>
+<title
+>O Manual do &kronometer;</title>
+
+<authorgroup>
+ <author
+><firstname
+>Elvis</firstname
+><surname
+>Angelaccio</surname
+> <affiliation
+> <address
+> <email
+>elvis.angelaccio(a)kde.org</email>
+ </address>
+ </affiliation>
+ </author>
+<othercredit role="translator"
+><firstname
+>José</firstname
+><surname
+>Pires</surname
+><affiliation
+><address
+><email
+>zepires(a)gmail.com</email
+></address
+></affiliation
+><contrib
+>Tradução</contrib
+></othercredit
+>
+</authorgroup>
+
+<copyright>
+<year
+>2014-2016</year>
+<holder
+>Elvis Angelaccio</holder>
+</copyright>
+
+<date
+>2016-04-10</date>
+<releaseinfo
+>&kronometer; 2.1</releaseinfo>
+
+<legalnotice>
+ &FDLNotice;
+</legalnotice>
+
+<abstract>
+ <para
+>O &kronometer; é um cronómetro. Pode ser usado para tarefas básicas, como o início/pausa/paragem/recomeço do cronómetro, assim como o registo de tempos de voltas. </para>
+ <para
+>O &kronometer; permite gravar uma sessão completa (tempos totais e por voltas), assim como repô-la mais tarde. </para>
+</abstract>
+
+<keywordset>
+ <keyword
+>KDE</keyword>
+ <keyword
+>Kronometer</keyword>
+ <keyword
+>cronómetro</keyword>
+</keywordset>
+
+</bookinfo>
+
+<chapter id="introduction">
+ <title
+>Introdução</title>
+ <para
+>O &kronometer; é uma aplicação simples de cronómetros. Pretende ser simples e agradável de usar, graças a um desenvolvimento baseado em casos de uso. </para>
+ <para
+>As funcionalidades principais do &kronometer; são as seguintes: </para>
+ <itemizedlist>
+ <listitem>
+ <para
+>O &kronometer; oferece um cronómetro que pode ser iniciado, pausado, reiniciado e limpo. </para>
+ </listitem>
+ <listitem>
+ <para
+>O &kronometer; permite-lhe registar os tempos por voltas e exportá-los para um ficheiro. </para>
+ </listitem>
+ <listitem>
+ <para
+>O &kronometer; permite-lhe gravar uma sessão e repô-la mais tarde. </para>
+ </listitem>
+ <listitem>
+ <para
+>O &kronometer; permite-lhe copiar os tempos no seu ecrã. </para>
+ </listitem>
+ </itemizedlist>
+</chapter>
+
+<chapter id="usage">
+ <title
+>Utilização</title>
+ <sect1 id="general_usage">
+ <title
+>Utilização Geral</title>
+ <para
+>O caso de uso principal do &kronometer; é obviamente a interacção com o cronómetro. Poderá iniciar/pausar/prosseguir o cronómetro se carregar nas acções adequadas da barra de ferramentas ou no menu do &kronometer;. </para>
+ <para
+>Ainda mais simples, poderá usar o teclado em vez do rato: poderá iniciar o cronómetro com a tecla <keycap
+>Espaço</keycap
+>; poderá também pausar o relógio com o <keycap
+>Espaço</keycap
+> também. Poderá reconhecer este comportamento de vários leitores multimédia. </para>
+ <para
+>Ao carregar na tecla &Enter;, enquanto o cronómetro está em contagem, irá guardar esse tempo em particular e irá criar um novo tempo de <emphasis
+>volta</emphasis
+>. Estes tempos estão sempre visíveis na tabela à esquerda na aplicação, os quais poderão ser ordenados se carregar no cabeçalho da coluna <emphasis
+>Tempo da volta</emphasis
+>. Também poderá adicionar uma anotação de texto personalizada para cada volta, fazendo duplo-click sobre as células dentro da coluna <emphasis
+>Nota</emphasis
+>. </para>
+ <para
+>O menu (escondido por omissão) oferece o acesso a todos os comandos e opções de configuração. O menu poderá ser activado ou desactivado com a opção <guimenuitem
+>Mostrar o Menu</guimenuitem
+> (<keycombo action="simul"
+>&Ctrl;<keycap
+>M</keycap
+></keycombo
+>) do menu <guimenu
+>Configuração</guimenu
+> ou com o botão do menu na barra de ferramentas. </para>
+ <sect2 id="save_and_restore">
+ <title
+>Gravar e Repor as Sessões</title>
+ <para
+>Quando pausar um cronómetro em execução, irá criar uma sessão: um tempo do cronómetro e zero ou mais tempos por voltas. Poderá gravar uma sessão num ficheiro e repô-la mais tarde. </para>
+ </sect2>
+ <sect2 id="save_a_session">
+ <title
+>Gravar uma Sessão</title>
+ <para
+>Pause um cronómetro em execução e depois carregue no botão <guibutton
+>Gravar Como</guibutton
+> da barra de ferramentas ou no menu <guimenu
+>Ficheiro</guimenu
+>. Depois escolha um nome para o ficheiro da sessão a ser guardado. </para>
+ </sect2>
+ <sect2 id="restore_a_session">
+ <title
+>Repor uma Sessão</title>
+ <para
+>Carregue no botão <guibutton
+>Abrir</guibutton
+> da barra de ferramentas ou no menu <guimenu
+>Ficheiro</guimenu
+>. Depois escolha uma sessão existente a carregar a partir da janela de sessões. </para>
+ </sect2>
+ <sect2 id="update_a_session">
+ <title
+>Actualizar uma Sessão</title>
+ <para
+>Quando a sessão for reposta, poderá retomar o cronómetro e poderá gravar novos tempos de voltas. Se quiser gravar a sessão actualizada, poderá simplesmente carregar no botão <guibutton
+>Gravar</guibutton
+> da barra de ferramentas ou no menu <guimenu
+>Ficheiro</guimenu
+>. </para>
+ </sect2>
+ <sect2 id="edit_a_session">
+ <title
+>Editar uma Sessão</title>
+ <para
+>Carregue no botão <guibutton
+>Abrir</guibutton
+> da barra de ferramentas ou no menu <guimenu
+>Ficheiro</guimenu
+>. Se seleccionar uma sessão existente na janela de sessões, será capaz de: <itemizedlist>
+ <listitem>
+ <para
+>Mudar o nome da sessão, fazendo duplo-click sobre o seu nome.</para>
+ </listitem>
+ <listitem>
+ <para
+>Apagar a sessão, carregando em <keycap
+>Del</keycap
+>.</para>
+ </listitem>
+ <listitem>
+ <para
+>Adicionar uma nota à sessão ou editá-la.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect2>
+ </sect1>
+ <sect1 id="additional_features">
+ <title
+>Funcionalidades Adicionais</title>
+ <sect2 id="export_lap_times">
+ <title
+>Exportar os Tempos das Voltas</title>
+ <para
+>Quando registar um ou mais tempos de voltas, as funcionalidades de exportação do menu <guimenu
+>Ficheiro</guimenu
+> ficam disponíveis sob o item <guimenuitem
+>Exportar as voltas como</guimenuitem
+>. Carregue nele e depois escolha um nome para o ficheiro exportado. Podê-lo-á exportar no formato de Valores Separados por Vírgulas (CSV) ou em JSON. </para>
+ </sect2>
+ <sect2 id="clipboard_support">
+ <title
+>Suporte para a Área de Transferência</title>
+ <para
+>O &kronometer; é capaz de copiar o tempo actual do cronómetro para a área de transferência do sistema. Use a combinação de teclas <keycombo
+>&Ctrl;<keycap
+>C</keycap
+></keycombo
+> ou a opção <guimenuitem
+>Copiar</guimenuitem
+> do menu <guimenu
+>Editar</guimenu
+>. </para>
+ </sect2>
+ </sect1>
+</chapter>
+
+<chapter id="configuration">
+ <title
+>Configuração</title>
+ <sect1 id="settings_dialog">
+ <title
+>Janela de Configuração</title>
+ <para
+>O &kronometer; é personalizado em vários aspectos. Poderá abrir a janela de configuração se carregar na opção <guimenuitem
+>Configurar o &kronometer;</guimenuitem
+> do menu <guimenu
+>Configuração</guimenu
+>. A janela de configuração está organizada nas seguintes categorias. </para>
+ <sect2 id="general_settings">
+ <title
+>Configuração Geral</title>
+ <para
+>Na página de configuração geral, poderá encontrar as definições do cronómetro e para as voltas. Na página do cronómetro, poderá definir o seu formato de tempos preferido na apresentação do cronómetro. Poderá escolher se deseja mostrar as horas, minutos ou fracções de segundo (sendo que os segundos são sempre visíveis). O &kronometer; suporta uma granularidade ao milisegundo, ainda que isto exija uma carga de CPU elevada, devido à taxa de actualização elevada da interface. </para>
+ <para
+>Dentro da página de voltas, poderá activar a funcionalidade de gravação das voltas. Se as mesmas estiverem activas, poderá escolher o formato das horas, se deve mostrar as suas notas e se deve mostrar as suas horas absolutas, que são as horas do cronómetro em que foram gravadas. </para>
+ </sect2>
+ <sect2 id="font_settings">
+ <title
+>Configuração dos Tipos de Letra</title>
+ <para
+>Na página de configuração dos tipos de letra poderá personalizar o tipo de letra usado no cronómetro. Poderá escolher diversos tipos, estilos e tamanhos de letra para cada componente do cronómetro (horas, minutos, &etc;). Por omissão, cada componente do cronómetro irá usar o mesmo tipo de letra, de acordo com o tipo de letra por omissão do sistema. </para>
+ </sect2>
+ <sect2 id="color_settings">
+ <title
+>Configuração de Cores</title>
+ <para
+>Na página de configuração das cores poderá personalizar as cores predefinidas de visualização do cronómetro. Poderá mudar a cor do fundo e do texto. As cores predefinidas irão respeitar o tema seleccionado de momento no sistema. </para>
+ </sect2>
+ <sect2 id="kde_built_in_settings">
+ <title
+>Configurações Incorporadas do &kde;</title>
+ <para
+>O &kronometer; tira partido das ferramentas de configuração normais do &kde;. Podê-las-á descobrir no menu <guimenu
+>Configuração</guimenu
+>, sob os itens <guimenuitem
+>Configurar os Atalhos</guimenuitem
+> e <guimenuitem
+>Configurar as Barras de Ferramentas</guimenuitem
+>. Estas permitem-lhe alterar as combinações de teclas das acções do &kronometer;, assim como mudar a posição da barra de ferramentas e do seu conteúdo. </para>
+ </sect2>
+ </sect1>
+</chapter>
+
+<chapter id="credits">
+ <title
+>Créditos e Licença</title>
+ <para
+>&kronometer; </para>
+ <para
+>Programa com 'copyright' © 2014-2016 de Elvis Angelaccio <email
+>elvis.angelaccio(a)kde.org</email
+> </para>
+ <para
+>Documentação com 'copyright' © 2014-2016 de Elvis Angelaccio <email
+>elvis.angelaccio(a)kde.org</email
+> </para>
+<para
+>Tradução de José Nuno Pires <email
+>zepires(a)gmail.com</email
+></para
+>
+&underFDL; &underGPL; </chapter>
+
+&documentation.index;
+
+</book>
+
+<!--
+Local Variables:
+mode: xml
+sgml-minimize-attributes:nil
+sgml-general-insert-case:lower
+sgml-indent-step:0
+sgml-indent-data:nil
+End:
+
+vim:tabstop=2:shiftwidth=2:expandtab
+-->
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/pt/docs/kronometer/man-kronometer.1.docbook new/kronometer-2.2.2/po/pt/docs/kronometer/man-kronometer.1.docbook
--- old/kronometer-2.2.1/po/pt/docs/kronometer/man-kronometer.1.docbook 1970-01-01 01:00:00.000000000 +0100
+++ new/kronometer-2.2.2/po/pt/docs/kronometer/man-kronometer.1.docbook 2019-05-19 12:49:14.000000000 +0200
@@ -0,0 +1,98 @@
+<?xml version="1.0" ?>
+<!DOCTYPE refentry PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN" "dtd/kdedbx45.dtd" [
+<!ENTITY % Portuguese "INCLUDE">
+]>
+
+<refentry lang="&language;">
+<refentryinfo>
+ <date
+>2016-04-10</date>
+ <releaseinfo
+>kronometer 2.0</releaseinfo>
+</refentryinfo>
+<!-- lifted from man+troff by doclifter -->
+<refmeta>
+<refentrytitle
+>kronometer</refentrytitle>
+<manvolnum
+>1</manvolnum>
+<refmiscinfo class='source'
+>Abril de 2016</refmiscinfo>
+<refmiscinfo class='manual'
+>KRONOMETER 2.1.0</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname
+>kronometer</refname>
+<refpurpose
+>aplicação de cronómetro</refpurpose>
+</refnamediv>
+<!-- body begins here -->
+<refsynopsisdiv id='synopsis'>
+<cmdsynopsis>
+ <command
+>kronometer</command>
+</cmdsynopsis>
+</refsynopsisdiv>
+
+<refsect1 id='description'
+><title
+>DESCRIÇÃO</title>
+<para
+>O Kronometer é uma aplicação de cronómetros.</para>
+
+<para
+>As funcionalidades principais do Kronometer são as seguintes:</para>
+ <blockquote>
+ <itemizedlist>
+ <listitem override='bullet'>
+<para
+>Iniciar/pausar/retomar o item do cronómetro;</para>
+ </listitem>
+ <listitem override='bullet'>
+<para
+>Gravação de voltas: poderá capturar os tempos do cronómetro sempre que desejar;</para>
+ </listitem>
+ <listitem override='bullet'>
+<para
+>Ordenação dos tempos de voltas: poderá encontrar facilmente o tempo mais curto ou mais longo;</para>
+ </listitem>
+ <listitem override='bullet'>
+<para
+>Reiniciar o cronómetro e os tempos das voltas;</para>
+ </listitem>
+ <listitem override='bullet'>
+<para
+>Configuração do formato das horas: poderá escolher a granularidade do relógio;</para>
+ </listitem>
+ <listitem override='bullet'>
+<para
+>Gravação e recuperação dos tempo: poderá gravar o estado do cronómetro e retomá-lo posteriormente;</para>
+ </listitem>
+ <listitem override='bullet'>
+<para
+>Personalização dos tipos de letra: poderá escolher os tipos de letra para cada um dos números do cronómetro;</para>
+ </listitem>
+ <listitem override='bullet'>
+<para
+>Personalização de cores: poderá escolher a cor dos números do cronómetro e o fundo do mesmo;</para>
+ </listitem>
+ <listitem override='bullet'>
+<para
+>Exportação dos tempos das voltas: poderá exportar os tempos das voltas para um ficheiro no formato CSV ou JSON.</para>
+ </listitem>
+ </itemizedlist>
+ </blockquote>
+</refsect1>
+
+<refsect1 id='author'
+><title
+>AUTOR</title>
+<para
+>O KRONOMETER foi criado por Elvis Angelaccio <elvis.angelaccio(a)kde.org>.</para>
+
+<para
+>Esta página do manual foi criada por João Eriberto Mota Filho <eriberto(a)debian.org> para o projecto Debian (mas poderá ser usado por outros).</para>
+</refsect1>
+</refentry>
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/pt/kronometer.po new/kronometer-2.2.2/po/pt/kronometer.po
--- old/kronometer-2.2.1/po/pt/kronometer.po 2018-01-27 18:52:59.000000000 +0100
+++ new/kronometer-2.2.2/po/pt/kronometer.po 2019-05-19 12:49:03.000000000 +0200
@@ -2,7 +2,7 @@
msgstr ""
"Project-Id-Version: kronometer\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2017-11-22 14:59+0000\n"
"Last-Translator: José Nuno Coelho Pires <zepires(a)gmail.com>\n"
"Language-Team: Portuguese <kde-i18n-pt(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/pt_BR/kronometer.po new/kronometer-2.2.2/po/pt_BR/kronometer.po
--- old/kronometer-2.2.1/po/pt_BR/kronometer.po 2018-01-27 18:53:00.000000000 +0100
+++ new/kronometer-2.2.2/po/pt_BR/kronometer.po 2019-05-19 12:49:03.000000000 +0200
@@ -3,14 +3,15 @@
# This file is distributed under the same license as the PACKAGE package.
#
# André Marcelo Alvarenga <alvarenga(a)kde.org>, 2014, 2015, 2016.
+# Luiz Fernando Ranghetti <elchevive(a)opensuse.org>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: kronometer\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
-"PO-Revision-Date: 2016-04-11 21:53-0300\n"
-"Last-Translator: André Marcelo Alvarenga <alvarenga(a)kde.org>\n"
-"Language-Team: Brazilian Portuguese <kde-i18n-pt_br(a)kde.org>\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"PO-Revision-Date: 2018-07-13 09:36-0300\n"
+"Last-Translator: Luiz Fernando Ranghetti <elchevive(a)opensuse.org>\n"
+"Language-Team: Portuguese <kde-i18n-pt_BR(a)kde.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -275,9 +276,7 @@
msgstr "Configuração de cores"
#: src/gui/mainwindow.cpp:298
-#, fuzzy, kde-format
-#| msgctxt "@title:window"
-#| msgid "Save session"
+#, kde-format
msgctxt "@title:window"
msgid "Save Session"
msgstr "Salvar sessão"
@@ -294,9 +293,7 @@
msgstr "Sessão sem título"
#: src/gui/mainwindow.cpp:318
-#, fuzzy, kde-format
-#| msgctxt "@title:window"
-#| msgid "Export laps"
+#, kde-format
msgctxt "@title:window"
msgid "Export Laps"
msgstr "Exportar voltas"
@@ -340,7 +337,7 @@
#: src/gui/mainwindow.cpp:742
#, kde-format
msgid "A stopwatch is running."
-msgstr ""
+msgstr "Um cronômetro está em execução."
#: src/gui/sessiondialog.cpp:48
#, kde-format
@@ -369,11 +366,9 @@
#. i18n: @title:window
#. i18n: ectx: property (windowTitle), widget (QDialog, SessionDialog)
#: src/gui/sessiondialog.ui:14
-#, fuzzy, kde-format
-#| msgctxt "@title:window"
-#| msgid "Open Session"
+#, kde-format
msgid "Open Session"
-msgstr "Abrir a sessão"
+msgstr "Abrir sessão"
#: src/gui/timedisplay.cpp:167
#, kde-format
@@ -396,36 +391,28 @@
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_hourGroup)
#: src/gui/timedisplay.ui:18
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Hours"
+#, kde-format
msgid "Hours"
msgstr "Horas"
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_minGroup)
#: src/gui/timedisplay.ui:30
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Minutes"
+#, kde-format
msgid "Minutes"
msgstr "Minutos"
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_secGroup)
#: src/gui/timedisplay.ui:42
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Seconds"
+#, kde-format
msgid "Seconds"
msgstr "Segundos"
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_fracGroup)
#: src/gui/timedisplay.ui:54
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Hundredths"
+#, kde-format
msgid "Hundredths"
msgstr "Centésimos"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/ru/kronometer.po new/kronometer-2.2.2/po/ru/kronometer.po
--- old/kronometer-2.2.1/po/ru/kronometer.po 2018-01-27 18:53:02.000000000 +0100
+++ new/kronometer-2.2.2/po/ru/kronometer.po 2019-05-19 12:49:04.000000000 +0200
@@ -2,20 +2,20 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Victor Ryzhykh <<victorr2007(a)yandex.ru>>, 2014.
-# Alexander Potashev <aspotashev(a)gmail.com>, 2014, 2017.
+# Alexander Potashev <aspotashev(a)gmail.com>, 2014, 2017, 2019.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
-"PO-Revision-Date: 2017-11-20 19:40+0300\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"PO-Revision-Date: 2019-05-11 03:56+0300\n"
"Last-Translator: Alexander Potashev <aspotashev(a)gmail.com>\n"
"Language-Team: Russian <kde-russian(a)lists.kde.ru>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 2.0\n"
+"X-Generator: Lokalize 18.12.2\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Environment: kde\n"
@@ -399,27 +399,21 @@
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_hourGroup)
#: src/gui/timedisplay.ui:18
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Hours"
+#, kde-format
msgid "Hours"
msgstr "Часы"
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_minGroup)
#: src/gui/timedisplay.ui:30
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Minutes"
+#, kde-format
msgid "Minutes"
msgstr "Минуты"
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_secGroup)
#: src/gui/timedisplay.ui:42
-#, fuzzy, kde-format
-#| msgctxt "@title:column"
-#| msgid "Seconds"
+#, kde-format
msgid "Seconds"
msgstr "Секунды"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/sk/kronometer.po new/kronometer-2.2.2/po/sk/kronometer.po
--- old/kronometer-2.2.1/po/sk/kronometer.po 2018-01-27 18:53:04.000000000 +0100
+++ new/kronometer-2.2.2/po/sk/kronometer.po 2019-05-19 12:49:04.000000000 +0200
@@ -4,7 +4,7 @@
msgstr ""
"Project-Id-Version: kronometer\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2017-11-24 20:40+0100\n"
"Last-Translator: Roman Paholik <wizzardsk(a)gmail.com>\n"
"Language-Team: Slovak <kde-sk(a)linux.sk>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/sl/kronometer.po new/kronometer-2.2.2/po/sl/kronometer.po
--- old/kronometer-2.2.1/po/sl/kronometer.po 2018-01-27 18:53:04.000000000 +0100
+++ new/kronometer-2.2.2/po/sl/kronometer.po 2019-05-19 12:49:04.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2016-05-14 10:57+0200\n"
"Last-Translator: Andrej Mernik <andrejm(a)ubuntu.si>\n"
"Language-Team: Slovenian <lugos-slo(a)lugos.si>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/sv/kronometer.po new/kronometer-2.2.2/po/sv/kronometer.po
--- old/kronometer-2.2.1/po/sv/kronometer.po 2018-01-27 18:53:07.000000000 +0100
+++ new/kronometer-2.2.2/po/sv/kronometer.po 2019-05-19 12:49:05.000000000 +0200
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2017-11-26 10:54+0100\n"
"Last-Translator: Stefan Asserhäll <stefan.asserhall(a)bredband.net>\n"
"Language-Team: Swedish <kde-i18n-doc(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/tr/kronometer.po new/kronometer-2.2.2/po/tr/kronometer.po
--- old/kronometer-2.2.1/po/tr/kronometer.po 2018-01-27 18:53:10.000000000 +0100
+++ new/kronometer-2.2.2/po/tr/kronometer.po 2019-05-19 12:49:06.000000000 +0200
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: kronometer\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2017-08-11 09:07+0000\n"
"Last-Translator: Kaan <kaanozdincer(a)gmail.com>\n"
"Language-Team: Turkish <kde-i18n-doc(a)kde.org>\n"
@@ -389,21 +389,21 @@
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_hourGroup)
#: src/gui/timedisplay.ui:18
-#, kde-format
+#, fuzzy, kde-format
msgid "Hours"
msgstr "Saat"
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_minGroup)
#: src/gui/timedisplay.ui:30
-#, kde-format
+#, fuzzy, kde-format
msgid "Minutes"
msgstr "Dakika"
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_secGroup)
#: src/gui/timedisplay.ui:42
-#, kde-format
+#, fuzzy, kde-format
msgid "Seconds"
msgstr "Saniye"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/uk/kronometer.po new/kronometer-2.2.2/po/uk/kronometer.po
--- old/kronometer-2.2.1/po/uk/kronometer.po 2018-01-27 18:53:12.000000000 +0100
+++ new/kronometer-2.2.2/po/uk/kronometer.po 2019-05-19 12:49:07.000000000 +0200
@@ -1,5 +1,5 @@
# Translation of kronometer.po to Ukrainian
-# Copyright (C) 2014-2016 This_file_is_part_of_KDE
+# Copyright (C) 2014-2017 This_file_is_part_of_KDE
# This file is distributed under the license LGPL version 2.1 or
# version 3 or later versions approved by the membership of KDE e.V.
#
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: kronometer\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2017-11-22 18:52+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor(a)ukr.net>\n"
"Language-Team: Ukrainian <kde-i18n-uk(a)kde.org>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/zh_CN/kronometer.po new/kronometer-2.2.2/po/zh_CN/kronometer.po
--- old/kronometer-2.2.1/po/zh_CN/kronometer.po 2018-01-27 18:53:17.000000000 +0100
+++ new/kronometer-2.2.2/po/zh_CN/kronometer.po 2019-05-19 12:49:07.000000000 +0200
@@ -6,9 +6,9 @@
msgstr ""
"Project-Id-Version: kdeorg\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
-"PO-Revision-Date: 2018-01-22 17:30-0500\n"
-"Last-Translator: guoyunhebrave <guoyunhebrave(a)gmail.com>\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
+"PO-Revision-Date: 2019-05-05 22:36\n"
+"Last-Translator: Guo Yunhe (guoyunhe)\n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
@@ -408,7 +408,7 @@
#: src/gui/timedisplay.ui:42
#, kde-format
msgid "Seconds"
-msgstr "秒"
+msgstr "二度"
#. i18n: @title:column
#. i18n: ectx: property (title), widget (QGroupBox, m_fracGroup)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kronometer-2.2.1/po/zh_TW/kronometer.po new/kronometer-2.2.2/po/zh_TW/kronometer.po
--- old/kronometer-2.2.1/po/zh_TW/kronometer.po 2018-01-27 18:53:18.000000000 +0100
+++ new/kronometer-2.2.2/po/zh_TW/kronometer.po 2019-05-19 12:49:07.000000000 +0200
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: kronometer\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2017-11-22 08:51+0100\n"
+"POT-Creation-Date: 2019-03-18 07:50+0100\n"
"PO-Revision-Date: 2016-09-22 20:30+0800\n"
"Last-Translator: Jeff Huang <s8321414(a)gmail.com>\n"
"Language-Team: Traditional Chinese <zh-l10n(a)linux.org.tw>\n"
1
0
Hello community,
here is the log from the commit of package os-autoinst-distri-opensuse-deps for openSUSE:Factory checked in at 2019-05-22 11:17:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/os-autoinst-distri-opensuse-deps (Old)
and /work/SRC/openSUSE:Factory/.os-autoinst-distri-opensuse-deps.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "os-autoinst-distri-opensuse-deps"
Wed May 22 11:17:02 2019 rev:3 rq:704451 version:1.1558441645.3cae9c7d1
Changes:
--------
--- /work/SRC/openSUSE:Factory/os-autoinst-distri-opensuse-deps/os-autoinst-distri-opensuse-deps.changes 2019-05-21 10:39:46.511110838 +0200
+++ /work/SRC/openSUSE:Factory/.os-autoinst-distri-opensuse-deps.new.5148/os-autoinst-distri-opensuse-deps.changes 2019-05-22 11:17:03.878487585 +0200
@@ -1,0 +2,5 @@
+Tue May 21 12:30:43 UTC 2019 - Dominik Heidler <dheidler(a)suse.de>
+
+- Ensure reproducible dependency sorting required for automatic SRs.
+
+-------------------------------------------------------------------
Old:
----
os-autoinst-distri-opensuse-1.1558347989.0bd999e02.obscpio
New:
----
os-autoinst-distri-opensuse-1.1558441645.3cae9c7d1.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ os-autoinst-distri-opensuse-deps.spec ++++++
--- /var/tmp/diff_new_pack.kLI6MU/_old 2019-05-22 11:17:05.082486742 +0200
+++ /var/tmp/diff_new_pack.kLI6MU/_new 2019-05-22 11:17:05.086486740 +0200
@@ -17,7 +17,7 @@
Name: os-autoinst-distri-opensuse-deps
-Version: 1.1558347989.0bd999e02
+Version: 1.1558441645.3cae9c7d1
Release: 0
Summary: Metapackage that contains the dependencies of os-autoinst-distri-opensuse
License: MIT
@@ -32,8 +32,8 @@
Requires: perl(File::Path)
Requires: perl(IO::File)
Requires: perl(IO::Socket::INET)
-Requires: perl(LWP::Simple)
Requires: perl(List::Util)
+Requires: perl(LWP::Simple)
Requires: perl(Perl::Critic::Freenode)
Requires: perl(Selenium::Chrome)
Requires: perl(Selenium::Remote::Driver)
++++++ _service ++++++
--- /var/tmp/diff_new_pack.kLI6MU/_old 2019-05-22 11:17:05.110486723 +0200
+++ /var/tmp/diff_new_pack.kLI6MU/_new 2019-05-22 11:17:05.114486720 +0200
@@ -12,4 +12,5 @@
<param name="changesauthor">dheidler(a)suse.de</param>
</service>
<service name="set_version" mode="disabled"/>
+ <service name="format_spec_file" mode="disabled"/>
</services>
++++++ os-autoinst-distri-opensuse-1.1558347989.0bd999e02.obscpio -> os-autoinst-distri-opensuse-1.1558441645.3cae9c7d1.obscpio ++++++
++++++ os-autoinst-distri-opensuse.obsinfo ++++++
--- /var/tmp/diff_new_pack.kLI6MU/_old 2019-05-22 11:17:05.298486592 +0200
+++ /var/tmp/diff_new_pack.kLI6MU/_new 2019-05-22 11:17:05.298486592 +0200
@@ -1,5 +1,5 @@
name: os-autoinst-distri-opensuse
-version: 1.1558347989.0bd999e02
-mtime: 1558347989
-commit: 0bd999e02ebfd8f4f3003002b6cdeeb2acb6d1f3
+version: 1.1558441645.3cae9c7d1
+mtime: 1558441645
+commit: 3cae9c7d1eff02f51a71dd194b54761cba725f96
1
0
Hello community,
here is the log from the commit of package python-ruamel.yaml for openSUSE:Factory checked in at 2019-05-22 11:16:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ruamel.yaml (Old)
and /work/SRC/openSUSE:Factory/.python-ruamel.yaml.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ruamel.yaml"
Wed May 22 11:16:58 2019 rev:16 rq:704433 version:0.15.96
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ruamel.yaml/python-ruamel.yaml.changes 2019-05-14 13:43:56.828713632 +0200
+++ /work/SRC/openSUSE:Factory/.python-ruamel.yaml.new.5148/python-ruamel.yaml.changes 2019-05-22 11:17:00.474489967 +0200
@@ -1,0 +2,8 @@
+Tue May 21 11:20:51 UTC 2019 - Ondřej Súkup <mimi.vx(a)gmail.com>
+
+- update to 0.15.96
+ * fix failure to round-trip anchored scalars in block sequence
+ * fix failure to indent comments on round-trip anchored block style
+ scalars in block sequence
+
+-------------------------------------------------------------------
Old:
----
ruamel.yaml-0.15.94.tar.gz
New:
----
ruamel.yaml-0.15.96.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ruamel.yaml.spec ++++++
--- /var/tmp/diff_new_pack.eAwKhT/_old 2019-05-22 11:17:01.514489239 +0200
+++ /var/tmp/diff_new_pack.eAwKhT/_new 2019-05-22 11:17:01.518489237 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-ruamel.yaml
-Version: 0.15.94
+Version: 0.15.96
Release: 0
Summary: Python YAML parser
License: MIT
++++++ ruamel.yaml-0.15.94.tar.gz -> ruamel.yaml-0.15.96.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.94/CHANGES new/ruamel.yaml-0.15.96/CHANGES
--- old/ruamel.yaml-0.15.94/CHANGES 2019-04-23 08:30:29.000000000 +0200
+++ new/ruamel.yaml-0.15.96/CHANGES 2019-05-16 22:50:45.000000000 +0200
@@ -1,3 +1,15 @@
+[0, 15, 96]: 2019-05-16
+ - fix failure to indent comments on round-trip anchored block style
+ scalars in block sequence (reported by `William Kimball
+ <https://bitbucket.org/%7Bba35ed20-4bb0-46f8-bb5d-c29871e86a22%7D/>`__)
+
+[0, 15, 95]: 2019-05-16
+ - fix failure to round-trip anchored scalars in block sequence
+ (reported by `William Kimball
+ <https://bitbucket.org/%7Bba35ed20-4bb0-46f8-bb5d-c29871e86a22%7D/>`__)
+ - wheel files for Python 3.4 no longer provided (`Python 3.4 EOL 2019-03-18
+ <https://www.python.org/dev/peps/pep-0429/>`__)
+
[0, 15, 94]: 2019-04-23
- fix missing line-break after end-of-file comments not ending in
line-break (reported by `Philip Thompson
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.94/PKG-INFO new/ruamel.yaml-0.15.96/PKG-INFO
--- old/ruamel.yaml-0.15.94/PKG-INFO 2019-04-23 08:33:54.000000000 +0200
+++ new/ruamel.yaml-0.15.96/PKG-INFO 2019-05-16 22:53:32.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: ruamel.yaml
-Version: 0.15.94
+Version: 0.15.96
Summary: ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order
Home-page: https://bitbucket.org/ruamel/yaml
Author: Anthon van der Neut
@@ -12,8 +12,8 @@
``ruamel.yaml`` is a YAML 1.2 loader/dumper package for Python.
- :version: 0.15.94
- :updated: 2019-04-23
+ :version: 0.15.96
+ :updated: 2019-05-16
:documentation: http://yaml.readthedocs.io
:repository: https://bitbucket.org/ruamel/
:pypi: https://pypi.org/project/ruamel.yaml/
@@ -62,6 +62,18 @@
.. should insert NEXT: at the beginning of line for next key (with empty line)
+ 0.15.96 (2019-05-16):
+ - fix failure to indent comments on round-trip anchored block style
+ scalars in block sequence (reported by `William Kimball
+ <https://bitbucket.org/%7Bba35ed20-4bb0-46f8-bb5d-c29871e86a22%7D/>`__)
+
+ 0.15.95 (2019-05-16):
+ - fix failure to round-trip anchored scalars in block sequence
+ (reported by `William Kimball
+ <https://bitbucket.org/%7Bba35ed20-4bb0-46f8-bb5d-c29871e86a22%7D/>`__)
+ - wheel files for Python 3.4 no longer provided (`Python 3.4 EOL 2019-03-18
+ <https://www.python.org/dev/peps/pep-0429/>`__)
+
0.15.94 (2019-04-23):
- fix missing line-break after end-of-file comments not ending in
line-break (reported by `Philip Thompson
@@ -675,7 +687,6 @@
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.94/README.rst new/ruamel.yaml-0.15.96/README.rst
--- old/ruamel.yaml-0.15.94/README.rst 2019-04-23 08:30:29.000000000 +0200
+++ new/ruamel.yaml-0.15.96/README.rst 2019-05-16 22:50:45.000000000 +0200
@@ -4,8 +4,8 @@
``ruamel.yaml`` is a YAML 1.2 loader/dumper package for Python.
-:version: 0.15.94
-:updated: 2019-04-23
+:version: 0.15.96
+:updated: 2019-05-16
:documentation: http://yaml.readthedocs.io
:repository: https://bitbucket.org/ruamel/
:pypi: https://pypi.org/project/ruamel.yaml/
@@ -54,6 +54,18 @@
.. should insert NEXT: at the beginning of line for next key (with empty line)
+0.15.96 (2019-05-16):
+ - fix failure to indent comments on round-trip anchored block style
+ scalars in block sequence (reported by `William Kimball
+ <https://bitbucket.org/%7Bba35ed20-4bb0-46f8-bb5d-c29871e86a22%7D/>`__)
+
+0.15.95 (2019-05-16):
+ - fix failure to round-trip anchored scalars in block sequence
+ (reported by `William Kimball
+ <https://bitbucket.org/%7Bba35ed20-4bb0-46f8-bb5d-c29871e86a22%7D/>`__)
+ - wheel files for Python 3.4 no longer provided (`Python 3.4 EOL 2019-03-18
+ <https://www.python.org/dev/peps/pep-0429/>`__)
+
0.15.94 (2019-04-23):
- fix missing line-break after end-of-file comments not ending in
line-break (reported by `Philip Thompson
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.94/__init__.py new/ruamel.yaml-0.15.96/__init__.py
--- old/ruamel.yaml-0.15.94/__init__.py 2019-04-23 08:31:18.000000000 +0200
+++ new/ruamel.yaml-0.15.96/__init__.py 2019-05-16 22:51:57.000000000 +0200
@@ -7,62 +7,61 @@
_package_data = dict(
full_package_name='ruamel.yaml',
- version_info=(0, 15, 94),
- __version__='0.15.94',
+ version_info=(0, 15, 96),
+ __version__='0.15.96',
author='Anthon van der Neut',
author_email='a.van.der.neut(a)ruamel.eu',
description='ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order', # NOQA
entry_points=None,
since=2014,
- extras_require={
- ':platform_python_implementation=="CPython" and python_version<="2.7"': [
- 'ruamel.ordereddict'
- ],
- 'jinja2': ['ruamel.yaml.jinja2>=0.2'],
- 'docs': ['ryd'],
- },
+ extras_require={':platform_python_implementation=="CPython" and python_version<="2.7"': [
+ 'ruamel.ordereddict',
+ ], 'jinja2': ['ruamel.yaml.jinja2>=0.2'], 'docs': ['ryd']},
ext_modules=[
- dict(
- name='_ruamel_yaml',
- src=[
- 'ext/_ruamel_yaml.c',
- 'ext/api.c',
- 'ext/writer.c',
- 'ext/dumper.c',
- 'ext/loader.c',
- 'ext/reader.c',
- 'ext/scanner.c',
- 'ext/parser.c',
- 'ext/emitter.c',
- ],
- lib=[],
- test="""
+ dict(
+ name='_ruamel_yaml',
+ src=[
+ 'ext/_ruamel_yaml.c',
+ 'ext/api.c',
+ 'ext/writer.c',
+ 'ext/dumper.c',
+ 'ext/loader.c',
+ 'ext/reader.c',
+ 'ext/scanner.c',
+ 'ext/parser.c',
+ 'ext/emitter.c',
+ ],
+ lib=[],
+ test="""
int main(int argc, char* argv[])
{
/* prevent warning */
return 0;
}
""",
- )
+ ),
],
# NOQA
# test='#include "ext/yaml.h"\n\nint main(int argc, char* argv[])\n{\nyaml_parser_t parser;\nparser = parser; /* prevent warning */\nreturn 0;\n}\n', # NOQA
classifiers=[
- 'Programming Language :: Python :: 2.7',
- 'Programming Language :: Python :: 3.4',
- 'Programming Language :: Python :: 3.5',
- 'Programming Language :: Python :: 3.6',
- 'Programming Language :: Python :: 3.7',
- 'Programming Language :: Python :: Implementation :: CPython',
- 'Programming Language :: Python :: Implementation :: PyPy',
- 'Programming Language :: Python :: Implementation :: Jython',
- 'Topic :: Software Development :: Libraries :: Python Modules',
- 'Topic :: Text Processing :: Markup',
+ 'Programming Language :: Python :: 2.7',
+ 'Programming Language :: Python :: 3.5',
+ 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
+ 'Programming Language :: Python :: Implementation :: CPython',
+ 'Programming Language :: Python :: Implementation :: PyPy',
+ 'Programming Language :: Python :: Implementation :: Jython',
+ 'Topic :: Software Development :: Libraries :: Python Modules',
+ 'Topic :: Text Processing :: Markup',
],
keywords='yaml 1.2 parser round-trip preserve quotes order config',
- wheels=dict(windows='appveyor', linux='libyaml-devel', macos='builder@macos'),
+ wheels=dict(
+ windows='appveyor',
+ linux='libyaml-devel',
+ macos='builder@macos',
+ ),
read_the_docs='yaml',
- supported=[(2, 7), (3, 4)], # minimum
+ supported=[(2, 7), (3, 5)], # minimum
tox=dict(
env='*pn', # also test narrow Python 2.7.15 for unicode patterns
deps='ruamel.std.pathlib',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.94/emitter.py new/ruamel.yaml-0.15.96/emitter.py
--- old/ruamel.yaml-0.15.94/emitter.py 2019-02-27 22:43:41.000000000 +0100
+++ new/ruamel.yaml-0.15.96/emitter.py 2019-05-16 00:22:01.000000000 +0200
@@ -421,7 +421,6 @@
self.indention = False
self.no_newline = True
if self.write_pre_comment(self.event):
- pass
self.indention = i2
self.no_newline = not self.indention
if (
@@ -780,6 +779,8 @@
self.prepared_anchor = self.prepare_anchor(self.event.anchor)
if self.prepared_anchor:
self.write_indicator(indicator + self.prepared_anchor, True)
+ # issue 288
+ self.no_newline = False
self.prepared_anchor = None
return True
@@ -1631,7 +1632,7 @@
# at least one space if the current column >= the start column of the comment
# but not at the start of a line
nr_spaces = col - self.column
- if self.column and value.strip() and nr_spaces < 1:
+ if self.column and value.strip() and nr_spaces < 1 and value[0] != '\n':
nr_spaces = 1
value = ' ' * nr_spaces + value
try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.94/ruamel.yaml.egg-info/PKG-INFO new/ruamel.yaml-0.15.96/ruamel.yaml.egg-info/PKG-INFO
--- old/ruamel.yaml-0.15.94/ruamel.yaml.egg-info/PKG-INFO 2019-04-23 08:33:52.000000000 +0200
+++ new/ruamel.yaml-0.15.96/ruamel.yaml.egg-info/PKG-INFO 2019-05-16 22:53:31.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: ruamel.yaml
-Version: 0.15.94
+Version: 0.15.96
Summary: ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order
Home-page: https://bitbucket.org/ruamel/yaml
Author: Anthon van der Neut
@@ -12,8 +12,8 @@
``ruamel.yaml`` is a YAML 1.2 loader/dumper package for Python.
- :version: 0.15.94
- :updated: 2019-04-23
+ :version: 0.15.96
+ :updated: 2019-05-16
:documentation: http://yaml.readthedocs.io
:repository: https://bitbucket.org/ruamel/
:pypi: https://pypi.org/project/ruamel.yaml/
@@ -62,6 +62,18 @@
.. should insert NEXT: at the beginning of line for next key (with empty line)
+ 0.15.96 (2019-05-16):
+ - fix failure to indent comments on round-trip anchored block style
+ scalars in block sequence (reported by `William Kimball
+ <https://bitbucket.org/%7Bba35ed20-4bb0-46f8-bb5d-c29871e86a22%7D/>`__)
+
+ 0.15.95 (2019-05-16):
+ - fix failure to round-trip anchored scalars in block sequence
+ (reported by `William Kimball
+ <https://bitbucket.org/%7Bba35ed20-4bb0-46f8-bb5d-c29871e86a22%7D/>`__)
+ - wheel files for Python 3.4 no longer provided (`Python 3.4 EOL 2019-03-18
+ <https://www.python.org/dev/peps/pep-0429/>`__)
+
0.15.94 (2019-04-23):
- fix missing line-break after end-of-file comments not ending in
line-break (reported by `Philip Thompson
@@ -675,7 +687,6 @@
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.94/scanner.py new/ruamel.yaml-0.15.96/scanner.py
--- old/ruamel.yaml-0.15.94/scanner.py 2019-04-23 08:30:17.000000000 +0200
+++ new/ruamel.yaml-0.15.96/scanner.py 2019-05-16 22:49:42.000000000 +0200
@@ -1237,7 +1237,7 @@
# Eat whitespaces and comments until we reach the next token.
comment = self.scan_to_next_token()
while comment:
- trailing.append(comment[0])
+ trailing.append(' ' * comment[1].column + comment[0])
comment = self.scan_to_next_token()
# Keep track of the trailing whitespace and following comments
@@ -1794,7 +1794,7 @@
if isinstance(self.tokens[0], CommentToken):
self.tokens_taken += 1
comment = self.tokens.pop(0)
- # print 'dropping2', comment
+ # nprint('dropping2', comment)
comments.append(comment)
if len(comments) >= 1:
self.tokens[0].add_pre_comments(comments)
@@ -1824,7 +1824,34 @@
and self.tokens[0].end_mark.line == self.tokens[1].start_mark.line
):
self.tokens_taken += 1
- self.tokens[0].add_post_comment(self.tokens.pop(1))
+ c = self.tokens.pop(1)
+ self.fetch_more_tokens()
+ while len(self.tokens) > 1 and isinstance(self.tokens[1], CommentToken):
+ self.tokens_taken += 1
+ c1 = self.tokens.pop(1)
+ c.value = c.value + (' ' * c1.start_mark.column) + c1.value
+ self.fetch_more_tokens()
+ self.tokens[0].add_post_comment(c)
+ elif (
+ len(self.tokens) > 1
+ and isinstance(self.tokens[0], ScalarToken)
+ and isinstance(self.tokens[1], CommentToken)
+ and self.tokens[0].end_mark.line != self.tokens[1].start_mark.line
+ ):
+ self.tokens_taken += 1
+ c = self.tokens.pop(1)
+ c.value = (
+ '\n' * (c.start_mark.line - self.tokens[0].end_mark.line)
+ + (' ' * c.start_mark.column)
+ + c.value
+ )
+ self.tokens[0].add_post_comment(c)
+ self.fetch_more_tokens()
+ while len(self.tokens) > 1 and isinstance(self.tokens[1], CommentToken):
+ self.tokens_taken += 1
+ c1 = self.tokens.pop(1)
+ c.value = c.value + (' ' * c1.start_mark.column) + c1.value
+ self.fetch_more_tokens()
self.tokens_taken += 1
return self.tokens.pop(0)
return None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruamel.yaml-0.15.94/tokens.py new/ruamel.yaml-0.15.96/tokens.py
--- old/ruamel.yaml-0.15.94/tokens.py 2018-11-15 15:46:06.000000000 +0100
+++ new/ruamel.yaml-0.15.96/tokens.py 2019-05-16 21:16:49.000000000 +0200
@@ -266,6 +266,7 @@
if SHOWLINES:
try:
v += ', line: ' + str(self.start_mark.line)
+ v += ', col: ' + str(self.start_mark.column)
except: # NOQA
pass
return 'CommentToken({})'.format(v)
1
0
Hello community,
here is the log from the commit of package rmt-server for openSUSE:Factory checked in at 2019-05-22 11:16:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rmt-server (Old)
and /work/SRC/openSUSE:Factory/.rmt-server.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rmt-server"
Wed May 22 11:16:52 2019 rev:20 rq:704427 version:2.1.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/rmt-server/rmt-server.changes 2019-05-17 23:44:32.929867151 +0200
+++ /work/SRC/openSUSE:Factory/.rmt-server.new.5148/rmt-server.changes 2019-05-22 11:16:55.266493611 +0200
@@ -29 +29 @@
-- Updated dependency nokogiri to 1.10.3 (CVE-2019-11068)
+- Updated dependency nokogiri to 1.10.3 (CVE-2019-11068: bsc#1132160)
@@ -62,2 +62 @@
-- Updated rails to version 5.1.6.2 (CVE-2019-5419)
-
+- Updated rails to version 5.1.6.2 (CVE-2019-5419: bsc#1129271)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
1
0
Hello community,
here is the log from the commit of package python-glfw for openSUSE:Factory checked in at 2019-05-22 11:16:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-glfw (Old)
and /work/SRC/openSUSE:Factory/.python-glfw.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-glfw"
Wed May 22 11:16:47 2019 rev:4 rq:704426 version:1.8.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-glfw/python-glfw.changes 2019-03-05 12:22:47.932887596 +0100
+++ /work/SRC/openSUSE:Factory/.python-glfw.new.5148/python-glfw.changes 2019-05-22 11:16:47.646498943 +0200
@@ -1,0 +2,7 @@
+Tue May 21 10:53:22 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 1.8.0
+ * Update for GLFW 3.3
+ * Fixed typo set_get_window_frame_size
+
+-------------------------------------------------------------------
Old:
----
glfw-1.7.1.tar.gz
New:
----
glfw-1.8.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-glfw.spec ++++++
--- /var/tmp/diff_new_pack.AkGyT7/_old 2019-05-22 11:16:48.150498591 +0200
+++ /var/tmp/diff_new_pack.AkGyT7/_new 2019-05-22 11:16:48.150498591 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-glfw
-Version: 1.7.1
+Version: 1.8.0
Release: 0
Summary: A ctypes-based wrapper for GLFW3
License: MIT
@@ -59,9 +59,12 @@
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
+%check
+# no upstream tests
+
%files %{python_files}
%license LICENSE.txt
-%doc CHANGES.txt README.rst
+%doc README.rst
%{python_sitelib}/*
%changelog
++++++ glfw-1.7.1.tar.gz -> glfw-1.8.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glfw-1.7.1/CHANGES.txt new/glfw-1.8.0/CHANGES.txt
--- old/glfw-1.7.1/CHANGES.txt 2019-02-02 07:12:23.000000000 +0100
+++ new/glfw-1.8.0/CHANGES.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,9 +0,0 @@
-v1.0, 23.03.2014 -- Initial release.
-v1.2, 17.06.2016 -- Update for GLFW 3.2
-v1.3, 28.07.2016 -- Improved error and exception handling
-v1.4, 22.02.2017 -- Improved library search paths
-v1.5, 09.01.2018 -- Fixed a bug in set_window_icon and added support for PIL/pillow Image objects
-v1.5.1, 24.01.2018 -- Improved packaging
-v1.6, 30.03.2018 -- Added NORMALIZE_GAMMA_RAMPS, use namedtuples for structs and moved library loading to glfw.library
-v1.7, 09.07.2018 -- Added glfw.GLFW for the naming convention used by the GLFW C API
-v1.7.1, 02.02.2019 -- Fixed exception re-raising for Python 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glfw-1.7.1/LICENSE.txt new/glfw-1.8.0/LICENSE.txt
--- old/glfw-1.7.1/LICENSE.txt 2019-02-02 07:12:23.000000000 +0100
+++ new/glfw-1.8.0/LICENSE.txt 2019-05-11 10:38:32.000000000 +0200
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2013-2018 Florian Rhiem
+Copyright (c) 2013-2019 Florian Rhiem
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glfw-1.7.1/PKG-INFO new/glfw-1.8.0/PKG-INFO
--- old/glfw-1.7.1/PKG-INFO 2019-02-02 07:13:02.000000000 +0100
+++ new/glfw-1.8.0/PKG-INFO 2019-05-11 10:39:04.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: glfw
-Version: 1.7.1
+Version: 1.8.0
Summary: A ctypes-based wrapper for GLFW3.
Home-page: https://github.com/FlorianRhiem/pyGLFW
Author: Florian Rhiem
@@ -39,8 +39,20 @@
pip install glfw
- For Windows users, the GLFW shared library is included in the Python wheels.
- Linux and macOS users need to install the library themselves and should
+ Windows
+ ~~~~~~~
+
+ The GLFW shared library is included in the Python wheels for Windows, but the correct Microsoft Visual C++ Redistributable will be required:
+
+ - `VC 2010 <https://www.microsoft.com/en-us/download/details.aspx?id=5555>`_ for 32-bit Python, or
+ - `VC 2012 <https://www.microsoft.com/en-us/download/details.aspx?id=30679>`_ for 64-bit Python.
+
+ Alternatively, you can download a shared library built for a runtime already installed on your system from `glfw.org <http://www.glfw.org/download.html>`_.
+
+ Linux and macOS
+ ~~~~~~~~~~~~~~~
+
+ You will need to install the GLFW shared library yourself and should
`compile GLFW from source <http://www.glfw.org/docs/latest/compile.html>`__
(use ``-DBUILD_SHARED_LIBS=ON``).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glfw-1.7.1/README.rst new/glfw-1.8.0/README.rst
--- old/glfw-1.7.1/README.rst 2019-02-02 07:12:23.000000000 +0100
+++ new/glfw-1.8.0/README.rst 2019-05-11 10:38:32.000000000 +0200
@@ -31,8 +31,20 @@
pip install glfw
-For Windows users, the GLFW shared library is included in the Python wheels.
-Linux and macOS users need to install the library themselves and should
+Windows
+~~~~~~~
+
+The GLFW shared library is included in the Python wheels for Windows, but the correct Microsoft Visual C++ Redistributable will be required:
+
+- `VC 2010 <https://www.microsoft.com/en-us/download/details.aspx?id=5555>`_ for 32-bit Python, or
+- `VC 2012 <https://www.microsoft.com/en-us/download/details.aspx?id=30679>`_ for 64-bit Python.
+
+Alternatively, you can download a shared library built for a runtime already installed on your system from `glfw.org <http://www.glfw.org/download.html>`_.
+
+Linux and macOS
+~~~~~~~~~~~~~~~
+
+You will need to install the GLFW shared library yourself and should
`compile GLFW from source <http://www.glfw.org/docs/latest/compile.html>`__
(use ``-DBUILD_SHARED_LIBS=ON``).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glfw-1.7.1/glfw/GLFW.py new/glfw-1.8.0/glfw/GLFW.py
--- old/glfw-1.7.1/glfw/GLFW.py 2019-02-02 07:12:23.000000000 +0100
+++ new/glfw-1.8.0/glfw/GLFW.py 2019-05-11 10:38:32.000000000 +0200
@@ -11,7 +11,13 @@
AUTO_ICONIFY as GLFW_AUTO_ICONIFY,
AUX_BUFFERS as GLFW_AUX_BUFFERS,
BLUE_BITS as GLFW_BLUE_BITS,
+ CENTER_CURSOR as GLFW_CENTER_CURSOR,
CLIENT_API as GLFW_CLIENT_API,
+ COCOA_CHDIR_RESOURCES as GLFW_COCOA_CHDIR_RESOURCES,
+ COCOA_FRAME_NAME as GLFW_COCOA_FRAME_NAME,
+ COCOA_GRAPHICS_SWITCHING as GLFW_COCOA_GRAPHICS_SWITCHING,
+ COCOA_MENUBAR as GLFW_COCOA_MENUBAR,
+ COCOA_RETINA_FRAMEBUFFER as GLFW_COCOA_RETINA_FRAMEBUFFER,
CONNECTED as GLFW_CONNECTED,
CONTEXT_CREATION_API as GLFW_CONTEXT_CREATION_API,
CONTEXT_NO_ERROR as GLFW_CONTEXT_NO_ERROR,
@@ -32,11 +38,50 @@
DOUBLEBUFFER as GLFW_DOUBLEBUFFER,
EGL_CONTEXT_API as GLFW_EGL_CONTEXT_API,
ERROR_REPORTING as GLFW_ERROR_REPORTING,
+ FALSE as GLFW_FALSE,
FLOATING as GLFW_FLOATING,
FOCUSED as GLFW_FOCUSED,
+ FOCUS_ON_SHOW as GLFW_FOCUS_ON_SHOW,
FORMAT_UNAVAILABLE as GLFW_FORMAT_UNAVAILABLE,
+ GAMEPAD_AXIS_LAST as GLFW_GAMEPAD_AXIS_LAST,
+ GAMEPAD_AXIS_LEFT_TRIGGER as GLFW_GAMEPAD_AXIS_LEFT_TRIGGER,
+ GAMEPAD_AXIS_LEFT_X as GLFW_GAMEPAD_AXIS_LEFT_X,
+ GAMEPAD_AXIS_LEFT_Y as GLFW_GAMEPAD_AXIS_LEFT_Y,
+ GAMEPAD_AXIS_RIGHT_TRIGGER as GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER,
+ GAMEPAD_AXIS_RIGHT_X as GLFW_GAMEPAD_AXIS_RIGHT_X,
+ GAMEPAD_AXIS_RIGHT_Y as GLFW_GAMEPAD_AXIS_RIGHT_Y,
+ GAMEPAD_BUTTON_A as GLFW_GAMEPAD_BUTTON_A,
+ GAMEPAD_BUTTON_B as GLFW_GAMEPAD_BUTTON_B,
+ GAMEPAD_BUTTON_BACK as GLFW_GAMEPAD_BUTTON_BACK,
+ GAMEPAD_BUTTON_CIRCLE as GLFW_GAMEPAD_BUTTON_CIRCLE,
+ GAMEPAD_BUTTON_CROSS as GLFW_GAMEPAD_BUTTON_CROSS,
+ GAMEPAD_BUTTON_DPAD_DOWN as GLFW_GAMEPAD_BUTTON_DPAD_DOWN,
+ GAMEPAD_BUTTON_DPAD_LEFT as GLFW_GAMEPAD_BUTTON_DPAD_LEFT,
+ GAMEPAD_BUTTON_DPAD_RIGHT as GLFW_GAMEPAD_BUTTON_DPAD_RIGHT,
+ GAMEPAD_BUTTON_DPAD_UP as GLFW_GAMEPAD_BUTTON_DPAD_UP,
+ GAMEPAD_BUTTON_GUIDE as GLFW_GAMEPAD_BUTTON_GUIDE,
+ GAMEPAD_BUTTON_LAST as GLFW_GAMEPAD_BUTTON_LAST,
+ GAMEPAD_BUTTON_LEFT_BUMPER as GLFW_GAMEPAD_BUTTON_LEFT_BUMPER,
+ GAMEPAD_BUTTON_LEFT_THUMB as GLFW_GAMEPAD_BUTTON_LEFT_THUMB,
+ GAMEPAD_BUTTON_RIGHT_BUMPER as GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER,
+ GAMEPAD_BUTTON_RIGHT_THUMB as GLFW_GAMEPAD_BUTTON_RIGHT_THUMB,
+ GAMEPAD_BUTTON_SQUARE as GLFW_GAMEPAD_BUTTON_SQUARE,
+ GAMEPAD_BUTTON_START as GLFW_GAMEPAD_BUTTON_START,
+ GAMEPAD_BUTTON_TRIANGLE as GLFW_GAMEPAD_BUTTON_TRIANGLE,
+ GAMEPAD_BUTTON_X as GLFW_GAMEPAD_BUTTON_X,
+ GAMEPAD_BUTTON_Y as GLFW_GAMEPAD_BUTTON_Y,
GREEN_BITS as GLFW_GREEN_BITS,
HAND_CURSOR as GLFW_HAND_CURSOR,
+ HAT_CENTERED as GLFW_HAT_CENTERED,
+ HAT_DOWN as GLFW_HAT_DOWN,
+ HAT_LEFT as GLFW_HAT_LEFT,
+ HAT_LEFT_DOWN as GLFW_HAT_LEFT_DOWN,
+ HAT_LEFT_UP as GLFW_HAT_LEFT_UP,
+ HAT_RIGHT as GLFW_HAT_RIGHT,
+ HAT_RIGHT_DOWN as GLFW_HAT_RIGHT_DOWN,
+ HAT_RIGHT_UP as GLFW_HAT_RIGHT_UP,
+ HAT_UP as GLFW_HAT_UP,
+ HOVERED as GLFW_HOVERED,
HRESIZE_CURSOR as GLFW_HRESIZE_CURSOR,
IBEAM_CURSOR as GLFW_IBEAM_CURSOR,
ICONIFIED as GLFW_ICONIFIED,
@@ -58,6 +103,7 @@
JOYSTICK_7 as GLFW_JOYSTICK_7,
JOYSTICK_8 as GLFW_JOYSTICK_8,
JOYSTICK_9 as GLFW_JOYSTICK_9,
+ JOYSTICK_HAT_BUTTONS as GLFW_JOYSTICK_HAT_BUTTONS,
JOYSTICK_LAST as GLFW_JOYSTICK_LAST,
KEY_0 as GLFW_KEY_0,
KEY_1 as GLFW_KEY_1,
@@ -181,10 +227,13 @@
KEY_X as GLFW_KEY_X,
KEY_Y as GLFW_KEY_Y,
KEY_Z as GLFW_KEY_Z,
+ LOCK_KEY_MODS as GLFW_LOCK_KEY_MODS,
LOSE_CONTEXT_ON_RESET as GLFW_LOSE_CONTEXT_ON_RESET,
MAXIMIZED as GLFW_MAXIMIZED,
MOD_ALT as GLFW_MOD_ALT,
+ MOD_CAPS_LOCK as GLFW_MOD_CAPS_LOCK,
MOD_CONTROL as GLFW_MOD_CONTROL,
+ MOD_NUM_LOCK as GLFW_MOD_NUM_LOCK,
MOD_SHIFT as GLFW_MOD_SHIFT,
MOD_SUPER as GLFW_MOD_SUPER,
MOUSE_BUTTON_1 as GLFW_MOUSE_BUTTON_1,
@@ -204,6 +253,7 @@
NOT_INITIALIZED as GLFW_NOT_INITIALIZED,
NO_API as GLFW_NO_API,
NO_CURRENT_CONTEXT as GLFW_NO_CURRENT_CONTEXT,
+ NO_ERROR as GLFW_NO_ERROR,
NO_RESET_NOTIFICATION as GLFW_NO_RESET_NOTIFICATION,
NO_ROBUSTNESS as GLFW_NO_ROBUSTNESS,
NO_WINDOW_CONTEXT as GLFW_NO_WINDOW_CONTEXT,
@@ -215,9 +265,11 @@
OPENGL_ES_API as GLFW_OPENGL_ES_API,
OPENGL_FORWARD_COMPAT as GLFW_OPENGL_FORWARD_COMPAT,
OPENGL_PROFILE as GLFW_OPENGL_PROFILE,
+ OSMESA_CONTEXT_API as GLFW_OSMESA_CONTEXT_API,
OUT_OF_MEMORY as GLFW_OUT_OF_MEMORY,
PLATFORM_ERROR as GLFW_PLATFORM_ERROR,
PRESS as GLFW_PRESS,
+ RAW_MOUSE_MOTION as GLFW_RAW_MOUSE_MOTION,
RED_BITS as GLFW_RED_BITS,
REFRESH_RATE as GLFW_REFRESH_RATE,
RELEASE as GLFW_RELEASE,
@@ -226,17 +278,22 @@
REPEAT as GLFW_REPEAT,
RESIZABLE as GLFW_RESIZABLE,
SAMPLES as GLFW_SAMPLES,
+ SCALE_TO_MONITOR as GLFW_SCALE_TO_MONITOR,
SRGB_CAPABLE as GLFW_SRGB_CAPABLE,
STENCIL_BITS as GLFW_STENCIL_BITS,
STEREO as GLFW_STEREO,
STICKY_KEYS as GLFW_STICKY_KEYS,
STICKY_MOUSE_BUTTONS as GLFW_STICKY_MOUSE_BUTTONS,
+ TRANSPARENT_FRAMEBUFFER as GLFW_TRANSPARENT_FRAMEBUFFER,
+ TRUE as GLFW_TRUE,
VERSION_MAJOR as GLFW_VERSION_MAJOR,
VERSION_MINOR as GLFW_VERSION_MINOR,
VERSION_REVISION as GLFW_VERSION_REVISION,
VERSION_UNAVAILABLE as GLFW_VERSION_UNAVAILABLE,
VISIBLE as GLFW_VISIBLE,
VRESIZE_CURSOR as GLFW_VRESIZE_CURSOR,
+ X11_CLASS_NAME as GLFW_X11_CLASS_NAME,
+ X11_INSTANCE_NAME as GLFW_X11_INSTANCE_NAME,
create_cursor as glfwCreateCursor,
create_standard_cursor as glfwCreateStandardCursor,
create_window as glfwCreateWindow,
@@ -249,18 +306,28 @@
get_clipboard_string as glfwGetClipboardString,
get_current_context as glfwGetCurrentContext,
get_cursor_pos as glfwGetCursorPos,
+ get_error as glfwGetError,
get_framebuffer_size as glfwGetFramebufferSize,
+ get_gamepad_name as glfwGetGamepadName,
+ get_gamepad_state as glfwGetGamepadState,
get_gamma_ramp as glfwGetGammaRamp,
get_input_mode as glfwGetInputMode,
get_instance_proc_address as glfwGetInstanceProcAddress,
get_joystick_axes as glfwGetJoystickAxes,
get_joystick_buttons as glfwGetJoystickButtons,
+ get_joystick_guid as glfwGetJoystickGUID,
+ get_joystick_hats as glfwGetJoystickHats,
get_joystick_name as glfwGetJoystickName,
+ get_joystick_user_pointer as glfwGetJoystickUserPointer,
get_key as glfwGetKey,
get_key_name as glfwGetKeyName,
+ get_key_scancode as glfwGetKeyScancode,
+ get_monitor_content_scale as glfwGetMonitorContentScale,
get_monitor_name as glfwGetMonitorName,
get_monitor_physical_size as glfwGetMonitorPhysicalSize,
get_monitor_pos as glfwGetMonitorPos,
+ get_monitor_user_pointer as glfwGetMonitorUserPointer,
+ get_monitor_workarea as glfwGetMonitorWorkarea,
get_monitors as glfwGetMonitors,
get_mouse_button as glfwGetMouseButton,
get_physical_device_presentation_support as glfwGetPhysicalDevicePresentationSupport,
@@ -275,18 +342,25 @@
get_video_mode as glfwGetVideoMode,
get_video_modes as glfwGetVideoModes,
get_window_attrib as glfwGetWindowAttrib,
+ get_window_content_scale as glfwGetWindowContentScale,
+ get_window_frame_size as glfwGetWindowFrameSize,
get_window_monitor as glfwGetWindowMonitor,
+ get_window_opacity as glfwGetWindowOpacity,
get_window_pos as glfwGetWindowPos,
get_window_size as glfwGetWindowSize,
get_window_user_pointer as glfwGetWindowUserPointer,
hide_window as glfwHideWindow,
iconify_window as glfwIconifyWindow,
init as glfwInit,
+ init_hint as glfwInitHint,
+ joystick_is_gamepad as glfwJoystickIsGamepad,
joystick_present as glfwJoystickPresent,
make_context_current as glfwMakeContextCurrent,
maximize_window as glfwMaximizeWindow,
poll_events as glfwPollEvents,
post_empty_event as glfwPostEmptyEvent,
+ raw_mouse_motion_supported as glfwRawMouseMotionSupported,
+ request_window_attention as glfwRequestWindowAttention,
restore_window as glfwRestoreWindow,
set_char_callback as glfwSetCharCallback,
set_char_mods_callback as glfwSetCharModsCallback,
@@ -300,20 +374,25 @@
set_framebuffer_size_callback as glfwSetFramebufferSizeCallback,
set_gamma as glfwSetGamma,
set_gamma_ramp as glfwSetGammaRamp,
- set_get_window_frame_size as glfwSetGetWindowFrameSize,
set_input_mode as glfwSetInputMode,
set_joystick_callback as glfwSetJoystickCallback,
+ set_joystick_user_pointer as glfwSetJoystickUserPointer,
set_key_callback as glfwSetKeyCallback,
set_monitor_callback as glfwSetMonitorCallback,
+ set_monitor_user_pointer as glfwSetMonitorUserPointer,
set_mouse_button_callback as glfwSetMouseButtonCallback,
set_scroll_callback as glfwSetScrollCallback,
set_time as glfwSetTime,
set_window_aspect_ratio as glfwSetWindowAspectRatio,
+ set_window_attrib as glfwSetWindowAttrib,
set_window_close_callback as glfwSetWindowCloseCallback,
+ set_window_content_scale_callback as glfwSetWindowContentScaleCallback,
set_window_focus_callback as glfwSetWindowFocusCallback,
set_window_icon as glfwSetWindowIcon,
set_window_iconify_callback as glfwSetWindowIconifyCallback,
+ set_window_maximize_callback as glfwSetWindowMaximizeCallback,
set_window_monitor as glfwSetWindowMonitor,
+ set_window_opacity as glfwSetWindowOpacity,
set_window_pos as glfwSetWindowPos,
set_window_pos_callback as glfwSetWindowPosCallback,
set_window_refresh_callback as glfwSetWindowRefreshCallback,
@@ -327,9 +406,11 @@
swap_buffers as glfwSwapBuffers,
swap_interval as glfwSwapInterval,
terminate as glfwTerminate,
+ update_gamepad_mappings as glfwUpdateGamepadMappings,
vulkan_supported as glfwVulkanSupported,
wait_events as glfwWaitEvents,
wait_events_timeout as glfwWaitEventsTimeout,
window_hint as glfwWindowHint,
+ window_hint_string as glfwWindowHintString,
window_should_close as glfwWindowShouldClose,
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glfw-1.7.1/glfw/__init__.py new/glfw-1.8.0/glfw/__init__.py
--- old/glfw-1.7.1/glfw/__init__.py 2019-02-02 07:12:23.000000000 +0100
+++ new/glfw-1.8.0/glfw/__init__.py 2019-05-11 10:38:32.000000000 +0200
@@ -7,9 +7,9 @@
from __future__ import unicode_literals
__author__ = 'Florian Rhiem (florian.rhiem(a)gmail.com)'
-__copyright__ = 'Copyright (c) 2013-2018 Florian Rhiem'
+__copyright__ = 'Copyright (c) 2013-2019 Florian Rhiem'
__license__ = 'MIT'
-__version__ = '1.7.1'
+__version__ = '1.8.0'
# By default (ERROR_REPORTING = True), GLFW errors will be reported as Python
# exceptions. Set ERROR_REPORTING to False or set a curstom error callback to
@@ -245,12 +245,59 @@
return self.GLFWimage(self.width, self.height, pixels)
+class _GLFWgamepadstate(ctypes.Structure):
+ """
+ Wrapper for:
+ typedef struct GLFWgamepadstate GLFWgamepadstate;
+ """
+ _fields_ = [("buttons", (ctypes.c_ubyte * 15)),
+ ("axes", (ctypes.c_float * 6))]
+
+ GLFWgamepadstate = collections.namedtuple('GLFWgamepadstate', [
+ 'buttons', 'axes'
+ ])
+
+ def __init__(self):
+ ctypes.Structure.__init__(self)
+ self.buttons = (ctypes.c_ubyte * 15)([0] * 15)
+ self.axes = (ctypes.c_float * 6)([0] * 6)
+
+ def wrap(self, gamepad_state):
+ """
+ Wraps a nested python sequence.
+ """
+ buttons, axes = gamepad_state
+ for i in range(15):
+ self.buttons[i] = buttons[i]
+ for i in range(6):
+ self.axes[i] = axes[i]
+
+ def unwrap(self):
+ """
+ Returns a GLFWvidmode object.
+ """
+ buttons = [int(button) for button in self.buttons]
+ axes = [float(axis) for axis in self.axes]
+ return self.GLFWgamepadstate(buttons, axes)
+
+
VERSION_MAJOR = 3
-VERSION_MINOR = 2
-VERSION_REVISION = 1
+VERSION_MINOR = 3
+VERSION_REVISION = 0
+TRUE = 1
+FALSE = 0
RELEASE = 0
PRESS = 1
REPEAT = 2
+HAT_CENTERED = 0
+HAT_UP = 1
+HAT_DOWN = 2
+HAT_RIGHT = 4
+HAT_LEFT = 8
+HAT_RIGHT_UP = HAT_RIGHT | HAT_UP
+HAT_RIGHT_DOWN = HAT_RIGHT | HAT_DOWN
+HAT_LEFT_UP = HAT_LEFT | HAT_UP
+HAT_LEFT_DOWN = HAT_LEFT | HAT_DOWN
KEY_UNKNOWN = -1
KEY_SPACE = 32
KEY_APOSTROPHE = 39
@@ -377,6 +424,8 @@
MOD_CONTROL = 0x0002
MOD_ALT = 0x0004
MOD_SUPER = 0x0008
+MOD_CAPS_LOCK = 0x0010
+MOD_NUM_LOCK = 0x0020
MOUSE_BUTTON_1 = 0
MOUSE_BUTTON_2 = 1
MOUSE_BUTTON_3 = 2
@@ -406,6 +455,34 @@
JOYSTICK_15 = 14
JOYSTICK_16 = 15
JOYSTICK_LAST = JOYSTICK_16
+GAMEPAD_BUTTON_A = 0
+GAMEPAD_BUTTON_B = 1
+GAMEPAD_BUTTON_X = 2
+GAMEPAD_BUTTON_Y = 3
+GAMEPAD_BUTTON_LEFT_BUMPER = 4
+GAMEPAD_BUTTON_RIGHT_BUMPER = 5
+GAMEPAD_BUTTON_BACK = 6
+GAMEPAD_BUTTON_START = 7
+GAMEPAD_BUTTON_GUIDE = 8
+GAMEPAD_BUTTON_LEFT_THUMB = 9
+GAMEPAD_BUTTON_RIGHT_THUMB = 10
+GAMEPAD_BUTTON_DPAD_UP = 11
+GAMEPAD_BUTTON_DPAD_RIGHT = 12
+GAMEPAD_BUTTON_DPAD_DOWN = 13
+GAMEPAD_BUTTON_DPAD_LEFT = 14
+GAMEPAD_BUTTON_LAST = GAMEPAD_BUTTON_DPAD_LEFT
+GAMEPAD_BUTTON_CROSS = GAMEPAD_BUTTON_A
+GAMEPAD_BUTTON_CIRCLE = GAMEPAD_BUTTON_B
+GAMEPAD_BUTTON_SQUARE = GAMEPAD_BUTTON_X
+GAMEPAD_BUTTON_TRIANGLE = GAMEPAD_BUTTON_Y
+GAMEPAD_AXIS_LEFT_X = 0
+GAMEPAD_AXIS_LEFT_Y = 1
+GAMEPAD_AXIS_RIGHT_X = 2
+GAMEPAD_AXIS_RIGHT_Y = 3
+GAMEPAD_AXIS_LEFT_TRIGGER = 4
+GAMEPAD_AXIS_RIGHT_TRIGGER = 5
+GAMEPAD_AXIS_LAST = GAMEPAD_AXIS_RIGHT_TRIGGER
+NO_ERROR = 0
NOT_INITIALIZED = 0x00010001
NO_CURRENT_CONTEXT = 0x00010002
INVALID_ENUM = 0x00010003
@@ -424,6 +501,10 @@
AUTO_ICONIFY = 0x00020006
FLOATING = 0x00020007
MAXIMIZED = 0x00020008
+CENTER_CURSOR = 0x00020009
+TRANSPARENT_FRAMEBUFFER = 0x0002000A
+HOVERED = 0x0002000B
+FOCUS_ON_SHOW = 0x0002000C
RED_BITS = 0x00021001
GREEN_BITS = 0x00021002
BLUE_BITS = 0x00021003
@@ -451,6 +532,12 @@
CONTEXT_RELEASE_BEHAVIOR = 0x00022009
CONTEXT_NO_ERROR = 0x0002200A
CONTEXT_CREATION_API = 0x0002200B
+SCALE_TO_MONITOR = 0x0002200C
+COCOA_RETINA_FRAMEBUFFER = 0x00023001
+COCOA_FRAME_NAME = 0x00023002
+COCOA_GRAPHICS_SWITCHING = 0x00023003
+X11_CLASS_NAME = 0x00024001
+X11_INSTANCE_NAME = 0x00024002
NO_API = 0
OPENGL_API = 0x00030001
OPENGL_ES_API = 0x00030002
@@ -463,6 +550,8 @@
CURSOR = 0x00033001
STICKY_KEYS = 0x00033002
STICKY_MOUSE_BUTTONS = 0x00033003
+LOCK_KEY_MODS = 0x00033004
+RAW_MOUSE_MOTION = 0x00033005
CURSOR_NORMAL = 0x00034001
CURSOR_HIDDEN = 0x00034002
CURSOR_DISABLED = 0x00034003
@@ -471,6 +560,7 @@
RELEASE_BEHAVIOR_NONE = 0x00035002
NATIVE_CONTEXT_API = 0x00036001
EGL_CONTEXT_API = 0x00036002
+OSMESA_CONTEXT_API = 0x00036003
ARROW_CURSOR = 0x00036001
IBEAM_CURSOR = 0x00036002
CROSSHAIR_CURSOR = 0x00036003
@@ -479,6 +569,9 @@
VRESIZE_CURSOR = 0x00036006
CONNECTED = 0x00040001
DISCONNECTED = 0x00040002
+JOYSTICK_HAT_BUTTONS = 0x00050001
+COCOA_CHDIR_RESOURCES = 0x00051001
+COCOA_MENUBAR = 0x00051002
DONT_CARE = -1
_exc_info_from_callback = None
@@ -549,10 +642,17 @@
_GLFWwindowiconifyfun = ctypes.CFUNCTYPE(None,
ctypes.POINTER(_GLFWwindow),
ctypes.c_int)
+_GLFWwindowmaximizefun = ctypes.CFUNCTYPE(None,
+ ctypes.POINTER(_GLFWwindow),
+ ctypes.c_int)
_GLFWframebuffersizefun = ctypes.CFUNCTYPE(None,
ctypes.POINTER(_GLFWwindow),
ctypes.c_int,
ctypes.c_int)
+_GLFWwindowcontentscalefun = ctypes.CFUNCTYPE(None,
+ ctypes.POINTER(_GLFWwindow),
+ ctypes.c_float,
+ ctypes.c_float)
_GLFWmousebuttonfun = ctypes.CFUNCTYPE(None,
ctypes.POINTER(_GLFWwindow),
ctypes.c_int,
@@ -625,6 +725,21 @@
del _window_user_data_repository[window_addr]
_glfw.glfwTerminate()
+
+if hasattr(_glfw, 'glfwInitHint'):
+ _glfw.glfwInitHint.restype = None
+ _glfw.glfwInitHint.argtypes = [ctypes.c_int,
+ ctypes.c_int]
+ def init_hint(hint, value):
+ """
+ Sets the specified init hint to the desired value.
+
+ Wrapper for:
+ void glfwInitHint(int hint, int value);
+ """
+ _glfw.glfwInitHint(hint, value)
+
+
_glfw.glfwGetVersion.restype = None
_glfw.glfwGetVersion.argtypes = [ctypes.POINTER(ctypes.c_int),
ctypes.POINTER(ctypes.c_int),
@@ -656,6 +771,22 @@
"""
return _glfw.glfwGetVersionString()
+
+if hasattr(_glfw, 'glfwGetError'):
+ _glfw.glfwGetError.restype = ctypes.c_int
+ _glfw.glfwGetError.argtypes = [ctypes.POINTER(ctypes.c_char_p)]
+ def get_error():
+ """
+ Returns and clears the last error for the calling thread.
+
+ Wrapper for:
+ int glfwGetError(const char** description);
+ """
+ error_description = (ctypes.c_char_p * 1)()
+ error_code = _glfw.glfwGetError(error_description)
+ return error_code, error_description[0]
+
+
@_callback_exception_decorator
def _raise_glfw_errors_as_exceptions(error_code, description):
"""
@@ -737,6 +868,37 @@
_glfw.glfwGetMonitorPos(monitor, xpos, ypos)
return xpos_value.value, ypos_value.value
+
+if hasattr(_glfw, 'glfwGetMonitorWorkarea'):
+ _glfw.glfwGetMonitorWorkarea.restype = None
+ _glfw.glfwGetMonitorWorkarea.argtypes = [ctypes.POINTER(_GLFWmonitor),
+ ctypes.POINTER(ctypes.c_int),
+ ctypes.POINTER(ctypes.c_int)]
+
+
+ def get_monitor_workarea(monitor):
+ """
+ Retrives the work area of the monitor.
+
+ Wrapper for:
+ void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height);
+ """
+ xpos_value = ctypes.c_int(0)
+ xpos = ctypes.pointer(xpos_value)
+ ypos_value = ctypes.c_int(0)
+ ypos = ctypes.pointer(ypos_value)
+ width_value = ctypes.c_int(0)
+ width = ctypes.pointer(width_value)
+ height_value = ctypes.c_int(0)
+ height = ctypes.pointer(height_value)
+ _glfw.glfwGetMonitorWorkarea(monitor, xpos, ypos, width, height)
+ return (
+ xpos_value.value,
+ ypos_value.value,
+ width_value.value,
+ height_value.value
+ )
+
_glfw.glfwGetMonitorPhysicalSize.restype = None
_glfw.glfwGetMonitorPhysicalSize.argtypes = [ctypes.POINTER(_GLFWmonitor),
ctypes.POINTER(ctypes.c_int),
@@ -755,6 +917,27 @@
_glfw.glfwGetMonitorPhysicalSize(monitor, width, height)
return width_value.value, height_value.value
+
+if hasattr(_glfw, 'glfwGetMonitorContentScale'):
+ _glfw.glfwGetMonitorContentScale.restype = None
+ _glfw.glfwGetMonitorContentScale.argtypes = [ctypes.POINTER(_GLFWmonitor),
+ ctypes.POINTER(ctypes.c_float),
+ ctypes.POINTER(ctypes.c_float)]
+ def get_monitor_content_scale(monitor):
+ """
+ Retrieves the content scale for the specified monitor.
+
+ Wrapper for:
+ void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale);
+ """
+ xscale_value = ctypes.c_int(0)
+ xscale = ctypes.pointer(xscale_value)
+ yscale_value = ctypes.c_int(0)
+ yscale = ctypes.pointer(yscale_value)
+ _glfw.glfwGetMonitorContentScale(monitor, xscale, yscale)
+ return xscale_value.value, yscale_value.value
+
+
_glfw.glfwGetMonitorName.restype = ctypes.c_char_p
_glfw.glfwGetMonitorName.argtypes = [ctypes.POINTER(_GLFWmonitor)]
def get_monitor_name(monitor):
@@ -766,6 +949,56 @@
"""
return _glfw.glfwGetMonitorName(monitor)
+
+if hasattr(_glfw, 'glfwSetMonitorUserPointer') and hasattr(_glfw, 'glfwGetMonitorUserPointer'):
+ _monitor_user_data_repository = {}
+ _glfw.glfwSetMonitorUserPointer.restype = None
+ _glfw.glfwSetMonitorUserPointer.argtypes = [ctypes.POINTER(_GLFWmonitor),
+ ctypes.c_void_p]
+
+
+ def set_monitor_user_pointer(monitor, pointer):
+ """
+ Sets the user pointer of the specified monitor. You may pass a normal
+ python object into this function and it will be wrapped automatically.
+ The object will be kept in existence until the pointer is set to
+ something else.
+
+ Wrapper for:
+ void glfwSetMonitorUserPointer(int jid, void* pointer);
+ """
+
+ data = (False, pointer)
+ if not isinstance(pointer, ctypes.c_void_p):
+ data = (True, pointer)
+ # Create a void pointer for the python object
+ pointer = ctypes.cast(ctypes.pointer(ctypes.py_object(pointer)),
+ ctypes.c_void_p)
+
+ _monitor_user_data_repository[monitor] = data
+ _glfw.glfwSetWindowUserPointer(monitor, pointer)
+
+
+ _glfw.glfwGetMonitorUserPointer.restype = ctypes.c_void_p
+ _glfw.glfwGetMonitorUserPointer.argtypes = [ctypes.POINTER(_GLFWmonitor)]
+
+
+ def get_monitor_user_pointer(monitor):
+ """
+ Returns the user pointer of the specified monitor.
+
+ Wrapper for:
+ void* glfwGetMonitorUserPointer(int jid);
+ """
+
+ if monitor in _monitor_user_data_repository:
+ data = _monitor_user_data_repository[monitor]
+ is_wrapped_py_object = data[0]
+ if is_wrapped_py_object:
+ return data[1]
+ return _glfw.glfwGetMonitorUserPointer(monitor)
+
+
_monitor_callback = None
_glfw.glfwSetMonitorCallback.restype = _GLFWmonitorfun
_glfw.glfwSetMonitorCallback.argtypes = [_GLFWmonitorfun]
@@ -876,6 +1109,21 @@
"""
_glfw.glfwWindowHint(hint, value)
+
+if hasattr(_glfw, 'glfwWindowHintString'):
+ _glfw.glfwWindowHintString.restype = None
+ _glfw.glfwWindowHintString.argtypes = [ctypes.c_int,
+ ctypes.c_char_p]
+ def window_hint_string(hint, value):
+ """
+ Sets the specified window hint to the desired value.
+
+ Wrapper for:
+ void glfwWindowHintString(int hint, const char* value);
+ """
+ _glfw.glfwWindowHintString(hint, _to_char_p(value))
+
+
_glfw.glfwCreateWindow.restype = ctypes.POINTER(_GLFWwindow)
_glfw.glfwCreateWindow.argtypes = [ctypes.c_int,
ctypes.c_int,
@@ -1025,6 +1273,54 @@
_glfw.glfwGetFramebufferSize(window, width, height)
return width_value.value, height_value.value
+
+if hasattr(_glfw, 'glfwGetWindowContentScale'):
+ _glfw.glfwGetWindowContentScale.restype = None
+ _glfw.glfwGetWindowContentScale.argtypes = [ctypes.POINTER(_GLFWwindow),
+ ctypes.POINTER(ctypes.c_float),
+ ctypes.POINTER(ctypes.c_float)]
+ def get_window_content_scale(window):
+ """
+ Retrieves the content scale for the specified window.
+
+ Wrapper for:
+ void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale);
+ """
+ xscale_value = ctypes.c_int(0)
+ xscale = ctypes.pointer(xscale_value)
+ yscale_value = ctypes.c_int(0)
+ yscale = ctypes.pointer(yscale_value)
+ _glfw.glfwGetWindowContentScale(window, xscale, yscale)
+ return xscale_value.value, yscale_value.value
+
+
+if hasattr(_glfw, 'glfwGetWindowOpacity'):
+ _glfw.glfwGetWindowOpacity.restype = ctypes.c_float
+ _glfw.glfwGetWindowOpacity.argtypes = [ctypes.POINTER(_GLFWwindow)]
+ def get_window_opacity(window):
+ """
+ Returns the opacity of the whole window.
+
+ Wrapper for:
+ float glfwGetWindowOpacity(GLFWwindow* window);
+ """
+ return _glfw.glfwGetWindowOpacity(window)
+
+
+if hasattr(_glfw, 'glfwSetWindowOpacity'):
+ _glfw.glfwSetWindowOpacity.restype = None
+ _glfw.glfwSetWindowOpacity.argtypes = [ctypes.POINTER(_GLFWwindow),
+ ctypes.c_float]
+ def set_window_opacity(window, opacity):
+ """
+ Sets the opacity of the whole window.
+
+ Wrapper for:
+ void glfwSetWindowOpacity(GLFWwindow* window, float opacity);
+ """
+ _glfw.glfwSetWindowOpacity(window)
+
+
_glfw.glfwIconifyWindow.restype = None
_glfw.glfwIconifyWindow.argtypes = [ctypes.POINTER(_GLFWwindow)]
def iconify_window(window):
@@ -1069,6 +1365,20 @@
"""
_glfw.glfwHideWindow(window)
+
+if hasattr(_glfw, 'glfwRequestWindowAttention'):
+ _glfw.glfwRequestWindowAttention.restype = None
+ _glfw.glfwRequestWindowAttention.argtypes = [ctypes.POINTER(_GLFWwindow)]
+ def request_window_attention(window):
+ """
+ Requests user attention to the specified window.
+
+ Wrapper for:
+ void glfwRequestWindowAttention(GLFWwindow* window);
+ """
+ _glfw.glfwRequestWindowAttention(window)
+
+
_glfw.glfwGetWindowMonitor.restype = ctypes.POINTER(_GLFWmonitor)
_glfw.glfwGetWindowMonitor.argtypes = [ctypes.POINTER(_GLFWwindow)]
def get_window_monitor(window):
@@ -1092,6 +1402,22 @@
"""
return _glfw.glfwGetWindowAttrib(window, attrib)
+
+if hasattr(_glfw, 'glfwSetWindowAttrib'):
+ _glfw.glfwSetWindowAttrib.restype = None
+ _glfw.glfwSetWindowAttrib.argtypes = [ctypes.POINTER(_GLFWwindow),
+ ctypes.c_int,
+ ctypes.c_int]
+ def set_window_attrib(window, attrib, value):
+ """
+ Returns an attribute of the specified window.
+
+ Wrapper for:
+ void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value);
+ """
+ _glfw.glfwSetWindowAttrib(window, attrib, value)
+
+
_window_user_data_repository = {}
_glfw.glfwSetWindowUserPointer.restype = None
_glfw.glfwSetWindowUserPointer.argtypes = [ctypes.POINTER(_GLFWwindow),
@@ -1299,6 +1625,39 @@
if previous_callback is not None and previous_callback[0] != 0:
return previous_callback[0]
+
+if hasattr(_glfw, 'glfwSetWindowMaximizeCallback'):
+ _window_maximize_callback_repository = {}
+ _callback_repositories.append(_window_maximize_callback_repository)
+ _glfw.glfwSetWindowMaximizeCallback.restype = _GLFWwindowmaximizefun
+ _glfw.glfwSetWindowMaximizeCallback.argtypes = [
+ ctypes.POINTER(_GLFWwindow),
+ _GLFWwindowmaximizefun
+ ]
+ def set_window_maximize_callback(window, cbfun):
+ """
+ Sets the maximize callback for the specified window.
+
+ Wrapper for:
+ GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun cbfun);
+ """
+ window_addr = ctypes.cast(ctypes.pointer(window),
+ ctypes.POINTER(ctypes.c_long)).contents.value
+ if window_addr in _window_maximize_callback_repository:
+ previous_callback = _window_maximize_callback_repository[
+ window_addr]
+ else:
+ previous_callback = None
+ if cbfun is None:
+ cbfun = 0
+ c_cbfun = _GLFWwindowmaximizefun(cbfun)
+ _window_maximize_callback_repository[window_addr] = (cbfun, c_cbfun)
+ cbfun = c_cbfun
+ _glfw.glfwSetWindowMaximizeCallback(window, cbfun)
+ if previous_callback is not None and previous_callback[0] != 0:
+ return previous_callback[0]
+
+
_framebuffer_size_callback_repository = {}
_callback_repositories.append(_framebuffer_size_callback_repository)
_glfw.glfwSetFramebufferSizeCallback.restype = _GLFWframebuffersizefun
@@ -1326,6 +1685,40 @@
if previous_callback is not None and previous_callback[0] != 0:
return previous_callback[0]
+
+if hasattr(_glfw, 'glfwSetWindowContentScaleCallback'):
+ _window_content_scale_callback_repository = {}
+ _callback_repositories.append(_window_content_scale_callback_repository)
+ _glfw.glfwSetWindowContentScaleCallback.restype = _GLFWwindowcontentscalefun
+ _glfw.glfwSetWindowContentScaleCallback.argtypes = [
+ ctypes.POINTER(_GLFWwindow),
+ _GLFWwindowcontentscalefun]
+
+
+ def set_window_content_scale_callback(window, cbfun):
+ """
+ Sets the window content scale callback for the specified window.
+
+ Wrapper for:
+ GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun cbfun);
+ """
+ window_addr = ctypes.cast(ctypes.pointer(window),
+ ctypes.POINTER(ctypes.c_long)).contents.value
+ if window_addr in _window_content_scale_callback_repository:
+ previous_callback = _window_content_scale_callback_repository[
+ window_addr]
+ else:
+ previous_callback = None
+ if cbfun is None:
+ cbfun = 0
+ c_cbfun = _GLFWwindowcontentscalefun(cbfun)
+ _window_content_scale_callback_repository[window_addr] = (cbfun, c_cbfun)
+ cbfun = c_cbfun
+ _glfw.glfwSetWindowContentScaleCallback(window, cbfun)
+ if previous_callback is not None and previous_callback[0] != 0:
+ return previous_callback[0]
+
+
_glfw.glfwPollEvents.restype = None
_glfw.glfwPollEvents.argtypes = []
def poll_events():
@@ -1377,6 +1770,20 @@
"""
_glfw.glfwSetInputMode(window, mode, value)
+
+if hasattr(_glfw, 'glfwRawMouseMotionSupported'):
+ _glfw.glfwRawMouseMotionSupported.restype = ctypes.c_int
+ _glfw.glfwRawMouseMotionSupported.argtypes = []
+ def raw_mouse_motion_supported():
+ """
+ Returns whether raw mouse motion is supported.
+
+ Wrapper for:
+ int glfwRawMouseMotionSupported(void);
+ """
+ return _glfw.glfwRawMouseMotionSupported() != 0
+
+
_glfw.glfwGetKey.restype = ctypes.c_int
_glfw.glfwGetKey.argtypes = [ctypes.POINTER(_GLFWwindow),
ctypes.c_int]
@@ -1638,6 +2045,24 @@
result = _glfw.glfwGetJoystickButtons(joy, count)
return result, count_value.value
+
+if hasattr(_glfw, 'glfwGetJoystickHats'):
+ _glfw.glfwGetJoystickHats.restype = ctypes.POINTER(ctypes.c_ubyte)
+ _glfw.glfwGetJoystickHats.argtypes = [ctypes.c_int,
+ ctypes.POINTER(ctypes.c_int)]
+ def get_joystick_hats(joystick_id):
+ """
+ Returns the state of all hats of the specified joystick.
+
+ Wrapper for:
+ const unsigned char* glfwGetJoystickButtons(int joy, int* count);
+ """
+ count_value = ctypes.c_int(0)
+ count = ctypes.pointer(count_value)
+ result = _glfw.glfwGetJoystickHats(joystick_id, count)
+ return result, count_value.value
+
+
_glfw.glfwGetJoystickName.restype = ctypes.c_char_p
_glfw.glfwGetJoystickName.argtypes = [ctypes.c_int]
def get_joystick_name(joy):
@@ -1649,6 +2074,98 @@
"""
return _glfw.glfwGetJoystickName(joy)
+
+if hasattr(_glfw, 'glfwGetJoystickGUID'):
+ _glfw.glfwGetJoystickGUID.restype = ctypes.c_char_p
+ _glfw.glfwGetJoystickGUID.argtypes = [ctypes.c_int]
+ def get_joystick_guid(joystick_id):
+ """
+ Returns the SDL compatible GUID of the specified joystick.
+
+ Wrapper for:
+ const char* glfwGetJoystickGUID(int jid);
+ """
+ return _glfw.glfwGetJoystickGUID(joystick_id)
+
+if hasattr(_glfw, 'glfwSetJoystickUserPointer') and hasattr(_glfw, 'glfwGetJoystickUserPointer'):
+ _joystick_user_data_repository = {}
+ _glfw.glfwSetJoystickUserPointer.restype = None
+ _glfw.glfwSetJoystickUserPointer.argtypes = [ctypes.c_int,
+ ctypes.c_void_p]
+
+
+ def set_joystick_user_pointer(joystick_id, pointer):
+ """
+ Sets the user pointer of the specified joystick. You may pass a normal
+ python object into this function and it will be wrapped automatically.
+ The object will be kept in existence until the pointer is set to
+ something else.
+
+ Wrapper for:
+ void glfwSetJoystickUserPointer(int jid, void* pointer);
+ """
+
+ data = (False, pointer)
+ if not isinstance(pointer, ctypes.c_void_p):
+ data = (True, pointer)
+ # Create a void pointer for the python object
+ pointer = ctypes.cast(ctypes.pointer(ctypes.py_object(pointer)),
+ ctypes.c_void_p)
+
+ _joystick_user_data_repository[joystick_id] = data
+ _glfw.glfwSetWindowUserPointer(joystick_id, pointer)
+
+
+ _glfw.glfwGetJoystickUserPointer.restype = ctypes.c_void_p
+ _glfw.glfwGetJoystickUserPointer.argtypes = [ctypes.c_int]
+
+
+ def get_joystick_user_pointer(joystick_id):
+ """
+ Returns the user pointer of the specified joystick.
+
+ Wrapper for:
+ void* glfwGetJoystickUserPointer(int jid);
+ """
+
+ if joystick_id in _joystick_user_data_repository:
+ data = _joystick_user_data_repository[joystick_id]
+ is_wrapped_py_object = data[0]
+ if is_wrapped_py_object:
+ return data[1]
+ return _glfw.glfwGetJoystickUserPointer(joystick_id)
+
+
+if hasattr(_glfw, 'glfwJoystickIsGamepad'):
+ _glfw.glfwJoystickIsGamepad.restype = ctypes.c_int
+ _glfw.glfwJoystickIsGamepad.argtypes = [ctypes.c_int]
+ def joystick_is_gamepad(joystick_id):
+ """
+ Returns whether the specified joystick has a gamepad mapping.
+
+ Wrapper for:
+ int glfwJoystickIsGamepad(int jid);
+ """
+ return _glfw.glfwJoystickIsGamepad(joystick_id) != 0
+
+
+if hasattr(_glfw, 'glfwGetGamepadState'):
+ _glfw.glfwGetGamepadState.restype = ctypes.c_int
+ _glfw.glfwGetGamepadState.argtypes = [ctypes.c_int,
+ ctypes.POINTER(_GLFWgamepadstate)]
+ def get_gamepad_state(joystick_id):
+ """
+ Retrieves the state of the specified joystick remapped as a gamepad.
+
+ Wrapper for:
+ int glfwGetGamepadState(int jid, GLFWgamepadstate* state);
+ """
+ gamepad_state = _GLFWgamepadstate()
+ if _glfw.glfwGetGamepadState(joystick_id, ctypes.byref(gamepad_state)) == FALSE:
+ return None
+ return gamepad_state.unwrap()
+
+
_glfw.glfwSetClipboardString.restype = None
_glfw.glfwSetClipboardString.argtypes = [ctypes.POINTER(_GLFWwindow),
ctypes.c_char_p]
@@ -1899,6 +2416,36 @@
if previous_callback is not None and previous_callback[0] != 0:
return previous_callback[0]
+
+if hasattr(_glfw, 'glfwUpdateGamepadMappings'):
+ _glfw.glfwUpdateGamepadMappings.restype = ctypes.c_int
+ _glfw.glfwUpdateGamepadMappings.argtypes = [ctypes.c_char_p]
+ def update_gamepad_mappings(string):
+ """
+ Adds the specified SDL_GameControllerDB gamepad mappings.
+
+ Wrapper for:
+ int glfwUpdateGamepadMappings(const char* string);
+ """
+ return _glfw.glfwUpdateGamepadMappings(_to_char_p(string))
+
+
+if hasattr(_glfw, 'glfwGetGamepadName'):
+ _glfw.glfwGetGamepadName.restype = ctypes.c_char_p
+ _glfw.glfwGetGamepadName.argtypes = [ctypes.c_int]
+ def get_gamepad_name(joystick_id):
+ """
+ Returns the human-readable gamepad name for the specified joystick.
+
+ Wrapper for:
+ const char* glfwGetGamepadName(int jid);
+ """
+ gamepad_name = _glfw.glfwGetGamepadName(joystick_id)
+ if gamepad_name:
+ return gamepad_name.decode('utf-8')
+ return None
+
+
if hasattr(_glfw, 'glfwGetKeyName'):
_glfw.glfwGetKeyName.restype = ctypes.c_char_p
_glfw.glfwGetKeyName.argtypes = [ctypes.c_int, ctypes.c_int]
@@ -1914,6 +2461,20 @@
return key_name.decode('utf-8')
return None
+
+if hasattr(_glfw, 'glfwGetKeyScancode'):
+ _glfw.glfwGetKeyScancode.restype = ctypes.c_int
+ _glfw.glfwGetKeyScancode.argtypes = [ctypes.c_int]
+ def get_key_scancode(key):
+ """
+ Returns the platform-specific scancode of the specified key.
+
+ Wrapper for:
+ int glfwGetKeyScancode(int key);
+ """
+ return _glfw.glfwGetKeyScancode(key)
+
+
if hasattr(_glfw, 'glfwCreateCursor'):
_glfw.glfwCreateCursor.restype = ctypes.POINTER(_GLFWcursor)
_glfw.glfwCreateCursor.argtypes = [ctypes.POINTER(_GLFWimage),
@@ -2072,7 +2633,7 @@
ctypes.POINTER(ctypes.c_int),
ctypes.POINTER(ctypes.c_int),
ctypes.POINTER(ctypes.c_int)]
- def set_get_window_frame_size(window):
+ def get_window_frame_size(window):
"""
Retrieves the size of the frame of the window.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glfw-1.7.1/glfw.egg-info/PKG-INFO new/glfw-1.8.0/glfw.egg-info/PKG-INFO
--- old/glfw-1.7.1/glfw.egg-info/PKG-INFO 2019-02-02 07:13:02.000000000 +0100
+++ new/glfw-1.8.0/glfw.egg-info/PKG-INFO 2019-05-11 10:39:04.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: glfw
-Version: 1.7.1
+Version: 1.8.0
Summary: A ctypes-based wrapper for GLFW3.
Home-page: https://github.com/FlorianRhiem/pyGLFW
Author: Florian Rhiem
@@ -39,8 +39,20 @@
pip install glfw
- For Windows users, the GLFW shared library is included in the Python wheels.
- Linux and macOS users need to install the library themselves and should
+ Windows
+ ~~~~~~~
+
+ The GLFW shared library is included in the Python wheels for Windows, but the correct Microsoft Visual C++ Redistributable will be required:
+
+ - `VC 2010 <https://www.microsoft.com/en-us/download/details.aspx?id=5555>`_ for 32-bit Python, or
+ - `VC 2012 <https://www.microsoft.com/en-us/download/details.aspx?id=30679>`_ for 64-bit Python.
+
+ Alternatively, you can download a shared library built for a runtime already installed on your system from `glfw.org <http://www.glfw.org/download.html>`_.
+
+ Linux and macOS
+ ~~~~~~~~~~~~~~~
+
+ You will need to install the GLFW shared library yourself and should
`compile GLFW from source <http://www.glfw.org/docs/latest/compile.html>`__
(use ``-DBUILD_SHARED_LIBS=ON``).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glfw-1.7.1/glfw.egg-info/SOURCES.txt new/glfw-1.8.0/glfw.egg-info/SOURCES.txt
--- old/glfw-1.7.1/glfw.egg-info/SOURCES.txt 2019-02-02 07:13:02.000000000 +0100
+++ new/glfw-1.8.0/glfw.egg-info/SOURCES.txt 2019-05-11 10:39:04.000000000 +0200
@@ -1,4 +1,3 @@
-CHANGES.txt
LICENSE.txt
MANIFEST.in
README.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glfw-1.7.1/setup.py new/glfw-1.8.0/setup.py
--- old/glfw-1.7.1/setup.py 2019-02-02 07:12:23.000000000 +0100
+++ new/glfw-1.8.0/setup.py 2019-05-11 10:38:32.000000000 +0200
@@ -8,7 +8,7 @@
setup(
name='glfw',
- version='1.7.1',
+ version='1.8.0',
description='A ctypes-based wrapper for GLFW3.',
long_description=long_description,
url='https://github.com/FlorianRhiem/pyGLFW',
1
0
Hello community,
here is the log from the commit of package azure-cli-core for openSUSE:Factory checked in at 2019-05-22 11:16:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-core (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-core.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-core"
Wed May 22 11:16:43 2019 rev:5 rq:704424 version:2.0.64
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-core/azure-cli-core.changes 2018-10-15 10:47:44.903114020 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-core.new.5148/azure-cli-core.changes 2019-05-22 11:16:46.650499641 +0200
@@ -1,0 +2,39 @@
+Tue May 21 09:47:09 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.0.64
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Add patch to drop compatible releases operator from setup.py,
+ required for SLES12 as the setuptools version is too old
+ + acc_drop-compatible-releases-operator.patch
+- Refresh patches for new version
+ + acc_relax-requires-versions.patch
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
+Tue Apr 16 14:08:23 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.0.58
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Relax upper version for python-tabulate build dependency (boo#1125671)
+ + Cherry-pick fix from upstream to patch setup.py
+ * acc_relax-requires-versions.patch
+ + Remove upper version constraint in BuildRequires for python-tabulate
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
+Sun Mar 3 21:11:56 UTC 2019 - Robert Schweikert <rjschwei(a)suse.com>
+
+- Relax version requirement of tabluate, accept up to next minor version
+
+-------------------------------------------------------------------
Old:
----
azure-cli-core-2.0.45.tar.gz
New:
----
acc_drop-compatible-releases-operator.patch
acc_relax-requires-versions.patch
azure-cli-core-2.0.64.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-core.spec ++++++
--- /var/tmp/diff_new_pack.5sG1tf/_old 2019-05-22 11:16:47.346499153 +0200
+++ /var/tmp/diff_new_pack.5sG1tf/_new 2019-05-22 11:16:47.350499150 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-core
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-core
-Version: 2.0.45
+Version: 2.0.64
Release: 0
Summary: Microsoft Azure CLI Core Module
License: MIT
@@ -25,33 +25,35 @@
Url: https://github.com/Azure/azure-cli
Source: https://files.pythonhosted.org/packages/source/a/azure-cli-core/azure-cli-c…
Source1: LICENSE.txt
+Patch1: acc_drop-compatible-releases-operator.patch
+Patch2: acc_relax-requires-versions.patch
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-nspkg
Requires: azure-cli-telemetry
Requires: python3-PyJWT
-Requires: python3-PyYAML < 4.0.0
-Requires: python3-PyYAML >= 3.13
-Requires: python3-adal >= 1.0.2
+Requires: python3-PyYAML
+Requires: python3-adal >= 1.2.0
Requires: python3-argcomplete >= 1.8.0
-Requires: python3-azure-mgmt-resource >= 2.0.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-mgmt-resource >= 2.1.0
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-colorama >= 0.3.9
Requires: python3-humanfriendly >= 4.7
Requires: python3-jmespath
-Requires: python3-knack >= 0.4.2
+Requires: python3-knack < 1.0.0
+Requires: python3-knack >= 0.6.1
Requires: python3-msrest >= 0.4.4
Requires: python3-msrestazure >= 0.4.25
Requires: python3-paramiko >= 2.0.8
Requires: python3-pip
+Requires: python3-psutil >= 5.6.1
Requires: python3-pyOpenSSL >= 17.1.0
Requires: python3-pygments
-Requires: python3-requests
+Requires: python3-pyperclip >= 1.7.0
+Requires: python3-requests >= 2.20.0
Requires: python3-six
-Requires: python3-tabulate <= 0.8.2
Requires: python3-tabulate >= 0.7.7
Requires: python3-wheel >= 0.30.0
%if %{python3_version_nodots} < 34
@@ -66,6 +68,8 @@
%prep
%setup -q -n azure-cli-core-%{version}
+%patch1 -p1
+%patch2 -p1
%build
install -m 644 %{SOURCE1} %{_builddir}/azure-cli-core-%{version}
@@ -73,6 +77,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/__init__.*
++++++ acc_drop-compatible-releases-operator.patch ++++++
diff -Nru azure-cli-core-2.0.64.orig/setup.py azure-cli-core-2.0.64/setup.py
--- azure-cli-core-2.0.64.orig/setup.py 2019-05-02 02:39:57.000000000 +0200
+++ azure-cli-core-2.0.64/setup.py 2019-05-21 11:40:55.175850572 +0200
@@ -59,7 +59,7 @@
'colorama>=0.3.9',
'humanfriendly>=4.7',
'jmespath',
- 'knack~=0.6.1',
+ 'knack>=0.6.1',
'msrest>=0.4.4',
'msrestazure>=0.4.25',
'paramiko>=2.0.8',
++++++ acc_relax-requires-versions.patch ++++++
diff -Nru azure-cli-core-2.0.64.orig/setup.py azure-cli-core-2.0.64/setup.py
--- azure-cli-core-2.0.64.orig/setup.py 2019-05-21 11:42:59.840812713 +0200
+++ azure-cli-core-2.0.64/setup.py 2019-05-21 11:43:25.317009318 +0200
@@ -71,8 +71,8 @@
'requests>=2.20.0',
'six',
'tabulate>=0.7.7',
- 'wheel==0.30.0',
- 'azure-mgmt-resource==2.1.0',
+ 'wheel>=0.30.0',
+ 'azure-mgmt-resource>=2.1.0',
'pyperclip>=1.7.0',
'psutil>=5.6.1'
]
++++++ azure-cli-core-2.0.45.tar.gz -> azure-cli-core-2.0.64.tar.gz ++++++
++++ 6129 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-knack for openSUSE:Factory checked in at 2019-05-22 11:16:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-knack (Old)
and /work/SRC/openSUSE:Factory/.python-knack.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-knack"
Wed May 22 11:16:33 2019 rev:7 rq:704423 version:0.6.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-knack/python-knack.changes 2019-05-06 13:25:09.841020349 +0200
+++ /work/SRC/openSUSE:Factory/.python-knack.new.5148/python-knack.changes 2019-05-22 11:16:43.162502081 +0200
@@ -1,0 +2,8 @@
+Tue May 21 09:51:57 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to 0.6.1:
+ * Always read from local for configured_default
+- from version 0.6.0
+ * Support local context chained config file
+
+-------------------------------------------------------------------
Old:
----
v0.5.4.tar.gz
New:
----
v0.6.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-knack.spec ++++++
--- /var/tmp/diff_new_pack.Rn3gtL/_old 2019-05-22 11:16:45.266500609 +0200
+++ /var/tmp/diff_new_pack.Rn3gtL/_new 2019-05-22 11:16:45.270500606 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-knack
-Version: 0.5.4
+Version: 0.6.1
Release: 0
Summary: A Command-Line Interface framework
License: MIT
++++++ v0.5.4.tar.gz -> v0.6.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knack-0.5.4/knack/commands.py new/knack-0.6.1/knack/commands.py
--- old/knack-0.5.4/knack/commands.py 2019-03-29 20:11:28.000000000 +0100
+++ new/knack-0.6.1/knack/commands.py 2019-04-26 02:11:43.000000000 +0200
@@ -78,7 +78,10 @@
return
defaults_section = self.cli_ctx.config.defaults_section_name
+ use_local_config_original = self.cli_ctx.config.use_local_config
+ self.cli_ctx.config.set_to_use_local_config(True)
config_value = self.cli_ctx.config.get(defaults_section, default_key, None)
+ self.cli_ctx.config.set_to_use_local_config(use_local_config_original)
if config_value:
logger.info("Configured default '%s' for arg %s", config_value, arg.name)
overrides.settings['default'] = DefaultStr(config_value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knack-0.5.4/knack/config.py new/knack-0.6.1/knack/config.py
--- old/knack-0.5.4/knack/config.py 2019-03-29 20:11:28.000000000 +0100
+++ new/knack-0.6.1/knack/config.py 2019-04-26 02:11:43.000000000 +0200
@@ -25,7 +25,7 @@
_DEFAULT_CONFIG_FILE_NAME = 'config'
_CONFIG_DEFAULTS_SECTION = 'defaults'
- def __init__(self, config_dir=None, config_env_var_prefix=None, config_file_name=None):
+ def __init__(self, config_dir=None, config_env_var_prefix=None, config_file_name=None, use_local_config=None):
""" Manages configuration options available in the CLI
:param config_dir: The directory to store config files
@@ -38,7 +38,6 @@
config_dir = config_dir or CLIConfig._DEFAULT_CONFIG_DIR
ensure_dir(config_dir)
config_env_var_prefix = config_env_var_prefix or CLIConfig._DEFAULT_CONFIG_ENV_VAR_PREFIX
- self.config_parser = get_config_parser()
env_var_prefix = '{}_'.format(config_env_var_prefix.upper())
default_config_dir = os.path.expanduser(config_dir)
self.config_dir = os.environ.get('{}CONFIG_DIR'.format(env_var_prefix), default_config_dir)
@@ -46,7 +45,24 @@
self.config_path = os.path.join(self.config_dir, configuration_file_name)
self._env_var_format = '{}{}'.format(env_var_prefix, '{section}_{option}')
self.defaults_section_name = CLIConfig._CONFIG_DEFAULTS_SECTION
- self.config_parser.read(self.config_path)
+ self.use_local_config = use_local_config
+ self._config_file_chain = []
+ current_dir = os.getcwd()
+ config_dir_name = os.path.basename(self.config_dir)
+ while current_dir:
+ current_config_dir = os.path.join(current_dir, config_dir_name)
+ # Stop if already in the default .azure
+ if (os.path.normcase(os.path.normpath(current_config_dir)) ==
+ os.path.normcase(os.path.normpath(self.config_dir))):
+ break
+ if os.path.isdir(current_config_dir):
+ self._config_file_chain.append(_ConfigFile(current_config_dir,
+ os.path.join(current_config_dir, configuration_file_name)))
+ # Stop if already in root drive
+ if current_dir == os.path.dirname(current_dir):
+ break
+ current_dir = os.path.dirname(current_dir)
+ self._config_file_chain.append(_ConfigFile(self.config_dir, self.config_path))
def env_var_name(self, section, option):
return self._env_var_format.format(section=section.upper(),
@@ -55,16 +71,38 @@
def has_option(self, section, option):
if self.env_var_name(section, option) in os.environ:
return True
- return self.config_parser.has_option(section, option)
+ config_files = self._config_file_chain if self.use_local_config else self._config_file_chain[-1:]
+ return bool(next((f for f in config_files if f.has_option(section, option)), False))
def get(self, section, option, fallback=_UNSET):
- try:
- env = self.env_var_name(section, option)
- return os.environ[env] if env in os.environ else self.config_parser.get(section, option)
- except (configparser.NoSectionError, configparser.NoOptionError):
- if fallback is _UNSET:
- raise
- return fallback
+ env = self.env_var_name(section, option)
+ if env in os.environ:
+ return os.environ[env]
+ last_ex = None
+ for config in self._config_file_chain if self.use_local_config else self._config_file_chain[-1:]:
+ try:
+ return config.get(section, option)
+ except (configparser.NoSectionError, configparser.NoOptionError) as ex:
+ last_ex = ex
+
+ if fallback is _UNSET:
+ raise last_ex # pylint:disable=raising-bad-type
+ return fallback
+
+ def items(self, section):
+ import re
+ pattern = self.env_var_name(section, '.+')
+ candidates = [(k.split('_')[-1], os.environ[k], k) for k in os.environ.keys() if re.match(pattern, k)]
+ result = {c[0]: c for c in candidates}
+ for config in self._config_file_chain if self.use_local_config else self._config_file_chain[-1:]:
+ try:
+ entries = config.items(section)
+ for name, value in entries:
+ if name not in result:
+ result[name] = (name, value, config.config_path)
+ except (configparser.NoSectionError, configparser.NoOptionError):
+ pass
+ return [{'name': name, 'value': value, 'source': source} for name, value, source in result.values()]
def getint(self, section, option, fallback=_UNSET):
return int(self.get(section, option, fallback))
@@ -78,6 +116,57 @@
raise ValueError('Not a boolean: {}'.format(val))
return CLIConfig._BOOLEAN_STATES[val.lower()]
+ def set_value(self, section, option, value):
+ if self.use_local_config:
+ current_config_dir = os.path.join(os.getcwd(), os.path.basename(self.config_dir))
+ config_file_path = os.path.join(current_config_dir, os.path.basename(self.config_path))
+ if config_file_path == self._config_file_chain[0].config_path:
+ self._config_file_chain[0].set_value(section, option, value)
+ else:
+ config = _ConfigFile(current_config_dir, config_file_path)
+ config.set_value(section, option, value)
+ self._config_file_chain.insert(0, config)
+ else:
+ self._config_file_chain[-1].set_value(section, option, value)
+
+ def set_to_use_local_config(self, use_local_config):
+ self.use_local_config = use_local_config
+
+
+class _ConfigFile(object):
+ _BOOLEAN_STATES = {'1': True, 'yes': True, 'true': True, 'on': True,
+ '0': False, 'no': False, 'false': False, 'off': False}
+
+ def __init__(self, config_dir, config_path):
+ self.config_dir = config_dir
+ self.config_path = config_path
+ self.config_parser = get_config_parser()
+ if os.path.exists(config_path):
+ self.config_parser.read(config_path)
+
+ def items(self, section):
+ return self.config_parser.items(section) if self.config_parser else []
+
+ def has_option(self, section, option):
+ return self.config_parser.has_option(section, option) if self.config_parser else False
+
+ def get(self, section, option):
+ if self.config_parser:
+ return self.config_parser.get(section, option)
+ raise configparser.NoOptionError(section, option)
+
+ def getint(self, section, option):
+ return int(self.get(section, option))
+
+ def getfloat(self, section, option):
+ return float(self.get(section, option))
+
+ def getboolean(self, section, option):
+ val = str(self.get(section, option))
+ if val.lower() not in _ConfigFile._BOOLEAN_STATES:
+ raise ValueError('Not a boolean: {}'.format(val))
+ return _ConfigFile._BOOLEAN_STATES[val.lower()]
+
def set(self, config):
ensure_dir(self.config_dir)
with open(self.config_path, 'w') as configfile:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knack-0.5.4/knack/log.py new/knack-0.6.1/knack/log.py
--- old/knack-0.5.4/knack/log.py 2019-03-29 20:11:28.000000000 +0100
+++ new/knack-0.6.1/knack/log.py 2019-04-26 02:11:43.000000000 +0200
@@ -45,8 +45,8 @@
return wrap_msg_with_color
cls.COLOR_MAP = {
- logging.CRITICAL: _color_wrapper(colorama.Fore.RED),
- logging.ERROR: _color_wrapper(colorama.Fore.RED),
+ logging.CRITICAL: _color_wrapper(colorama.Fore.LIGHTRED_EX),
+ logging.ERROR: _color_wrapper(colorama.Fore.LIGHTRED_EX),
logging.WARNING: _color_wrapper(colorama.Fore.YELLOW),
logging.INFO: _color_wrapper(colorama.Fore.GREEN),
logging.DEBUG: _color_wrapper(colorama.Fore.CYAN)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knack-0.5.4/setup.py new/knack-0.6.1/setup.py
--- old/knack-0.5.4/setup.py 2019-03-29 20:11:28.000000000 +0100
+++ new/knack-0.6.1/setup.py 2019-04-26 02:11:43.000000000 +0200
@@ -9,7 +9,7 @@
from codecs import open
from setuptools import setup, find_packages
-VERSION = '0.5.4'
+VERSION = '0.6.1'
DEPENDENCIES = [
'argcomplete',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knack-0.5.4/tests/test_config.py new/knack-0.6.1/tests/test_config.py
--- old/knack-0.5.4/tests/test_config.py 2019-03-29 20:11:28.000000000 +0100
+++ new/knack-0.6.1/tests/test_config.py 2019-04-26 02:11:43.000000000 +0200
@@ -25,8 +25,9 @@
section = 'MySection'
option = 'myoption'
value = 'myvalue'
- self.cli_config.config_parser.add_section(section)
- self.cli_config.config_parser.set(section, option, value)
+ self.cli_config.set_value(section, option, value)
+ self.assertTrue(self.cli_config.has_option(section, option))
+ self.cli_config.set_to_use_local_config(True)
self.assertTrue(self.cli_config.has_option(section, option))
def test_has_option_env(self):
@@ -34,18 +35,23 @@
section = 'MySection'
option = 'myoption'
self.assertTrue(self.cli_config.has_option(section, option))
+ self.cli_config.set_to_use_local_config(True)
+ self.assertTrue(self.cli_config.has_option(section, option))
def test_has_option_env_no(self):
section = 'MySection'
option = 'myoption'
self.assertFalse(self.cli_config.has_option(section, option))
+ self.cli_config.set_to_use_local_config(True)
+ self.assertFalse(self.cli_config.has_option(section, option))
def test_get(self):
section = 'MySection'
option = 'myoption'
value = 'myvalue'
- self.cli_config.config_parser.add_section(section)
- self.cli_config.config_parser.set(section, option, value)
+ self.cli_config.set_value(section, option, value)
+ self.assertEqual(self.cli_config.get(section, option), value)
+ self.cli_config.set_to_use_local_config(True)
self.assertEqual(self.cli_config.get(section, option), value)
def test_get_env(self):
@@ -54,17 +60,28 @@
option = 'myoption'
value = 'myvalue'
self.assertEqual(self.cli_config.get(section, option), value)
+ self.cli_config.set_to_use_local_config(True)
+ self.assertEqual(self.cli_config.get(section, option), value)
def test_get_not_found_section(self):
section = 'MySection'
option = 'myoption'
with self.assertRaises(configparser.NoSectionError):
self.cli_config.get(section, option)
+ self.cli_config.set_to_use_local_config(True)
+ with self.assertRaises(configparser.NoSectionError):
+ self.cli_config.get(section, option)
def test_get_not_found_option(self):
section = 'MySection'
option = 'myoption'
- self.cli_config.config_parser.add_section(section)
+ option_other = 'option'
+ value = 'myvalue'
+ self.cli_config.set_value(section, option_other, value)
+ with self.assertRaises(configparser.NoOptionError):
+ self.cli_config.get(section, option)
+ self.cli_config.set_to_use_local_config(True)
+ self.cli_config.set_value(section, option_other, value)
with self.assertRaises(configparser.NoOptionError):
self.cli_config.get(section, option)
@@ -72,21 +89,29 @@
section = 'MySection'
option = 'myoption'
self.assertEqual(self.cli_config.get(section, option, fallback='fallback'), 'fallback')
+ self.cli_config.set_to_use_local_config(True)
+ self.assertEqual(self.cli_config.get(section, option, fallback='fallback'), 'fallback')
def test_getint(self):
section = 'MySection'
option = 'myoption'
value = '123'
- self.cli_config.config_parser.add_section(section)
- self.cli_config.config_parser.set(section, option, value)
+ self.cli_config.set_value(section, option, value)
+ self.assertEqual(self.cli_config.getint(section, option), int(value))
+ self.cli_config.set_to_use_local_config(True)
self.assertEqual(self.cli_config.getint(section, option), int(value))
def test_getint_error(self):
section = 'MySection'
option = 'myoption'
value = 'not_an_int'
- self.cli_config.config_parser.add_section(section)
- self.cli_config.config_parser.set(section, option, value)
+ self.cli_config.set_value(section, option, value)
+ with self.assertRaises(ValueError):
+ self.cli_config.getint(section, option)
+ self.cli_config.set_to_use_local_config(True)
+ with self.assertRaises(ValueError):
+ self.cli_config.getint(section, option)
+ self.cli_config.set_value(section, option, value)
with self.assertRaises(ValueError):
self.cli_config.getint(section, option)
@@ -94,16 +119,20 @@
section = 'MySection'
option = 'myoption'
value = '123.456'
- self.cli_config.config_parser.add_section(section)
- self.cli_config.config_parser.set(section, option, value)
+ self.cli_config.set_value(section, option, value)
+ self.assertEqual(self.cli_config.getfloat(section, option), float(value))
+ self.cli_config.set_to_use_local_config(True)
self.assertEqual(self.cli_config.getfloat(section, option), float(value))
def test_getfloat_error(self):
section = 'MySection'
option = 'myoption'
value = 'not_a_float'
- self.cli_config.config_parser.add_section(section)
- self.cli_config.config_parser.set(section, option, value)
+ self.cli_config.set_value(section, option, value)
+ with self.assertRaises(ValueError):
+ self.cli_config.getfloat(section, option)
+ self.cli_config.set_to_use_local_config(True)
+ self.cli_config.set_value(section, option, value)
with self.assertRaises(ValueError):
self.cli_config.getfloat(section, option)
@@ -111,16 +140,20 @@
section = 'MySection'
option = 'myoption'
value = 'true'
- self.cli_config.config_parser.add_section(section)
- self.cli_config.config_parser.set(section, option, value)
+ self.cli_config.set_value(section, option, value)
+ self.assertTrue(self.cli_config.getboolean(section, option))
+ self.cli_config.set_to_use_local_config(True)
self.assertTrue(self.cli_config.getboolean(section, option))
def test_getboolean_error(self):
section = 'MySection'
option = 'myoption'
value = 'not_a_boolean'
- self.cli_config.config_parser.add_section(section)
- self.cli_config.config_parser.set(section, option, value)
+ self.cli_config.set_value(section, option, value)
+ with self.assertRaises(ValueError):
+ self.cli_config.getboolean(section, option)
+ self.cli_config.set_to_use_local_config(True)
+ self.cli_config.set_value(section, option, value)
with self.assertRaises(ValueError):
self.cli_config.getboolean(section, option)
@@ -133,14 +166,20 @@
def test_set_config_value_duplicate_section_ok(self):
self.cli_config.set_value('test_section', 'test_option', 'a_value')
self.cli_config.set_value('test_section', 'test_option_another', 'another_value')
- config = get_config_parser()
- config.read(self.cli_config.config_path)
- self.assertEqual(config.get('test_section', 'test_option'), 'a_value')
- self.assertEqual(config.get('test_section', 'test_option_another'), 'another_value')
+ self.assertEqual(self.cli_config.get('test_section', 'test_option'), 'a_value')
+ self.assertEqual(self.cli_config.get('test_section', 'test_option_another'), 'another_value')
+ self.cli_config.set_to_use_local_config(True)
+ self.cli_config.set_value('test_section', 'test_option', 'a_value')
+ self.cli_config.set_value('test_section', 'test_option_another', 'another_value')
+ self.assertEqual(self.cli_config.get('test_section', 'test_option'), 'a_value')
+ self.assertEqual(self.cli_config.get('test_section', 'test_option_another'), 'another_value')
def test_set_config_value_not_string(self):
with self.assertRaises(TypeError):
self.cli_config.set_value('test_section', 'test_option', False)
+ self.cli_config.set_to_use_local_config(True)
+ with self.assertRaises(TypeError):
+ self.cli_config.set_value('test_section', 'test_option', False)
def test_set_config_value_file_permissions(self):
self.cli_config.set_value('test_section', 'test_option', 'a_value')
@@ -155,6 +194,90 @@
self.assertFalse(bool(file_mode & stat.S_IWOTH))
self.assertFalse(bool(file_mode & stat.S_IXOTH))
+ def test_has_option_local(self):
+ section = 'MySection'
+ option = 'myoption'
+ value = 'myvalue'
+ # check local config
+ self.cli_config.set_to_use_local_config(True)
+ self.cli_config.set_value(section, option, value)
+ self.assertTrue(self.cli_config.has_option(section, option))
+ # check default config
+ self.cli_config.set_to_use_local_config(False)
+ self.assertFalse(self.cli_config.has_option(section, option))
+ self.cli_config.set_value(section, option, value)
+ self.assertTrue(self.cli_config.has_option(section, option))
+
+ def test_get_local(self):
+ section = 'MySection'
+ option = 'myoption'
+ value = 'myvalue'
+ local_value = 'localvalue'
+ # check local config
+ self.cli_config.set_to_use_local_config(True)
+ self.cli_config.set_value(section, option, local_value)
+ self.assertEqual(self.cli_config.get(section, option), local_value)
+ # check default config
+ self.cli_config.set_to_use_local_config(False)
+ self.assertFalse(self.cli_config.has_option(section, option))
+ self.cli_config.set_value(section, option, value)
+ self.assertEqual(self.cli_config.get(section, option), value)
+
+ def test_getint_local(self):
+ section = 'MySection'
+ option = 'myoption'
+ value = '123'
+ local_value = '1234'
+ # check local config
+ self.cli_config.set_to_use_local_config(True)
+ self.cli_config.set_value(section, option, local_value)
+ self.assertEqual(self.cli_config.getint(section, option), int(local_value))
+ # check default config
+ self.cli_config.set_to_use_local_config(False)
+ self.assertFalse(self.cli_config.has_option(section, option))
+ self.cli_config.set_value(section, option, value)
+ self.assertEqual(self.cli_config.getint(section, option), int(value))
+
+ def test_getfloat_local(self):
+ section = 'MySection'
+ option = 'myoption'
+ value = '123.456'
+ local_value = '1234.56'
+ # check local config
+ self.cli_config.set_to_use_local_config(True)
+ self.cli_config.set_value(section, option, local_value)
+ self.assertEqual(self.cli_config.getfloat(section, option), float(local_value))
+ # check default config
+ self.cli_config.set_to_use_local_config(False)
+ self.assertFalse(self.cli_config.has_option(section, option))
+ self.cli_config.set_value(section, option, value)
+ self.assertEqual(self.cli_config.getfloat(section, option), float(value))
+
+ def test_getboolean_local(self):
+ section = 'MySection'
+ option = 'myoption'
+ local_value = 'true'
+ value = 'false'
+ # check local config
+ self.cli_config.set_to_use_local_config(True)
+ self.cli_config.set_value(section, option, local_value)
+ self.assertTrue(self.cli_config.getboolean(section, option))
+ # check default config
+ self.cli_config.set_to_use_local_config(False)
+ self.assertFalse(self.cli_config.has_option(section, option))
+ self.cli_config.set_value(section, option, value)
+ self.assertFalse(self.cli_config.getboolean(section, option))
+
+ def test_set_config_value_duplicate_section_ok_local(self):
+ self.cli_config.set_to_use_local_config(True)
+ self.cli_config.set_value('test_section', 'test_option', 'a_value')
+ self.cli_config.set_value('test_section', 'test_option_another', 'another_value')
+ self.assertEqual(self.cli_config.get('test_section', 'test_option'), 'a_value')
+ self.assertEqual(self.cli_config.get('test_section', 'test_option_another'), 'another_value')
+ self.cli_config.set_to_use_local_config(False)
+ self.assertFalse(self.cli_config.has_option('test_section', 'test_option'))
+ self.assertFalse(self.cli_config.has_option('test_section', 'test_option_another'))
+
if __name__ == '__main__':
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knack-0.5.4/tests/test_log.py new/knack-0.6.1/tests/test_log.py
--- old/knack-0.5.4/tests/test_log.py 2019-03-29 20:11:28.000000000 +0100
+++ new/knack-0.6.1/tests/test_log.py 2019-04-26 02:11:43.000000000 +0200
@@ -85,7 +85,7 @@
class TestCustomStreamHandler(unittest.TestCase):
- expectation = {logging.CRITICAL: colorama.Fore.RED, logging.ERROR: colorama.Fore.RED,
+ expectation = {logging.CRITICAL: colorama.Fore.LIGHTRED_EX, logging.ERROR: colorama.Fore.LIGHTRED_EX,
logging.WARNING: colorama.Fore.YELLOW, logging.INFO: colorama.Fore.GREEN,
logging.DEBUG: colorama.Fore.CYAN}
1
0
Hello community,
here is the log from the commit of package python-Pykka for openSUSE:Factory checked in at 2019-05-22 11:16:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Pykka (Old)
and /work/SRC/openSUSE:Factory/.python-Pykka.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Pykka"
Wed May 22 11:16:25 2019 rev:3 rq:704416 version:2.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Pykka/python-Pykka.changes 2019-01-24 14:03:28.304047614 +0100
+++ /work/SRC/openSUSE:Factory/.python-Pykka.new.5148/python-Pykka.changes 2019-05-22 11:16:31.074510540 +0200
@@ -1,0 +2,6 @@
+Tue May 21 10:49:22 UTC 2019 - Ondřej Súkup <mimi.vx(a)gmail.com>
+
+- update to 2.0.0
+- enable tests
+
+-------------------------------------------------------------------
Old:
----
Pykka-1.2.1.tar.gz
New:
----
Pykka-2.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-Pykka.spec ++++++
--- /var/tmp/diff_new_pack.EJGOZH/_old 2019-05-22 11:16:33.574508790 +0200
+++ /var/tmp/diff_new_pack.EJGOZH/_new 2019-05-22 11:16:33.598508773 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-Pykka
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,13 +18,15 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-Pykka
-Version: 1.2.1
+Version: 2.0.0
Release: 0
Summary: A Python implementation of the actor model
License: Apache-2.0
Group: Development/Languages/Python
URL: http://www.pykka.org/
Source: https://files.pythonhosted.org/packages/source/P/Pykka/Pykka-%{version}.tar…
+BuildRequires: %{python_module pytest-mock}
+BuildRequires: %{python_module pytest}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
@@ -47,6 +49,9 @@
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
+%check
+%pytest
+
%files %{python_files}
%license LICENSE
%doc README.rst
++++++ Pykka-1.2.1.tar.gz -> Pykka-2.0.0.tar.gz ++++++
++++ 10218 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package targetcli-fb for openSUSE:Factory checked in at 2019-05-22 11:16:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/targetcli-fb (Old)
and /work/SRC/openSUSE:Factory/.targetcli-fb.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "targetcli-fb"
Wed May 22 11:16:19 2019 rev:13 rq:704410 version:2.1.49
Changes:
--------
--- /work/SRC/openSUSE:Factory/targetcli-fb/targetcli-fb.changes 2019-02-08 12:15:14.301428037 +0100
+++ /work/SRC/openSUSE:Factory/.targetcli-fb.new.5148/targetcli-fb.changes 2019-05-22 11:16:23.142516090 +0200
@@ -1,0 +2,6 @@
+Wed Apr 3 03:14:10 UTC 2019 - ddiss(a)suse.com
+
+- support emulate_pr attribute changes (bsc#1121998)
+ + Add-emulate_pr-backstore-attribute.patch
+
+-------------------------------------------------------------------
@@ -5 +11 @@
- do not run at the same time, in a sane way (bsc#11234233),
+ do not run at the same time, in a sane way (bsc#1123423),
New:
----
Add-emulate_pr-backstore-attribute.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ targetcli-fb.spec ++++++
--- /var/tmp/diff_new_pack.FXcjIw/_old 2019-05-22 11:16:24.134515396 +0200
+++ /var/tmp/diff_new_pack.FXcjIw/_new 2019-05-22 11:16:24.138515393 +0200
@@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@@ -56,6 +56,7 @@
%{?systemd_requires}
Patch1: Split-out-blockdev-readonly-state-detection-helper.patch
Patch2: rbd-support.patch
+Patch3: Add-emulate_pr-backstore-attribute.patch
%python_subpackages
@@ -85,6 +86,7 @@
# RBD support is dependent on LIO changes present in the SLE/Leap kernel
%patch2 -p1
%endif
+%patch3 -p1
%build
%python_build
++++++ Add-emulate_pr-backstore-attribute.patch ++++++
>From fa71860b0d819a691683c1fdcb70c255653b5851 Mon Sep 17 00:00:00 2001
From: David Disseldorp <ddiss(a)suse.de>
Date: Tue, 15 Jan 2019 12:04:49 +0100
Subject: [PATCH] Add emulate_pr backstore attribute
Added to the kernel via b49d6f7885306ee636d5c1af52170f3069ccf5f7, the
emulate_pr attribute can be used to disable support for SCSI-2
(RESERVE/RELEASE) and Persistent Reservations.
Signed-off-by: David Disseldorp <ddiss(a)suse.de>
---
targetcli/ui_backstore.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/targetcli/ui_backstore.py b/targetcli/ui_backstore.py
index efa532f..cc2cf2b 100644
--- a/targetcli/ui_backstore.py
+++ b/targetcli/ui_backstore.py
@@ -670,6 +670,7 @@ class UIStorageObject(UIRTSLibNode):
'emulate_tpws': ('number', 'If set to 1, enable Thin Provisioning Write Same.'),
'emulate_ua_intlck_ctrl': ('number', 'If set to 1, enable Unit Attention Interlock.'),
'emulate_write_cache': ('number', 'If set to 1, turn on Write Cache Enable.'),
+ 'emulate_pr': ('number', 'If set to 1, enable SCSI Reservations.'),
'enforce_pr_isids': ('number', 'If set to 1, enforce persistent reservation ISIDs.'),
'force_pr_aptpl': ('number', 'If set to 1, force SPC-3 PR Activate Persistence across Target Power Loss operation.'),
'fabric_max_sectors': ('number', 'Maximum number of sectors the fabric can transfer at once.'),
--
2.16.4
1
0
Hello community,
here is the log from the commit of package osc for openSUSE:Factory checked in at 2019-05-22 11:16:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/osc (Old)
and /work/SRC/openSUSE:Factory/.osc.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "osc"
Wed May 22 11:16:10 2019 rev:133 rq:704403 version:0.165.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/osc/osc.changes 2019-05-20 13:18:53.563885820 +0200
+++ /work/SRC/openSUSE:Factory/.osc.new.5148/osc.changes 2019-05-22 11:16:15.814521218 +0200
@@ -1,0 +2,8 @@
+Tue May 21 09:10:33 UTC 2019 - Marco Strigl <marco.strigl(a)suse.com>
+
+- Spec:
+ * add Provides: %{use_python}-osc so that other packages
+ can require the correct version (either python2-osc or
+ python3-osc)
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ osc.spec ++++++
--- /var/tmp/diff_new_pack.iivoMX/_old 2019-05-22 11:16:17.450520073 +0200
+++ /var/tmp/diff_new_pack.iivoMX/_new 2019-05-22 11:16:17.450520073 +0200
@@ -115,6 +115,9 @@
Requires: m2crypto > 0.19
%endif
%endif
+
+Provides: %{use_python}-osc
+
%if %{with python3}
%define python_sitelib %(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
%else
1
0
Hello community,
here is the log from the commit of package python-Cheetah3 for openSUSE:Factory checked in at 2019-05-22 11:16:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Cheetah3 (Old)
and /work/SRC/openSUSE:Factory/.python-Cheetah3.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Cheetah3"
Wed May 22 11:16:07 2019 rev:6 rq:704396 version:3.2.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Cheetah3/python-Cheetah3.changes 2019-05-03 22:47:49.747962408 +0200
+++ /work/SRC/openSUSE:Factory/.python-Cheetah3.new.5148/python-Cheetah3.changes 2019-05-22 11:16:08.326526457 +0200
@@ -1,0 +2,6 @@
+Tue May 21 09:17:11 UTC 2019 - Tomáš Chvátal <tchvatal(a)suse.com>
+
+- Do not provide Cheetah3 namespace on python2, if someone wants
+ Cheetah3 binary they need the python3 variant anyway
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-Cheetah3.spec ++++++
--- /var/tmp/diff_new_pack.ZKCQTL/_old 2019-05-22 11:16:09.162525872 +0200
+++ /var/tmp/diff_new_pack.ZKCQTL/_new 2019-05-22 11:16:09.166525869 +0200
@@ -32,7 +32,9 @@
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Conflicts: python-Cheetah
+%ifpython3
Provides: Cheetah3 = %{version}
+%endif
%python_subpackages
%description
1
0
Hello community,
here is the log from the commit of package ocaml-gen for openSUSE:Factory checked in at 2019-05-22 11:16:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ocaml-gen (Old)
and /work/SRC/openSUSE:Factory/.ocaml-gen.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ocaml-gen"
Wed May 22 11:16:01 2019 rev:2 rq:704395 version:0.5.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/ocaml-gen/ocaml-gen.changes 2018-01-22 16:18:24.950222208 +0100
+++ /work/SRC/openSUSE:Factory/.ocaml-gen.new.5148/ocaml-gen.changes 2019-05-22 11:16:04.462529161 +0200
@@ -1,0 +2,7 @@
+Tue May 21 08:35:17 UTC 2019 - andy(a)onthewings.net
+
+- New upstream release (0.5.2)
+ * Transition to dune and opam 2.0.
+ * Explicitly support BuckleScript.
+
+-------------------------------------------------------------------
Old:
----
ocaml-gen-0.5.tar.gz
New:
----
ocaml-gen-0.5.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ocaml-gen.spec ++++++
--- /var/tmp/diff_new_pack.0nvp25/_old 2019-05-22 11:16:06.218527932 +0200
+++ /var/tmp/diff_new_pack.0nvp25/_new 2019-05-22 11:16:06.218527932 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ocaml-gen
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,11 +12,12 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
+
Name: ocaml-gen
-Version: 0.5
+Version: 0.5.2
Release: 0
%{?ocaml_preserve_bytecode}
Summary: Simple, efficient iterators for OCaml
@@ -28,10 +29,10 @@
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: ocaml
-BuildRequires: ocaml-oasis
+BuildRequires: ocaml-dune
BuildRequires: ocaml-findlib
-BuildRequires: ocaml-ocamldoc
BuildRequires: ocaml-rpm-macros
+BuildRequires: opam-installer
%description
Iterators for OCaml, both restartable and consumable.
@@ -43,7 +44,6 @@
Group: Development/Languages/OCaml
Requires: %{name} = %{version}
-
%description devel
The %{name}-devel package contains libraries and signature files for
developing applications that use %{name}.
@@ -52,31 +52,29 @@
%prep
%setup -q -n gen-%{version}
-
%build
-%oasis_setup
-%ocaml_oasis_configure --enable-docs
-%ocaml_oasis_build
-%ocaml_oasis_doc
-
+dune build @install --profile=release
%install
-%ocaml_oasis_findlib_install
+dune install --destdir="%{buildroot}" --verbose
+# These files will be installed using the doc and license directives
+rm %{buildroot}/usr/doc/gen/{LICENSE,README.md,CHANGELOG.md}
%files
%defattr(-,root,root,-)
-%doc README.md CHANGELOG.md LICENSE
+%doc README.md CHANGELOG.md
+%license LICENSE
%dir %{_libdir}/ocaml
%dir %{_libdir}/ocaml/*
%if 0%{?ocaml_native_compiler}
%{_libdir}/ocaml/*/*.cmxs
%endif
-
%files devel
%defattr(-,root,root,-)
-%{oasis_docdir_html}
+%doc README.md CHANGELOG.md
+%license LICENSE
%dir %{_libdir}/ocaml
%dir %{_libdir}/ocaml/*
%if 0%{?ocaml_native_compiler}
@@ -84,14 +82,14 @@
%{_libdir}/ocaml/*/*.cmx
%{_libdir}/ocaml/*/*.cmxa
%endif
+%{_libdir}/ocaml/*/dune-package
+%{_libdir}/ocaml/*/opam
%{_libdir}/ocaml/*/*.ml
%{_libdir}/ocaml/*/*.mli
-%{_libdir}/ocaml/*/*.annot
%{_libdir}/ocaml/*/*.cma
%{_libdir}/ocaml/*/*.cmi
%{_libdir}/ocaml/*/*.cmt
%{_libdir}/ocaml/*/*.cmti
-%{_libdir}/ocaml/*/*.mli
%{_libdir}/ocaml/*/META
%changelog
++++++ ocaml-gen-0.5.tar.gz -> ocaml-gen-0.5.2.tar.gz ++++++
++++ 9142 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package clatd for openSUSE:Factory checked in at 2019-05-22 11:15:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/clatd (Old)
and /work/SRC/openSUSE:Factory/.clatd.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "clatd"
Wed May 22 11:15:57 2019 rev:2 rq:704392 version:1.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/clatd/clatd.changes 2018-12-13 19:48:09.736722856 +0100
+++ /work/SRC/openSUSE:Factory/.clatd.new.5148/clatd.changes 2019-05-22 11:15:58.866533077 +0200
@@ -1,0 +2,9 @@
+Mon May 20 18:16:56 UTC 2019 - Martin Hauke <mardnh(a)gmx.de>
+
+- Update to version 1.5
+ * Fixes compatibility with recent Linux kernels in get_plat_dev().
+- Drop patches (included in upstream release):
+ * 0001-nm-dispatcher-only-act-on-iface-up-down-events.patch
+ * 0002-Update-siit-dc-eam-I-D-references-to-RFC-numbers.patch
+
+-------------------------------------------------------------------
Old:
----
0001-nm-dispatcher-only-act-on-iface-up-down-events.patch
0002-Update-siit-dc-eam-I-D-references-to-RFC-numbers.patch
clatd-1.4.tar.gz
New:
----
clatd-1.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ clatd.spec ++++++
--- /var/tmp/diff_new_pack.otBqWb/_old 2019-05-22 11:16:00.470531954 +0200
+++ /var/tmp/diff_new_pack.otBqWb/_new 2019-05-22 11:16:00.498531935 +0200
@@ -1,6 +1,7 @@
#
# spec file for package clatd
#
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2018, Martin Hauke <mardnh(a)gmx.de>
#
# All modifications and additions to the file contributed by third parties
@@ -12,12 +13,12 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: clatd
-Version: 1.4
+Version: 1.5
Release: 0
Summary: CLAT / SIIT-DC Edge Relay implementation for Linux
License: MIT
@@ -26,8 +27,6 @@
#Git-Clone: https://github.com/toreanderson/clatd.git
Source: https://github.com/toreanderson/%{name}/archive/v%{version}.tar.gz#/%{name}…
Source1: clatd.conf
-Patch0: 0001-nm-dispatcher-only-act-on-iface-up-down-events.patch
-Patch1: 0002-Update-siit-dc-eam-I-D-references-to-RFC-numbers.patch
BuildRequires: NetworkManager
BuildRequires: perl
BuildRequires: systemd-rpm-macros
@@ -50,8 +49,6 @@
%prep
%setup -q
-%patch0 -p1
-%patch1 -p1
%build
pod2man --name clatd --center "clatd - a CLAT implementation for Linux" --section 8 README.pod clatd.8
++++++ clatd-1.4.tar.gz -> clatd-1.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clatd-1.4/LICENCE new/clatd-1.5/LICENCE
--- old/clatd-1.4/LICENCE 2015-10-23 13:43:34.000000000 +0200
+++ new/clatd-1.5/LICENCE 2019-05-20 10:19:56.000000000 +0200
@@ -1,4 +1,4 @@
-Copyright (c) 2014-2015 Tore Anderson <tore(a)fud.no>
+Copyright (c) 2014-2019 Tore Anderson <tore(a)fud.no>
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clatd-1.4/Makefile new/clatd-1.5/Makefile
--- old/clatd-1.4/Makefile 2015-10-23 13:43:34.000000000 +0200
+++ new/clatd-1.5/Makefile 2019-05-20 10:19:56.000000000 +0200
@@ -1,20 +1,30 @@
+DESTDIR=
+PREFIX=/usr
+SYSCONFDIR=/etc
+
+APT_GET:=$(shell which apt-get)
+DNF_OR_YUM:=$(shell which dnf || which yum)
+INITCTL:=$(shell which initctl)
+SYSTEMCTL:=$(shell which systemctl)
+TAYGA:=$(shell which tayga)
+
install:
- # Install the main script to /usr/sbin
- install -m0755 clatd /usr/sbin/clatd
+ # Install the main script
+ install -m0755 clatd $(DESTDIR)$(PREFIX)/sbin/clatd
# Install manual page if pod2man is installed
- pod2man --name clatd --center "clatd - a CLAT implementation for Linux" --section 8 README.pod /usr/share/man/man8/clatd.8 && gzip -f9 /usr/share/man/man8/clatd.8 || echo "pod2man is required to generate manual page"
+ pod2man --name clatd --center "clatd - a CLAT implementation for Linux" --section 8 README.pod $(DESTDIR)$(PREFIX)/share/man/man8/clatd.8 && gzip -f9 $(DESTDIR)$(PREFIX)/share/man/man8/clatd.8 || echo "pod2man is required to generate manual page"
# Install systemd service file if applicable for this system
- if test -x /usr/bin/systemctl && test -d "/etc/systemd/system"; then install -m0644 scripts/clatd.systemd /etc/systemd/system/clatd.service && systemctl daemon-reload; fi
- if test -e "/etc/systemd/system/clatd.service" && test ! -e "/etc/systemd/system/multi-user.target.wants/clatd.service"; then systemctl enable clatd.service; fi
+ if test -x "$(SYSTEMCTL)" && test -d "$(DESTDIR)$(SYSCONFDIR)/systemd/system"; then install -m0644 scripts/clatd.systemd $(DESTDIR)$(SYSCONFDIR)/systemd/system/clatd.service && $(SYSTEMCTL) daemon-reload; fi
+ if test -e "$(DESTDIR)$(SYSCONFDIR)/systemd/system/clatd.service" && test ! -e "$(DESTDIR)$(SYSCONFDIR)/systemd/system/multi-user.target.wants/clatd.service"; then $(SYSTEMCTL) enable clatd.service; fi
# Install upstart service file if applicable for this system
- if test -x /sbin/initctl && test -d "/etc/init"; then install -m0644 scripts/clatd.upstart /etc/init/clatd.conf; fi
+ if test -x "$(INITCTL)" && test -d "$(DESTDIR)$(SYSCONFDIR)/init"; then install -m0644 scripts/clatd.upstart $(DESTDIR)$(SYSCONFDIR)/init/clatd.conf; fi
# Install NetworkManager dispatcher script if applicable
- if test -d /etc/NetworkManager/dispatcher.d; then install -m0755 scripts/clatd.networkmanager /etc/NetworkManager/dispatcher.d/50-clatd; fi
+ if test -d $(DESTDIR)$(SYSCONFDIR)/NetworkManager/dispatcher.d; then install -m0755 scripts/clatd.networkmanager $(DESTDIR)$(SYSCONFDIR)/NetworkManager/dispatcher.d/50-clatd; fi
installdeps:
# .deb/apt-get based distros
- if test -x /usr/bin/apt-get; then apt-get -y install perl-base perl-modules libnet-ip-perl libnet-dns-perl libio-socket-inet6-perl iproute iptables tayga; fi
- # .rpm/YUM-based distros
- if test -x /usr/bin/yum; then yum -y install perl perl-Net-IP perl-Net-DNS perl-IO-Socket-INET6 perl-File-Temp iproute iptables; fi
- # to get TAYGA on .rpm/YUM-based distros, we unfortunately need to install from source
- if test -x /usr/bin/yum && test ! -x /usr/sbin/tayga; then echo "TAYGA isn't packaged for YUM-based distros, will download and compile the source in 5 seconds (^C interrupts)" && sleep 5 && yum -y install gcc tar wget bzip2 && wget http://www.litech.org/tayga/tayga-0.9.2.tar.bz2 && bzcat tayga-0.9.2.tar.bz2 | tar x && cd tayga-0.9.2 && ./configure --prefix=/usr && make && make install && rm -rf ../tayga-0.9.2.tar.bz2 ../tayga-0.9.2; fi
+ if test -x "$(APT_GET)"; then $(APT_GET) -y install perl-base perl-modules libnet-ip-perl libnet-dns-perl libio-socket-inet6-perl iproute iptables tayga; fi
+ # .rpm/DNF/YUM-based distros
+ if test -x "$(DNF_OR_YUM)"; then $(DNF_OR_YUM) -y install perl perl-Net-IP perl-Net-DNS perl-IO-Socket-INET6 perl-File-Temp iproute iptables; fi
+ # If necessary, try to install the TAYGA .rpm using dnf/yum. It is unfortunately not available in all .rpm based distros (in particular CentOS/RHEL).
+ if test -x "$(DNF_OR_YUM)" && test ! -x "$(TAYGA)"; then $(DNF_OR_YUM) -y install tayga || echo "ERROR: Failed to install TAYGA using dnf/yum, the package is probably not included in your distro. Try enabling the EPEL repo <URL: https://fedoraproject.org/wiki/EPEL> and try again, or install TAYGA <URL: http://www.litech.org/tayga> directly from source."; exit 1; fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clatd-1.4/README.pod new/clatd-1.5/README.pod
--- old/clatd-1.4/README.pod 2015-10-23 13:43:34.000000000 +0200
+++ new/clatd-1.5/README.pod 2019-05-20 10:19:56.000000000 +0200
@@ -14,11 +14,11 @@
or if they are simply not using DNS64).
B<clatd> may also be used to implement an SIIT-DC Edge Relay as described in
-I<I-D.ietf-v6ops-siit-dc-2xlat>. In this scenario, the PLAT is in reality a
-SIIT-DC Border Relay (see I<I-D.ietf-v6ops-siit-dc>) instead of a Stateful
-NAT64 (see I<RFC6146>). When used as a SIIT-DC Edge Relay, you will probably
-want to manually configure the settings I<clat-v4-addr>, I<clat-v6-addr>, and
-I<plat-prefix> to mirror the SIIT-DC Border Relay's configuration.
+I<RFC 7756>. In this scenario, the PLAT is in reality a SIIT-DC Border Relay
+(see I<RFC 7755>) instead of a Stateful NAT64 (see I<RFC6146>). When used as a
+SIIT-DC Edge Relay, you will probably want to manually configure the settings
+I<clat-v4-addr>, I<clat-v6-addr>, and I<plat-prefix> to mirror the SIIT-DC
+Border Relay's configuration.
It relies on the software package TAYGA by Nathan Lutchansky for the actual
translation of packets between IPv4 and IPv6 (I<RFC 6145>) TAYGA may be
@@ -87,21 +87,21 @@
This will install B<clatd> to /usr/sbin, plus install systemd, upstart, and/or
NetworkManager scripts if your distribution appears to be using them, and
-install all the dependencies. Note that TAYGA isn't available in RPM format,
-so on RedHat/Fedora the installdeps target will install gcc and attempt to
-compile TAYGA from source.
+install all the dependencies. Note that TAYGA isn't available in all RPM-based
+distros (in particular RHEL and its clones). It is however available in EPEL
+(see L<https://fedoraproject.org/wiki/EPEL>).
=head1 CONFIGURATION
B<clatd> is designed to be able to run without any user-supplied configuration
-in most cases. However, user-specified onfiguration settings may be added to
+in most cases. However, user-specified configuration settings may be added to
the configuration file, the path to which may be given on the command line
using the I<-c> option, or if it is not, the default location
I</etc/clatd.conf> is used. Configuration settings may also be given directly
on the command line when starting B<clatd>, which takes precedence over settings
in the configuration file.
-Settings are of the form B<key=value>. A list of recogniced keys and their
+Settings are of the form B<key=value>. A list of recognised keys and their
possible values follow below:
=over
@@ -159,7 +159,7 @@
B<clatd 'script-up=ip route add 192.0.2.0/24 dev $clat_dev || true'>
-=item B<script-up=string> (no default)
+=item B<script-down=string> (no default)
This works exactly the same as B<script-up>, only that this script is run right
after TAYGA has exited, before the clean-up process of restoring any settings
@@ -183,11 +183,11 @@
In a standard 464XLAT environment with a stateful NAT64 serving as the PLAT,
there should be no need to change the default.
-When using B<clatd> as an SIIT-DC Edge Relay (I<I-D.ietf-v6ops-siit-dc-2xlat>),
-you will want to set this to the IPv4 Service Address configured in the SIIT-DC
-Border Relay. This way, local applications can correctly identify which public
-address they'll be using on the IPv4 internet, and will be able to provide
-fully functional references to it in application-level payload, and so on.
+When using B<clatd> as an SIIT-DC Edge Relay (I<RFC 7756>), you will want to
+set this to the IPv4 Service Address configured in the SIIT-DC Border Relay.
+This way, local applications can correctly identify which public address
+they'll be using on the IPv4 internet, and will be able to provide fully
+functional references to it in application-level payload, and so on.
The default address is one from I<RFC 7335>.
@@ -280,7 +280,7 @@
Controls whether or not B<clatd> should add a Proxy-ND entry for the CLAT IPv6
address on the network device facing the PLAT. This is probably necessary
on Ethernet networks (otherwise the upstream IPv6 router won't know where to
-send packets to the CLAT's IPv6 adderss), but likely not necessary on
+send packets to the CLAT's IPv6 address), but likely not necessary on
point-to-point links like PPP or 3GPP mobile broadband, as in those cases
IPv6 ND isn't used. However it doesn't hurt to add Proxy-ND entries in that
case, either.
@@ -354,7 +354,7 @@
B<v4-defaultroute-enable>, B<clatd> will remove any pre-existing IPv4 default
routes but not add any of its own.
-Setting B<v4-defaultroute-replace> to I<yes>will disable the IPv4 connectivity
+Setting B<v4-defaultroute-replace> to I<yes> will disable the IPv4 connectivity
check.
=item B<v4-defaultroute-metric=integer> (default: I<2048>)
@@ -412,7 +412,7 @@
=head1 LICENCE
-Copyright (c) 2014-2015 Tore Anderson <tore(a)fud.no>
+Copyright (c) 2014-2019 Tore Anderson <tore(a)fud.no>
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
@@ -436,8 +436,7 @@
ip(8), ip6tables(8), tayga(8), tayga.conf(5)
-RFC 6052, RFC 6145, RFC 6146, RFC 6877, RFC 7050, RFC 7335
-
-I-D.ietf-v6ops-siit-dc, I-D.ietf-v6ops-siit-dc-2xlat, I-D.ietf-v6ops-siit-eam
+RFC 6052, RFC 6145, RFC 6146, RFC 6877, RFC 7050, RFC 7335 RFC 7755, RFC 7756,
+RFC 7757
=cut
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clatd-1.4/clatd new/clatd-1.5/clatd
--- old/clatd-1.4/clatd 2015-10-23 13:43:34.000000000 +0200
+++ new/clatd-1.5/clatd 2019-05-20 10:19:56.000000000 +0200
@@ -1,10 +1,24 @@
#! /usr/bin/perl -w
#
-# Copyright (c) 2014 Tore Anderson <tore(a)fud.no>
+# Copyright (c) 2014-2019 Tore Anderson <tore(a)fud.no>
#
-# As long as you retain this notice, you may use this piece of software as
-# you wish. If you like it, and we happen to meet one day, you can buy me
-# a beer in return. If you really like it, make it an IPA.
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
#
# See the file 'README.pod' in the source distribution or the manual page
# clatd(8) for more information.
@@ -12,7 +26,7 @@
use strict;
use Net::IP;
-my $VERSION = "1.4";
+my $VERSION = "1.5";
#
# Populate the global config hash with the default values
@@ -205,9 +219,9 @@
#
# Look for either of the WKAs for ipv4only.arpa (192.0.0.170 and .171) in an
-# IPv6 address at all of the locations RFC 6052 says it can occur. If it's
-# present at any of those locations (but no more than once), return the
-# inferred translation prefix.
+# IPv6 address at all of the locations RFC 6052 says it can occur, starting at
+# the longest prefix length. If it's present at any of those locations, return
+# the inferred translation prefix.
#
sub find_rfc7050_wka {
my $AAAA = shift;
@@ -234,7 +248,7 @@
my $discovered_pfx_len;
- for my $len (keys(%rfc6052table)) {
+ outer: for my $len (sort {$b <=> $a} keys(%rfc6052table)) {
d2("Looking for Well-Known Addresses at prefix length /$len");
my $maskedip = $ip->intip();
my $mask = Net::IP->new($rfc6052table{"$len"}{"mask"}, 6);
@@ -255,13 +269,9 @@
}
if($maskedip == $wkaint->intip) {
- if($discovered_pfx_len) {
- w("Found WKA at two locations in ", $ip->sort,
- "(/$discovered_pfx_len and /$len) - ignoring");
- return;
- }
d2("Found it!");
$discovered_pfx_len = $len;
+ last outer;
} else {
d2("Didn't find it");
}
@@ -383,6 +393,7 @@
if(!$plat_prefix) {
err("get_plat_dev(): No PLAT prefix to work with");
}
+ $plat_prefix =~ s|/\d+$||;
open(my $fd, '-|', cfg("cmd-ip"), qw(-6 route get), $plat_prefix)
or err("get_plat_dev(): 'ip -6 route get $plat_prefix' failed to execute");
while(<$fd>) {
@@ -651,8 +662,8 @@
next;
} elsif($ARGV[$i] =~ /^(-h|--help)$/) {
print <<"EOF";
-clatd v$VERSION - a 464XLAT (RFC 6877) CLAT and SIIT-DC Host Agent
- (I-D.anderson-v6ops-siit-dc-2xlat) implementation for Linux
+clatd v$VERSION - a 464XLAT (RFC 6877) CLAT and SIIT-DC Edge Relay
+ (RFC 7756) implementation for Linux
EOF
print "\n";
print " Usage: clatd [-q] [-d [-d]] [-c config-file] ",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clatd-1.4/scripts/clatd.networkmanager new/clatd-1.5/scripts/clatd.networkmanager
--- old/clatd-1.4/scripts/clatd.networkmanager 2015-10-23 13:43:34.000000000 +0200
+++ new/clatd-1.5/scripts/clatd.networkmanager 2019-05-20 10:19:56.000000000 +0200
@@ -14,6 +14,11 @@
# committing suicide from the restarts below
[ "$DEVICE_IFACE" = "clat" ] && exit 0
+# We're only acting on interface "up" or "down" events. NM will run the
+# dispatcher scripts for other events we're not interested in, like the
+# hostname being set or a DHCP lease being renewed. Ignore those.
+[ "$2" != "up" ] && [ "$2" != "down" ] && exit 0
+
# We simply restart clatd in all situations, as no matter if an interface
# goes up or down, it may mean that the PLAT device changes, it may mean
# native IPv4 appearing or disappearing, or it may mean that DNS64 became
@@ -21,8 +26,8 @@
# start from scratch than to figure out if a restart is truly necessary
# systemd-based distros
-if test -x /usr/bin/systemctl; then
- /usr/bin/systemctl restart clatd.service
+if which systemctl &> /dev/null; then
+ systemctl restart clatd.service
fi
# upstart-based distros
1
0
Hello community,
here is the log from the commit of package ocaml-ppx_tools_versioned for openSUSE:Factory checked in at 2019-05-22 11:15:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ocaml-ppx_tools_versioned (Old)
and /work/SRC/openSUSE:Factory/.ocaml-ppx_tools_versioned.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ocaml-ppx_tools_versioned"
Wed May 22 11:15:51 2019 rev:4 rq:704383 version:5.2.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/ocaml-ppx_tools_versioned/ocaml-ppx_tools_versioned.changes 2019-02-24 17:18:00.880422611 +0100
+++ /work/SRC/openSUSE:Factory/.ocaml-ppx_tools_versioned.new.5148/ocaml-ppx_tools_versioned.changes 2019-05-22 11:15:55.122535047 +0200
@@ -1,0 +2,6 @@
+Tue May 21 08:21:05 UTC 2019 - andy(a)onthewings.net
+
+- New upstream release (5.2.2)
+ * Support for compiling with OCaml 4.08.
+
+-------------------------------------------------------------------
Old:
----
ppx_tools_versioned-5.2.1.tar.gz
New:
----
ppx_tools_versioned-5.2.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ocaml-ppx_tools_versioned.spec ++++++
--- /var/tmp/diff_new_pack.0gp9KK/_old 2019-05-22 11:15:56.890534459 +0200
+++ /var/tmp/diff_new_pack.0gp9KK/_new 2019-05-22 11:15:56.922534437 +0200
@@ -12,12 +12,12 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: ocaml-ppx_tools_versioned
-Version: 5.2.1
+Version: 5.2.2
Release: 0
%{?ocaml_preserve_bytecode}
Summary: Tools for authors of ppx rewriters
++++++ ppx_tools_versioned-5.2.1.tar.gz -> ppx_tools_versioned-5.2.2.tar.gz ++++++
++++ 3491 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-plyvel for openSUSE:Factory checked in at 2019-05-22 11:15:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-plyvel (Old)
and /work/SRC/openSUSE:Factory/.python-plyvel.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-plyvel"
Wed May 22 11:15:46 2019 rev:8 rq:704382 version:1.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-plyvel/python-plyvel.changes 2018-10-12 13:11:09.163260631 +0200
+++ /work/SRC/openSUSE:Factory/.python-plyvel.new.5148/python-plyvel.changes 2019-05-22 11:15:49.838536020 +0200
@@ -1,0 +2,7 @@
+Mon May 20 14:01:20 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 1.1.0
+ * Expose :py:attr:`~DB.name` attribute to Python code
+ (`pr #90 <https://github.com/wbolster/plyvel/pull/90>`_)
+
+-------------------------------------------------------------------
Old:
----
plyvel-1.0.5.tar.gz
New:
----
plyvel-1.1.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-plyvel.spec ++++++
--- /var/tmp/diff_new_pack.qu4bWF/_old 2019-05-22 11:15:51.406535731 +0200
+++ /var/tmp/diff_new_pack.qu4bWF/_new 2019-05-22 11:15:51.442535724 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-plyvel
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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-plyvel
-Version: 1.0.5
+Version: 1.1.0
Release: 0
Summary: Python interface to LevelDB
License: BSD-3-Clause
@@ -56,10 +56,11 @@
%check
%python_exec setup.py test
-make test
+%pytest
%files %{python_files}
-%doc doc/*.rst
+%license LICENSE.rst
+%doc doc NEWS.rst README.rst
%{python_sitearch}/*
%changelog
++++++ plyvel-1.0.5.tar.gz -> plyvel-1.1.0.tar.gz ++++++
++++ 5314 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package ocaml-migrate-parsetree for openSUSE:Factory checked in at 2019-05-22 11:15:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ocaml-migrate-parsetree (Old)
and /work/SRC/openSUSE:Factory/.ocaml-migrate-parsetree.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ocaml-migrate-parsetree"
Wed May 22 11:15:38 2019 rev:6 rq:704381 version:1.3.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ocaml-migrate-parsetree/ocaml-migrate-parsetree.changes 2019-05-16 22:10:01.698283380 +0200
+++ /work/SRC/openSUSE:Factory/.ocaml-migrate-parsetree.new.5148/ocaml-migrate-parsetree.changes 2019-05-22 11:15:42.646537344 +0200
@@ -1,0 +2,8 @@
+Tue May 21 08:11:02 UTC 2019 - andy(a)onthewings.net
+
+- New upstream release (1.3.1).
+ * Make sure opening Ast_408 doesn't shadow Int or Misc.
+ * Fix a couple of issues related to upgrading the AST from 4.07
+ to 4.08.
+
+-------------------------------------------------------------------
Old:
----
ocaml-migrate-parsetree-1.3.0.tar.gz
New:
----
ocaml-migrate-parsetree-1.3.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ocaml-migrate-parsetree.spec ++++++
--- /var/tmp/diff_new_pack.lfpkx0/_old 2019-05-22 11:15:44.806536947 +0200
+++ /var/tmp/diff_new_pack.lfpkx0/_new 2019-05-22 11:15:44.850536938 +0200
@@ -17,7 +17,7 @@
Name: ocaml-migrate-parsetree
-Version: 1.3.0
+Version: 1.3.1
Release: 0
%{?ocaml_preserve_bytecode}
Summary: Library for conversion between different OCaml parsetrees versions
++++++ ocaml-migrate-parsetree-1.3.0.tar.gz -> ocaml-migrate-parsetree-1.3.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-migrate-parsetree-1.3.0/CHANGES.md new/ocaml-migrate-parsetree-1.3.1/CHANGES.md
--- old/ocaml-migrate-parsetree-1.3.0/CHANGES.md 2019-05-08 14:59:07.000000000 +0200
+++ new/ocaml-migrate-parsetree-1.3.1/CHANGES.md 2019-05-20 11:06:41.000000000 +0200
@@ -1,3 +1,12 @@
+v1.3.1 2019-05-20 London
+------------------------
+
+- Make sure opening `Ast_408` doesn't shadow `Int` or `Misc` (#71,
+ @hhugo)
+
+- Fix a couple of issues related to upgrading the AST from 4.07 to
+ 4.08 (#71, @hhugo)
+
v1.3.0 2019-05-08 London
------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-migrate-parsetree-1.3.0/src/ast_408.ml new/ocaml-migrate-parsetree-1.3.1/src/ast_408.ml
--- old/ocaml-migrate-parsetree-1.3.0/src/ast_408.ml 2019-05-08 14:59:07.000000000 +0200
+++ new/ocaml-migrate-parsetree-1.3.1/src/ast_408.ml 2019-05-20 11:06:41.000000000 +0200
@@ -28,29 +28,8 @@
Actually run all lib-unix tests [4.08]
*)
-module Int = struct
- let to_string = string_of_int
-end
-module Misc = struct
- module Stdlib = struct
- module String = struct
- include String
- module Map = Map.Make (String)
- end
- end
- let find_in_path = Misc.find_in_path
- let find_in_path_uncap = Misc.find_in_path_uncap
- type ref_and_value = R : 'a ref * 'a -> ref_and_value
- let protect_refs =
- let set_refs l = List.iter (fun (R (r, v)) -> r := v) l in
- fun refs f ->
- let backup = List.map (fun (R (r, _)) -> R (r, !r)) refs in
- set_refs refs;
- match f () with
- | x -> set_refs backup; x
- | exception e -> set_refs backup; raise e
- let may_map f o = match o with None -> None | Some v -> Some (f v)
-end
+
+open Ast_408_helper
module Location = Location
module Longident = Longident
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-migrate-parsetree-1.3.0/src/ast_408_helper.ml new/ocaml-migrate-parsetree-1.3.1/src/ast_408_helper.ml
--- old/ocaml-migrate-parsetree-1.3.0/src/ast_408_helper.ml 1970-01-01 01:00:00.000000000 +0100
+++ new/ocaml-migrate-parsetree-1.3.1/src/ast_408_helper.ml 2019-05-20 11:06:41.000000000 +0200
@@ -0,0 +1,23 @@
+module Int = struct
+ let to_string = string_of_int
+end
+module Misc = struct
+ module Stdlib = struct
+ module String = struct
+ include String
+ module Map = Map.Make (String)
+ end
+ end
+ let find_in_path = Misc.find_in_path
+ let find_in_path_uncap = Misc.find_in_path_uncap
+ type ref_and_value = R : 'a ref * 'a -> ref_and_value
+ let protect_refs =
+ let set_refs l = List.iter (fun (R (r, v)) -> r := v) l in
+ fun refs f ->
+ let backup = List.map (fun (R (r, _)) -> R (r, !r)) refs in
+ set_refs refs;
+ match f () with
+ | x -> set_refs backup; x
+ | exception e -> set_refs backup; raise e
+ let may_map f o = match o with None -> None | Some v -> Some (f v)
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-migrate-parsetree-1.3.0/src/migrate_parsetree_407_408_migrate.ml new/ocaml-migrate-parsetree-1.3.1/src/migrate_parsetree_407_408_migrate.ml
--- old/ocaml-migrate-parsetree-1.3.0/src/migrate_parsetree_407_408_migrate.ml 2019-05-08 14:59:07.000000000 +0200
+++ new/ocaml-migrate-parsetree-1.3.1/src/migrate_parsetree_407_408_migrate.ml 2019-05-20 11:06:41.000000000 +0200
@@ -483,10 +483,15 @@
To.Parsetree.Pstr_typext
(copy_type_extension x0)
| From.Parsetree.Pstr_exception x0 ->
- To.Parsetree.Pstr_exception
- { To.Parsetree.ptyexn_constructor = (copy_extension_constructor x0);
- To.Parsetree.ptyexn_loc = x0.From.Parsetree.pext_loc;
- To.Parsetree.ptyexn_attributes = []; }
+ let atat, at = List.partition (function
+ | {Location.txt=("ocaml.deprecated"|"deprecated");_},_ -> false
+ | _ -> true) x0.pext_attributes
+ in
+ let x0 = { x0 with pext_attributes = at } in
+ To.Parsetree.Pstr_exception
+ { To.Parsetree.ptyexn_constructor = (copy_extension_constructor x0);
+ To.Parsetree.ptyexn_loc = x0.From.Parsetree.pext_loc;
+ To.Parsetree.ptyexn_attributes = copy_attributes atat }
| From.Parsetree.Pstr_module x0 ->
To.Parsetree.Pstr_module
(copy_module_binding x0)
@@ -602,12 +607,18 @@
fun
{ From.Parsetree.pcstr_self = pcstr_self;
From.Parsetree.pcstr_fields = pcstr_fields }
- ->
+ ->
+ let fields =
+ List.sort
+ (fun (a : From.Parsetree.class_field) (b : From.Parsetree.class_field) ->
+ compare a.pcf_loc.loc_start.pos_cnum b.pcf_loc.loc_start.pos_cnum)
+ pcstr_fields
+ in
{
To.Parsetree.pcstr_self =
(copy_pattern pcstr_self);
To.Parsetree.pcstr_fields =
- (List.map copy_class_field pcstr_fields)
+ (List.map copy_class_field fields)
}
and copy_class_field :
@@ -820,10 +831,16 @@
To.Parsetree.Psig_typext
(copy_type_extension x0)
| From.Parsetree.Psig_exception x0 ->
+ let atat, at = List.partition (function
+ | {Location.txt=("ocaml.deprecated"|"deprecated");_},_ -> false
+ | _ -> true) x0.pext_attributes
+ in
+ let x0 = { x0 with pext_attributes = at } in
+
To.Parsetree.Psig_exception
{ To.Parsetree.ptyexn_constructor = (copy_extension_constructor x0);
To.Parsetree.ptyexn_loc = x0.From.Parsetree.pext_loc;
- To.Parsetree.ptyexn_attributes = []; }
+ To.Parsetree.ptyexn_attributes = copy_attributes atat; }
| From.Parsetree.Psig_module x0 ->
To.Parsetree.Psig_module
(copy_module_declaration x0)
@@ -910,12 +927,19 @@
fun
{ From.Parsetree.pcsig_self = pcsig_self;
From.Parsetree.pcsig_fields = pcsig_fields }
- ->
+ ->
+ let fields =
+ List.sort
+ (fun (a : From.Parsetree.class_type_field) (b : From.Parsetree.class_type_field) ->
+ compare a.pctf_loc.loc_start.pos_cnum b.pctf_loc.loc_start.pos_cnum)
+ pcsig_fields
+ in
+
{
To.Parsetree.pcsig_self =
(copy_core_type pcsig_self);
To.Parsetree.pcsig_fields =
- (List.map copy_class_type_field pcsig_fields)
+ (List.map copy_class_type_field fields)
}
and copy_class_type_field :
1
0
Hello community,
here is the log from the commit of package python-testfixtures for openSUSE:Factory checked in at 2019-05-22 11:15:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-testfixtures (Old)
and /work/SRC/openSUSE:Factory/.python-testfixtures.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-testfixtures"
Wed May 22 11:15:33 2019 rev:8 rq:704380 version:6.8.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-testfixtures/python-testfixtures.changes 2019-04-22 12:26:24.628961347 +0200
+++ /work/SRC/openSUSE:Factory/.python-testfixtures.new.5148/python-testfixtures.changes 2019-05-22 11:15:33.594539011 +0200
@@ -1,0 +2,11 @@
+Tue May 21 08:14:30 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 6.8.2
+ * Fix handling of the latest releases of the :mod:`mock` backport.
+ * Fix bogus import in :class:`OutputCapture`.
+ * Allow :class:`OutputCapture` to capture the underlying file descriptors for
+ :attr:`sys.stdout` and :attr:`sys.stderr`.
+ * Silence :class:`DeprecationWarning` relating to ``collections.abc`` on
+ Python 3.7.
+
+-------------------------------------------------------------------
Old:
----
testfixtures-6.7.0.tar.gz
New:
----
testfixtures-6.8.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-testfixtures.spec ++++++
--- /var/tmp/diff_new_pack.NeTDqm/_old 2019-05-22 11:15:34.214538897 +0200
+++ /var/tmp/diff_new_pack.NeTDqm/_new 2019-05-22 11:15:34.218538896 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-testfixtures
-Version: 6.7.0
+Version: 6.8.2
Release: 0
Summary: A collection of helpers and mock objects for unit tests and doc tests
License: MIT
++++++ testfixtures-6.7.0.tar.gz -> testfixtures-6.8.2.tar.gz ++++++
++++ 2737 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package cpprest for openSUSE:Factory checked in at 2019-05-22 11:15:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cpprest (Old)
and /work/SRC/openSUSE:Factory/.cpprest.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cpprest"
Wed May 22 11:15:29 2019 rev:16 rq:704379 version:2.10.13
Changes:
--------
--- /work/SRC/openSUSE:Factory/cpprest/cpprest.changes 2019-01-24 14:13:34.659351205 +0100
+++ /work/SRC/openSUSE:Factory/.cpprest.new.5148/cpprest.changes 2019-05-22 11:15:31.806539340 +0200
@@ -1,0 +2,24 @@
+Mon May 20 12:52:29 UTC 2019 - Christophe Giboudeaux <christophe(a)krop.fr>
+
+- Add the missing zlib requirement.
+
+-------------------------------------------------------------------
+Sat Apr 27 18:43:50 UTC 2019 - Andreas Stieger <andreas.stieger(a)gmx.de>
+
+- update to 2.10.13:
+ * fixes related to date and time handling
+- includes changes in 2.10.12:
+ * Fix race conditions
+ * Fix oauth nonces containing nulls
+ * Rewrite date formatting and parsing
+- includes changes in 2.10.11:
+ * Fix HTTP/1.0 'Keep-Alive' handling in http_client
+ * developer visible changes
+- includes changes in 2.10.10:
+ * Handle multi-byte unicode characters in json parsing
+- includes changes in 2.10.9:
+ * Prevent infinite loop during proxy authentication
+ * handle null bytes when parsing utf8
+ * compiler fixes and developer visible fixes
+
+-------------------------------------------------------------------
Old:
----
cpprestsdk-2.10.8.tar.gz
New:
----
cpprestsdk-2.10.13.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cpprest.spec ++++++
--- /var/tmp/diff_new_pack.SLeESH/_old 2019-05-22 11:15:32.630539189 +0200
+++ /var/tmp/diff_new_pack.SLeESH/_new 2019-05-22 11:15:32.634539187 +0200
@@ -19,7 +19,7 @@
%define major 2
%define minor 10
Name: cpprest
-Version: 2.10.8
+Version: 2.10.13
Release: 0
Summary: C++ REST library
# main: MIT (license.txt)
@@ -36,6 +36,7 @@
BuildRequires: gcc-c++
BuildRequires: openssl-devel >= 1.0
BuildRequires: pkgconfig(websocketpp) >= 0.8
+BuildRequires: pkgconfig(zlib)
%if 0%{?suse_version} > 1325
BuildRequires: libboost_atomic-devel
BuildRequires: libboost_filesystem-devel
++++++ cpprestsdk-2.10.8.tar.gz -> cpprestsdk-2.10.13.tar.gz ++++++
++++ 138633 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package linuxrc-devtools for openSUSE:Factory checked in at 2019-05-22 11:15:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/linuxrc-devtools (Old)
and /work/SRC/openSUSE:Factory/.linuxrc-devtools.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "linuxrc-devtools"
Wed May 22 11:15:27 2019 rev:8 rq:704377 version:0.15
Changes:
--------
--- /work/SRC/openSUSE:Factory/linuxrc-devtools/linuxrc-devtools.changes 2018-01-13 21:46:51.660274719 +0100
+++ /work/SRC/openSUSE:Factory/.linuxrc-devtools.new.5148/linuxrc-devtools.changes 2019-05-22 11:15:28.586539933 +0200
@@ -1,0 +2,40 @@
+Tue Jan 29 12:22:26 UTC 2019 - snwint(a)suse.de
+
+- merge gh#openSUSE/linuxrc-devtools#21
+- add support for jira
+- 0.15
+
+--------------------------------------------------------------------
+Thu Nov 15 15:30:55 UTC 2018 - snwint(a)suse.de
+
+- merge gh#openSUSE/linuxrc-devtools#20
+- fix typo
+
+--------------------------------------------------------------------
+Fri Oct 12 14:31:04 UTC 2018 - snwint(a)suse.de
+
+- merge gh#openSUSE/linuxrc-devtools#19
+- remove shortened lines from log (that match the beginning of
+ other lines)
+
+--------------------------------------------------------------------
+Mon Aug 27 13:40:24 UTC 2018 - snwint(a)suse.de
+
+- merge gh#openSUSE/linuxrc-devtools#18
+- rework log creation to work better with merge commits
+
+--------------------------------------------------------------------
+Mon Aug 6 13:15:04 UTC 2018 - snwint(a)suse.de
+
+- merge gh#openSUSE/linuxrc-devtools#17
+- ignore tags inside merge commits
+
+--------------------------------------------------------------------
+Thu Apr 19 09:34:10 UTC 2018 - snwint(a)suse.de
+
+- merge gh#openSUSE/linuxrc-devtools#16
+- avoid identical timestamps in changelog and make default email
+ address configurable
+- fix time updates
+
+--------------------------------------------------------------------
Old:
----
linuxrc-devtools-0.14.tar.xz
New:
----
linuxrc-devtools-0.15.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ linuxrc-devtools.spec ++++++
--- /var/tmp/diff_new_pack.8yu3vE/_old 2019-05-22 11:15:29.298539802 +0200
+++ /var/tmp/diff_new_pack.8yu3vE/_new 2019-05-22 11:15:29.298539802 +0200
@@ -1,7 +1,7 @@
#
# spec file for package linuxrc-devtools
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: linuxrc-devtools
-Version: 0.14
+Version: 0.15
Release: 0
Source: %{name}-%{version}.tar.xz
++++++ linuxrc-devtools-0.14.tar.xz -> linuxrc-devtools-0.15.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-devtools-0.14/VERSION new/linuxrc-devtools-0.15/VERSION
--- old/linuxrc-devtools-0.14/VERSION 2018-01-09 15:58:21.000000000 +0100
+++ new/linuxrc-devtools-0.15/VERSION 2019-01-29 13:22:26.000000000 +0100
@@ -1 +1 @@
-0.14
+0.15
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-devtools-0.14/changelog new/linuxrc-devtools-0.15/changelog
--- old/linuxrc-devtools-0.14/changelog 2018-01-09 15:58:21.000000000 +0100
+++ new/linuxrc-devtools-0.15/changelog 2019-01-29 13:22:26.000000000 +0100
@@ -1,3 +1,20 @@
+2019-01-29: 0.15
+ - merge gh#openSUSE/linuxrc-devtools#16
+ - avoid identical timestamps in changelog and make default email
+ address configurable
+ - fix time updates
+ - merge gh#openSUSE/linuxrc-devtools#17
+ - ignore tags inside merge commits
+ - merge gh#openSUSE/linuxrc-devtools#18
+ - rework log creation to work better with merge commits
+ - merge gh#openSUSE/linuxrc-devtools#19
+ - remove shortened lines from log (that match the beginning of
+ other lines)
+ - merge gh#openSUSE/linuxrc-devtools#20
+ - fix typo
+ - merge gh#openSUSE/linuxrc-devtools#21
+ - add support for jira
+
2018-01-09: 0.14
- merge gh#openSUSE/linuxrc-devtools#15
- more complete OBS state check
@@ -30,12 +47,10 @@
- skip *.changes file in 'package' dir
- add --prepare option to build_it script
- add make_package script
+ - enhance submission scripts
2017-08-10: 0.8
- merge gh#openSUSE/linuxrc-devtools#8
- - added --(no-)keep-date options
-
-2017-05-03: 0.7
- started rewrite of git2log script
- implement start tag, switch default format to obs
- document git2log
@@ -62,6 +77,8 @@
- avoid empty log message when version info is missing
- add --(no-)join-author option
- added '@-log@' tag (delete commit message)
+ - added --(no-)keep-date options
+ - rework to produce nicer log files
2016-11-23: 0.6
- merge gh#openSUSE/linuxrc-devtools#7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-devtools-0.14/git2log new/linuxrc-devtools-0.15/git2log
--- old/linuxrc-devtools-0.14/git2log 2018-01-09 15:58:21.000000000 +0100
+++ new/linuxrc-devtools-0.15/git2log 2019-01-29 13:22:26.000000000 +0100
@@ -61,6 +61,7 @@
my $opt_merge_msg_before = 1; # log auto generated pr merge message before the commit messages (vs. after)
my $opt_join_author = 1; # join consecutive commit messages as long as they are by the same author
my $opt_keep_date = 1; # don't join consecutive commit messages if they have different time stamps
+my $opt_default_email = 'opensuse-packaging(a)opensuse.org'; # default email to use in changelog
GetOptions(
'help' => sub { usage 0 },
@@ -76,6 +77,7 @@
'join-author!' => \$opt_join_author,
'keep-date!' => \$opt_keep_date,
'log|changelog' => \$opt_log,
+ 'default-email=s' => \$opt_default_email,
) || usage 1;
# ensure we are used correctly
@@ -164,7 +166,7 @@
--version Write version number to FILE.
--branch Write current branch to FILE.
--start START_TAG Start with tag START_TAG.
- --max N Write at most MAX long entries.
+ --max N Write at most N log entries.
--update Write changelog or version only if FILE is outdated.
--format FORMAT Write log using FORMAT. Supported FORMATs are 'internal' (default) and 'obs'.
--width WIDTH Reformat log entries to be max WIDTH chars wide.
@@ -176,6 +178,8 @@
--no-join-author Keep consecutive commits by the same author separate.
--keep-date Join consecutive commits only if they have the same date. (default)
--no-keep-date Join consecutive commits even if dates differ.
+ --default-email Use this email in changelog entries if no other suitable email could be
+ determined (default: opensuse-packaging\(a)opensuse.org)
--help Print this help text.
usage
@@ -254,6 +258,8 @@
#
# Only tags recognized by is_formatted_tag() are considered.
#
+# Tags inside merge commits are ignored.
+#
# The parsed logs is stored in $config->{log}, an array of log sections.
# Each section is a hash with these keys:
# - 'tags': array of tags for this section
@@ -264,12 +270,21 @@
{
my $log_entry;
+ # the end of the merge commit if in a merge
+ my $merge;
+
for (@{$config->{raw_log}}) {
if(/^commit (\S+)( \((.*)\))?/) {
my $commit = $1;
my $tag_list = $3;
my $xtag;
+ # we have reached the end of the merge commit
+ undef $merge if $merge && $commit =~ /^$merge/;
+
+ # ignore tag info inside a merge commit
+ $tag_list = "" if $merge;
+
for my $t (split /, /, $tag_list) {
if($t =~ /tag: (\S+)/) {
my $tag = $1;
@@ -289,6 +304,10 @@
$log_entry = { commit => $commit } if !$log_entry;
}
}
+ elsif(!$merge && /^Merge: (\S+)/) {
+ # remember end of merge
+ $merge = $1;
+ }
push @{$log_entry->{lines}}, $_ if $log_entry;
}
@@ -492,11 +511,13 @@
# Adjust time stamps in entire git log.
#
# The time stamps of the git commits are not necessarily ordered by date.
-# But the generated changelog is required to have a monotonic time.
+# But the generated changelog is required to have a strictly monotonic time.
#
# We do this by going through the log in reverse and rewriting any dates we
# find whenever the date decreases.
#
+# A minimum time difference of 1 second beween entries is maintained.
+#
# Not very subtle but it works.
#
sub fix_dates
@@ -508,10 +529,14 @@
if(/^(Date:\s+)(\S+)(\s+\S+)/) {
if(defined $last_date && $2 < $last_date) {
$_ = "$1$last_date$3\n";
- next;
}
+ else {
+ $last_date = $2;
+ }
+
+ # ensure a minimal time gap of 1 second
+ $last_date += 1;
}
- $last_date = $2;
}
}
@@ -565,7 +590,6 @@
my $merge;
my $commit;
- my $saved_commit;
my $commits;
for (@{$log->{lines}}) {
@@ -583,67 +607,57 @@
if($merge) {
$commit->{merge_ref} = $merge->{ref};
$commit->{date} = $merge->{date};
+ $commit->{author} = $merge->{author};
# add to all commits so it's not lost when we re-arrange
- $commit->{merge_msg} = $merge->{msg} if $merge->{msg};
- # saved entry no longer needed
- undef $saved_commit;
+ $commit->{merge_msg} = $merge->{msg};
}
next;
}
- if(/^Merge: (\S+)/) {
+ if(/^Merge: (\S+)/ && !$merge) {
if($commit) {
$merge = { merge_end => $1, ref => $commit->{ref} } unless $merge;
- $saved_commit = pop @{$commits};
}
- undef $commit;
next;
}
if(/^Date:\s+(\S.*)/) {
- if($commit) {
- $commit->{date} = $1 if !$commit->{date};
- }
- elsif($merge) {
- $merge->{date} = $1 if !$merge->{date};
- }
+ $commit->{date} ||= $1 if $commit;
+ $merge->{date} ||= $1 if $merge;
next;
}
if(/^Author:\s+(\S.*)/) {
- $commit->{author} = $1 if $commit;
- $merge->{author} = $1 if $merge && !$merge->{author};
+ $commit->{author} ||= $1 if $commit;
+ $merge->{author} ||= $1 if $merge;
next;
}
- if($commit) {
- push @{$commit->{lines}}, $_ if s/^ //;
- }
- elsif($merge && !$merge->{msg}) {
+ if($merge) {
if(/^ Merge pull request (#\d+) from (\S+)/) {
if($config->{github_project}) {
- $merge->{msg} = "merge gh#$config->{github_project}$1";
+ push @{$merge->{msg}}, "merge gh#$config->{github_project}$1";
}
else {
- $merge->{msg} = "merge pr $2";
+ push @{$merge->{msg}}, "merge pr $2";
}
}
- elsif(/^ Merge branch '([^']+)'/) {
- $merge->{msg} = "merge branch $1";
+ elsif(/^ Merge branch '([^']+)'( into)?/) {
+ push @{$merge->{msg}}, "merge branch $1" if $2 eq "";
+ }
+ elsif(/^ Merge remote-tracking branch /) {
+ # ignore
+ }
+ elsif(s/^ //) {
+ push @{$commit->{lines}}, $_ unless /^# /;
+ }
+ }
+ elsif($commit) {
+ if(s/^ //) {
+ push @{$commit->{lines}}, $_ unless /^# /;
}
}
- }
-
- # it can happen that there's a lonely merge commit left at the end
- if($merge && $saved_commit) {
- $saved_commit->{merge_ref} = $merge->{ref};
- $saved_commit->{date} = $merge->{date};
- $saved_commit->{author} = $merge->{author};
- $saved_commit->{merge_msg} = $merge->{msg} if $merge->{msg};
- $saved_commit->{formatted} = [];
-
- push @{$commits}, $saved_commit;
}
# Note: the individual steps below work on the array @$commits and modify
@@ -661,6 +675,11 @@
my $tagged_merges = {};
for my $commit (@$commits) {
+ # skip leading empty lines
+ for (@{$commit->{lines}}) {
+ last if !/^\s*$/;
+ shift @{$commit->{lines}};
+ }
my $para_cnt = 0;
my $delete_all = 0;
my $delete_first = 0;
@@ -725,7 +744,7 @@
for my $commit (@$commits) {
next unless $commit->{formatted};
for (@{$commit->{formatted}}) {
- s/(fate|bnc|bsc)\s*(#\d+)/\L$1\E$2/ig;
+ s/(fate|bnc|bsc|boo|jsc)\s*(#[a-z\d\-]+)/\L$1\E$2/ig;
}
}
@@ -741,10 +760,10 @@
$merge_logged->{$commit->{merge_ref}} = 1;
if($commit->{merge_msg}) {
if($opt_merge_msg_before) {
- unshift @{$commit->{formatted}}, $commit->{merge_msg};
+ unshift @{$commit->{formatted}}, @{$commit->{merge_msg}};
}
else {
- push @{$commit->{formatted}}, $commit->{merge_msg};
+ push @{$commit->{formatted}}, @{$commit->{merge_msg}};
}
}
}
@@ -792,6 +811,36 @@
}
# step 8
+ # - remove identical lines
+
+ for my $commit (@$commits) {
+ next unless $commit->{formatted};
+ my %k;
+ $commit->{formatted} = [ grep { !$k{$_}++ } @{$commit->{formatted}} ]
+ }
+
+ # step 9
+ # - remove shortened lines (that match the beginning of other lines)
+
+ for my $commit (@$commits) {
+ next unless $commit->{formatted};
+
+ # return 1 if some other commit line starts with function arg
+ my $is_substr = sub {
+ my $str = $_[0];
+ $str =~ s/\s*…$//; # github likes to shorten lines with ' …'
+ my $str_len = length $str;
+ for (@{$commit->{formatted}}) {
+ return 1 if $str_len < length($_) && $str eq substr($_, 0, $str_len);
+ }
+
+ return 0;
+ };
+
+ $commit->{formatted} = [ grep { ! $is_substr->($_) } @{$commit->{formatted}} ]
+ }
+
+ # step 10
# - add line breaks
for my $commit (@$commits) {
@@ -801,11 +850,10 @@
}
}
- # step 9
+ # step 11
# - generate final log message
#
- # note: non-(open)suse email addresses are replaced by a generic
- # 'opensuse-packaging(a)opensuse.org'
+ # note: non-(open)suse email addresses are replaced by $opt_default_email
my $formated_log;
@@ -825,7 +873,7 @@
$auth =~ s/>.*$//;
# replace non-suse e-mail addresses with a generic one
if($auth !~ /\(a)(suse\.(com|cz|de)|opensuse\.org)$/) {
- $auth = 'opensuse-packaging(a)opensuse.org'
+ $auth = $opt_default_email;
}
$formated_log .= " - $auth\n\n";
}
1
0
Hello community,
here is the log from the commit of package python-peppercorn for openSUSE:Factory checked in at 2019-05-22 11:15:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-peppercorn (Old)
and /work/SRC/openSUSE:Factory/.python-peppercorn.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-peppercorn"
Wed May 22 11:15:24 2019 rev:3 rq:704376 version:0.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-peppercorn/python-peppercorn.changes 2019-02-26 22:22:15.362069246 +0100
+++ /work/SRC/openSUSE:Factory/.python-peppercorn.new.5148/python-peppercorn.changes 2019-05-22 11:15:25.670540470 +0200
@@ -1,0 +2,10 @@
+Tue May 21 07:49:00 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 0.6
+ * Add support for Python 3.4, 3.5, 3.6 and 3.7.
+ * Drop support for Python 2.6, 3.2 and 3.3.
+ * Add contributing.md and update docs.
+- deleted patches
+ - peppercorn-0.5-fix-pylons-theme.patch (upstreamed)
+
+-------------------------------------------------------------------
Old:
----
peppercorn-0.5-fix-pylons-theme.patch
peppercorn-0.5.tar.gz
New:
----
peppercorn-0.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-peppercorn.spec ++++++
--- /var/tmp/diff_new_pack.heHAPI/_old 2019-05-22 11:15:26.518540314 +0200
+++ /var/tmp/diff_new_pack.heHAPI/_new 2019-05-22 11:15:26.518540314 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-peppercorn
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2017 LISA GmbH, Bingen, Germany.
#
# All modifications and additions to the file contributed by third parties
@@ -19,15 +19,13 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-peppercorn
-Version: 0.5
+Version: 0.6
Release: 0
Summary: Pyramid exceptions logger
License: BSD-4-Clause AND ZPL-2.1 AND MIT
Group: Development/Languages/Python
Url: http://docs.pylonsproject.org/projects/peppercorn/en/latest/
Source: https://files.pythonhosted.org/packages/source/p/peppercorn/peppercorn-%{ve…
-# PATCH-FIX-OPENSUSE hpj(a)urpla.net peppercorn-0.5-fix-pylons-theme.patch -- use pylons theme properly
-Patch: peppercorn-0.5-fix-pylons-theme.patch
# Documentation requirements:
BuildRequires: python3-Sphinx
# Testing requirements:
@@ -58,7 +56,6 @@
%prep
%setup -q -n peppercorn-%{version}
-%patch -p1
%build
%python_build
@@ -78,7 +75,7 @@
%else
%doc LICENSE.txt
%endif
-%doc CHANGES.txt CONTRIBUTORS.txt COPYRIGHT.txt README.txt
+%doc CHANGES.rst CONTRIBUTORS.txt COPYRIGHT.txt README.rst contributing.md
%{python_sitelib}/*
%files -n %{name}-doc
++++++ peppercorn-0.5.tar.gz -> peppercorn-0.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/.travis.yml new/peppercorn-0.6/.travis.yml
--- old/peppercorn-0.5/.travis.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/peppercorn-0.6/.travis.yml 2018-08-16 09:43:15.000000000 +0200
@@ -0,0 +1,34 @@
+# Wire up travis
+language: python
+sudo: false
+
+matrix:
+ include:
+ - python: 2.7
+ env: TOXENV=py27
+ - python: 3.4
+ env: TOXENV=py34
+ - python: 3.5
+ env: TOXENV=py35
+ - python: 3.6
+ env: TOXENV=py36
+ - python: 3.7
+ env: TOXENV=py37
+ dist: xenial
+ sudo: true
+ - python: pypy
+ env: TOXENV=pypy
+ - python: pypy3.5
+ env: TOXENV=pypy3
+ - python: 3.6
+ env: TOXENV=py27,py36,cover
+
+install:
+ - travis_retry pip install tox
+
+script:
+ - travis_retry tox
+
+notifications:
+ email:
+ - pyramid-checkins(a)lists.repoze.org
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/CHANGES.rst new/peppercorn-0.6/CHANGES.rst
--- old/peppercorn-0.5/CHANGES.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/peppercorn-0.6/CHANGES.rst 2018-08-24 08:14:43.000000000 +0200
@@ -0,0 +1,68 @@
+Changes
+=======
+
+0.6 (2018-08-24)
+----------------
+
+- Add support for Python 3.4, 3.5, 3.6 and 3.7.
+
+- Drop support for Python 2.6, 3.2 and 3.3.
+
+- Add contributing.md and update docs. See
+ https://github.com/Pylons/peppercorn/issues/13
+
+
+0.5 (2014-09-29)
+----------------
+
+- Switch to an iterative parser rather than a recursive parser to avoid
+ DoS attacks.
+
+- Add the ``ignore`` operation. The subsequent data elements in the stream
+ will be ignored until the corresponding ``__end__`` marker. This feature
+ is useful for form elements designed for client-side scripting, such as a
+ "select all" checkbox in the middle of a list of other kinds of fields.
+
+- Add support for Python 3.3.
+
+- Drop support for Python 2.5 and Jython.
+
+
+0.4 (2012-02-14)
+----------------
+
+- Drop support for Python 2.4.
+
+- Add support for Python 3.2.
+
+- Move project to GitHub.
+
+- Switch to Pylons Project Sphinx theme.
+
+- Add tox configuration.
+
+
+0.3 (2010-09-02)
+----------------
+
+- 0.2 was a brownbag release. Handle the case where ``rename`` operation types
+ may not have children.
+
+
+0.2 (2010-09-02)
+----------------
+
+- Add new operation type: ``rename``. ``rename`` begins a special mode.
+ The value of the first subsequent data element in the stream will be
+ used within its parent sequence or mapping. Any remaining data
+ elements until the corresponding ``__end__`` marker are ignored.
+ This is mostly in support of radio buttons. See the ``rename`` docs
+ within `https://docs.pylonsproject.org/projects/peppercorn/en/latest/
+ <https://docs.pylonsproject.org/projects/peppercorn/en/latest/>`_ for more
+ information.
+
+
+0.1 (2010-03-23)
+----------------
+
+- Initial release.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/CHANGES.txt new/peppercorn-0.6/CHANGES.txt
--- old/peppercorn-0.5/CHANGES.txt 2014-09-29 18:55:11.000000000 +0200
+++ new/peppercorn-0.6/CHANGES.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,52 +0,0 @@
-Changes
-=======
-
-0.5 (2014-09-29)
-----------------
-
-- Switch to an iterative parser rather than a recursive parser to avoid
- DoS attacks.
-
-- Add the ``ignore`` operation. The subsequent data elements in the stream
- will be ignored until the corresponding ``__end__`` marker. This feature
- is useful for form elements designed for client-side scripting, such as a
- "select all" checkbox in the middle of a list of other kinds of fields.
-
-- Add support for Python 3.3.
-
-- Drop support for Python 2.5 / Jython.
-
-0.4 (2012-02-14)
-----------------
-
-- Peppercorn will no longer run under Python 2.4. 2.5 or better is required.
-
-- Python 3.2 compatibility.
-
-- Moved to GitHub.
-
-- Pylons project docs theme.
-
-- Added tox configuration.
-
-0.3 (2010-09-02)
-----------------
-
-- 0.2 was a brownbag release; a case was not handled where ``rename``
- operation types may not have children. This release fixes that.
-
-0.2 (2010-09-02)
-----------------
-
-- New operation type: ``rename``. ``rename`` begins a special mode.
- The value of the first subsequent data element in the stream will be
- used within it's parent sequence or mapping; any remaining data
- elements until the corresponding ``__end__`` marker are ignored.
- This is mostly in support of radio buttons. See the ``rename`` docs
- within `http://docs.repoze.org/peppercorn
- <http://docs.repoze.org/peppercorn>`_ for more information.
-
-0.1 (2010-03-23)
-----------------
-
-- Initial release.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/CONTRIBUTORS.txt new/peppercorn-0.6/CONTRIBUTORS.txt
--- old/peppercorn-0.5/CONTRIBUTORS.txt 2014-09-29 18:53:43.000000000 +0200
+++ new/peppercorn-0.6/CONTRIBUTORS.txt 2018-08-21 10:12:34.000000000 +0200
@@ -105,3 +105,6 @@
- Atsushi Odagiri, 2012/02/05
- Valentin Ungureanu, 2012/02/06
- Shane Hathaway, 2013/04/13
+- Tim Tisdall, 2015/04/21
+- Steffen Allner, 2018/08/14
+- Steve Piercy, 2018/08/08
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/PKG-INFO new/peppercorn-0.6/PKG-INFO
--- old/peppercorn-0.5/PKG-INFO 2014-09-29 18:57:42.000000000 +0200
+++ new/peppercorn-0.6/PKG-INFO 2018-08-24 08:26:51.000000000 +0200
@@ -1,8 +1,8 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: peppercorn
-Version: 0.5
+Version: 0.6
Summary: A library for converting a token stream into a data structure for use in web form posts
-Home-page: http://docs.pylonsproject.org/projects/peppercorn/en/latest/
+Home-page: https://docs.pylonsproject.org/projects/peppercorn/en/latest/
Author: Agendaless Consulting
Author-email: pylons-discuss(a)googlegroups.com
License: BSD-derived (http://www.repoze.org/LICENSE.txt)
@@ -11,10 +11,10 @@
A library for converting a token stream into a data structure comprised of
sequences, mappings, and scalars, developed primarily for converting HTTP form
- post data into a richer data structure. It runs on Python 2.6, 2.7, 3.2, and
- 3.3.
+ post data into a richer data structure. It runs on Python 2.7, 3.4, 3.5, 3.6
+ and 3.7.
- Please see http://docs.pylonsproject.org/projects/peppercorn/en/latest/
+ Please see https://docs.pylonsproject.org/projects/peppercorn/en/latest/
for the documentation.
See https://github.com/Pylons/peppercorn for in-development version.
@@ -23,6 +23,17 @@
Changes
=======
+ 0.6 (2018-08-24)
+ ----------------
+
+ - Add support for Python 3.4, 3.5, 3.6 and 3.7.
+
+ - Drop support for Python 2.6, 3.2 and 3.3.
+
+ - Add contributing.md and update docs. See
+ https://github.com/Pylons/peppercorn/issues/13
+
+
0.5 (2014-09-29)
----------------
@@ -36,37 +47,42 @@
- Add support for Python 3.3.
- - Drop support for Python 2.5 / Jython.
+ - Drop support for Python 2.5 and Jython.
+
0.4 (2012-02-14)
----------------
- - Peppercorn will no longer run under Python 2.4. 2.5 or better is required.
+ - Drop support for Python 2.4.
+
+ - Add support for Python 3.2.
- - Python 3.2 compatibility.
+ - Move project to GitHub.
- - Moved to GitHub.
+ - Switch to Pylons Project Sphinx theme.
- - Pylons project docs theme.
+ - Add tox configuration.
- - Added tox configuration.
0.3 (2010-09-02)
----------------
- - 0.2 was a brownbag release; a case was not handled where ``rename``
- operation types may not have children. This release fixes that.
+ - 0.2 was a brownbag release. Handle the case where ``rename`` operation types
+ may not have children.
+
0.2 (2010-09-02)
----------------
- - New operation type: ``rename``. ``rename`` begins a special mode.
+ - Add new operation type: ``rename``. ``rename`` begins a special mode.
The value of the first subsequent data element in the stream will be
- used within it's parent sequence or mapping; any remaining data
+ used within its parent sequence or mapping. Any remaining data
elements until the corresponding ``__end__`` marker are ignored.
This is mostly in support of radio buttons. See the ``rename`` docs
- within `http://docs.repoze.org/peppercorn
- <http://docs.repoze.org/peppercorn>`_ for more information.
+ within `https://docs.pylonsproject.org/projects/peppercorn/en/latest/
+ <https://docs.pylonsproject.org/projects/peppercorn/en/latest/>`_ for more
+ information.
+
0.1 (2010-03-23)
----------------
@@ -78,12 +94,14 @@
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
+Provides-Extra: docs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/README.rst new/peppercorn-0.6/README.rst
--- old/peppercorn-0.5/README.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/peppercorn-0.6/README.rst 2018-08-16 09:43:15.000000000 +0200
@@ -0,0 +1,12 @@
+Peppercorn
+==========
+
+A library for converting a token stream into a data structure comprised of
+sequences, mappings, and scalars, developed primarily for converting HTTP form
+post data into a richer data structure. It runs on Python 2.7, 3.4, 3.5, 3.6
+and 3.7.
+
+Please see https://docs.pylonsproject.org/projects/peppercorn/en/latest/
+for the documentation.
+
+See https://github.com/Pylons/peppercorn for in-development version.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/README.txt new/peppercorn-0.6/README.txt
--- old/peppercorn-0.5/README.txt 2014-09-29 18:55:38.000000000 +0200
+++ new/peppercorn-0.6/README.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,12 +0,0 @@
-Peppercorn
-==========
-
-A library for converting a token stream into a data structure comprised of
-sequences, mappings, and scalars, developed primarily for converting HTTP form
-post data into a richer data structure. It runs on Python 2.6, 2.7, 3.2, and
-3.3.
-
-Please see http://docs.pylonsproject.org/projects/peppercorn/en/latest/
-for the documentation.
-
-See https://github.com/Pylons/peppercorn for in-development version.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/RELEASING.txt new/peppercorn-0.6/RELEASING.txt
--- old/peppercorn-0.5/RELEASING.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/peppercorn-0.6/RELEASING.txt 2018-08-24 08:19:18.000000000 +0200
@@ -0,0 +1,149 @@
+Releasing
+=========
+
+- For clarity, we define releases as follows.
+
+ - Alpha, beta, dev and similar statuses do not qualify whether a release is
+ major or minor. The term "pre-release" means alpha, beta, or dev.
+
+ - A release is final when it is no longer pre-release.
+
+ - A *major* release is where the first number either before or after the
+ first dot increases. Examples: 1.6 to 1.7a1, or 1.8 to 2.0.
+
+ - A *minor* or *bug fix* release is where the number after the second dot
+ increases. Example: 1.6 to 1.6.1.
+
+
+Prepare new release branch via a pull request
+---------------------------------------------
+
+- Consider the release number (bugfix-only vs. features, changes in platforms).
+
+- Synch the local repository with the ``master`` branch from ``upstream``,
+ where ``upstream`` is the repository ``Pylons/peppercorn``, not the
+ developer's own fork::
+
+ $ git checkout master
+ $ git fetch --all
+ $ git merge upstream/master
+
+- Tests will run when the PR is submitted. Optionally run tests locally first.
+
+ - Do platform test via tox::
+
+ $ tox -r
+
+ Make sure statement coverage is at 100% (the test run will fail if not).
+
+ - Run tests on Windows if feasible.
+
+- Create a new release branch, incrementing the version number::
+
+ $ git checkout -b prep-<#.#.#>-release
+
+- Ensure all features of the release are documented (audit ``CHANGES.rst`` or
+ communicate with contributors, checking against recent merged pull requests).
+
+- Add date and new release number to ``CHANGES.rst`` heading.
+
+- Normalize changelog if needed (imperative voice, spacing, etc.).
+
+- Update the release number in ``setup.py``.
+
+- Make sure PyPI long description renders (requires ``readme_renderer``
+ installed into your Python)::
+
+ $ python setup.py check -r -s -m
+
+- Use "standard" commit message for the pull request::
+
+ $ git commit . -m "Prep #.#.# release."
+ $ git push upstream prep-#.#.#-release
+
+- Submit the pull request via GitHub.
+
+
+Make the release
+----------------
+
+- Once the pull request passes all checks from continuous integration, and the
+ pull request is approved, merge it.
+
+- Synch the local repository with the ``master`` branch::
+
+ $ git checkout master
+ $ git fetch --all
+ $ git merge upstream/master
+
+- Create a release tag with a "standard" commit message::
+
+ $ git tag -a #.#.# -m "Tag #.#.# release"
+
+- Push the tag to upstream.
+
+ $ git push --tags upstream
+
+- Make sure your Python has ``setuptools-git``, ``twine``, and ``wheel``
+ installed. Make the release files, and push the release to PyPI::
+
+ $ python setup.py sdist bdist_wheel
+ $ twine upload dist/*
+
+
+Prepare master for further development after the release
+--------------------------------------------------------
+
+- Synch the local repository with the ``master`` branch::
+
+ $ git checkout master
+ $ git fetch --all
+ $ git merge upstream/master
+
+- In CHANGES.rst, add heading "unreleased" for the version number, and push to
+ upstream.
+
+ $ git commit . -m "back to work"
+ $ git push upstream
+
+
+Marketing and communications
+----------------------------
+
+- Announce to Twitter.
+
+```
+Peppercorn x.x.x released.
+
+PyPI
+https://pypi.org/project/peppercorn/x.x.x/
+
+Changes
+https://docs.pylonsproject.org/projects/peppercorn/en/latest/changes.html#version-yyyy-mm-dd
+
+Issues
+https://github.com/Pylons/peppercorn/issues
+```
+
+- Announce to maillist.
+
+```
+Peppercorn x.x.x has been released.
+
+The full changelog is here:
+https://docs.pylonsproject.org/projects/peppercorn/en/latest/changes.html
+
+x.x.x documentation:
+https://docs.pylonsproject.org/projects/peppercorn/en/latest/
+
+You can install it via PyPI:
+
+ pip install peppercorn==x.x.x
+
+Enjoy, and please report any issues you find to the issue tracker at
+https://github.com/Pylons/peppercorn/issues
+
+Thanks!
+
+- Peppercorn core developers
+```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/contributing.md new/peppercorn-0.6/contributing.md
--- old/peppercorn-0.5/contributing.md 1970-01-01 01:00:00.000000000 +0100
+++ new/peppercorn-0.6/contributing.md 2018-08-21 10:12:34.000000000 +0200
@@ -0,0 +1,28 @@
+Contributing
+============
+
+All projects under the Pylons Projects, including this one, follow the
+guidelines established at [How to
+Contribute](https://pylonsproject.org/community-how-to-contribute.html) and
+[Coding Style and
+Standards](https://pylonsproject.org/community-coding-style-standards.html).
+
+You can contribute to this project in several ways.
+
+* [File an Issue on GitHub](https://github.com/Pylons/peppercorn/issues)
+* Fork this project and create a branch with your suggested change. When ready,
+ submit a pull request for consideration. [GitHub
+ Flow](https://guides.github.com/introduction/flow/index.html) describes the
+ workflow process and why it's a good practice. When submitting a pull
+ request, sign
+ [CONTRIBUTORS.txt](https://github.com/Pylons/peppercorn/blob/master/CONTRIBU…
+ if you have not yet done so.
+* Join the IRC channel #pyramid on irc.freenode.net.
+
+Git Branches
+------------
+Git branches and their purpose and status at the time of this writing are
+listed below.
+
+* [master](https://github.com/Pylons/peppercorn/) - The branch on which further
+ development takes place. The default branch on GitHub.
Binary files old/peppercorn-0.5/docs/.static/logo_hi.gif and new/peppercorn-0.6/docs/.static/logo_hi.gif differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/docs/.static/repoze.css new/peppercorn-0.6/docs/.static/repoze.css
--- old/peppercorn-0.5/docs/.static/repoze.css 2011-02-16 06:22:59.000000000 +0100
+++ new/peppercorn-0.6/docs/.static/repoze.css 1970-01-01 01:00:00.000000000 +0100
@@ -1,22 +0,0 @@
-@import url('default.css');
-body {
- background-color: #006339;
-}
-
-div.document {
- background-color: #dad3bd;
-}
-
-div.sphinxsidebar h3, h4, h5, a {
- color: #127c56 !important;
-}
-
-div.related {
- color: #dad3bd !important;
- background-color: #00744a;
-}
-
-div.related a {
- color: #dad3bd !important;
-}
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/docs/conf.py new/peppercorn-0.6/docs/conf.py
--- old/peppercorn-0.5/docs/conf.py 2012-02-15 03:43:56.000000000 +0100
+++ new/peppercorn-0.6/docs/conf.py 2018-08-21 10:12:34.000000000 +0200
@@ -12,44 +12,16 @@
# All configuration values have a default value; values that are commented
# out serve to show the default value.
-import sys, os
+import pylons_sphinx_themes
+import datetime
-# Add and use Pylons theme
-if 'sphinx-build' in ' '.join(sys.argv): # protect against dumb importers
- from subprocess import call, Popen, PIPE
-
- p = Popen('which git', shell=True, stdout=PIPE)
- git = p.stdout.read().strip()
- cwd = os.getcwd()
- _themes = os.path.join(cwd, '_themes')
-
- if not os.path.isdir(_themes):
- call([git, 'clone', 'git://github.com/Pylons/pylons_sphinx_theme.git',
- '_themes'])
- else:
- os.chdir(_themes)
- call([git, 'checkout', 'master'])
- call([git, 'pull'])
- os.chdir(cwd)
-
- sys.path.append(os.path.abspath('_themes'))
-
- parent = os.path.dirname(os.path.dirname(__file__))
- sys.path.append(os.path.abspath(parent))
- wd = os.getcwd()
- os.chdir(parent)
- os.system('%s setup.py test -q' % sys.executable)
- os.chdir(wd)
-
- for item in os.listdir(parent):
- if item.endswith('.egg'):
- sys.path.append(os.path.join(parent, item))
-html_theme_path = ['_themes']
+html_theme_path = pylons_sphinx_themes.get_html_themes_path()
html_theme = 'pylons'
html_theme_options = dict(
github_url='https://github.com/Pylons/peppercorn',
-# in_progress='true'
+ canonical_url='https://docs.pylonsproject.org/projects/peppercorn/en/latest/'
+ # in_progress='true'
)
@@ -76,13 +48,15 @@
# General substitutions.
project = 'peppercorn'
-copyright = '2011, Agendaless Consulting <pylons-discuss(a)googlegroups.com>'
+thisyear = datetime.datetime.now().year
+copyright = '2011-%s, Agendaless Consulting ' \
+ '<pylons-discuss(a)googlegroups.com>' % thisyear
# The default replacements for |version| and |release|, also used in various
# other places throughout the built documents.
#
# The short X.Y version.
-version = '0.4'
+version = '0.5'
# The full version, including alpha/beta/rc tags.
release = version
@@ -139,7 +113,7 @@
# The name of an image file (within the static path) to place at the top of
# the sidebar.
-html_logo = '.static/logo_hi.gif'
+#html_logo = '.static/logo_hi.gif'
# The name of an image file (within the static path) to use as favicon of
# the docs. This file should be a Windows icon file (.ico) being 16x16 or
@@ -156,9 +130,8 @@
# bottom, using the given strftime format.
html_last_updated_fmt = '%b %d, %Y'
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
+# Do not use smart quotes.
+smartquotes = False
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
@@ -211,7 +184,7 @@
# The name of an image file (relative to this directory) to place at the
# top of the title page.
-latex_logo = '.static/logo_hi.gif'
+#latex_logo = '.static/logo_hi.gif'
# For "manual" documents, if this is true, then toplevel headings are
# parts, not chapters.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/docs/glossary.rst new/peppercorn-0.6/docs/glossary.rst
--- old/peppercorn-0.5/docs/glossary.rst 2011-02-16 06:22:59.000000000 +0100
+++ new/peppercorn-0.6/docs/glossary.rst 2018-08-21 10:12:34.000000000 +0200
@@ -7,5 +7,4 @@
:sorted:
WebOb
- `WebOb <http://pythonpaste.org/webob/>`_ is a WSGI request/response
- library created by Ian Bicking.
+ `WebOb <https://webob.org/>`_ is a WSGI request/response library created by Ian Bicking.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/docs/index.rst new/peppercorn-0.6/docs/index.rst
--- old/peppercorn-0.5/docs/index.rst 2014-09-29 18:53:43.000000000 +0200
+++ new/peppercorn-0.6/docs/index.rst 2018-08-21 20:42:28.000000000 +0200
@@ -3,8 +3,8 @@
A library for converting a token stream into a data structure comprised of
sequences, mappings, and scalars, developed primarily for converting HTTP
-form post data into a richer data structure. It runs on Python 2.5, 2.6, 2.7
-and 3.2.
+form post data into a richer data structure. It runs on Python 2.7, 3.4, 3.5,
+3.6 and 3.7.
Example "bare" usage:
@@ -163,7 +163,7 @@
---------
See `the plope.com article about the genesis of Peppercorn
-<http://www.plope.com/peppercorn>`_.
+<https://web.archive.org/web/20170201033638/http://www.plope.com/peppercorn>`_.
Indices and tables
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/peppercorn.egg-info/PKG-INFO new/peppercorn-0.6/peppercorn.egg-info/PKG-INFO
--- old/peppercorn-0.5/peppercorn.egg-info/PKG-INFO 2014-09-29 18:57:41.000000000 +0200
+++ new/peppercorn-0.6/peppercorn.egg-info/PKG-INFO 2018-08-24 08:26:51.000000000 +0200
@@ -1,8 +1,8 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: peppercorn
-Version: 0.5
+Version: 0.6
Summary: A library for converting a token stream into a data structure for use in web form posts
-Home-page: http://docs.pylonsproject.org/projects/peppercorn/en/latest/
+Home-page: https://docs.pylonsproject.org/projects/peppercorn/en/latest/
Author: Agendaless Consulting
Author-email: pylons-discuss(a)googlegroups.com
License: BSD-derived (http://www.repoze.org/LICENSE.txt)
@@ -11,10 +11,10 @@
A library for converting a token stream into a data structure comprised of
sequences, mappings, and scalars, developed primarily for converting HTTP form
- post data into a richer data structure. It runs on Python 2.6, 2.7, 3.2, and
- 3.3.
+ post data into a richer data structure. It runs on Python 2.7, 3.4, 3.5, 3.6
+ and 3.7.
- Please see http://docs.pylonsproject.org/projects/peppercorn/en/latest/
+ Please see https://docs.pylonsproject.org/projects/peppercorn/en/latest/
for the documentation.
See https://github.com/Pylons/peppercorn for in-development version.
@@ -23,6 +23,17 @@
Changes
=======
+ 0.6 (2018-08-24)
+ ----------------
+
+ - Add support for Python 3.4, 3.5, 3.6 and 3.7.
+
+ - Drop support for Python 2.6, 3.2 and 3.3.
+
+ - Add contributing.md and update docs. See
+ https://github.com/Pylons/peppercorn/issues/13
+
+
0.5 (2014-09-29)
----------------
@@ -36,37 +47,42 @@
- Add support for Python 3.3.
- - Drop support for Python 2.5 / Jython.
+ - Drop support for Python 2.5 and Jython.
+
0.4 (2012-02-14)
----------------
- - Peppercorn will no longer run under Python 2.4. 2.5 or better is required.
+ - Drop support for Python 2.4.
+
+ - Add support for Python 3.2.
- - Python 3.2 compatibility.
+ - Move project to GitHub.
- - Moved to GitHub.
+ - Switch to Pylons Project Sphinx theme.
- - Pylons project docs theme.
+ - Add tox configuration.
- - Added tox configuration.
0.3 (2010-09-02)
----------------
- - 0.2 was a brownbag release; a case was not handled where ``rename``
- operation types may not have children. This release fixes that.
+ - 0.2 was a brownbag release. Handle the case where ``rename`` operation types
+ may not have children.
+
0.2 (2010-09-02)
----------------
- - New operation type: ``rename``. ``rename`` begins a special mode.
+ - Add new operation type: ``rename``. ``rename`` begins a special mode.
The value of the first subsequent data element in the stream will be
- used within it's parent sequence or mapping; any remaining data
+ used within its parent sequence or mapping. Any remaining data
elements until the corresponding ``__end__`` marker are ignored.
This is mostly in support of radio buttons. See the ``rename`` docs
- within `http://docs.repoze.org/peppercorn
- <http://docs.repoze.org/peppercorn>`_ for more information.
+ within `https://docs.pylonsproject.org/projects/peppercorn/en/latest/
+ <https://docs.pylonsproject.org/projects/peppercorn/en/latest/>`_ for more
+ information.
+
0.1 (2010-03-23)
----------------
@@ -78,12 +94,14 @@
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
+Provides-Extra: docs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/peppercorn.egg-info/SOURCES.txt new/peppercorn-0.6/peppercorn.egg-info/SOURCES.txt
--- old/peppercorn-0.5/peppercorn.egg-info/SOURCES.txt 2014-09-29 18:57:42.000000000 +0200
+++ new/peppercorn-0.6/peppercorn.egg-info/SOURCES.txt 2018-08-24 08:26:51.000000000 +0200
@@ -1,9 +1,13 @@
.gitignore
-CHANGES.txt
+.travis.yml
+CHANGES.rst
CONTRIBUTORS.txt
COPYRIGHT.txt
LICENSE.txt
-README.txt
+README.rst
+RELEASING.txt
+contributing.md
+rtd.txt
setup.cfg
setup.py
tox.ini
@@ -12,8 +16,6 @@
docs/conf.py
docs/glossary.rst
docs/index.rst
-docs/.static/logo_hi.gif
-docs/.static/repoze.css
peppercorn/__init__.py
peppercorn/compat.py
peppercorn/tests.py
@@ -21,4 +23,5 @@
peppercorn.egg-info/SOURCES.txt
peppercorn.egg-info/dependency_links.txt
peppercorn.egg-info/not-zip-safe
+peppercorn.egg-info/requires.txt
peppercorn.egg-info/top_level.txt
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/peppercorn.egg-info/requires.txt new/peppercorn-0.6/peppercorn.egg-info/requires.txt
--- old/peppercorn-0.5/peppercorn.egg-info/requires.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/peppercorn-0.6/peppercorn.egg-info/requires.txt 2018-08-24 08:26:51.000000000 +0200
@@ -0,0 +1,4 @@
+
+[docs]
+Sphinx>=1.7.6
+pylons-sphinx-themes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/rtd.txt new/peppercorn-0.6/rtd.txt
--- old/peppercorn-0.5/rtd.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/peppercorn-0.6/rtd.txt 2018-08-21 10:12:34.000000000 +0200
@@ -0,0 +1 @@
+-e .[docs]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/setup.cfg new/peppercorn-0.6/setup.cfg
--- old/peppercorn-0.5/setup.cfg 2014-09-29 18:57:42.000000000 +0200
+++ new/peppercorn-0.6/setup.cfg 2018-08-24 08:26:51.000000000 +0200
@@ -11,5 +11,4 @@
[egg_info]
tag_build =
tag_date = 0
-tag_svn_revision = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/setup.py new/peppercorn-0.6/setup.py
--- old/peppercorn-0.5/setup.py 2014-09-29 18:55:23.000000000 +0200
+++ new/peppercorn-0.6/setup.py 2018-08-24 08:04:46.000000000 +0200
@@ -20,17 +20,22 @@
here = os.path.abspath(os.path.dirname(__file__))
try:
- README = open(os.path.join(here, 'README.txt')).read()
- CHANGES = open(os.path.join(here, 'CHANGES.txt')).read()
+ README = open(os.path.join(here, 'README.rst')).read()
+ CHANGES = open(os.path.join(here, 'CHANGES.rst')).read()
except:
README = ''
CHANGES = ''
requires = []
+docs_extras = [
+ 'Sphinx >= 1.7.6',
+ 'pylons-sphinx-themes',
+]
+
setup(
name='peppercorn',
- version='0.5',
+ version='0.6',
description=('A library for converting a token stream into a data '
'structure for use in web form posts'),
long_description=README + '\n\n' + CHANGES,
@@ -38,11 +43,12 @@
"Intended Audience :: Developers",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
- "Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.2",
- "Programming Language :: Python :: 3.3",
+ "Programming Language :: Python :: 3.4",
+ "Programming Language :: Python :: 3.5",
+ "Programming Language :: Python :: 3.6",
+ "Programming Language :: Python :: 3.7",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
@@ -51,13 +57,16 @@
keywords='web wsgi form generation library',
author="Agendaless Consulting",
author_email="pylons-discuss(a)googlegroups.com",
- url="http://docs.pylonsproject.org/projects/peppercorn/en/latest/",
+ url="https://docs.pylonsproject.org/projects/peppercorn/en/latest/",
license="BSD-derived (http://www.repoze.org/LICENSE.txt)",
packages=find_packages(),
include_package_data=True,
zip_safe=False,
tests_require = requires,
install_requires = requires,
+ extras_require={
+ 'docs': docs_extras,
+ },
test_suite="peppercorn",
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/peppercorn-0.5/tox.ini new/peppercorn-0.6/tox.ini
--- old/peppercorn-0.5/tox.ini 2014-09-29 18:53:43.000000000 +0200
+++ new/peppercorn-0.6/tox.ini 2018-08-16 09:43:15.000000000 +0200
@@ -1,17 +1,17 @@
[tox]
-envlist =
- py26,py27,py32,py33,pypy,cover
+envlist =
+ py27,py34,py35,py36,py37,pypy,pypy3,cover
[testenv]
-commands =
+commands =
python setup.py test -q
[testenv:cover]
basepython =
- python2.6
-commands =
+ python2.7
+commands =
python setup.py nosetests --with-xunit --with-xcoverage
-deps =
+deps =
nose
coverage==3.4
nosexcover
1
0
Hello community,
here is the log from the commit of package python-sounddevice for openSUSE:Factory checked in at 2019-05-22 11:15:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-sounddevice (Old)
and /work/SRC/openSUSE:Factory/.python-sounddevice.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-sounddevice"
Wed May 22 11:15:20 2019 rev:4 rq:704374 version:0.3.13
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-sounddevice/python-sounddevice.changes 2018-12-24 11:44:12.529302295 +0100
+++ /work/SRC/openSUSE:Factory/.python-sounddevice.new.5148/python-sounddevice.changes 2019-05-22 11:15:22.650541026 +0200
@@ -1,0 +2,7 @@
+Tue May 21 07:20:34 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 0.3.13
+ * Examples asyncio_coroutines.py and asyncio_generators.py
+- package examples
+
+-------------------------------------------------------------------
Old:
----
sounddevice-0.3.12.tar.gz
New:
----
sounddevice-0.3.13.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-sounddevice.spec ++++++
--- /var/tmp/diff_new_pack.vS1wij/_old 2019-05-22 11:15:24.926540607 +0200
+++ /var/tmp/diff_new_pack.vS1wij/_new 2019-05-22 11:15:24.926540607 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-sounddevice
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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-sounddevice
-Version: 0.3.12
+Version: 0.3.13
Release: 0
Summary: Play and Record Sound with Python
License: MIT
@@ -26,6 +26,7 @@
Url: http://python-sounddevice.readthedocs.io/
Source: https://files.pythonhosted.org/packages/source/s/sounddevice/sounddevice-%{…
BuildRequires: %{python_module cffi >= 1.0}
+BuildRequires: %{python_module numpy}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: portaudio
@@ -46,6 +47,7 @@
%setup -q -n sounddevice-%{version}
%build
+chmod 644 examples/*
%python_build
%install
@@ -53,8 +55,11 @@
%python_expand fdupes %{buildroot}%{$python_sitelib}
%files %{python_files}
-%doc NEWS.rst README.rst
+%doc NEWS.rst README.rst examples
%license LICENSE
%{python_sitelib}/*
+%check
+# no upstream tests, examples needs devices
+
%changelog
++++++ sounddevice-0.3.12.tar.gz -> sounddevice-0.3.13.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sounddevice-0.3.12/LICENSE new/sounddevice-0.3.13/LICENSE
--- old/sounddevice-0.3.12/LICENSE 2018-05-04 09:43:31.000000000 +0200
+++ new/sounddevice-0.3.13/LICENSE 2019-02-27 10:40:35.000000000 +0100
@@ -1,4 +1,4 @@
-Copyright (c) 2015-2018 Matthias Geier
+Copyright (c) 2015-2019 Matthias Geier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sounddevice-0.3.12/NEWS.rst new/sounddevice-0.3.13/NEWS.rst
--- old/sounddevice-0.3.12/NEWS.rst 2018-09-02 11:05:13.000000000 +0200
+++ new/sounddevice-0.3.13/NEWS.rst 2019-02-27 10:40:35.000000000 +0100
@@ -1,3 +1,6 @@
+0.3.13 (2019-02-27):
+ * Examples ``asyncio_coroutines.py`` and ``asyncio_generators.py``
+
0.3.12 (2018-09-02):
* Support for the dylib from Anaconda
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sounddevice-0.3.12/PKG-INFO new/sounddevice-0.3.13/PKG-INFO
--- old/sounddevice-0.3.12/PKG-INFO 2018-09-02 11:08:24.000000000 +0200
+++ new/sounddevice-0.3.13/PKG-INFO 2019-02-27 10:41:45.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: sounddevice
-Version: 0.3.12
+Version: 0.3.13
Summary: Play and Record Sound with Python
Home-page: http://python-sounddevice.readthedocs.io/
Author: Matthias Geier
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sounddevice-0.3.12/doc/conf.py new/sounddevice-0.3.13/doc/conf.py
--- old/sounddevice-0.3.12/doc/conf.py 2018-08-22 12:16:04.000000000 +0200
+++ new/sounddevice-0.3.13/doc/conf.py 2019-02-27 10:40:35.000000000 +0100
@@ -75,7 +75,7 @@
# General information about the project.
authors = 'Matthias Geier'
project = 'python-sounddevice'
-copyright = '2018, ' + authors
+copyright = '2019, ' + authors
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sounddevice-0.3.12/doc/examples.rst new/sounddevice-0.3.13/doc/examples.rst
--- old/sounddevice-0.3.12/doc/examples.rst 2018-08-22 12:11:03.000000000 +0200
+++ new/sounddevice-0.3.13/doc/examples.rst 2019-02-17 13:52:38.000000000 +0100
@@ -42,3 +42,17 @@
:download:`rec_unlimited.py <../examples/rec_unlimited.py>`
.. literalinclude:: ../examples/rec_unlimited.py
+
+Using a stream in an `asyncio` coroutine
+----------------------------------------
+
+:download:`asyncio_coroutines.py <../examples/asyncio_coroutines.py>`
+
+.. literalinclude:: ../examples/asyncio_coroutines.py
+
+Creating an `asyncio` generator for audio blocks
+------------------------------------------------
+
+:download:`asyncio_generators.py <../examples/asyncio_generators.py>`
+
+.. literalinclude:: ../examples/asyncio_generators.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sounddevice-0.3.12/doc/fake__sounddevice.py new/sounddevice-0.3.13/doc/fake__sounddevice.py
--- old/sounddevice-0.3.12/doc/fake__sounddevice.py 2018-08-21 20:10:46.000000000 +0200
+++ new/sounddevice-0.3.13/doc/fake__sounddevice.py 2019-02-14 16:18:43.000000000 +0100
@@ -1,7 +1,7 @@
"""Mock module for Sphinx autodoc."""
-import ctypes
+import ctypes.util
old_find_library = ctypes.util.find_library
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sounddevice-0.3.12/examples/asyncio_coroutines.py new/sounddevice-0.3.13/examples/asyncio_coroutines.py
--- old/sounddevice-0.3.12/examples/asyncio_coroutines.py 1970-01-01 01:00:00.000000000 +0100
+++ new/sounddevice-0.3.13/examples/asyncio_coroutines.py 2019-02-17 13:52:38.000000000 +0100
@@ -0,0 +1,73 @@
+#!/usr/bin/env python3
+"""An example for using a stream in an asyncio coroutine.
+
+This example shows how to create a stream in a coroutine and how to wait for
+the completion of the stream.
+
+You need Python 3.7 or newer to run this.
+
+"""
+import asyncio
+
+import numpy as np
+import sounddevice as sd
+
+
+async def record_buffer(buffer, **kwargs):
+ loop = asyncio.get_event_loop()
+ event = asyncio.Event()
+ idx = 0
+
+ def callback(indata, frame_count, time_info, status):
+ nonlocal idx
+ if status:
+ print(status)
+ remainder = len(buffer) - idx
+ if remainder == 0:
+ loop.call_soon_threadsafe(event.set)
+ raise sd.CallbackStop
+ indata = indata[:remainder]
+ buffer[idx:idx + len(indata)] = indata
+ idx += len(indata)
+
+ stream = sd.InputStream(callback=callback, dtype=buffer.dtype,
+ channels=buffer.shape[1], **kwargs)
+ with stream:
+ await event.wait()
+
+
+async def play_buffer(buffer, **kwargs):
+ loop = asyncio.get_event_loop()
+ event = asyncio.Event()
+ idx = 0
+
+ def callback(outdata, frame_count, time_info, status):
+ nonlocal idx
+ if status:
+ print(status)
+ remainder = len(buffer) - idx
+ if remainder == 0:
+ loop.call_soon_threadsafe(event.set)
+ raise sd.CallbackStop
+ valid_frames = frame_count if remainder >= frame_count else remainder
+ outdata[:valid_frames] = buffer[idx:idx + valid_frames]
+ outdata[valid_frames:] = 0
+ idx += valid_frames
+
+ stream = sd.OutputStream(callback=callback, dtype=buffer.dtype,
+ channels=buffer.shape[1], **kwargs)
+ with stream:
+ await event.wait()
+
+
+async def main(frames=150_000, channels=1, dtype='float32', **kwargs):
+ buffer = np.empty((frames, channels), dtype=dtype)
+ print('recording buffer ...')
+ await record_buffer(buffer, **kwargs)
+ print('playing buffer ...')
+ await play_buffer(buffer, **kwargs)
+ print('done')
+
+
+if __name__ == "__main__":
+ asyncio.run(main())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sounddevice-0.3.12/examples/asyncio_generators.py new/sounddevice-0.3.13/examples/asyncio_generators.py
--- old/sounddevice-0.3.12/examples/asyncio_generators.py 1970-01-01 01:00:00.000000000 +0100
+++ new/sounddevice-0.3.13/examples/asyncio_generators.py 2019-02-17 13:52:38.000000000 +0100
@@ -0,0 +1,104 @@
+#!/usr/bin/env python3
+"""Creating an asyncio generator for blocks of audio data.
+
+This example shows how a generator can be used to analyze audio input blocks.
+In addition, it shows how a generator can be created that yields not only input
+blocks but also output blocks where audio data can be written to.
+
+You need Python 3.7 or newer to run this.
+
+"""
+import asyncio
+import queue
+
+import numpy as np
+import sounddevice as sd
+
+
+async def inputstream_generator(channels=1, **kwargs):
+ """Generator that yields blocks of input data as NumPy arrays."""
+ q_in = asyncio.Queue()
+ loop = asyncio.get_event_loop()
+
+ def callback(indata, frame_count, time_info, status):
+ loop.call_soon_threadsafe(q_in.put_nowait, (indata.copy(), status))
+
+ stream = sd.InputStream(callback=callback, channels=channels, **kwargs)
+ with stream:
+ while True:
+ indata, status = await q_in.get()
+ yield indata, status
+
+
+async def stream_generator(blocksize, *, channels=1, dtype='float32',
+ pre_fill_blocks=10, **kwargs):
+ """Generator that yields blocks of input/output data as NumPy arrays.
+
+ The output blocks are uninitialized and have to be filled with
+ appropriate audio signals.
+
+ """
+ assert blocksize != 0
+ q_in = asyncio.Queue()
+ q_out = queue.Queue()
+ loop = asyncio.get_event_loop()
+
+ def callback(indata, outdata, frame_count, time_info, status):
+ loop.call_soon_threadsafe(q_in.put_nowait, (indata.copy(), status))
+ outdata[:] = q_out.get_nowait()
+
+ # pre-fill output queue
+ for _ in range(pre_fill_blocks):
+ q_out.put(np.zeros((blocksize, channels), dtype=dtype))
+
+ stream = sd.Stream(blocksize=blocksize, callback=callback, dtype=dtype,
+ channels=channels, **kwargs)
+ with stream:
+ while True:
+ indata, status = await q_in.get()
+ outdata = np.empty((blocksize, channels), dtype=dtype)
+ yield indata, outdata, status
+ q_out.put_nowait(outdata)
+
+
+async def print_input_infos(**kwargs):
+ """Show minimum and maximum value of each incoming audio block."""
+ async for indata, status in inputstream_generator(**kwargs):
+ if status:
+ print(status)
+ print('min:', indata.min(), '\t', 'max:', indata.max())
+
+
+async def wire_coro(**kwargs):
+ """Create a connection between audio inputs and outputs.
+
+ Asynchronously iterates over a stream generator and for each block
+ simply copies the input data into the output block.
+
+ """
+ async for indata, outdata, status in stream_generator(**kwargs):
+ if status:
+ print(status)
+ outdata[:] = indata
+
+
+async def main(**kwargs):
+ print('Some informations about the input signal:')
+ try:
+ await asyncio.wait_for(print_input_infos(), timeout=2)
+ except asyncio.TimeoutError:
+ pass
+ print('\nEnough of that, activating wire ...\n')
+ audio_task = asyncio.create_task(wire_coro(**kwargs))
+ for i in range(10, 0, -1):
+ print(i)
+ await asyncio.sleep(1)
+ audio_task.cancel()
+ try:
+ await audio_task
+ except asyncio.CancelledError:
+ print('wire was cancelled')
+
+
+if __name__ == "__main__":
+ asyncio.run(main(blocksize=1024))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sounddevice-0.3.12/examples/play_long_file.py new/sounddevice-0.3.13/examples/play_long_file.py
--- old/sounddevice-0.3.12/examples/play_long_file.py 2017-11-29 11:26:21.000000000 +0100
+++ new/sounddevice-0.3.13/examples/play_long_file.py 2019-02-14 16:18:43.000000000 +0100
@@ -70,7 +70,7 @@
with sf.SoundFile(args.filename) as f:
for _ in range(args.buffersize):
- data = f.buffer_read(args.blocksize, ctype='float')
+ data = f.buffer_read(args.blocksize, dtype='float32')
if not data:
break
q.put_nowait(data) # Pre-fill queue
@@ -82,7 +82,7 @@
with stream:
timeout = args.blocksize * args.buffersize / f.samplerate
while data:
- data = f.buffer_read(args.blocksize, ctype='float')
+ data = f.buffer_read(args.blocksize, dtype='float32')
q.put(data, timeout=timeout)
event.wait() # Wait until playback is finished
except KeyboardInterrupt:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sounddevice-0.3.12/examples/plot_input.py new/sounddevice-0.3.13/examples/plot_input.py
--- old/sounddevice-0.3.12/examples/plot_input.py 2017-11-29 11:26:21.000000000 +0100
+++ new/sounddevice-0.3.13/examples/plot_input.py 2019-02-14 16:18:43.000000000 +0100
@@ -100,8 +100,8 @@
ax.axis((0, len(plotdata), -1, 1))
ax.set_yticks([0])
ax.yaxis.grid(True)
- ax.tick_params(bottom='off', top='off', labelbottom='off',
- right='off', left='off', labelleft='off')
+ ax.tick_params(bottom=False, top=False, labelbottom=False,
+ right=False, left=False, labelleft=False)
fig.tight_layout(pad=0)
stream = sd.InputStream(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sounddevice-0.3.12/setup.py new/sounddevice-0.3.13/setup.py
--- old/sounddevice-0.3.12/setup.py 2018-04-23 12:13:45.000000000 +0200
+++ new/sounddevice-0.3.13/setup.py 2019-02-14 16:18:43.000000000 +0100
@@ -11,7 +11,7 @@
PYTHON_INTERPRETERS = '.'.join([
'cp26', 'cp27',
- 'cp32', 'cp33', 'cp34', 'cp35', 'cp36', 'cp37',
+ 'cp32', 'cp33', 'cp34', 'cp35', 'cp36', 'cp37', 'cp38',
'pp27',
'pp32', 'pp33', 'pp34', 'pp35', 'pp36',
])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sounddevice-0.3.12/sounddevice.egg-info/PKG-INFO new/sounddevice-0.3.13/sounddevice.egg-info/PKG-INFO
--- old/sounddevice-0.3.12/sounddevice.egg-info/PKG-INFO 2018-09-02 11:08:24.000000000 +0200
+++ new/sounddevice-0.3.13/sounddevice.egg-info/PKG-INFO 2019-02-27 10:41:44.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: sounddevice
-Version: 0.3.12
+Version: 0.3.13
Summary: Play and Record Sound with Python
Home-page: http://python-sounddevice.readthedocs.io/
Author: Matthias Geier
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sounddevice-0.3.12/sounddevice.egg-info/SOURCES.txt new/sounddevice-0.3.13/sounddevice.egg-info/SOURCES.txt
--- old/sounddevice-0.3.12/sounddevice.egg-info/SOURCES.txt 2018-09-02 11:08:24.000000000 +0200
+++ new/sounddevice-0.3.13/sounddevice.egg-info/SOURCES.txt 2019-02-27 10:41:44.000000000 +0100
@@ -17,6 +17,8 @@
doc/requirements.txt
doc/usage.rst
doc/version-history.rst
+examples/asyncio_coroutines.py
+examples/asyncio_generators.py
examples/play_file.py
examples/play_long_file.py
examples/plot_input.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sounddevice-0.3.12/sounddevice.py new/sounddevice-0.3.13/sounddevice.py
--- old/sounddevice-0.3.12/sounddevice.py 2018-09-02 11:03:35.000000000 +0200
+++ new/sounddevice-0.3.13/sounddevice.py 2019-02-27 10:40:35.000000000 +0100
@@ -1,4 +1,4 @@
-# Copyright (c) 2015-2018 Matthias Geier
+# Copyright (c) 2015-2019 Matthias Geier
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -48,7 +48,7 @@
http://python-sounddevice.readthedocs.io/
"""
-__version__ = '0.3.12'
+__version__ = '0.3.13'
import atexit as _atexit
import os as _os
1
0
Hello community,
here is the log from the commit of package engrampa for openSUSE:Factory checked in at 2019-05-22 11:15:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/engrampa (Old)
and /work/SRC/openSUSE:Factory/.engrampa.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "engrampa"
Wed May 22 11:15:17 2019 rev:18 rq:704371 version:1.22.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/engrampa/engrampa.changes 2019-05-16 22:03:29.866652526 +0200
+++ /work/SRC/openSUSE:Factory/.engrampa.new.5148/engrampa.changes 2019-05-22 11:15:18.602541771 +0200
@@ -1,0 +2,16 @@
+Sun May 12 18:13:56 UTC 2019 - Alexei Sorokin <sor.alexei(a)meowr.ru>
+
+- Update to version 1.22.1:
+ * Help: Replace link linkend with xref linkend.
+ * file-utils: Avoid out of bound memory access.
+ * actions: Avoid use of memory after it is freed.
+ * fr-process: Fix memory leak: "g_shell_quote" needs to be freed.
+ * fr-process: Fix memory leak: "g_strconcat" needs to be freed.
+ * [Security] fr-process: Avoid "strcpy" and "strcat".
+ * fr-process: Fix memory leak.
+ * Help: Fix version to 1.22.
+ * Help: Update copyright.
+ * Upgrade the manual to docbook 5.
+ * Update translations.
+
+-------------------------------------------------------------------
Old:
----
engrampa-1.22.0.tar.xz
New:
----
engrampa-1.22.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ engrampa.spec ++++++
--- /var/tmp/diff_new_pack.uOH2Dr/_old 2019-05-22 11:15:19.498541606 +0200
+++ /var/tmp/diff_new_pack.uOH2Dr/_new 2019-05-22 11:15:19.502541606 +0200
@@ -18,7 +18,7 @@
%define _version 1.22
Name: engrampa
-Version: 1.22.0
+Version: 1.22.1
Release: 0
Summary: MATE Desktop archive manager
License: GPL-2.0-or-later AND LGPL-2.0-or-later
++++++ engrampa-1.22.0.tar.xz -> engrampa-1.22.1.tar.xz ++++++
++++ 598852 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package caja-dropbox for openSUSE:Factory checked in at 2019-05-22 11:15:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/caja-dropbox (Old)
and /work/SRC/openSUSE:Factory/.caja-dropbox.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "caja-dropbox"
Wed May 22 11:15:12 2019 rev:8 rq:704368 version:1.22.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/caja-dropbox/caja-dropbox.changes 2019-05-16 22:03:15.734661406 +0200
+++ /work/SRC/openSUSE:Factory/.caja-dropbox.new.5148/caja-dropbox.changes 2019-05-22 11:15:16.866542092 +0200
@@ -1,0 +2,8 @@
+Sun May 12 18:13:56 UTC 2019 - Alexei Sorokin <sor.alexei(a)meowr.ru>
+
+- Update to version 1.22.1:
+ * Use CAJA_EXTENSION_DIR_SYS to save and show system
+ caja extension dir.
+ * Show full path of caja-extension-dir.
+
+-------------------------------------------------------------------
Old:
----
caja-dropbox-1.22.0.tar.xz
New:
----
caja-dropbox-1.22.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ caja-dropbox.spec ++++++
--- /var/tmp/diff_new_pack.GjwNdY/_old 2019-05-22 11:15:17.746541929 +0200
+++ /var/tmp/diff_new_pack.GjwNdY/_new 2019-05-22 11:15:17.750541928 +0200
@@ -18,7 +18,7 @@
%define _version 1.22
Name: caja-dropbox
-Version: 1.22.0
+Version: 1.22.1
Release: 0
Summary: Dropbox client integrated into Caja
License: GPL-3.0-or-later
++++++ caja-dropbox-1.22.0.tar.xz -> caja-dropbox-1.22.1.tar.xz ++++++
++++ 4223 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/caja-dropbox-1.22.0/ChangeLog new/caja-dropbox-1.22.1/ChangeLog
--- old/caja-dropbox-1.22.0/ChangeLog 2019-02-25 13:46:34.000000000 +0100
+++ new/caja-dropbox-1.22.1/ChangeLog 2019-04-23 15:36:55.000000000 +0200
@@ -1,3 +1,44 @@
+commit 2cff2fd6f5d383be33708e6893c76b63eed96639
+Author: raveit65 <mate(a)raveit.de>
+Date: Tue Apr 23 15:24:15 2019 +0200
+
+ release 1.22.1
+
+ NEWS | 5 +++++
+ configure.ac | 2 +-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+commit 877b724dd6538386a97a95352e78d28616561ebb
+Author: raveit65 <mate(a)raveit.de>
+Date: Tue Mar 26 13:11:02 2019 +0100
+
+ github release for stable branch
+
+ .travis.yml | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+commit 5fdcb1711f67e549f7aeb2fd77c84cbb39375224
+Author: Wu Xiaotian <yetist(a)gmail.com>
+Date: Thu Feb 28 10:46:53 2019 +0800
+
+ Use CAJA_EXTENSION_DIR_SYS to save and show system caja extension dir
+
+ Here just show message, so a new variable used to save and show.
+ Remove fallback caja_extension_dir set, pkg check libcaja-extension
+ before, so this is not needed.
+
+ configure.ac | 10 +++-------
+ 1 file changed, 3 insertions(+), 7 deletions(-)
+
+commit fdc25dcab372b437d70d85fcb3222df49323412c
+Author: Wu Xiaotian <yetist(a)gmail.com>
+Date: Tue Feb 19 17:04:25 2019 +0800
+
+ show full path of caja-extension-dir
+
+ configure.ac | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
commit 803b0a2701fa6e0aabdae1d6bbfd75e6e85d215a
Author: raveit65 <mate(a)raveit.de>
Date: Mon Feb 25 13:46:01 2019 +0100
@@ -528,754 +569,64 @@
Release 1.14.0
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 4f43a33057eadf66c142993cffb9a3b156f82fad
-Author: monsta <monsta(a)inbox.ru>
-Date: Fri Apr 8 14:02:03 2016 +0300
-
- update NEWS
-
- NEWS | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-commit 39156c6657c4f9fa82c42f4e82f774c45fff3966
-Author: monsta <monsta(a)inbox.ru>
-Date: Fri Apr 8 13:57:45 2016 +0300
-
- Fix Changelog generation
-
- Makefile.am | 21 +++++++++------------
- 1 file changed, 9 insertions(+), 12 deletions(-)
-
-commit 07c3797952f0d6bd845d9d7e684d1e0ec65eaf15
-Author: Wolfgang Ulbrich <chat-to-me(a)raveit.de>
-Date: Tue Jan 5 01:31:36 2016 +0100
-
- pre-bump version to 1.13.0
-
- NEWS | 3 +++
- configure.ac | 2 +-
- 2 files changed, 4 insertions(+), 1 deletion(-)
-
-commit d1a267c3c0313d71cde3ba4d5781ba3aad495279
-Author: Clement Lefebvre <clement.lefebvre(a)linuxmint.com>
-Date: Tue Nov 3 15:07:00 2015 +0000
-
- 1.12.0
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 7aaa741f662a1b177564da0e1b54b915b5ae62b4
-Author: monsta <monsta(a)inbox.ru>
-Date: Fri Oct 30 14:35:14 2015 +0300
-
- update NEWS for 1.12
-
- NEWS | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-commit cfd42ab9264243e719c990308b8bd7d29cb210a1
-Author: raveit65 <chat-to-me(a)raveit.de>
-Date: Tue Oct 6 19:28:29 2015 +0200
-
- pre-bump version to 1.11.0
-
- NEWS | 3 +++
- configure.ac | 2 +-
- 2 files changed, 4 insertions(+), 1 deletion(-)
-
-commit cb83ff2b71f4cfc5ddc3719fb7c7cc4b806b7eda
-Author: Monsta <monsta(a)inbox.ru>
-Date: Sun Jun 14 18:53:14 2015 +0300
-
- adjust the default caja extensions dir
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 2506dbebb7b9c03d7fea6fa7b4018004776fb9f8
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Fri Jun 12 12:49:36 2015 +0200
-
- Include autogen.sh in tarball
-
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 24ac2134e352bc5bbdd50a6a1327c431a6c4f87f
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Tue May 5 11:12:13 2015 +0200
-
- Bump version to 1.10.0
-
- NEWS | 2 +-
- configure.ac | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 2568fedcf029258df920e6927898b597d8ef230f
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Mon Apr 6 11:14:55 2015 +0200
-
- Bump version to 1.9.90
-
- NEWS | 7 ++++++-
- configure.ac | 2 +-
- 2 files changed, 7 insertions(+), 2 deletions(-)
-
-commit 7bda6b1d44a2a6b9d3a434416aa8ba313fb94071
-Merge: 8244002 de72a9e
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Wed Mar 25 10:00:38 2015 +0100
-
- Merge pull request #19 from monsta/patch-1
-
- use proper int type
-
-commit 82440028ef19fbe0e9dee22c09cd410d9626035f
-Author: infirit <infirit(a)gmail.com>
-Date: Sat Jan 10 20:25:37 2015 +0100
-
- Add caja extension ini file
-
- closes github issue #20
-
- configure.ac | 1 +
- data/Makefile.am | 6 ++++++
- data/libcaja-dropbox.caja-extension.in | 6 ++++++
- 3 files changed, 13 insertions(+)
-
-commit de72a9e9c803271d3be43cdf56ce78cfc6329f42
-Author: monsta <monsta(a)inbox.ru>
-Date: Thu Jan 8 20:29:13 2015 +0300
-
- use proper int type
-
- from https://github.com/dropbox/nautilus-dropbox/pull/1
-
- src/caja-dropbox-hooks.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 3bd6fc73c8287c92f5d6a84a1e9e45e906ec36e7
-Author: infirit <infirit(a)gmail.com>
-Date: Thu Jul 17 12:18:35 2014 +0200
-
- docgen: Don't use stdin and stdout
-
- The encoding on stdin and stdout are usually ascii and may cause problems
- with writing unicode to it. Instead of this we open the file directly
- and avoid dealing with annoying unicode encode/decode errors.
-
- Makefile.am | 2 +-
- docgen.py | 31 ++++++++++++++++++++-----------
- 2 files changed, 21 insertions(+), 12 deletions(-)
-
-commit 68a6fc1faaeb47d82347e3f5390ac4bda2cad561
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Thu Jul 17 09:53:04 2014 +0200
-
- Bump version to 1.8.0
-
- NEWS | 2 +-
- configure.ac | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 1d9ed180be1bf666cb45a42a5fb649d600820430
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Thu Jul 17 09:52:42 2014 +0200
-
- Update AUTHORS
-
- AUTHORS | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 61507848f595883a9dc35694b14afc15a2b7d015
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Thu Jul 17 09:52:34 2014 +0200
-
- Update NEWS
-
- NEWS | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit 28bfb1143b23625755c711b99b2ad8c705f15bf7
-Merge: 3442ee0 f4b12c2
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Thu Jul 17 09:32:30 2014 +0200
-
- Merge pull request #15 from glensc/autostart
-
- setup autostart file after install
-
-commit 3442ee0ae9ca27c71c57d7311d92fae66ed94465
-Merge: e4fa916 e06a5ca
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Thu Jul 17 09:31:54 2014 +0200
-
- Merge pull request #14 from glensc/dl-fixes
-
- update download code from nautilus-dropbox-1.6.2
-
-commit e4fa916a7b40d57d4e1cd96f2d1058d400b4302d
-Merge: 7fb54f3 4e3f759
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Thu Jul 17 09:31:22 2014 +0200
-
- Merge pull request #12 from glensc/desktop
-
- desktop file fixes
-
-commit 7fb54f3514a52989fb3b37ec027be79265cf16b5
-Author: infirit <infirit(a)gmail.com>
-Date: Sun May 11 21:33:21 2014 +0200
-
- Fix typo in Makefile.am
-
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit ef0c6f7c7d73503a40eafc8d100c872bc9b9f593
-Merge: d6dfbdf e49c528
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Sat May 10 15:04:21 2014 +0200
-
- Merge pull request #11 from glensc/caja-versions
-
- fix use of defines
-
-commit e06a5ca36235adf8feb591335315fccb5ff6de1b
-Author: Elan Ruusamäe <glen(a)delfi.ee>
-Date: Tue Apr 22 15:57:07 2014 +0300
-
- init self.task to None
-
- merged changes from nautilus-dropbox 1.6.1 to 1.6.2
-
- this bug happens when you try to press cancel on first dialog
-
- caja-dropbox.in | 1 +
- 1 file changed, 1 insertion(+)
-
-commit f4b12c2a14930d982a46cd0590bf79e65af1d7f9
-Author: Elan Ruusamäe <glen(a)delfi.ee>
-Date: Sun Apr 6 12:21:15 2014 +0000
-
- setup autostart file after install
-
- this is supposedly done originally by ~/.dropbox-dist/dropbox, but as it
- doesn't recognize MATE, do the autostart file after download
-
- ps: the autostart file can be done if you toggle 'do not show this
- dialog' message twice in dialog which appears before download start
-
- caja-dropbox.in | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit bc155a50edc5fa3023e2fceebf432403e903ce02
-Author: Elan Ruusamäe <glen(a)delfi.ee>
-Date: Sun Apr 6 13:47:59 2014 +0300
-
- merge download changes from nautilus-dropbox-1.6.1/dropbox.in
-
- http://linux.dropbox.com/packages/nautilus-dropbox-1.6.1.tar.bz2
-
- caja-dropbox.in | 229 +++++++++++++++++++++++++++++++-------------------------
- 1 file changed, 128 insertions(+), 101 deletions(-)
-
-commit 4e3f759c9e72f5ef360bd102f59bfd940d2607bf
-Author: Elan Ruusamäe <glen(a)delfi.ee>
-Date: Sun Apr 6 12:43:12 2014 +0300
-
- update comments from 7333a67
-
- data/caja-dropbox.desktop | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit b08df291eb253ba9ee5a3ddab7718d8d25d6ff2f
-Author: Elan Ruusamäe <glen(a)delfi.ee>
-Date: Tue Mar 25 21:49:12 2014 +0000
-
- more renames
-
- this time desktop file path which is used to setup/remove autostart
-
- caja-dropbox.in | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit c145cd0cc756ee91ec7de6283ee61aff6b120a82
-Author: Elan Ruusamäe <glen(a)delfi.ee>
-Date: Tue Mar 25 16:35:33 2014 +0200
-
- fix Exec in desktop
-
- rename also Exec line, completes #2
-
- data/caja-dropbox.desktop | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit e49c528cbf0b32e1c7bf20db5ca1cf048ffb68cd
-Author: Elan Ruusamäe <glen(a)delfi.ee>
-Date: Sat Feb 23 00:21:56 2013 +0200
-
- fix defines
-
- caja is at 1.5 so 2.22 and older version probably is wrong
- last gnome2 was 2.32.2.1 for nautilus
-
- src/dropbox.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-commit d6dfbdf4d3989ec215b2265031c1998dc157a204
-Author: infirit <infirit(a)gmail.com>
-Date: Wed Feb 19 23:01:18 2014 +0100
-
- Bump version to 1.7.90
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 8ac27168beb5113510a35c6a645f8dd03f076113
-Author: infirit <infirit(a)gmail.com>
-Date: Wed Feb 19 23:00:49 2014 +0100
-
- Update NEWS
-
- NEWS | 5 +++++
- configure.ac | 2 +-
- 2 files changed, 6 insertions(+), 1 deletion(-)
-
-commit be83aba34603182126f8e334c425866bc83b42a8
-Author: infirit <infirit(a)gmail.com>
-Date: Wed Feb 19 22:56:32 2014 +0100
-
- Add dist-hook for changelog
-
- Makefile.am | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-commit e1c0ea9d4ea38215a98227e334ca26c70b35aa0e
-Merge: 2084794 98a6c61
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Mon Jan 6 02:48:31 2014 -0800
-
- Merge pull request #10 from infirit/master
-
- Add to ACLOCAL_AMFLAGS for user added flags
-
-commit 98a6c61c85b82bfa3b36bff81aa01082aa136f10
-Author: infirit <infirit(a)gmail.com>
-Date: Sun Jan 5 14:04:25 2014 +0100
-
- Add to ACLOCAL_AMFLAGS for user added flags
-
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 20847946a5c49a6d542125f43cb08cde63076298
-Merge: 70eddac c744b6d
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Mon Dec 23 11:12:35 2013 -0800
-
- Merge pull request #9 from infirit/whitespace
-
- Remove all trailing whitespace
-
-commit c744b6d79e93942bf872826bb777644963d7bf0f
-Author: infirit <infirit(a)gmail.com>
-Date: Thu Dec 19 16:29:35 2013 +0100
-
- Remove all trailing whitespace
-
- configure.ac | 2 +-
- data/Makefile.am | 2 +-
- rst2man.py | 22 ++++++-------
- src/async-io-coroutine.h | 2 +-
- src/caja-dropbox-hooks.c | 30 ++++++++---------
- src/caja-dropbox.c | 34 ++++++++++----------
- src/caja-dropbox.h | 2 +-
- src/dropbox-client-util.c | 12 +++----
- src/dropbox-client.c | 26 +++++++--------
- src/dropbox-command-client.c | 76 ++++++++++++++++++++++----------------------
- src/dropbox-command-client.h | 4 +--
- 11 files changed, 106 insertions(+), 106 deletions(-)
-
-commit 70eddac907f86e49a09a82c026d942270a7a6be8
-Merge: 7907b52 11e91fb
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Fri Nov 8 06:27:09 2013 -0800
-
- Merge pull request #8 from infirit/master
-
- Autofoo cleanup for make dist/dictcheck
-
-commit 11e91fb836d0a854d75c2767c1a689e48ffb933d
-Author: infirit <infirit(a)gmail.com>
-Date: Sat Oct 19 18:22:42 2013 +0200
-
- Misc autofoo cleanups
-
- Makefile.am | 2 +-
- configure.ac | 5 +++--
- 2 files changed, 4 insertions(+), 3 deletions(-)
-
-commit 195e9631dafed84eb0b2f705ea3c3dff72b65009
-Author: infirit <infirit(a)gmail.com>
-Date: Sat Oct 19 18:13:42 2013 +0200
-
- Remove pregenerated file
-
- ltmain.sh | 8413 -------------------------------------------------------------
- 1 file changed, 8413 deletions(-)
-
-commit 7907b525b6eb6e848f4843fbd12577821f9a49de
-Merge: 27da3a4 e19b153
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Wed Jun 26 05:10:33 2013 -0700
-
- Merge pull request #6 from NiceandGently/master
-
- fix automake-1.13 deprecations
-
-commit e19b15358829cc77bd9e13013722bcadb5e7e450
-Author: raveit <chat-to-me(a)raveit.de>
-Date: Wed Jun 26 13:43:49 2013 +0200
-
- fix build error
-
- serializeimages.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 2e7857628db74c72e25c9a03898b1b1d62aa6924
-Author: raveit <chat-to-me(a)raveit.de>
-Date: Wed Jun 26 13:43:12 2013 +0200
-
- fix automake-1.13 deprecations
-
- autogen.sh | 2 +-
- configure.in => configure.ac | 2 +-
- src/Makefile.am | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-commit 27da3a4c4e398d9a0eca099e9da6e8d742b0612f
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Mon Jun 24 15:23:59 2013 +0200
-
- Add empty ChangeLog to allow build from git
-
- ChangeLog | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit e02e8a51be1c79326f9ac452f463f7ab7ef24558
-Merge: 607f216 3041e4b
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Sun Apr 14 03:06:07 2013 -0700
-
- Merge pull request #3 from robclancy/patch-1
-
- fixes bug with latest automake or something...
-
-commit 3041e4bac5faaaa70a2412f574c511f34f7a922b
-Author: Robert Clancy (Robbo) <mail(a)robertclancy.net>
-Date: Sun Apr 14 13:44:27 2013 +1000
-
- fixes bug with latest automake or something...
-
- configure.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 607f216ddc5502329faa97127c86d4c27b881de1
-Author: Steve Zesch <stevezesch2(a)gmail.com>
-Date: Sun Mar 24 16:33:20 2013 -0400
-
- "Removed ChangeLog"
-
- ChangeLog | 79 ---------------------------------------------------------------
- 1 file changed, 79 deletions(-)
-
-commit 204631ae053ad91bdb7149f29c5289cab4347eb3
-Merge: c096075 6740ac4
-Author: benpicco <benpicco(a)zedat.fu-berlin.de>
-Date: Tue Feb 19 08:46:56 2013 -0800
-
- Merge pull request #2 from hillwoodroc/master
-
- Fix files conflict with nautilus-dropbox
-
-commit 6740ac44bab322adf290bfdb10244d1c9a8aae55
-Author: hillwood <hillwoodroc(a)gmail.com>
-Date: Tue Feb 19 09:17:05 2013 +0800
-
- Rename desktop file as caja-dropbox.desktop, fix conflict with gnome-dropbox.
-
- data/Makefile.am | 2 +-
- data/caja-dropbox.desktop | 3 ++-
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-commit f35a5dbd628ece9d6c0d8b70b2a4392e7e227ad4
-Author: pc <pc(a)pc-07.(none)>
-Date: Tue Feb 19 09:05:09 2013 +0800
-
- Rename desktop file as caja-dropbox.desktop, fix conflict with gnome-dropbox.
-
- data/Makefile.am | 2 +-
- data/{dropbox.desktop => caja-dropbox.desktop} | 0
- 2 files changed, 1 insertion(+), 1 deletion(-)
-
-commit 0f59e97468dae7ddf1a389281d488e6972c273c9
-Author: hillwood <hillwood(a)hillwood-opensuse.(none)>
-Date: Tue Feb 19 00:18:25 2013 +0800
-
- Fix files conflict with gnome-dropbox.
-
- Makefile.am | 20 ++++++++++----------
- data/dropbox.desktop | 4 ++--
- data/icons/hicolor/16x16/apps/Makefile.am | 2 +-
- data/icons/hicolor/22x22/apps/Makefile.am | 2 +-
- data/icons/hicolor/24x24/apps/Makefile.am | 2 +-
- data/icons/hicolor/256x256/apps/Makefile.am | 2 +-
- data/icons/hicolor/32x32/apps/Makefile.am | 2 +-
- data/icons/hicolor/48x48/apps/Makefile.am | 2 +-
- data/icons/hicolor/64x64/apps/Makefile.am | 2 +-
- docgen.py | 2 +-
- 10 files changed, 20 insertions(+), 20 deletions(-)
-
-commit 30332d72c1fc31b6a71542650182faeb2237683d
-Author: hillwood <hillwood(a)hillwood-opensuse.(none)>
-Date: Tue Feb 19 00:07:51 2013 +0800
-
- Fix files conflict with gnome-dropbox.
-
- dropbox.in => caja-dropbox.in | 0
- dropbox.txt.in => caja-dropbox.txt.in | 0
- .../hicolor/16x16/apps/{dropbox.png => caja-dropbox.png} | Bin
- .../hicolor/22x22/apps/{dropbox.png => caja-dropbox.png} | Bin
- .../hicolor/24x24/apps/{dropbox.png => caja-dropbox.png} | Bin
- .../hicolor/256x256/apps/{dropbox.png => caja-dropbox.png} | Bin
- .../hicolor/32x32/apps/{dropbox.png => caja-dropbox.png} | Bin
- .../hicolor/48x48/apps/{dropbox.png => caja-dropbox.png} | Bin
- .../hicolor/64x64/apps/{dropbox.png => caja-dropbox.png} | Bin
- 9 files changed, 0 insertions(+), 0 deletions(-)
-
-commit c096075b4b45d0c0c688a1ba5f69037a7290847a
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Mon Apr 30 21:15:53 2012 +0300
-
- restore correct version number
-
- configure.in | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-commit 3dec3acfaf458414dde56fe958f122d79aa68d11
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Tue Apr 24 11:02:25 2012 +0200
-
- some changes for MATE
-
- AUTHORS | 7 ++++++-
- README | 13 ++-----------
- configure.in | 3 ++-
- 3 files changed, 10 insertions(+), 13 deletions(-)
-
-commit 3c2c4622e5d654d28f5ba95be659fa8449710e7a
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Sun Apr 1 21:39:12 2012 +0200
-
- swith to autogen.sh (removed autogenerated files)
-
- INSTALL | 236 -
- Makefile.in | 854 --
- aclocal.m4 | 9086 ------------------
- autogen.sh | 25 +
- config.guess | 1561 ---
- config.h.in | 71 -
- config.sub | 1686 ----
- configure | 13283 --------------------------
- data/Makefile.in | 611 --
- data/emblems/Makefile.in | 411 -
- data/icons/Makefile.in | 560 --
- data/icons/hicolor/16x16/Makefile.in | 560 --
- data/icons/hicolor/16x16/apps/Makefile.in | 411 -
- data/icons/hicolor/22x22/Makefile.in | 560 --
- data/icons/hicolor/22x22/apps/Makefile.in | 411 -
- data/icons/hicolor/24x24/Makefile.in | 560 --
- data/icons/hicolor/24x24/apps/Makefile.in | 411 -
- data/icons/hicolor/256x256/Makefile.in | 560 --
- data/icons/hicolor/256x256/apps/Makefile.in | 411 -
- data/icons/hicolor/32x32/Makefile.in | 560 --
- data/icons/hicolor/32x32/apps/Makefile.in | 411 -
- data/icons/hicolor/48x48/Makefile.in | 560 --
- data/icons/hicolor/48x48/apps/Makefile.in | 411 -
- data/icons/hicolor/64x64/Makefile.in | 560 --
- data/icons/hicolor/64x64/apps/Makefile.in | 411 -
- data/icons/hicolor/Makefile.in | 575 --
- depcomp | 630 --
- install-sh | 520 -
- missing | 376 -
- src/Makefile.in | 608 --
- 30 files changed, 25 insertions(+), 37865 deletions(-)
-
-commit dbf6f3f1fadf9a3e10900eb5aba940ef9db57312
-Author: Benjamin Valentin <benpicco(a)zedat.fu-berlin.de>
-Date: Tue Mar 27 03:15:57 2012 +0200
-
- adjust to version number of caja
-
- configure | 2 +-
- configure.in | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit f05bcc640f666acf756e7501ceefe1ad3cbf7e64
-Author: Benjamin Valentin <benpicco(a)zedat.fu-berlin.de>
-Date: Tue Mar 27 03:10:35 2012 +0200
-
- run migrate script
-
- COPYING | 2 +-
- Makefile.in | 6 +-
- README | 12 +-
- config.h.in | 12 +-
- configure | 140 ++++++-------
- configure.in | 52 ++---
- data/Makefile.in | 6 +-
- data/emblems/Makefile.in | 6 +-
- data/icons/Makefile.in | 6 +-
- data/icons/hicolor/16x16/Makefile.in | 6 +-
- data/icons/hicolor/16x16/apps/Makefile.in | 6 +-
- data/icons/hicolor/22x22/Makefile.in | 6 +-
- data/icons/hicolor/22x22/apps/Makefile.in | 6 +-
- data/icons/hicolor/24x24/Makefile.in | 6 +-
- data/icons/hicolor/24x24/apps/Makefile.in | 6 +-
- data/icons/hicolor/256x256/Makefile.in | 6 +-
- data/icons/hicolor/256x256/apps/Makefile.in | 6 +-
- data/icons/hicolor/32x32/Makefile.in | 6 +-
- data/icons/hicolor/32x32/apps/Makefile.in | 6 +-
- data/icons/hicolor/48x48/Makefile.in | 6 +-
- data/icons/hicolor/48x48/apps/Makefile.in | 6 +-
- data/icons/hicolor/64x64/Makefile.in | 6 +-
- data/icons/hicolor/64x64/apps/Makefile.in | 6 +-
- data/icons/hicolor/Makefile.in | 6 +-
- dropbox.in | 8 +-
- src/Makefile.am | 26 +--
- src/Makefile.in | 174 ++++++++--------
- src/async-io-coroutine.h | 8 +-
- ...utilus-dropbox-hooks.c => caja-dropbox-hooks.c} | 34 ++--
- ...utilus-dropbox-hooks.h => caja-dropbox-hooks.h} | 32 +--
- src/{nautilus-dropbox.c => caja-dropbox.c} | 226 ++++++++++-----------
- src/caja-dropbox.h | 69 +++++++
- src/dropbox-client-util.c | 8 +-
- src/dropbox-client-util.h | 8 +-
- src/dropbox-client.c | 24 +--
- src/dropbox-client.h | 12 +-
- src/dropbox-command-client.c | 28 +--
- src/dropbox-command-client.h | 28 +--
- src/dropbox.c | 28 +--
- src/g-util.h | 8 +-
- src/nautilus-dropbox.h | 69 -------
- 41 files changed, 561 insertions(+), 561 deletions(-)
-
-commit e214b332395adbc77ad596218895a4834cad434d
-Author: Benjamin Valentin <benpicco(a)zedat.fu-berlin.de>
-Date: Tue Mar 27 03:03:55 2012 +0200
-
- import nautilus dropbox 0.7.1
-
- AUTHORS | 3 +
- COPYING | 695 ++
- ChangeLog | 79 +
- INSTALL | 236 +
- Makefile.am | 16 +
- Makefile.in | 854 ++
- NEWS | 5 +
- README | 27 +
- aclocal.m4 | 9086 ++++++++++++++++++
- config.guess | 1561 +++
- config.h.in | 71 +
- config.sub | 1686 ++++
- configure | 13283 ++++++++++++++++++++++++++
- configure.in | 132 +
- data/Makefile.am | 6 +
- data/Makefile.in | 611 ++
- data/dropbox.desktop | 10 +
- data/emblems/Makefile.am | 8 +
- data/emblems/Makefile.in | 411 +
- data/emblems/emblem-dropbox-syncing.icon | 4 +
- data/emblems/emblem-dropbox-syncing.png | Bin 0 -> 5703 bytes
- data/emblems/emblem-dropbox-unsyncable.icon | 4 +
- data/emblems/emblem-dropbox-unsyncable.png | Bin 0 -> 5053 bytes
- data/emblems/emblem-dropbox-uptodate.icon | 4 +
- data/emblems/emblem-dropbox-uptodate.png | Bin 0 -> 4799 bytes
- data/icons/Makefile.am | 1 +
- data/icons/Makefile.in | 560 ++
- data/icons/hicolor/16x16/Makefile.am | 1 +
- data/icons/hicolor/16x16/Makefile.in | 560 ++
- data/icons/hicolor/16x16/apps/Makefile.am | 9 +
- data/icons/hicolor/16x16/apps/Makefile.in | 411 +
- data/icons/hicolor/16x16/apps/dropbox.png | Bin 0 -> 918 bytes
- data/icons/hicolor/22x22/Makefile.am | 1 +
- data/icons/hicolor/22x22/Makefile.in | 560 ++
- data/icons/hicolor/22x22/apps/Makefile.am | 9 +
- data/icons/hicolor/22x22/apps/Makefile.in | 411 +
- data/icons/hicolor/22x22/apps/dropbox.png | Bin 0 -> 1485 bytes
- data/icons/hicolor/24x24/Makefile.am | 1 +
- data/icons/hicolor/24x24/Makefile.in | 560 ++
- data/icons/hicolor/24x24/apps/Makefile.am | 9 +
- data/icons/hicolor/24x24/apps/Makefile.in | 411 +
- data/icons/hicolor/24x24/apps/dropbox.png | Bin 0 -> 1684 bytes
- data/icons/hicolor/256x256/Makefile.am | 1 +
- data/icons/hicolor/256x256/Makefile.in | 560 ++
- data/icons/hicolor/256x256/apps/Makefile.am | 9 +
- data/icons/hicolor/256x256/apps/Makefile.in | 411 +
- data/icons/hicolor/256x256/apps/dropbox.png | Bin 0 -> 17884 bytes
- data/icons/hicolor/32x32/Makefile.am | 1 +
- data/icons/hicolor/32x32/Makefile.in | 560 ++
- data/icons/hicolor/32x32/apps/Makefile.am | 9 +
- data/icons/hicolor/32x32/apps/Makefile.in | 411 +
- data/icons/hicolor/32x32/apps/dropbox.png | Bin 0 -> 2157 bytes
- data/icons/hicolor/48x48/Makefile.am | 1 +
- data/icons/hicolor/48x48/Makefile.in | 560 ++
- data/icons/hicolor/48x48/apps/Makefile.am | 9 +
- data/icons/hicolor/48x48/apps/Makefile.in | 411 +
- data/icons/hicolor/48x48/apps/dropbox.png | Bin 0 -> 3537 bytes
- data/icons/hicolor/64x64/Makefile.am | 1 +
- data/icons/hicolor/64x64/Makefile.in | 560 ++
- data/icons/hicolor/64x64/apps/Makefile.am | 9 +
- data/icons/hicolor/64x64/apps/Makefile.in | 411 +
- data/icons/hicolor/64x64/apps/dropbox.png | Bin 0 -> 5016 bytes
- data/icons/hicolor/Makefile.am | 14 +
- data/icons/hicolor/Makefile.in | 575 ++
- depcomp | 630 ++
- docgen.py | 25 +
- dropbox.in | 1362 +++
- dropbox.txt.in | 51 +
- install-sh | 520 +
- ltmain.sh | 8413 ++++++++++++++++
- missing | 376 +
- rst2man.py | 1091 +++
- serializeimages.py | 27 +
- src/Makefile.am | 39 +
- src/Makefile.in | 608 ++
- src/async-io-coroutine.h | 65 +
- src/dropbox-client-util.c | 91 +
- src/dropbox-client-util.h | 39 +
- src/dropbox-client.c | 174 +
- src/dropbox-client.h | 76 +
- src/dropbox-command-client.c | 893 ++
- src/dropbox-command-client.h | 113 +
- src/dropbox.c | 60 +
- src/g-util.h | 49 +
- src/nautilus-dropbox-hooks.c | 337 +
- src/nautilus-dropbox-hooks.h | 79 +
- src/nautilus-dropbox.c | 960 ++
- src/nautilus-dropbox.h | 69 +
- 88 files changed, 52956 insertions(+)
-
-commit d367ab28270220c1378d2a7ca9bda4a9012c76cb
-Author: Stefano Karapetsas <stefano(a)karapetsas.com>
-Date: Mon Mar 26 23:33:33 2012 +0200
-
- Initial commit
-
- README | 0
- 1 file changed, 0 insertions(+), 0 deletions(-)
+ AUTHORS | 9 +
+ COPYING | 695 +++++++++++
+ ChangeLog | 2 +
+ Makefile.am | 27 +
+ NEWS | 27 +
+ README | 18 +
+ autogen.sh | 25 +
+ caja-dropbox.in | 1393 ++++++++++++++++++++++
+ caja-dropbox.txt.in | 51 +
+ configure.ac | 134 +++
+ data/Makefile.am | 12 +
+ data/caja-dropbox.desktop | 11 +
+ data/emblems/Makefile.am | 8 +
+ data/emblems/emblem-dropbox-syncing.icon | 4 +
+ data/emblems/emblem-dropbox-syncing.png | Bin 0 -> 5703 bytes
+ data/emblems/emblem-dropbox-unsyncable.icon | 4 +
+ data/emblems/emblem-dropbox-unsyncable.png | Bin 0 -> 5053 bytes
+ data/emblems/emblem-dropbox-uptodate.icon | 4 +
+ data/emblems/emblem-dropbox-uptodate.png | Bin 0 -> 4799 bytes
+ data/icons/Makefile.am | 1 +
+ data/icons/hicolor/16x16/Makefile.am | 1 +
+ data/icons/hicolor/16x16/apps/Makefile.am | 9 +
+ data/icons/hicolor/16x16/apps/caja-dropbox.png | Bin 0 -> 918 bytes
+ data/icons/hicolor/22x22/Makefile.am | 1 +
+ data/icons/hicolor/22x22/apps/Makefile.am | 9 +
+ data/icons/hicolor/22x22/apps/caja-dropbox.png | Bin 0 -> 1485 bytes
+ data/icons/hicolor/24x24/Makefile.am | 1 +
+ data/icons/hicolor/24x24/apps/Makefile.am | 9 +
+ data/icons/hicolor/24x24/apps/caja-dropbox.png | Bin 0 -> 1684 bytes
+ data/icons/hicolor/256x256/Makefile.am | 1 +
+ data/icons/hicolor/256x256/apps/Makefile.am | 9 +
+ data/icons/hicolor/256x256/apps/caja-dropbox.png | Bin 0 -> 17884 bytes
+ data/icons/hicolor/32x32/Makefile.am | 1 +
+ data/icons/hicolor/32x32/apps/Makefile.am | 9 +
+ data/icons/hicolor/32x32/apps/caja-dropbox.png | Bin 0 -> 2157 bytes
+ data/icons/hicolor/48x48/Makefile.am | 1 +
+ data/icons/hicolor/48x48/apps/Makefile.am | 9 +
+ data/icons/hicolor/48x48/apps/caja-dropbox.png | Bin 0 -> 3537 bytes
+ data/icons/hicolor/64x64/Makefile.am | 1 +
+ data/icons/hicolor/64x64/apps/Makefile.am | 9 +
+ data/icons/hicolor/64x64/apps/caja-dropbox.png | Bin 0 -> 5016 bytes
+ data/icons/hicolor/Makefile.am | 14 +
+ data/libcaja-dropbox.caja-extension.in | 6 +
+ docgen.py | 34 +
+ rst2man.py | 1091 +++++++++++++++++
+ serializeimages.py | 27 +
+ src/Makefile.am | 39 +
+ src/async-io-coroutine.h | 65 +
+ src/caja-dropbox-hooks.c | 337 ++++++
+ src/caja-dropbox-hooks.h | 79 ++
+ src/caja-dropbox.c | 960 +++++++++++++++
+ src/caja-dropbox.h | 69 ++
+ src/dropbox-client-util.c | 91 ++
+ src/dropbox-client-util.h | 39 +
+ src/dropbox-client.c | 174 +++
+ src/dropbox-client.h | 76 ++
+ src/dropbox-command-client.c | 893 ++++++++++++++
+ src/dropbox-command-client.h | 113 ++
+ src/dropbox.c | 58 +
+ src/g-util.h | 49 +
+ 60 files changed, 6709 insertions(+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/caja-dropbox-1.22.0/NEWS new/caja-dropbox-1.22.1/NEWS
--- old/caja-dropbox-1.22.0/NEWS 2019-02-25 13:29:24.000000000 +0100
+++ new/caja-dropbox-1.22.1/NEWS 2019-04-23 15:33:21.000000000 +0200
@@ -1,3 +1,8 @@
+### caja-dropbox 1.22.1
+
+ * Use CAJA_EXTENSION_DIR_SYS to save and show system caja extension dir
+ * show full path of caja-extension-dir
+
### caja-dropbox 1.22.0
* fix distcheck about caja_extension_dir
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/caja-dropbox-1.22.0/compile new/caja-dropbox-1.22.1/compile
--- old/caja-dropbox-1.22.0/compile 2019-02-25 13:46:27.000000000 +0100
+++ new/caja-dropbox-1.22.1/compile 2019-04-23 15:36:47.000000000 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/sh
+#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2018-03-07.03; # UTC
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/caja-dropbox-1.22.0/configure.ac new/caja-dropbox-1.22.1/configure.ac
--- old/caja-dropbox-1.22.0/configure.ac 2019-02-25 13:27:13.000000000 +0100
+++ new/caja-dropbox-1.22.1/configure.ac 2019-04-23 15:33:21.000000000 +0200
@@ -1,6 +1,6 @@
# Initialization
-AC_INIT([caja-dropbox], [1.22.0], [http://www.mate-desktop.org/]
+AC_INIT([caja-dropbox], [1.22.1], [http://www.mate-desktop.org/]
AM_INIT_AUTOMAKE([1.9 tar-ustar dist-xz foreign no-dist-gzip])
@@ -81,17 +81,17 @@
CAJA_EXTENSION_DIR=$with_caja_extension_dir
custom_caja_extension_dir=true
else
- CAJA_EXTENSION_DIR=`$PKG_CONFIG --variable=extensiondir libcaja-extension`
- CAJA_EXTENSION_DIR=${CAJA_EXTENSION_DIR#`$PKG_CONFIG --variable=libdir libcaja-extension`}
+ CAJA_EXTENSION_DIR_SYS=`$PKG_CONFIG --variable=extensiondir libcaja-extension`
+ CAJA_EXTENSION_DIR=${CAJA_EXTENSION_DIR_SYS#`$PKG_CONFIG --variable=libdir libcaja-extension`}
CAJA_EXTENSION_DIR=${CAJA_EXTENSION_DIR#/}
custom_caja_extension_dir=false
fi
-if test -z "$CAJA_EXTENSION_DIR"; then
- CAJA_EXTENSION_DIR='caja/extensions-2.0'
- custom_caja_extension_dir=false
-fi
-AC_MSG_RESULT([${CAJA_EXTENSION_DIR}])
+if test x$custom_caja_extension_dir = xtrue; then
+ AC_MSG_RESULT([${CAJA_EXTENSION_DIR}])
+else
+ AC_MSG_RESULT([${CAJA_EXTENSION_DIR_SYS}])
+fi
AM_CONDITIONAL([CUSTOM_CAJA_EXTENSION_DIR], [test x$custom_caja_extension_dir = xtrue])
AC_SUBST(CAJA_EXTENSION_DIR)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/caja-dropbox-1.22.0/missing new/caja-dropbox-1.22.1/missing
--- old/caja-dropbox-1.22.0/missing 2019-02-25 13:46:27.000000000 +0100
+++ new/caja-dropbox-1.22.1/missing 2019-04-23 15:36:47.000000000 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/sh
+#! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
scriptversion=2018-03-07.03; # UTC
1
0
Hello community,
here is the log from the commit of package caja for openSUSE:Factory checked in at 2019-05-22 11:15:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/caja (Old)
and /work/SRC/openSUSE:Factory/.caja.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "caja"
Wed May 22 11:15:08 2019 rev:32 rq:704367 version:1.22.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/caja/caja.changes 2019-05-16 22:03:09.590665267 +0200
+++ /work/SRC/openSUSE:Factory/.caja.new.5148/caja.changes 2019-05-22 11:15:10.882543194 +0200
@@ -1,0 +2,19 @@
+Sun May 12 18:13:56 UTC 2019 - Alexei Sorokin <sor.alexei(a)meowr.ru>
+
+- Update to version 1.22.1:
+ * caja-progress-info: Make sure argument is initialised.
+ * Fix invocation with --geometry from the command line.
+ * Pass "NULL" for keyboard event.
+ * caja-file: Fix incomplete file replacement dialogue.
+ * eel-gdk-pixbuf-extensions: Fix division by zero.
+ * caja-file: Fix use of memory after it is freed.
+ * caja-icon-container: Fix use of memory after it is freed.
+ * fm-tree-model: Fix use of memory after it is freed.
+ * caja-information-panel: Fix use of memory after it is freed.
+ * fm-directory-view: Fix use of memory after it is freed.
+ * caja-tree-view-drag-dest: Fix memory leak.
+ * [Security] eel-string: Use "g_strlcat" instead of "strcat".
+ * [Security] Use "g_strlcpy" instead of "strcpy".
+ * Update translations.
+
+-------------------------------------------------------------------
Old:
----
caja-1.22.0.tar.xz
New:
----
caja-1.22.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ caja.spec ++++++
--- /var/tmp/diff_new_pack.EXFfQe/_old 2019-05-22 11:15:12.714542856 +0200
+++ /var/tmp/diff_new_pack.EXFfQe/_new 2019-05-22 11:15:12.714542856 +0200
@@ -20,7 +20,7 @@
%define typelib typelib-1_0-Caja-2_0
%define _version 1.22
Name: caja
-Version: 1.22.0
+Version: 1.22.1
Release: 0
Summary: File manager for the MATE desktop
License: GPL-2.0-only AND LGPL-2.0-only
++++++ caja-1.22.0.tar.xz -> caja-1.22.1.tar.xz ++++++
++++ 45383 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-podcastparser for openSUSE:Factory checked in at 2019-05-22 11:14:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-podcastparser (Old)
and /work/SRC/openSUSE:Factory/.python-podcastparser.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-podcastparser"
Wed May 22 11:14:45 2019 rev:2 rq:704279 version:0.6.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-podcastparser/python-podcastparser.changes 2016-12-12 12:46:27.952203512 +0100
+++ /work/SRC/openSUSE:Factory/.python-podcastparser.new.5148/python-podcastparser.changes 2019-05-22 11:14:52.138546645 +0200
@@ -1,0 +2,8 @@
+Mon May 20 14:27:09 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 0.6.4
+ * no upstream changelog
+- convert to single spec
+- run the testsuite
+
+-------------------------------------------------------------------
Old:
----
podcastparser-0.6.0.tar.gz
New:
----
podcastparser-0.6.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-podcastparser.spec ++++++
--- /var/tmp/diff_new_pack.wgKuqT/_old 2019-05-22 11:14:53.146546459 +0200
+++ /var/tmp/diff_new_pack.wgKuqT/_new 2019-05-22 11:14:53.150546459 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-podcastparser
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,52 +12,47 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
-%global pkgname podcastparser
-%if 0%{?suse_version} && 0%{?suse_version} <= 1110
-%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
-%else
-BuildArch: noarch
-%endif
-Name: python-%{pkgname}
-Version: 0.6.0
+%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+Name: python-podcastparser
+Version: 0.6.4
Release: 0
Summary: Simple, fast and efficient podcast parser
License: ISC
Group: Development/Libraries/Python
-Url: http://gpodder.org/%{pkgname}/
-Source: http://gpodder.org/%{pkgname}/%{pkgname}-%{version}.tar.gz
-BuildRequires: python-devel
-BuildRequires: python-nose
-BuildRequires: python-setuptools
-BuildRequires: python-xml
+URL: https://github.com/gpodder/podcastparser
+Source: https://files.pythonhosted.org/packages/source/p/podcastparser/podcastparse…
+BuildRequires: %{python_module nose}
+BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module xml}
+BuildRequires: fdupes
Requires: python-xml
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
+BuildArch: noarch
+%python_subpackages
%description
The podcast parser project is a library from the gPodder project to provide an
easy and reliable way of parsing RSS- and Atom-based podcast feeds in Python.
%prep
-%setup -q -n %{pkgname}-%{version}
+%setup -q -n podcastparser-%{version}
%build
-python setup.py build
-
-%if 0%{?suse_version} > 1010
-%check
-python test_%{pkgname}.py
-%endif
+%python_build
%install
-python setup.py install --prefix=%{_prefix} --root=%{buildroot}
+%python_install
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
+
+%check
+%python_expand nosetests-%{$python_bin_suffix}
-%files
-%defattr(-,root,root)
-%doc LICENSE README.md
+%files %{python_files}
+%license LICENSE
+%doc README.md
%{python_sitelib}/*
%changelog
++++++ podcastparser-0.6.0.tar.gz -> podcastparser-0.6.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/LICENSE new/podcastparser-0.6.4/LICENSE
--- old/podcastparser-0.6.0/LICENSE 2014-11-30 21:48:54.000000000 +0100
+++ new/podcastparser-0.6.4/LICENSE 2018-08-19 18:16:16.000000000 +0200
@@ -1,5 +1,5 @@
-Copyright (c) 2012, 2013, 2014, Thomas Perl <m(a)thp.io>
+Copyright (c) 2012, 2013, 2014, 2018, Thomas Perl <m(a)thp.io>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/PKG-INFO new/podcastparser-0.6.4/PKG-INFO
--- old/podcastparser-0.6.0/PKG-INFO 2015-05-24 20:40:07.000000000 +0200
+++ new/podcastparser-0.6.4/PKG-INFO 2018-08-19 18:16:34.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: podcastparser
-Version: 0.6.0
+Version: 0.6.4
Summary: Simplified, fast RSS parser
Home-page: http://gpodder.org/podcastparser/
Author: Thomas Perl
@@ -12,6 +12,9 @@
The podcast parser project is a library from the gPodder project to provide an
easy and reliable way of parsing RSS- and Atom-based podcast feeds in Python.
- * Web: http://gpodder.org/podcastparser/
+
+ ## Automated Tests
+
+ To run the unit tests you need [`nose`](http://nose.readthedocs.io/en/latest/). If you have `nose` installed, use the `nosetests` command in the repository's root directory to run the tests.
Platform: UNKNOWN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/README.md new/podcastparser-0.6.4/README.md
--- old/podcastparser-0.6.0/README.md 2014-11-30 21:48:54.000000000 +0100
+++ new/podcastparser-0.6.4/README.md 2018-08-19 18:16:16.000000000 +0200
@@ -4,4 +4,7 @@
The podcast parser project is a library from the gPodder project to provide an
easy and reliable way of parsing RSS- and Atom-based podcast feeds in Python.
-* Web: http://gpodder.org/podcastparser/
+
+## Automated Tests
+
+To run the unit tests you need [`nose`](http://nose.readthedocs.io/en/latest/). If you have `nose` installed, use the `nosetests` command in the repository's root directory to run the tests.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/doc/index.rst new/podcastparser-0.6.4/doc/index.rst
--- old/podcastparser-0.6.0/doc/index.rst 2014-11-30 21:48:54.000000000 +0100
+++ new/podcastparser-0.6.4/doc/index.rst 2018-08-19 18:16:16.000000000 +0200
@@ -192,6 +192,49 @@
.. automodule:: podcastparser
:members:
+Unsupported Namespaces
+======================
+
+This is a list of podcast-related XML namespaces that are not yet
+supported by podcastparser, but might be in the future.
+
+Chapter Marks
+-------------
+
+- `rawvoice RSS`_: Rating, Frequency, Poster, WebM, MP4, Metamark (kind of chapter-like markers)
+- `IGOR`_: Chapter Marks
+
+.. _rawvoice RSS: http://www.rawvoice.com/rawvoiceRssModule/
+.. _IGOR: http://emonk.net/IGOR
+
+Others
+------
+
+- `libSYN RSS Extensions`_: contactPhone, contactEmail, contactTwitter, contactWebsite, wallpaper, pdf, background
+- `Comment API`_: Comments to a given item (readable via RSS)
+- `MVCB`_: Error Reports To Field (usually a mailto: link)
+- `Syndication Module`_: Update period, frequency and base (for skipping updates)
+- `Creative Commons RSS`_: Creative commons license for the content
+- `Pheedo`_: Original link to website and original link to enclosure (without going through pheedo redirect)
+- `WGS84`_: Geo-Coordinates per item
+- `Conversations Network`_: Intro duration in milliseconds (for skipping the intro), ratings
+- `purl DC Elements`_: dc:creator (author / creator of the podcast, possibly with e-mail address)
+- `Tristana`_: tristana:self (canonical URL to feed)
+- `Blip`_: Show name, show page, picture, username, language, rating, thumbnail_src, license
+
+.. _libSYN RSS Extensions: http://libsyn.com/rss-extension
+.. _Comment API: http://www.wellformedweb.org/CommentAPI/
+.. _MVCB: http://webns.net/mvcb/
+.. _Syndication Module: http://web.resource.org/rss/1.0/modules/syndication/
+.. _Creative Commons RSS: http://backend.userland.com/creativeCommonsRssModule
+.. _Pheedo: http://www.pheedo.com/namespace/pheedo
+.. _WGS84: http://www.w3.org/2003/01/geo/wgs84_pos#
+.. _Conversations Network: http://conversationsnetwork.org/rssNamespace-1.0/
+.. _purl DC Elements: http://purl.org/dc/elements/1.1/
+.. _Tristana: http://www.tristana.org
+.. _Blip: http://blip.tv/dtd/blip/1.0
+
+
Indices and tables
==================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/podcastparser.py new/podcastparser-0.6.4/podcastparser.py
--- old/podcastparser-0.6.0/podcastparser.py 2015-05-24 20:37:39.000000000 +0200
+++ new/podcastparser-0.6.4/podcastparser.py 2018-08-19 18:16:16.000000000 +0200
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
#
# Podcastparser: A simple, fast and efficient podcast parser
-# Copyright (c) 2012, 2013, 2014, Thomas Perl <m(a)thp.io>
+# Copyright (c) 2012, 2013, 2014, 2018, Thomas Perl <m(a)thp.io>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
@@ -20,7 +20,7 @@
# Will be parsed by setup.py to determine package metadata
__author__ = 'Thomas Perl <m(a)thp.io>'
-__version__ = '0.6.0'
+__version__ = '0.6.4'
__website__ = 'http://gpodder.org/podcastparser/'
__license__ = 'ISC License'
@@ -48,7 +48,17 @@
try:
# Python 2
- from rfc822 import mktime_tz, parsedate_tz
+ from rfc822 import parsedate_tz
+ import calendar
+ # This is taken from Python 3's email._parseaddr, since it handles
+ # pre-epoch dates better than what Python 2 does (time.mktime())
+ def mktime_tz(data):
+ if data[9] is None:
+ # No zone info, so localtime is better assumption than GMT
+ return time.mktime(data[:8] + (-1,))
+ else:
+ t = calendar.timegm(data)
+ return t - data[9]
except ImportError:
# Python 3
from email.utils import mktime_tz, parsedate_tz
@@ -60,9 +70,10 @@
class Target(object):
WANT_TEXT = False
- def __init__(self, key=None, filter_func=lambda x: x.strip()):
+ def __init__(self, key=None, filter_func=lambda x: x.strip(), overwrite=True):
self.key = key
self.filter_func = filter_func
+ self.overwrite = overwrite
def start(self, handler, attrs):
pass
@@ -73,7 +84,7 @@
class RSS(Target):
def start(self, handler, attrs):
- if 'xml:base' in attrs:
+ if 'xml:base' in attrs.keys():
handler.set_base(attrs.get('xml:base'))
@@ -119,6 +130,8 @@
WANT_TEXT = True
def end(self, handler, text):
+ if not self.overwrite and handler.get_episode_attr(self.key):
+ return
handler.set_episode_attr(self.key, self.filter_func(text))
@@ -164,7 +177,7 @@
if url is None:
return
- url = parse_url(urlparse.urljoin(handler.base, url))
+ url = parse_url(urlparse.urljoin(handler.base, url.lstrip()))
file_size = parse_length(attrs.get(self.file_size_attribute))
mime_type = parse_type(attrs.get('type'))
@@ -517,6 +530,15 @@
>>> parse_pubdate('Fri, 21 Nov 1997 09:55:06 -0600')
880127706
+ >>> parse_pubdate('2003-12-13T00:00:00+02:00')
+ 1071266400
+
+ >>> parse_pubdate('2003-12-13T18:30:02Z')
+ 1071340202
+
+ >>> parse_pubdate('Mon, 02 May 1960 09:05:01 +0100')
+ -305049299
+
>>> parse_pubdate('')
0
@@ -528,13 +550,29 @@
parsed = parsedate_tz(text)
if parsed is not None:
- return int(mktime_tz(parsed))
-
- # TODO: Fully RFC 3339-compliant parsing (w/ timezone)
+ try:
+ pubtimeseconds = int(mktime_tz(parsed))
+ return pubtimeseconds
+ except(OverflowError,ValueError):
+ logger.warn('bad pubdate %s is before epoch or after end of time (2038)',parsed)
+ return 0
+
try:
parsed = time.strptime(text[:19], '%Y-%m-%dT%H:%M:%S')
if parsed is not None:
- return int(time.mktime(parsed))
+ m = re.match(r'^(?:Z|([+-])([0-9]{2})[:]([0-9]{2}))$', text[19:])
+ if m:
+ parsed = list(iter(parsed))
+ if m.group(1):
+ offset = 3600 * int(m.group(2)) + 60 * int(m.group(3))
+ if m.group(1) == '-':
+ offset = 0 - offset
+ else:
+ offset = 0
+ parsed.append(offset)
+ return int(mktime_tz(tuple(parsed)))
+ else:
+ return int(time.mktime(parsed))
except Exception:
pass
@@ -560,6 +598,7 @@
'rss/channel/item/link': EpisodeAttrRelativeLink('link'),
'rss/channel/item/description': EpisodeAttr('description', squash_whitespace),
'rss/channel/item/itunes:summary': EpisodeAttr('description', squash_whitespace),
+ 'rss/channel/item/media:description': EpisodeAttr('description', squash_whitespace),
'rss/channel/item/itunes:subtitle': EpisodeAttr('subtitle', squash_whitespace),
'rss/channel/item/content:encoded': EpisodeAttr('description_html'),
'rss/channel/item/itunes:duration': EpisodeAttr('total_time', parse_time),
@@ -582,11 +621,27 @@
'atom:feed/atom:entry/atom:title': EpisodeAttr('title', squash_whitespace),
'atom:feed/atom:entry/atom:link': AtomLink(),
'atom:feed/atom:entry/atom:content': AtomContent(),
+ 'atom:feed/atom:entry/content:encoded': EpisodeAttr('description_html'),
'atom:feed/atom:entry/atom:published': EpisodeAttr('published', parse_pubdate),
+ 'atom:feed/atom:entry/atom:updated': EpisodeAttr('published', parse_pubdate, overwrite=False),
+ 'atom:feed/atom:entry/media:group/media:description': EpisodeAttr('description', squash_whitespace),
'atom:feed/atom:entry/psc:chapters': PodloveChapters(),
'atom:feed/atom:entry/psc:chapters/psc:chapter': PodloveChapter(),
}
+# Derive valid root elements from the supported MAPPINGs
+VALID_ROOTS = set(path.split('/')[0] for path in MAPPING.keys())
+
+
+class FeedParseError(sax.SAXParseException, ValueError):
+ """
+ Exception raised when asked to parse an invalid feed
+
+ This exception allows users of this library to catch exceptions
+ without having to import the XML parsing library themselves.
+ """
+ pass
+
class PodcastHandler(sax.handler.ContentHandler):
def __init__(self, url, max_episodes):
@@ -635,6 +690,13 @@
if len(entry['chapters']) == 0:
del entry['chapters']
+ # Ensures `description` does not contain HTML
+ if 'description' in entry and is_html(entry['description']):
+ if 'description_html' not in entry:
+ entry['description_html'] = entry['description']
+ entry['description'] = ''
+
+ # Sets `description` to stripped `description_html` when absent
if 'description_html' in entry and not entry['description']:
entry['description'] = remove_html_tags(entry['description_html'])
@@ -673,7 +735,14 @@
def startElement(self, name, attrs):
self.namespace = Namespace(attrs, self.namespace)
- self.path_stack.append(self.namespace.map(name))
+ name = self.namespace.map(name)
+ if not self.path_stack and name not in VALID_ROOTS:
+ raise FeedParseError(
+ msg='Unsupported feed type: {}'.format(name),
+ exception=None,
+ locator=self._locator,
+ )
+ self.path_stack.append(name)
target = MAPPING.get('/'.join(self.path_stack))
if target is not None:
@@ -707,7 +776,10 @@
:returns: a dict with the parsed contents of the feed
"""
handler = PodcastHandler(url, max_episodes)
- sax.parse(stream, handler)
+ try:
+ sax.parse(stream, handler)
+ except sax.SAXParseException as e:
+ raise FeedParseError(e.getMessage(), e.getException(), e._locator)
return handler.data
@@ -781,6 +853,12 @@
# urlunsplit might return "a slighty different, but equivalent URL"
return urlparse.urlunsplit((scheme, netloc, path, query, fragment))
+def is_html(text):
+ """
+ Tests whether the given string contains HTML encoded data
+ """
+ html_test = re.compile(r'<[a-z][\s\S]*>', re.IGNORECASE)
+ return bool(html_test.search(text))
def remove_html_tags(html):
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/test_podcastparser.py new/podcastparser-0.6.4/test_podcastparser.py
--- old/podcastparser-0.6.0/test_podcastparser.py 2015-03-22 09:35:09.000000000 +0100
+++ new/podcastparser-0.6.4/test_podcastparser.py 2018-08-19 18:16:16.000000000 +0200
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
#
# test_podcastparser: Test Runner for the podcastparser (2012-12-29)
-# Copyright (c) 2012, 2013, 2014, Thomas Perl <m(a)thp.io>
+# Copyright (c) 2012, 2013, 2014, 2018, Thomas Perl <m(a)thp.io>
# Copyright (c) 2013, Stefan Kögl <stefan(a)skoegl.net>
#
# Permission to use, copy, modify, and/or distribute this software for any
@@ -21,8 +21,16 @@
import os
import glob
import json
+try:
+ # Python 2
+ from StringIO import StringIO
+except ImportError:
+ # Python 3
+ from io import StringIO
+
from nose.tools import assert_equal
+from nose.tools import assert_raises
import podcastparser
@@ -39,7 +47,10 @@
params = json.load(open(param_filename))
expected = json.load(open(json_filename))
- parsed = podcastparser.parse('file://' + rss_filename,
+ normalized_rss_filename = rss_filename
+ if os.sep == '\\':
+ normalized_rss_filename = normalized_rss_filename.replace(os.sep, '/')
+ parsed = podcastparser.parse('file://' + normalized_rss_filename,
open(rss_filename), **params)
assert_equal.__self__.maxDiff = None
@@ -47,3 +58,16 @@
for rss_filename in glob.glob(os.path.join('tests', 'data', '*.rss')):
yield test_parse_rss, rss_filename
+
+def test_invalid_roots():
+ def test_fail_parse(feed):
+ with assert_raises(podcastparser.FeedParseError):
+ podcastparser.parse('file://example.com/feed.xml', StringIO(feed))
+
+ feeds = [
+ '<html><body/></html>',
+ '<foo xmlns="http://example.com/foo.xml"><bar/></foo>',
+ '<baz:foo xmlns:baz="http://example.com/baz.xml"><baz:bar/></baz:foo>',
+ ]
+ for feed in feeds:
+ yield test_fail_parse, feed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/tests/data/atom_content_encoded.json new/podcastparser-0.6.4/tests/data/atom_content_encoded.json
--- old/podcastparser-0.6.0/tests/data/atom_content_encoded.json 1970-01-01 01:00:00.000000000 +0100
+++ new/podcastparser-0.6.4/tests/data/atom_content_encoded.json 2018-08-19 18:16:16.000000000 +0200
@@ -0,0 +1,10 @@
+{"episodes": [{"description": "Hello",
+ "description_html": "<h1>Hello</h1>",
+ "enclosures": [],
+ "guid": "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a",
+ "link": "http://example.org/2003/12/13/atom03",
+ "payment_url": null,
+ "published": 1071340202,
+ "title": "Atom-Powered Robots Run Amok",
+ "total_time": 0}],
+"title": "Example Feed"}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/tests/data/atom_content_encoded.rss new/podcastparser-0.6.4/tests/data/atom_content_encoded.rss
--- old/podcastparser-0.6.0/tests/data/atom_content_encoded.rss 1970-01-01 01:00:00.000000000 +0100
+++ new/podcastparser-0.6.4/tests/data/atom_content_encoded.rss 2018-08-19 18:16:16.000000000 +0200
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
+
+ <title>Example Feed</title>
+ <link href="http://example.org/"/>
+ <updated>2003-12-13T18:30:02Z</updated>
+ <author>
+ <name>John Doe</name>
+ </author>
+ <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
+
+ <entry>
+ <title>Atom-Powered Robots Run Amok</title>
+ <link href="http://example.org/2003/12/13/atom03"/>
+ <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
+ <updated>2003-12-13T18:30:02Z</updated>
+ <summary>Some text.</summary>
+ <content:encoded><![CDATA[<h1>Hello</h1>]]></content:encoded>
+ </entry>
+
+</feed>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/tests/data/atom_published_updated.json new/podcastparser-0.6.4/tests/data/atom_published_updated.json
--- old/podcastparser-0.6.0/tests/data/atom_published_updated.json 1970-01-01 01:00:00.000000000 +0100
+++ new/podcastparser-0.6.4/tests/data/atom_published_updated.json 2018-08-19 18:16:16.000000000 +0200
@@ -0,0 +1,9 @@
+{"episodes": [{"description": "",
+ "enclosures": [],
+ "guid": "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a",
+ "link": "http://example.org/2003/12/13/atom03",
+ "payment_url": null,
+ "published": 1071340202,
+ "title": "Atom-Powered Robots Run Amok",
+ "total_time": 0}],
+"title": "Example Feed"}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/tests/data/atom_published_updated.rss new/podcastparser-0.6.4/tests/data/atom_published_updated.rss
--- old/podcastparser-0.6.0/tests/data/atom_published_updated.rss 1970-01-01 01:00:00.000000000 +0100
+++ new/podcastparser-0.6.4/tests/data/atom_published_updated.rss 2018-08-19 18:16:16.000000000 +0200
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+
+ <title>Example Feed</title>
+ <link href="http://example.org/"/>
+ <updated>2003-12-13T18:30:02Z</updated>
+ <author>
+ <name>John Doe</name>
+ </author>
+ <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
+
+ <entry>
+ <title>Atom-Powered Robots Run Amok</title>
+ <link href="http://example.org/2003/12/13/atom03"/>
+ <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
+ <published>2003-12-13T18:30:02Z</published>
+ <updated>2017-12-13T18:30:02Z</updated>
+ <summary>Some text.</summary>
+ </entry>
+
+</feed>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/tests/data/atom_updated.json new/podcastparser-0.6.4/tests/data/atom_updated.json
--- old/podcastparser-0.6.0/tests/data/atom_updated.json 1970-01-01 01:00:00.000000000 +0100
+++ new/podcastparser-0.6.4/tests/data/atom_updated.json 2018-08-19 18:16:16.000000000 +0200
@@ -0,0 +1,9 @@
+{"episodes": [{"description": "",
+ "enclosures": [],
+ "guid": "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a",
+ "link": "http://example.org/2003/12/13/atom03",
+ "payment_url": null,
+ "published": 1071340202,
+ "title": "Atom-Powered Robots Run Amok",
+ "total_time": 0}],
+"title": "Example Feed"}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/tests/data/atom_updated.rss new/podcastparser-0.6.4/tests/data/atom_updated.rss
--- old/podcastparser-0.6.0/tests/data/atom_updated.rss 1970-01-01 01:00:00.000000000 +0100
+++ new/podcastparser-0.6.4/tests/data/atom_updated.rss 2018-08-19 18:16:16.000000000 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+
+ <title>Example Feed</title>
+ <link href="http://example.org/"/>
+ <updated>2003-12-13T18:30:02Z</updated>
+ <author>
+ <name>John Doe</name>
+ </author>
+ <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
+
+ <entry>
+ <title>Atom-Powered Robots Run Amok</title>
+ <link href="http://example.org/2003/12/13/atom03"/>
+ <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
+ <updated>2003-12-13T18:30:02Z</updated>
+ <summary>Some text.</summary>
+ </entry>
+
+</feed>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/tests/data/html_in_description.json new/podcastparser-0.6.4/tests/data/html_in_description.json
--- old/podcastparser-0.6.0/tests/data/html_in_description.json 1970-01-01 01:00:00.000000000 +0100
+++ new/podcastparser-0.6.4/tests/data/html_in_description.json 2018-08-19 18:16:16.000000000 +0200
@@ -0,0 +1,22 @@
+{
+ "title": "HTML Podcast",
+ "episodes": [
+ {
+ "title": "Ep 1",
+ "description": "This is a test",
+ "description_html": "<h1>This is a <em>test</em></h1>",
+ "published": 0,
+ "guid": "http://example.org/example.opus",
+ "link": "",
+ "total_time": 0,
+ "payment_url": null,
+ "enclosures": [
+ {
+ "file_size": -1,
+ "url": "http://example.org/example.opus",
+ "mime_type": "application/octet-stream"
+ }
+ ]
+ }
+ ]
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/tests/data/html_in_description.rss new/podcastparser-0.6.4/tests/data/html_in_description.rss
--- old/podcastparser-0.6.0/tests/data/html_in_description.rss 1970-01-01 01:00:00.000000000 +0100
+++ new/podcastparser-0.6.4/tests/data/html_in_description.rss 2018-08-19 18:16:16.000000000 +0200
@@ -0,0 +1,12 @@
+<rss>
+ <channel>
+ <title>HTML Podcast</title>
+ <item>
+ <title>Ep 1</title>
+ <enclosure url="http://example.org/example.opus"/>
+ <description>
+ <![CDATA[ <h1>This is a <em>test</em></h1> ]]>
+ </description>
+ </item>
+ </channel>
+</rss>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/tests/data/html_in_description_rss_both.json new/podcastparser-0.6.4/tests/data/html_in_description_rss_both.json
--- old/podcastparser-0.6.0/tests/data/html_in_description_rss_both.json 1970-01-01 01:00:00.000000000 +0100
+++ new/podcastparser-0.6.4/tests/data/html_in_description_rss_both.json 2018-08-19 18:16:16.000000000 +0200
@@ -0,0 +1,22 @@
+{
+ "title": "HTML Podcast with Text Description",
+ "episodes": [
+ {
+ "title": "Ep 1",
+ "description": "This is also a test",
+ "description_html": "<h1>This is also a <em>test</em></h1>",
+ "published": 0,
+ "guid": "http://example.org/example.opus",
+ "link": "",
+ "total_time": 0,
+ "payment_url": null,
+ "enclosures": [
+ {
+ "file_size": -1,
+ "url": "http://example.org/example.opus",
+ "mime_type": "application/octet-stream"
+ }
+ ]
+ }
+ ]
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/tests/data/html_in_description_rss_both.rss new/podcastparser-0.6.4/tests/data/html_in_description_rss_both.rss
--- old/podcastparser-0.6.0/tests/data/html_in_description_rss_both.rss 1970-01-01 01:00:00.000000000 +0100
+++ new/podcastparser-0.6.4/tests/data/html_in_description_rss_both.rss 2018-08-19 18:16:16.000000000 +0200
@@ -0,0 +1,13 @@
+<rss>
+ <channel>
+ <title>HTML Podcast with Text Description</title>
+ <item>
+ <title>Ep 1</title>
+ <enclosure url="http://example.org/example.opus"/>
+ <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">
+ <![CDATA[ <h1>This is also a <em>test</em></h1> ]]>
+ </content:encoded>
+ <description><![CDATA[ <h1>This is also a <em>test</em></h1> ]]></description>
+ </item>
+ </channel>
+</rss>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/tests/data/html_in_description_rss_both_different.json new/podcastparser-0.6.4/tests/data/html_in_description_rss_both_different.json
--- old/podcastparser-0.6.0/tests/data/html_in_description_rss_both_different.json 1970-01-01 01:00:00.000000000 +0100
+++ new/podcastparser-0.6.4/tests/data/html_in_description_rss_both_different.json 2018-08-19 18:16:16.000000000 +0200
@@ -0,0 +1,22 @@
+{
+ "title": "HTML Podcast with Text Description",
+ "episodes": [
+ {
+ "title": "Ep 1",
+ "description": "This is also a test",
+ "description_html": "<h1>This is also a <em>test</em></h1>",
+ "published": 0,
+ "guid": "http://example.org/example.opus",
+ "link": "",
+ "total_time": 0,
+ "payment_url": null,
+ "enclosures": [
+ {
+ "file_size": -1,
+ "url": "http://example.org/example.opus",
+ "mime_type": "application/octet-stream"
+ }
+ ]
+ }
+ ]
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/tests/data/html_in_description_rss_both_different.rss new/podcastparser-0.6.4/tests/data/html_in_description_rss_both_different.rss
--- old/podcastparser-0.6.0/tests/data/html_in_description_rss_both_different.rss 1970-01-01 01:00:00.000000000 +0100
+++ new/podcastparser-0.6.4/tests/data/html_in_description_rss_both_different.rss 2018-08-19 18:16:16.000000000 +0200
@@ -0,0 +1,13 @@
+<rss>
+ <channel>
+ <title>HTML Podcast with Text Description</title>
+ <item>
+ <title>Ep 1</title>
+ <enclosure url="http://example.org/example.opus"/>
+ <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">
+ <![CDATA[ <h1>This is also a <em>test</em></h1> ]]>
+ </content:encoded>
+ <description><![CDATA[ <h1>This text will be discarded</h1> ]]></description>
+ </item>
+ </channel>
+</rss>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/tests/data/leading_space_url.json new/podcastparser-0.6.4/tests/data/leading_space_url.json
--- old/podcastparser-0.6.0/tests/data/leading_space_url.json 1970-01-01 01:00:00.000000000 +0100
+++ new/podcastparser-0.6.4/tests/data/leading_space_url.json 2018-08-19 18:16:16.000000000 +0200
@@ -0,0 +1,21 @@
+{
+ "title": "leading_space_url",
+ "episodes": [
+ {
+ "total_time": 0,
+ "description": "",
+ "payment_url": null,
+ "link": "",
+ "published": 0,
+ "title": "Episode",
+ "guid": "http://example.com/example.mp3",
+ "enclosures": [
+ {
+ "url": "http://example.com/example.mp3",
+ "mime_type": "application/octet-stream",
+ "file_size": -1
+ }
+ ]
+ }
+ ]
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/podcastparser-0.6.0/tests/data/leading_space_url.rss new/podcastparser-0.6.4/tests/data/leading_space_url.rss
--- old/podcastparser-0.6.0/tests/data/leading_space_url.rss 1970-01-01 01:00:00.000000000 +0100
+++ new/podcastparser-0.6.4/tests/data/leading_space_url.rss 2018-08-19 18:16:16.000000000 +0200
@@ -0,0 +1,8 @@
+<rss>
+ <channel>
+ <item>
+ <title>Episode</title>
+ <enclosure url=" http://example.com/example.mp3"/>
+ </item>
+ </channel>
+</rss>
1
0
Hello community,
here is the log from the commit of package diskimage-builder for openSUSE:Factory checked in at 2019-05-22 11:14:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/diskimage-builder (Old)
and /work/SRC/openSUSE:Factory/.diskimage-builder.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "diskimage-builder"
Wed May 22 11:14:31 2019 rev:24 rq:704183 version:2.22.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/diskimage-builder/diskimage-builder.changes 2019-04-14 12:23:18.639824675 +0200
+++ /work/SRC/openSUSE:Factory/.diskimage-builder.new.5148/diskimage-builder.changes 2019-05-22 11:14:42.454548428 +0200
@@ -1,0 +2,15 @@
+Wed May 15 23:41:19 UTC 2019 - Jonathan Harker <jharker(a)suse.com>
+
+- Upgrade to 2.22.0
+ * Only enable dbus-daemon for fedora-29 and below
+ * Switch simple-init to support python3
+ * openssh-server: harden sshd config
+ * Support defining the free space in the image
+ * Allow specification of filesystem journal size
+ * Document the various global filesystem options
+ * Constraint networkx to <2.3 for Python 2
+ * Fix Fedora aarch64 image location
+ * debian-minimal buster support
+ * Also use selinuxenabled to check selinux status
+
+-------------------------------------------------------------------
Old:
----
diskimage-builder-2.21.0.tar.gz
New:
----
diskimage-builder-2.22.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ diskimage-builder.spec ++++++
--- /var/tmp/diff_new_pack.mXvCVO/_old 2019-05-22 11:14:44.430548064 +0200
+++ /var/tmp/diff_new_pack.mXvCVO/_new 2019-05-22 11:14:44.434548064 +0200
@@ -20,7 +20,7 @@
# are only ever run inside the disk image build chroot).
%global __requires_exclude_from ^%{python3_sitelib}/diskimage_builder/elements/.*$
Name: diskimage-builder
-Version: 2.21.0
+Version: 2.22.0
Release: 0
Summary: Image Building Tools for OpenStack
License: Apache-2.0
++++++ diskimage-builder-2.21.0.tar.gz -> diskimage-builder-2.22.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/AUTHORS new/diskimage-builder-2.22.0/AUTHORS
--- old/diskimage-builder-2.21.0/AUTHORS 2019-04-04 09:06:59.000000000 +0200
+++ new/diskimage-builder-2.22.0/AUTHORS 2019-05-07 11:00:12.000000000 +0200
@@ -70,6 +70,7 @@
Erwan Velu <erwan(a)enovance.com>
Ethan Gafford <egafford(a)redhat.com>
Evgeny Antyshev <eantyshev(a)virtuozzo.com>
+Fatih Degirmenci <fdegir(a)gmail.com>
Frederic Lepied <frederic.lepied(a)enovance.com>
Gabriele Cerami <gcerami(a)redhat.com>
Gary Duan <duanlg(a)live.cn>
@@ -171,6 +172,7 @@
Om Kumar <om.kumar(a)hp.com>
Ondřej Nový <ondrej.novy(a)firma.seznam.cz>
Paul Belanger <pabelanger(a)redhat.com>
+Pedro Alvarez <pedro.alvarez(a)codethink.co.uk>
Perry Myers <pmyers(a)redhat.com>
Peter Stachowski <peter(a)tesora.com>
Pierre Riteau <pierre(a)stackhpc.com>
@@ -200,9 +202,11 @@
Sandhya Ganapathy <sandhya.ganapathy(a)hp.com>
Sascha Peilicke <speilicke(a)suse.com>
Saverio Proto <saverio.proto(a)switch.ch>
+Serena Ziviani <serena.ziviani(a)cern.ch>
Shane Wang <shane.wang(a)intel.com>
Shivanand Tendulker <stendulker(a)gmail.com>
Simon Leinen <simon.leinen(a)gmail.com>
+Sorin Sbarnea <ssbarnea(a)redhat.com>
Spencer Krum <nibz(a)spencerkrum.com>
Stanislav Makar <stas.makar(a)gmail.com>
Stephen Mulcahy <stephen.mulcahy(a)hp.com>
@@ -247,6 +251,7 @@
Zhao Lei <zhaolei(a)cn.fujitsu.com>
Zhiguo Deng <bjzgdeng(a)linux.vnet.ibm.com>
aweiteka <aweiteka(a)redhat.com>
+caoyuan <cao.yuan(a)99cloud.net>
chengebj5238 <chengebj(a)inspur.com>
chenxiangui <chenxiangui(a)inspur.com>
chenxing <chen.xing(a)99cloud.net>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/ChangeLog new/diskimage-builder-2.22.0/ChangeLog
--- old/diskimage-builder-2.21.0/ChangeLog 2019-04-04 09:06:59.000000000 +0200
+++ new/diskimage-builder-2.22.0/ChangeLog 2019-05-07 11:00:12.000000000 +0200
@@ -1,6 +1,20 @@
CHANGES
=======
+2.22.0
+------
+
+* Only enable dbus-daemon for fedora-29 and below
+* Switch simple-init to support python3
+* Fix broken requirements url
+* Replace git.openstack.org URLs with opendev.org URLs
+* Update to https:// version of \*openstack.org urls
+* OpenDev Migration Patch
+* Constraint networkx to <2.3 for Python 2
+* Fix Fedora aarch64 image location
+* debian-minimal buster support
+* Also use selinuxenabled to check selinux status
+
2.21.0
------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/PKG-INFO new/diskimage-builder-2.22.0/PKG-INFO
--- old/diskimage-builder-2.21.0/PKG-INFO 2019-04-04 09:07:00.000000000 +0200
+++ new/diskimage-builder-2.22.0/PKG-INFO 2019-05-07 11:00:13.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: diskimage-builder
-Version: 2.21.0
+Version: 2.22.0
Summary: Golden Disk Image builder.
Home-page: https://docs.openstack.org/diskimage-builder/latest/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder/elements/debian-minimal/environment.d/10-debian-minimal.bash new/diskimage-builder-2.22.0/diskimage_builder/elements/debian-minimal/environment.d/10-debian-minimal.bash
--- old/diskimage-builder-2.21.0/diskimage_builder/elements/debian-minimal/environment.d/10-debian-minimal.bash 2019-04-04 09:05:37.000000000 +0200
+++ new/diskimage-builder-2.22.0/diskimage_builder/elements/debian-minimal/environment.d/10-debian-minimal.bash 2019-05-07 10:59:26.000000000 +0200
@@ -16,7 +16,9 @@
security:deb http://security.debian.org/ ${DIB_RELEASE}/updates ${DIB_DEBIAN_COMPONENTS_WS}
"
-if [ "${DIB_RELEASE}" = "testing" -o "${DIB_RELEASE}" = "unstable" ]; then
+# NOTE(ianw): 2019-04 -- remove buster from here when released and it
+# has security/backports.
+if [ "${DIB_RELEASE}" = "testing" -o "${DIB_RELEASE}" = "unstable" -o "${DIB_RELEASE}" = "buster" ]; then
DIB_APT_SOURCES_CONF_DEFAULT="default:deb ${DIB_DISTRIBUTION_MIRROR} ${DIB_RELEASE} ${DIB_DEBIAN_COMPONENTS_WS}"
fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder/elements/debootstrap/root.d/08-debootstrap new/diskimage-builder-2.22.0/diskimage_builder/elements/debootstrap/root.d/08-debootstrap
--- old/diskimage-builder-2.21.0/diskimage_builder/elements/debootstrap/root.d/08-debootstrap 2019-04-04 09:05:37.000000000 +0200
+++ new/diskimage-builder-2.22.0/diskimage_builder/elements/debootstrap/root.d/08-debootstrap 2019-05-07 10:59:26.000000000 +0200
@@ -36,6 +36,13 @@
DEBOOTSTRAP_QEMU=""
+_debootstrap_version=$(debootstrap --version)
+# could be like "debootstrap 1.0.114~bpo16.04+1"
+_debootstrap_version=${_debootstrap_version:16:3}
+if [[ "${DIB_RELEASE}" == "buster" && "${_debootstrap_version}" -lt 105 ]]; then
+ die "Unable to build buster with this debootstrap; see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901977"
+fi
+
if [ -n "$DIB_OFFLINE" -o -n "${DIB_DEBIAN_USE_DEBOOTSTRAP_CACHE:-}" ] && [ -f $DEBOOTSTRAP_TARBALL ] ; then
echo $DEBOOTSTRAP_TARBALL found in cache. Using.
sudo tar -C $TARGET_ROOT --numeric-owner -xzf $DEBOOTSTRAP_TARBALL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder/elements/fedora/root.d/10-fedora-cloud-image new/diskimage-builder-2.22.0/diskimage_builder/elements/fedora/root.d/10-fedora-cloud-image
--- old/diskimage-builder-2.21.0/diskimage_builder/elements/fedora/root.d/10-fedora-cloud-image 2019-04-04 09:05:37.000000000 +0200
+++ new/diskimage-builder-2.22.0/diskimage_builder/elements/fedora/root.d/10-fedora-cloud-image 2019-05-07 10:59:26.000000000 +0200
@@ -25,14 +25,14 @@
else
# note default DIB_RELEASE set in environment setup
case ${ARCH} in
- x86_64)
+ x86_64|aarch64)
if [[ ${DIB_RELEASE} -ge 28 ]]; then
DIB_CLOUD_IMAGES=${DIB_CLOUD_IMAGES:-https://download.fedoraproject.org/pub…
else
DIB_CLOUD_IMAGES=${DIB_CLOUD_IMAGES:-https://download.fedoraproject.org/pub…
fi
;;
- aarch64|ppc64|ppc64le)
+ ppc64|ppc64le)
if [[ ${DIB_RELEASE} -ge 28 ]]; then
DIB_CLOUD_IMAGES=${DIB_CLOUD_IMAGES:-https://dl.fedoraproject.org/pub/fedor…
else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder/elements/ironic-agent/README.rst new/diskimage-builder-2.22.0/diskimage_builder/elements/ironic-agent/README.rst
--- old/diskimage-builder-2.21.0/diskimage_builder/elements/ironic-agent/README.rst 2019-04-04 09:05:37.000000000 +0200
+++ new/diskimage-builder-2.22.0/diskimage_builder/elements/ironic-agent/README.rst 2019-05-07 10:59:26.000000000 +0200
@@ -2,7 +2,7 @@
ironic-agent
============
Builds a ramdisk with ironic-python-agent. More information can be found at:
- https://git.openstack.org/cgit/openstack/ironic-python-agent/
+ https://opendev.org/openstack/ironic-python-agent/
Beyond installing the ironic-python-agent, this element does the following:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder/elements/pypi/README.rst new/diskimage-builder-2.22.0/diskimage_builder/elements/pypi/README.rst
--- old/diskimage-builder-2.21.0/diskimage_builder/elements/pypi/README.rst 2019-04-04 09:05:37.000000000 +0200
+++ new/diskimage-builder-2.22.0/diskimage_builder/elements/pypi/README.rst 2019-05-07 10:59:26.000000000 +0200
@@ -35,7 +35,7 @@
export DIB\_PYPI\_MIRROR\_URL\_2=file:///tmp/pypi
export DIB\_PIP\_RETRIES=0
-[devpi-server](https://git.openstack.org/cgit/openstack-infra/pypi-mirro://pypi.python.org/pypi/devpi-server)
+[devpi-server](https://pypi.python.org/pypi/devpi-server)
can be useful in making a partial PyPI mirror suitable for building images. For
instance:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder/elements/rpm-distro/cleanup.d/99-selinux-fixfiles-restore new/diskimage-builder-2.22.0/diskimage_builder/elements/rpm-distro/cleanup.d/99-selinux-fixfiles-restore
--- old/diskimage-builder-2.21.0/diskimage_builder/elements/rpm-distro/cleanup.d/99-selinux-fixfiles-restore 2019-04-04 09:05:37.000000000 +0200
+++ new/diskimage-builder-2.22.0/diskimage_builder/elements/rpm-distro/cleanup.d/99-selinux-fixfiles-restore 2019-05-07 10:59:26.000000000 +0200
@@ -45,7 +45,7 @@
# for whatever policy is in the host kernel. We will run under
# "runcon" to specifically allow this
_runcon=""
-if [[ -d /sys/fs/selinux ]]; then
+if [[ -d /sys/fs/selinux ]] && selinuxenabled; then
sudo semanage permissive -a setfiles_mac_t
_runcon="runcon -t setfiles_mac_t -- "
fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder/elements/simple-init/install.d/simple-init-repo-install/40-glean new/diskimage-builder-2.22.0/diskimage_builder/elements/simple-init/install.d/simple-init-repo-install/40-glean
--- old/diskimage-builder-2.21.0/diskimage_builder/elements/simple-init/install.d/simple-init-repo-install/40-glean 2019-04-04 09:05:37.000000000 +0200
+++ new/diskimage-builder-2.22.0/diskimage_builder/elements/simple-init/install.d/simple-init-repo-install/40-glean 2019-05-07 10:59:26.000000000 +0200
@@ -21,4 +21,8 @@
set -eu
set -o pipefail
-pip install /tmp/glean.git
+if [ "$DIB_PYTHON_VERSION" == "3" ]; then
+ pip3 install /tmp/glean.git
+else
+ pip install /tmp/glean.git
+fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder/elements/simple-init/install.d/simple-init-source-install/40-glean new/diskimage-builder-2.22.0/diskimage_builder/elements/simple-init/install.d/simple-init-source-install/40-glean
--- old/diskimage-builder-2.21.0/diskimage_builder/elements/simple-init/install.d/simple-init-source-install/40-glean 2019-04-04 09:05:37.000000000 +0200
+++ new/diskimage-builder-2.22.0/diskimage_builder/elements/simple-init/install.d/simple-init-source-install/40-glean 2019-05-07 10:59:26.000000000 +0200
@@ -21,4 +21,8 @@
set -eu
set -o pipefail
-pip install glean
+if [ "$DIB_PYTHON_VERSION" == "3" ]; then
+ pip3 install glean
+else
+ pip install glean
+fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder/elements/yum-minimal/install.d/11-ensure-dbus-broker new/diskimage-builder-2.22.0/diskimage_builder/elements/yum-minimal/install.d/11-ensure-dbus-broker
--- old/diskimage-builder-2.21.0/diskimage_builder/elements/yum-minimal/install.d/11-ensure-dbus-broker 2019-04-04 09:05:37.000000000 +0200
+++ new/diskimage-builder-2.22.0/diskimage_builder/elements/yum-minimal/install.d/11-ensure-dbus-broker 1970-01-01 01:00:00.000000000 +0100
@@ -1,32 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2019 Red Hat, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-#
-
-if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
- set -x
-fi
-set -eu
-set -o pipefail
-
-# Ensure that dbus-broker is enabled; it seems that because of the
-# transition between dbus-daemon and dbus-broker (see
-# https://pagure.io/fesco/issue/1853) the .spec files could possibly
-# not enable this (likely related to ordering or something we do in
-# the non-standardish chroot building) and a 2019 system with no dbus
-# is very unhappy (networkmanager fails, etc).
-if [[ ${DISTRO_NAME} == 'fedora' && ${DIB_RELEASE} -ge 29 ]]; then
- systemctl --no-reload enable dbus-broker.service
-fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder/elements/yum-minimal/install.d/11-ensure-dbus-daemon new/diskimage-builder-2.22.0/diskimage_builder/elements/yum-minimal/install.d/11-ensure-dbus-daemon
--- old/diskimage-builder-2.21.0/diskimage_builder/elements/yum-minimal/install.d/11-ensure-dbus-daemon 1970-01-01 01:00:00.000000000 +0100
+++ new/diskimage-builder-2.22.0/diskimage_builder/elements/yum-minimal/install.d/11-ensure-dbus-daemon 2019-05-07 10:59:29.000000000 +0200
@@ -0,0 +1,28 @@
+#!/bin/bash
+#
+# Copyright 2019 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+
+if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
+ set -x
+fi
+set -eu
+set -o pipefail
+
+# Ensure that dbus-daemon is enabled; fedora 30 and above has switched to
+# dbus-broker.
+if [[ ${DISTRO_NAME} == 'fedora' && ${DIB_RELEASE} -le 29 ]]; then
+ systemctl --no-reload enable dbus-daemon.service
+fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder/elements/yum-minimal/root.d/08-yum-chroot new/diskimage-builder-2.22.0/diskimage_builder/elements/yum-minimal/root.d/08-yum-chroot
--- old/diskimage-builder-2.21.0/diskimage_builder/elements/yum-minimal/root.d/08-yum-chroot 2019-04-04 09:05:37.000000000 +0200
+++ new/diskimage-builder-2.22.0/diskimage_builder/elements/yum-minimal/root.d/08-yum-chroot 2019-05-07 10:59:29.000000000 +0200
@@ -278,14 +278,6 @@
# https://bugzilla.redhat.com/show_bug.cgi?id=1398505
_base_packages+="systemd-udev "
-# F29 moved to dbus-broker as the default, but dbus-daemon is
-# still available. Explicitly pull it in; note we have an
-# install.d script to enable the service explicitly it as this
-# seems required.
-if [[ ${DISTRO_NAME} = fedora && ${DIB_RELEASE} -ge 29 ]]; then
- _base_packages+="dbus-broker"
-fi
-
# bootstrap the environment within the chroot; bring in new
# metadata with an update and install some base packages we need.
sudo -E chroot $TARGET_ROOT ${YUM} -y update
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder.egg-info/PKG-INFO new/diskimage-builder-2.22.0/diskimage_builder.egg-info/PKG-INFO
--- old/diskimage-builder-2.21.0/diskimage_builder.egg-info/PKG-INFO 2019-04-04 09:06:59.000000000 +0200
+++ new/diskimage-builder-2.22.0/diskimage_builder.egg-info/PKG-INFO 2019-05-07 11:00:12.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: diskimage-builder
-Version: 2.21.0
+Version: 2.22.0
Summary: Golden Disk Image builder.
Home-page: https://docs.openstack.org/diskimage-builder/latest/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder.egg-info/SOURCES.txt new/diskimage-builder-2.22.0/diskimage_builder.egg-info/SOURCES.txt
--- old/diskimage-builder-2.21.0/diskimage_builder.egg-info/SOURCES.txt 2019-04-04 09:07:00.000000000 +0200
+++ new/diskimage-builder-2.22.0/diskimage_builder.egg-info/SOURCES.txt 2019-05-07 11:00:13.000000000 +0200
@@ -731,7 +731,7 @@
diskimage_builder/elements/yum-minimal/pkg-map
diskimage_builder/elements/yum-minimal/cleanup.d/95-remove-yum-mirror
diskimage_builder/elements/yum-minimal/install.d/10-base-networking
-diskimage_builder/elements/yum-minimal/install.d/11-ensure-dbus-broker
+diskimage_builder/elements/yum-minimal/install.d/11-ensure-dbus-daemon
diskimage_builder/elements/yum-minimal/pre-install.d/03-yum-cleanup
diskimage_builder/elements/yum-minimal/root.d/08-yum-chroot
diskimage_builder/elements/yum/bin/install-packages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder.egg-info/pbr.json new/diskimage-builder-2.22.0/diskimage_builder.egg-info/pbr.json
--- old/diskimage-builder-2.21.0/diskimage_builder.egg-info/pbr.json 2019-04-04 09:06:59.000000000 +0200
+++ new/diskimage-builder-2.22.0/diskimage_builder.egg-info/pbr.json 2019-05-07 11:00:12.000000000 +0200
@@ -1 +1 @@
-{"git_version": "36b4bc87", "is_release": true}
\ No newline at end of file
+{"git_version": "8c8b856c", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/diskimage_builder.egg-info/requires.txt new/diskimage-builder-2.22.0/diskimage_builder.egg-info/requires.txt
--- old/diskimage-builder-2.21.0/diskimage_builder.egg-info/requires.txt 2019-04-04 09:06:59.000000000 +0200
+++ new/diskimage-builder-2.22.0/diskimage_builder.egg-info/requires.txt 2019-05-07 11:00:12.000000000 +0200
@@ -1,7 +1,12 @@
Babel!=2.4.0,>=2.3.4
-networkx>=1.10
pbr!=2.1.0,>=2.0.0
PyYAML>=3.12
flake8<2.6.0,>=2.5.4
six>=1.10.0
stevedore>=1.20.0
+
+[:(python_version<'3.0')]
+networkx<2.3,>=1.10
+
+[:(python_version>='3.4')]
+networkx>=1.10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/doc/source/index.rst new/diskimage-builder-2.22.0/doc/source/index.rst
--- old/diskimage-builder-2.21.0/doc/source/index.rst 2019-04-04 09:05:37.000000000 +0200
+++ new/diskimage-builder-2.22.0/doc/source/index.rst 2019-05-07 10:59:26.000000000 +0200
@@ -13,21 +13,21 @@
``diskimage-builder`` is used extensively by the `TripleO project
<https://wiki.openstack.org/wiki/TripleO>`__ and within `OpenStack
-Infrastructure <http://docs.openstack.org/infra/system-config/>`__.
+Infrastructure <https://docs.openstack.org/infra/system-config/>`__.
Code
----
Release notes for the latest and previous versions are available at:
-* `http://docs.openstack.org/releasenotes/diskimage-builder/
- <http://docs.openstack.org/releasenotes/diskimage-builder/>`__
+* `https://docs.openstack.org/releasenotes/diskimage-builder/
+ <https://docs.openstack.org/releasenotes/diskimage-builder/>`__
The code is available at:
-* `https://git.openstack.org/cgit/openstack/diskimage-builder/
- <https://git.openstack.org/cgit/openstack/diskimage-builder/>`__
+* `https://opendev.org/openstack/diskimage-builder/
+ <https://opendev.org/openstack/diskimage-builder/>`__
Issues
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/requirements.txt new/diskimage-builder-2.22.0/requirements.txt
--- old/diskimage-builder-2.21.0/requirements.txt 2019-04-04 09:05:37.000000000 +0200
+++ new/diskimage-builder-2.22.0/requirements.txt 2019-05-07 10:59:26.000000000 +0200
@@ -2,7 +2,9 @@
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
Babel!=2.4.0,>=2.3.4 # BSD
-networkx>=1.10 # BSD
+# NOTE(fdegir): NetworkX 2.3 dropped support for Python 2
+networkx>=1.10,<2.3;python_version<'3.0' # BSD
+networkx>=1.10;python_version>='3.4' # BSD
pbr!=2.1.0,>=2.0.0 # Apache-2.0
PyYAML>=3.12 # MIT
flake8<2.6.0,>=2.5.4 # MIT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/roles/dib-functests/tasks/main.yaml new/diskimage-builder-2.22.0/roles/dib-functests/tasks/main.yaml
--- old/diskimage-builder-2.21.0/roles/dib-functests/tasks/main.yaml 2019-04-04 09:05:37.000000000 +0200
+++ new/diskimage-builder-2.22.0/roles/dib-functests/tasks/main.yaml 2019-05-07 10:59:26.000000000 +0200
@@ -13,7 +13,7 @@
- name: Define upper_constraints
set_fact:
- upper_constraints: "{{ ansible_user_dir }}/{{ zuul.projects['git.openstack.org/openstack/requirements'].src_dir }}/upper-constraints.txt"
+ upper_constraints: "{{ ansible_user_dir }}/{{ zuul.projects['opendev.org/openstack/requirements'].src_dir }}/upper-constraints.txt"
- name: Take ourselves out of uppper constraints
lineinfile:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diskimage-builder-2.21.0/tox.ini new/diskimage-builder-2.22.0/tox.ini
--- old/diskimage-builder-2.21.0/tox.ini 2019-04-04 09:05:37.000000000 +0200
+++ new/diskimage-builder-2.22.0/tox.ini 2019-05-07 10:59:26.000000000 +0200
@@ -7,7 +7,7 @@
usedevelop = True
install_command = pip install {opts} {packages}
deps=
- -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
+ -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt}
-r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
commands=
1
0
Hello community,
here is the log from the commit of package python-pem for openSUSE:Factory checked in at 2019-05-22 11:14:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pem (Old)
and /work/SRC/openSUSE:Factory/.python-pem.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pem"
Wed May 22 11:14:22 2019 rev:2 rq:704151 version:19.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pem/python-pem.changes 2019-02-24 17:14:26.356460824 +0100
+++ /work/SRC/openSUSE:Factory/.python-pem.new.5148/python-pem.changes 2019-05-22 11:14:26.398551384 +0200
@@ -1,0 +2,8 @@
+Fri May 17 09:25:10 UTC 2019 - Marketa Calabkova <mcalabkova(a)suse.com>
+
+- update to version 19.1.0
+ * You can now load encrypted PKCS#8 PEM key as ``pem.Key``.
+ * Added support for ``pem.PublicKey`` (``PUBLIC KEY``).
+ * Added support for ``pem.RSAPublicKey`` (``RSA PUBLIC KEY``).
+
+-------------------------------------------------------------------
Old:
----
python-pem-18.2.0.tar.gz
New:
----
python-pem-19.1.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pem.spec ++++++
--- /var/tmp/diff_new_pack.nMitEE/_old 2019-05-22 11:14:28.322551030 +0200
+++ /var/tmp/diff_new_pack.nMitEE/_new 2019-05-22 11:14:28.322551030 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-pem
-Version: 18.2.0
+Version: 19.1.0
Release: 0
Summary: PEM file parsing in Python
License: MIT
@@ -52,9 +52,11 @@
%install
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
+rm -f %{buildroot}/%{python_sitelib}/pem/py.typed #zero length
+rm -f %{buildroot}/%{python3_sitelib}/pem/py.typed #zero length
%check
-%python_expand PYTHONPATH=%{buildroot}%{$python_sitelib} py.test-%{$python_bin_suffix} tests
+%pytest tests
%files %{python_files}
%license LICENSE
++++++ python-pem-18.2.0.tar.gz -> python-pem-19.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/.pre-commit-config.yaml new/pem-19.1.0/.pre-commit-config.yaml
--- old/pem-18.2.0/.pre-commit-config.yaml 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/.pre-commit-config.yaml 2019-03-19 23:11:21.000000000 +0100
@@ -1,14 +1,27 @@
repos:
- repo: https://github.com/ambv/black
- rev: 18.9b0
+ rev: 19.3b0
hooks:
- id: black
- language_version: python3.6
+ language_version: python3.7
+ # override until resolved: https://github.com/ambv/black/issues/402
+ files: \.pyi?$
+ types: []
- repo: https://github.com/asottile/seed-isort-config
- rev: v1.2.0
+ rev: v1.7.0
hooks:
- id: seed-isort-config
- repo: https://github.com/pre-commit/mirrors-isort
- rev: v4.3.4
+ rev: v4.3.15
hooks:
- id: isort
+ language_version: python3.7
+
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v2.1.0
+ hooks:
+ - id: trailing-whitespace
+ - id: end-of-file-fixer
+ - id: debug-statements
+ - id: flake8
+ language_version: python3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/.readthedocs.yml new/pem-19.1.0/.readthedocs.yml
--- old/pem-18.2.0/.readthedocs.yml 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/.readthedocs.yml 2019-03-19 23:11:21.000000000 +0100
@@ -1,6 +1,10 @@
---
+version: 2
python:
- version: 3
- pip_install: true
- extra_requirements:
- - docs
+ version: 3.7
+
+ install:
+ - method: pip
+ path: .
+ extra_requirements:
+ - docs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/.travis.yml new/pem-19.1.0/.travis.yml
--- old/pem-18.2.0/.travis.yml 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/.travis.yml 2019-03-19 23:11:21.000000000 +0100
@@ -1,5 +1,5 @@
-dist: trusty
-sudo: false
+dist: xenial
+group: travis_latest
cache:
directories:
- $HOME/.cache/pip
@@ -9,7 +9,18 @@
matrix:
include:
+ # Lint
+ - python: "3.7"
+ stage: lint
+ env: TOXENV=lint
+ - python: "3.7"
+ env: TOXENV=mypy
+ - python: "3.7"
+ env: TOXENV=manifest
+
+ # Test
- python: "2.7"
+ stage: test
env: TOXENV=py27-twisted
- python: "2.7"
env: TOXENV=py27
@@ -27,43 +38,36 @@
env: TOXENV=py36
- python: "3.7"
env: TOXENV=py37
- dist: xenial
- sudo: true
- python: "3.7"
env: TOXENV=py37-twisted
- dist: xenial
- sudo: true
- python: "pypy"
env: TOXENV=pypy-twisted
+ dist: trusty
- python: "pypy"
env: TOXENV=pypy
+ dist: trusty
- python: "pypy3"
env: TOXENV=pypy3
+ dist: trusty
- python: "pypy3"
env: TOXENV=pypy3-twisted
+ dist: trusty
# Prevent breakage by a new releases
- - python: "3.6-dev"
- env: TOXENV=py36
- python: "3.7-dev"
env: TOXENV=py37
- python: "3.7-dev"
env: TOXENV=py37-twisted
- # Meta
- - python: "3.6"
- env: TOXENV=lint
- - python: "3.6"
- env: TOXENV=mypy
- - python: "3.6"
- env: TOXENV=manifest
- - python: "3.6"
+
+ # Docs
+ - python: "3.7"
+ stage: docs
env: TOXENV=docs
- - python: "3.6"
- env: TOXENV=readme
+ - python: "3.7"
+ env: TOXENV=pypi-description
allow_failures:
- - python: "3.6-dev"
- python: "3.7-dev"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/CHANGELOG.rst new/pem-19.1.0/CHANGELOG.rst
--- old/pem-18.2.0/CHANGELOG.rst 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/CHANGELOG.rst 2019-03-19 23:11:21.000000000 +0100
@@ -7,6 +7,33 @@
The third digit is only for regressions.
+19.1.0 (2019-03-19)
+-------------------
+
+
+Backward-incompatible changes:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+*none*
+
+
+Deprecations:
+^^^^^^^^^^^^^
+
+*none*
+
+
+Changes:
+^^^^^^^^
+
+- You can now load encrypted PKCS#8 PEM key as ``pem.Key``.
+- Added support for ``pem.PublicKey`` (``PUBLIC KEY``).
+- Added support for ``pem.RSAPublicKey`` (``RSA PUBLIC KEY``).
+
+
+----
+
+
18.2.0 (2018-10-09)
-------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/CONTRIBUTING.rst new/pem-19.1.0/CONTRIBUTING.rst
--- old/pem-18.2.0/CONTRIBUTING.rst 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/CONTRIBUTING.rst 2019-03-19 23:11:21.000000000 +0100
@@ -18,6 +18,7 @@
Whether you prefer to rebase on master or merge master into your branch, do whatever is more comfortable for you.
- *Always* add tests and docs for your code.
This is a hard rule; patches with missing tests or documentation can't be merged.
+- Consider updating CHANGELOG.rst to reflect the changes as observed by people using this library.
- Make sure your changes pass our CI_.
You won't get any feedback until it's green unless you ask for it.
- Once you've addressed review feedback, make sure to bump the pull request with a short note, so we know you're done.
@@ -176,8 +177,8 @@
.. _`backward compatibility`: https://pem.readthedocs.io/en/latest/backward-compatibility.html
.. _tox: https://tox.readthedocs.io/
.. _pyenv: https://github.com/pyenv/pyenv
-.. _reStructuredText: http://sphinx-doc.org/rest.html
-.. _semantic newlines: http://rhodesmill.org/brandon/2012/one-sentence-per-line/
+.. _reStructuredText: https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html
+.. _semantic newlines: https://rhodesmill.org/brandon/2012/one-sentence-per-line/
.. _CI: https://travis-ci.org/hynek/pem/
.. _black: https://github.com/ambv/black
.. _pre-commit: https://pre-commit.com/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/MANIFEST.in new/pem-19.1.0/MANIFEST.in
--- old/pem-18.2.0/MANIFEST.in 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/MANIFEST.in 2019-03-19 23:11:21.000000000 +0100
@@ -4,4 +4,4 @@
recursive-include docs *.py
recursive-include docs *.rst
recursive-include docs Makefile
-recursive-include tests *.py
\ No newline at end of file
+recursive-include tests *.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/docs/api.rst new/pem-19.1.0/docs/api.rst
--- old/pem-18.2.0/docs/api.rst 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/docs/api.rst 2019-03-19 23:11:21.000000000 +0100
@@ -26,12 +26,15 @@
The following objects can be returned by the parsing functions.
-.. autoclass:: Certificate()
-.. autoclass:: Key()
-.. autoclass:: RSAPrivateKey(Key)
-.. autoclass:: DHParameters()
-.. autoclass:: CertificateRequest()
-.. autoclass:: CertificateRevocationList()
+.. autoclass:: Certificate(AbstractPEMObject)
+.. autoclass:: Key(AbstractPEMObject)
+.. autoclass:: PrivateKey(Key)
+.. autoclass:: PublicKey(Key)
+.. autoclass:: RSAPrivateKey(PrivateKey)
+.. autoclass:: RSAPublicKey(PublicKey)
+.. autoclass:: DHParameters(AbstractPEMObject)
+.. autoclass:: CertificateRequest(AbstractPEMObject)
+.. autoclass:: CertificateRevocationList(AbstractPEMObject)
Their shared provided API is minimal:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/docs/core.rst new/pem-19.1.0/docs/core.rst
--- old/pem-18.2.0/docs/core.rst 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/docs/core.rst 2019-03-19 23:11:21.000000000 +0100
@@ -1,13 +1,17 @@
Core API
========
-The core API call is the function :func:`pem.parse`::
+The core API call are the function :func:`pem.parse` and the its convenience helper :func:`pem.parse_file`::
import pem
with open("cert.pem", "rb") as f:
certs = pem.parse(f.read())
+ # or:
+
+ certs = pem.parse_file("cert.pem")
+
The function returns a list of valid :ref:`PEM objects <pem-objects>` found in the string supplied.
- They can be transformed using ``str(obj)`` into native strings,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/pyproject.toml new/pem-19.1.0/pyproject.toml
--- old/pem-18.2.0/pyproject.toml 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/pyproject.toml 2019-03-19 23:11:21.000000000 +0100
@@ -1,5 +1,6 @@
[build-system]
-requires = ["setuptools", "wheel"]
+requires = ["setuptools>=40.6.0", "wheel"]
+build-backend = "setuptools.build_meta"
[tool.black]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/setup.cfg new/pem-19.1.0/setup.cfg
--- old/pem-18.2.0/setup.cfg 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/setup.cfg 2019-03-19 23:11:21.000000000 +0100
@@ -24,4 +24,4 @@
not_skip=__init__.py
known_first_party=pem
-known_third_party=OpenSSL,certifi,pem,pretend,pytest,setuptools,sphinx_rtd_theme,twisted
+known_third_party=OpenSSL,certifi,cryptography,pretend,pytest,setuptools,twisted
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/setup.py new/pem-19.1.0/setup.py
--- old/pem-18.2.0/setup.py 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/setup.py 2019-03-19 23:11:21.000000000 +0100
@@ -91,7 +91,9 @@
+ "Release Information\n"
+ "===================\n\n"
+ re.search(
- "(\d+.\d.\d \(.*?\)\n.*?)\n\n\n----\n\n\n", read("CHANGELOG.rst"), re.S
+ r"(\d+.\d.\d \(.*?\)\n.*?)\n\n\n----\n\n\n",
+ read("CHANGELOG.rst"),
+ re.S,
).group(1)
+ "\n\n`Full changelog "
+ "<{url}en/stable/changelog.html>`_.\n\n".format(url=URL)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/src/pem/__init__.py new/pem-19.1.0/src/pem/__init__.py
--- old/pem-18.2.0/src/pem/__init__.py 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/src/pem/__init__.py 2019-03-19 23:11:21.000000000 +0100
@@ -7,7 +7,10 @@
CertificateRevocationList,
DHParameters,
Key,
+ PrivateKey,
+ PublicKey,
RSAPrivateKey,
+ RSAPublicKey,
parse,
parse_file,
)
@@ -19,7 +22,7 @@
twisted = None # type: ignore
-__version__ = "18.2.0"
+__version__ = "19.1.0"
__author__ = "Hynek Schlawack"
__license__ = "MIT"
__description__ = "Easy PEM file parsing in Python."
@@ -35,7 +38,10 @@
"CertificateRevocationList",
"DHParameters",
"Key",
+ "PrivateKey",
+ "PublicKey",
"RSAPrivateKey",
+ "RSAPublicKey",
"parse",
"parse_file",
"twisted",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/src/pem/_core.py new/pem-19.1.0/src/pem/_core.py
--- old/pem-18.2.0/src/pem/_core.py 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/src/pem/_core.py 2019-03-19 23:11:21.000000000 +0100
@@ -122,13 +122,37 @@
class Key(AbstractPEMObject):
"""
- A secret key of unknown type.
+ A key of unknown type.
"""
-class RSAPrivateKey(Key):
+class PrivateKey(Key):
"""
- A secret RSA key.
+ A private key of unknown type.
+
+ .. versionadded:: 19.1.0
+ """
+
+
+class PublicKey(Key):
+ """
+ A public key of unknown type.
+
+ .. versionadded:: 19.1.0
+ """
+
+
+class RSAPrivateKey(PrivateKey):
+ """
+ A private RSA key.
+ """
+
+
+class RSAPublicKey(PublicKey):
+ """
+ A public RSA key.
+
+ .. versionadded:: 19.1.0
"""
@@ -140,8 +164,11 @@
_PEM_TO_CLASS = {
b"CERTIFICATE": Certificate,
- b"PRIVATE KEY": Key,
+ b"PRIVATE KEY": PrivateKey,
+ b"PUBLIC KEY": PublicKey,
+ b"ENCRYPTED PRIVATE KEY": PrivateKey,
b"RSA PRIVATE KEY": RSAPrivateKey,
+ b"RSA PUBLIC KEY": RSAPublicKey,
b"DH PARAMETERS": DHParameters,
b"NEW CERTIFICATE REQUEST": CertificateRequest,
b"CERTIFICATE REQUEST": CertificateRequest,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/tests/data.py new/pem-19.1.0/tests/data.py
--- old/pem-18.2.0/tests/data.py 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/tests/data.py 2019-03-19 23:11:21.000000000 +0100
@@ -54,6 +54,75 @@
-----END RSA PRIVATE KEY-----
"""
+# KEY_PEM_PKCS8_* and KEY_PEM_PKCS5_* contain the same private key, but in
+# different formats.
+
+# PKCS#5 RSA unencrypted.
+# Generated with:
+# openssl genrsa -out private.pem 512
+KEY_PEM_PKCS5_UNENCRYPTED = b"""-----BEGIN RSA PRIVATE KEY-----
+MIIBOwIBAAJBAKX6cRhPHvdyoftEHGiRje3tTLRDnddg01AvgsJJcCFoIjwdgfa9
+aKFdzCcgD/htjvfRZl24M7E89sMUBMNHk8ECAwEAAQJABcBi8OO1AAAh6tIWZe09
+TNRfRxPcwVzilbG/xznCP/YMf72E8hsZazu+HGMKITg9dFeJOyjXZ4e8sD/pL/I6
+0QIhANzULu4JjJxpoTK8NnF/CemF7neLROA18NDB/mao5ZZtAiEAwGnYobinxuHS
+UQh8cT3w7aLsVlarZmCtoapxjW+ObiUCIQCcAltVV/G63vU/PrDH5hQ+opwiYIW8
+UN9c3HC6XkA00QIhAJ8YpfwKgAfNfyZrmuHTspv7Q+mb3jtXoxnyodOtsxpVAiBC
+a4FDqkr+bDwV4SwaGdG/AC40fR3P8hhOADAhtFDwlw==
+-----END RSA PRIVATE KEY-----
+"""
+
+# PKCS#5 RSA encrypted with `test` as password.
+# Generated with:
+# openssl genrsa -des3 -out private.pem 512
+KEY_PEM_PKCS5_ENCRYPTED = b"""-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,8A72BD2DC1C9092F
+
+6LgvCNeXdcuTayEOKhQo2N4IveCP0S3t8xJCeihW9yizLeQFzSjqSfKtmRyImjfg
+fMl8IMDFozR+xVE9uWaIo98wKWpjyu6cytYyjL/8SP3jswBoSP5P9OekUSLifPWM
+ghUEu6tGissqSs/8i2wzLIdho3DdUnUMPZIprENmK6HrYmdRtJT3qMgkFTCtCS9Q
+r9oPm7xKPsfKBhaUHK51JcsPkPjrny8Dl56W0IYf/dfvRPwSr5yFQFLk6Nbgnx0N
+32aT3ZMRCEvOTxhX1cO3f5JqYLxFAGKBFwvsulTisJ6rGYOEDSMBDwZc3sqLvt5g
+h0vKRPqSkylQ0W5shNg0bwbxySiRxJPBL8kWDAbJVfauArabLPuNkUNwmYhIjy7j
+lY0oYw2xeJ9hTUly/Zg3+DI8oYYY3z7WaxPHXEoicCE=
+-----END RSA PRIVATE KEY-----
+"""
+
+# PKCS#8 RSA encrypted with `test` as password.
+# Generated with pkc5 as intermediate file:
+# openssl genrsa -des3 -out private.pem 512
+# openssl pkcs8 -topk8 -in private.pem
+KEY_PEM_PKCS8_ENCRYPTED = b"""-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIBvTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIyqwWErm7rlcCAggA
+MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBAkVu+KRbmcfWIGKzgnjjBMBIIB
+YI3aRS0ebuzb1Tq26/HAq8pplPu+96dM1SnRNXwH0ijmP3fLBjEDH4hB/X9H8arT
+xWSfKQ80+FKI07DsLQKmO+cuB12MAWPSoCNBRtLwGUiwYvlMcBp6XR4NQQ+YG/Nw
+OgZ1InH2w7uSnDPdxV9dZculYWzJE82IohnFVZokO2nYSEfIqr1xVQZht6lfzpx2
+aRje42fpYfgkEm13w4oJKIlekzA9M4CeYku7Q4l9GDSHRmoeypMSHPI8RFV9pxub
+ME3AMXGcRioJ0Ic/cpmwqFaJbTVRPsqFVEsMCz1T/CQ4oLjPTWg+zkxfsPIyGj7L
+K3yLZmTA6IxSu+wuO/bsbqiM3x718AW6U0FHXd4zk+llu3mUfhTiMYPvN/cedv/M
+wsT85CHM6reIBopGMqeZD965tNEcWPGMEvXXnG71dxxgrfHFv7l/o8+moVRNIQCh
+EArlaXgT3MlI1jb9HoNvVNg=
+-----END ENCRYPTED PRIVATE KEY-----
+"""
+
+# RSA unencrypted
+# Generated with pkc5 as intermediate file:
+# openssl genrsa -des3 -out private.pem 512
+# openssl pkcs8 -topk8 -in private.pem -nocrypt
+KEY_PEM_PKCS8_UNENCRYPTED = b"""-----BEGIN PRIVATE KEY-----
+MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEApfpxGE8e93Kh+0Qc
+aJGN7e1MtEOd12DTUC+CwklwIWgiPB2B9r1ooV3MJyAP+G2O99FmXbgzsTz2wxQE
+w0eTwQIDAQABAkAFwGLw47UAACHq0hZl7T1M1F9HE9zBXOKVsb/HOcI/9gx/vYTy
+GxlrO74cYwohOD10V4k7KNdnh7ywP+kv8jrRAiEA3NQu7gmMnGmhMrw2cX8J6YXu
+d4tE4DXw0MH+Zqjllm0CIQDAadihuKfG4dJRCHxxPfDtouxWVqtmYK2hqnGNb45u
+JQIhAJwCW1VX8bre9T8+sMfmFD6inCJghbxQ31zccLpeQDTRAiEAnxil/AqAB81/
+Jmua4dOym/tD6ZveO1ejGfKh062zGlUCIEJrgUOqSv5sPBXhLBoZ0b8ALjR9Hc/y
+GE4AMCG0UPCX
+-----END PRIVATE KEY-----
+"""
+
+
DH_PEM = b"""-----BEGIN DH PARAMETERS-----
MIICCAKCAgEAj9/hwPNNKlQEANXqFBXViNy9nVpYlqIIHaLhoKdwAFzgYM+9hNSz
FM/k+K5FS5dXrM63Zh9NgTI1M+ZRHJAxM2hhsG8AA333PN+c3exTRGwjQhU16XJg
@@ -135,3 +204,22 @@
-----END X509 CRL-----
""",
]
+KEY_PEM_RSA_PUBLIC = b"""\
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAq4a0j5Za0zUrkJjWWCEXBH44L3+wWQf2VRwNA3ICUHfjwbb0aGwp
+4PaqY9CS88Tzmrwn9yvfkuaxa3dTIaCaoW62C6CwdCu7O2QMFZi4H2oO9NBM2ni1
+rzaKulkvZV4iPGyQSiqJqMy//DAEPVx/kyOkH9oNA62srv95gs8j83inTShhUfF6
+wVtZzTKDkCiNtq9ZEXl4bJnEo4CmPhpI6AKCNxztocyKDU2rV6igIfo3UjV3U8nU
+DPzjzHrBPoXbzXEgY6RkmgJwzCTIkv2BYkMwafY9ogDo4e1fY6JiwWzZlSEgScZb
+VfLmAh4rZNe5PiQtDZiwZkvfSK7+Sxaa4QIDAQAB
+-----END RSA PUBLIC KEY-----"""
+KEY_PEM_PUBLIC = b"""\
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA61BjmfXGEvWmegnBGSuS
++rU9soUg2FnODva32D1AqhwdziwHINFaD1MVlcrYG6XRKfkcxnaXGfFDWHLEvNBS
+EVCgJjtHAGZIm5GL/KA86KDp/CwDFMSwluowcXwDwoyinmeOY9eKyh6aY72xJh7n
+oLBBq1N0bWi1e2i+83txOCg4yV2oVXhBo8pYEJ8LT3el6Smxol3C1oFMVdwPgc0v
+Tl25XucMcG/ALE/KNY6pqC2AQ6R2ERlVgPiUWOPatVkt7+Bs3h5Ramxh7XjBOXeu
+lmCpGSynXNcpZ/06+vofGi/2MlpQZNhHAo8eayMp6FcvNucIpUndo1X8dKMv3Y26
+ZQIDAQAB
+-----END PUBLIC KEY-----"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/tests/test_core.py new/pem-19.1.0/tests/test_core.py
--- old/pem-18.2.0/tests/test_core.py 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/tests/test_core.py 2019-03-19 23:11:21.000000000 +0100
@@ -6,6 +6,10 @@
import certifi
+from cryptography.hazmat.backends import default_backend
+from cryptography.hazmat.primitives import serialization
+from cryptography.hazmat.primitives.asymmetric.rsa import RSAPrivateKey
+
import pem
from pem._compat import text_type
@@ -16,7 +20,12 @@
CERT_PEMS_NO_NEW_LINE,
CRL_PEMS,
DH_PEM,
- KEY_PEM,
+ KEY_PEM_PKCS5_ENCRYPTED,
+ KEY_PEM_PKCS5_UNENCRYPTED,
+ KEY_PEM_PKCS8_ENCRYPTED,
+ KEY_PEM_PKCS8_UNENCRYPTED,
+ KEY_PEM_PUBLIC,
+ KEY_PEM_RSA_PUBLIC,
)
@@ -100,7 +109,7 @@
assert str(key) == "test"
- def test_rsa_key_has_correct_repr(self):
+ def test_rsa_private_key_has_correct_repr(self):
"""
Calling repr on a RSAPrivateKey instance returns the proper string.
"""
@@ -108,6 +117,14 @@
assert "<RSAPrivateKey({0})>".format(TEST_DIGEST) == repr(key)
+ def test_rsa_public_key_has_correct_repr(self):
+ """
+ Calling repr on a RSAPublicKey instance returns the proper string.
+ """
+ key = pem.RSAPublicKey(b"test")
+
+ assert "<RSAPublicKey({0})>".format(TEST_DIGEST) == repr(key)
+
def test_rsa_key_has_correct_str(self):
"""
Calling str on a RSAPrivateKey instance returns the proper string.
@@ -338,16 +355,81 @@
assert object() != cert
+def load_rsa_key(key, password=None):
+ return serialization.load_pem_private_key(
+ key.as_bytes(), password=password, backend=default_backend()
+ )
+
+
class TestParse(object):
- def test_key(self):
+ """
+ Tests for parsing input with one or multiple PEM objects.
+ """
+
+ def test_key_pkcs5_unencrypted(self):
"""
- Parses a PEM string with a key into an RSAPrivateKey.
+ It can load an unencrypted PKCS#5 RSA key as PEM string
+ as an RSAPrivateKey.
"""
- rv = pem.parse(KEY_PEM)
+ rv = pem.parse(KEY_PEM_PKCS5_UNENCRYPTED)
key, = rv
assert isinstance(key, pem.RSAPrivateKey)
- assert KEY_PEM == key.as_bytes()
+ assert KEY_PEM_PKCS5_UNENCRYPTED == key.as_bytes()
+
+ crypto_key = load_rsa_key(key)
+
+ assert isinstance(crypto_key, RSAPrivateKey)
+ assert 512, crypto_key.key_size()
+
+ def test_key_pkcs5_encrypted(self):
+ """
+ It can load an encrypted PKCS#5 RSA key as PEM string
+ as an RSAPrivateKey.
+ """
+
+ rv = pem.parse(KEY_PEM_PKCS5_ENCRYPTED)
+ key, = rv
+
+ assert isinstance(key, pem.RSAPrivateKey)
+ assert KEY_PEM_PKCS5_ENCRYPTED == key.as_bytes()
+
+ crypto_key = load_rsa_key(key, password=b"test")
+
+ assert isinstance(crypto_key, RSAPrivateKey)
+ assert 512, crypto_key.key_size()
+
+ def test_key_pkcs8_unencrypted(self):
+ """
+ It can load an unencrypted PKCS#8 RSA key as PEM string
+ as an Key.
+ """
+ rv = pem.parse(KEY_PEM_PKCS8_UNENCRYPTED)
+ key, = rv
+
+ assert isinstance(key, pem.Key)
+ assert KEY_PEM_PKCS8_UNENCRYPTED == key.as_bytes()
+
+ crypto_key = load_rsa_key(key)
+
+ assert isinstance(crypto_key, RSAPrivateKey)
+ assert 512, crypto_key.key_size()
+
+ def test_key_pkcs8_encrypted(self):
+ """
+ It can load an encrypted PKCS#8 RSA key as PEM string
+ as an Key.
+ """
+ rv = pem.parse(KEY_PEM_PKCS8_ENCRYPTED)
+ key, = rv
+
+ assert isinstance(key, pem.Key)
+ assert KEY_PEM_PKCS8_ENCRYPTED == key.as_bytes()
+
+ crypto_key = load_rsa_key(key, password=b"test")
+
+ assert isinstance(crypto_key, RSAPrivateKey)
+ assert 512, crypto_key.key_size()
def test_certificates(self):
"""
@@ -423,7 +505,24 @@
"""
\n and \r\n are treated equal.
"""
- lf_pem = KEY_PEM.replace(b"\n", b"\r\n")
+ lf_pem = KEY_PEM_PKCS5_UNENCRYPTED.replace(b"\n", b"\r\n")
rv, = pem.parse(lf_pem)
assert rv.as_bytes() == lf_pem
+
+ def test_rsa_public_key(self):
+ """
+ Detects and loads RSA public keys.
+ """
+ key = pem.parse(KEY_PEM_RSA_PUBLIC)[0]
+
+ assert isinstance(key, pem.PublicKey)
+ assert isinstance(key, pem.RSAPublicKey)
+
+ def test_generic_public_key(self):
+ """
+ Detects and loads generic public keys.
+ """
+ key = pem.parse(KEY_PEM_PUBLIC)[0]
+
+ assert isinstance(key, pem.PublicKey)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/tests/test_twisted.py new/pem-19.1.0/tests/test_twisted.py
--- old/pem-18.2.0/tests/test_twisted.py 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/tests/test_twisted.py 2019-03-19 23:11:21.000000000 +0100
@@ -4,7 +4,7 @@
import pytest
-from OpenSSL import SSL, crypto
+from OpenSSL import crypto
from pretend import call, call_recorder, stub
from twisted.internet import ssl
@@ -122,10 +122,10 @@
Extra keyword arguments are passed into CO.
"""
ctxFactory = certificateOptionsFromFiles(
- str(keyCertChainDHFile), method=SSL.TLSv1_METHOD
+ str(keyCertChainDHFile), fixBrokenPeers=True
)
- assert SSL.TLSv1_METHOD is ctxFactory.method
+ assert True is ctxFactory.fixBrokenPeers
def test_catchesMissingKey(self, tmpdir):
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pem-18.2.0/tox.ini new/pem-19.1.0/tox.ini
--- old/pem-18.2.0/tox.ini 2018-10-09 12:00:17.000000000 +0200
+++ new/pem-19.1.0/tox.ini 2019-03-19 23:11:21.000000000 +0100
@@ -1,70 +1,66 @@
[tox]
-envlist = pre-commit,lint,mypy,{py27,py34,py35,py36,py37,pypy,pypy3}{-twisted,},manifest,docs,readme,coverage-report
+envlist = lint,mypy,{py27,py34,py35,py36,py37,pypy,pypy3}{-twisted,},manifest,docs,pypi-description,coverage-report
+isolated_build = true
-[testenv:pre-commit]
+[testenv:lint]
+description = Run all pre-commit hooks.
+basepython = python3.7
skip_install = true
-basepython = python3.6
deps = pre-commit
passenv = HOMEPATH # needed on Windows
-commands = pre-commit run --all-files --verbose
+commands = pre-commit run --all-files
[testenv]
+description = Run tests and measure coverage.
extras = tests
-deps =
- twisted: twisted[tls]
+deps = twisted: twisted[tls]
commands =
{py27,py37}{-twisted,}: coverage run --parallel -m pytest {posargs}
{py34,py35,py36,pypy,pypy3}{-twisted,}: python -m pytest {posargs}
-[testenv:lint]
-skip_install = true
-basepython = python3.6
-extras = tests
-deps =
- flake8
- flake8-isort
- black
-commands =
- flake8 src tests setup.py conftest.py docs/conf.py
- black --check --verbose setup.py conftest.py src tests docs/conf.py
-
-
[testenv:mypy]
-basepython = python3.6
+description = Check types
+basepython = python3.7
extras = tests
-deps =
- mypy
-commands =
- mypy src
+deps = mypy
+commands = mypy src
[testenv:manifest]
-basepython = python3.6
+description = Ensure MANIFEST.in is up to date.
+basepython = python3.7
deps = check-manifest
commands = check-manifest
[testenv:docs]
-basepython = python3.6
+description = Build docs and run doctests.
+basepython = python3.7
extras = docs
-deps =
- twisted[tls]
+deps = twisted[tls]
commands =
sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html
sphinx-build -W -b doctest -d {envtmpdir}/doctrees docs docs/_build/html
-[testenv:readme]
-basepython = python3.6
-deps = readme-renderer
-commands = python setup.py check -r -s
+[testenv:pypi-description]
+description = Ensure README.rst renders on PyPI.
+basepython = python3.7
+skip_install = true
+deps =
+ twine
+ pip >= 18.0.0
+commands =
+ pip wheel -w {envtmpdir}/build --no-deps .
+ twine check {envtmpdir}/build/*
[testenv:coverage-report]
-basepython = python3.6
+description = Report coverage over all test runs.
+basepython = python3.7
deps = coverage
skip_install = true
commands =
1
0
Hello community,
here is the log from the commit of package python-kafka-python for openSUSE:Factory checked in at 2019-05-22 11:14:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-kafka-python (Old)
and /work/SRC/openSUSE:Factory/.python-kafka-python.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-kafka-python"
Wed May 22 11:14:02 2019 rev:6 rq:703797 version:1.4.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-kafka-python/python-kafka-python.changes 2018-12-24 11:38:55.109583801 +0100
+++ /work/SRC/openSUSE:Factory/.python-kafka-python.new.5148/python-kafka-python.changes 2019-05-22 11:14:04.862555350 +0200
@@ -1,0 +2,7 @@
+Fri May 17 20:34:08 UTC 2019 - Meera Belur <mbelur(a)suse.com>
+
+- Update to version 1.4.6
+ * please read the release notes
+ *https://github.com/dpkp/kafka-python/releases
+
+-------------------------------------------------------------------
Old:
----
kafka-python-1.3.3.tar.gz
New:
----
kafka-python-1.4.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-kafka-python.spec ++++++
--- /var/tmp/diff_new_pack.LVsBbX/_old 2019-05-22 11:14:05.394555253 +0200
+++ /var/tmp/diff_new_pack.LVsBbX/_new 2019-05-22 11:14:05.394555253 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-kafka-python
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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-kafka-python
-Version: 1.3.3
+Version: 1.4.6
Release: 0
Summary: Pure Python client for Apache Kafka
License: Apache-2.0
@@ -27,6 +27,7 @@
Source: https://files.pythonhosted.org/packages/source/k/kafka-python/kafka-python-…
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module six}
+BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-six
BuildArch: noarch
@@ -46,6 +47,7 @@
%install
%python_install
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
%files %{python_files}
%license LICENSE
++++++ kafka-python-1.3.3.tar.gz -> kafka-python-1.4.6.tar.gz ++++++
++++ 18387 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-jenkinsapi for openSUSE:Factory checked in at 2019-05-22 11:13:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jenkinsapi (Old)
and /work/SRC/openSUSE:Factory/.python-jenkinsapi.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jenkinsapi"
Wed May 22 11:13:56 2019 rev:8 rq:703793 version:0.3.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jenkinsapi/python-jenkinsapi.changes 2019-02-06 14:07:07.846652413 +0100
+++ /work/SRC/openSUSE:Factory/.python-jenkinsapi.new.5148/python-jenkinsapi.changes 2019-05-22 11:13:56.798556836 +0200
@@ -1,0 +2,15 @@
+Fri May 17 20:23:07 UTC 2019 - Hardik Italia <hitalia(a)suse.com>
+
+- update to 3.0.9:
+ * Updated password
+ * url encode folder name, to fix forward slashes (#702)
+ * Add new method to create job and use it to speedup QueueItem (#699)
+ * See if Jenkins is lazy when loading build history (#698)
+ * Removed python 3.4 and added 3.7 (#695)
+ * Proposed CloudBees integration fix to job.invoke. (#693)
+ * Fix pylint errors (#694)
+ * Add authentication system tests (#686)
+ * Use session id cookie to improve performace (#685)
+ * Parameterize war-filename and locally save hpi-files (#684)
+
+-------------------------------------------------------------------
Old:
----
jenkinsapi-0.3.8.tar.gz
New:
----
jenkinsapi-0.3.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jenkinsapi.spec ++++++
--- /var/tmp/diff_new_pack.QCAkhS/_old 2019-05-22 11:13:57.246556753 +0200
+++ /var/tmp/diff_new_pack.QCAkhS/_new 2019-05-22 11:13:57.250556752 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-jenkinsapi
-Version: 0.3.8
+Version: 0.3.9
Release: 0
Summary: A Python API for accessing resources on a Jenkins continuous integration server
License: MIT
++++++ jenkinsapi-0.3.8.tar.gz -> jenkinsapi-0.3.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/.travis.yml new/jenkinsapi-0.3.9/.travis.yml
--- old/jenkinsapi-0.3.8/.travis.yml 2018-11-26 16:08:36.000000000 +0100
+++ new/jenkinsapi-0.3.9/.travis.yml 2019-04-12 17:07:05.000000000 +0200
@@ -1,17 +1,17 @@
-dist: trusty
+dist: xenial
group: edge
sudo: required
language: python
+jdk:
+- oraclejdk8
python:
- '2.7'
-- '3.4'
- '3.5'
- '3.6'
+- '3.7'
env:
- JENKINS_VERSION=stable
- JENKINS_VERSION=latest
-before_install:
-- jdk_switcher use oraclejdk8
install:
- pip install tox-travis
- python setup.py -q sdist bdist_wheel
@@ -26,10 +26,10 @@
deploy:
user: lechat
password:
- secure: Sx99ZHXkGAxWYn2mDz3U9RQg6Yjta22Tu/9ndXxKIAbyGaFn9jPmpYNB2oNu7/6djlfmNsN9cvGze3FghyToW7YHwRC7pSCVxVlqJb+fFOLbhxJeh2RgmUQRqlhWSs/xjGypNdMkNosuAv08UZr1HX1wgYF3rWnAZFDlDsQeayU=
+ secure: Dn0M+smML+SzgHSVz8w05mkwkg1Eojp7WKvq8NiWSmqH7BlvTNjBszaYCEqIAdXY5vO9p9yx9mupoeLxXJLJlLer61OwHErrXKzUofLfgMJT/mF9WlUfJZgonJcyl5By/MU9vXIlFMAZNae393GJYhj4zQx8xoZXk8HWMMqNXLA=
on:
repo: pycontribs/jenkinsapi
tags: true
provider: pypi
- distributions: "sdist bdist_wheel"
+ distributions: sdist bdist_wheel
skip_cleanup: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/AUTHORS new/jenkinsapi-0.3.9/AUTHORS
--- old/jenkinsapi-0.3.8/AUTHORS 2018-12-27 23:08:08.000000000 +0100
+++ new/jenkinsapi-0.3.9/AUTHORS 2019-04-13 02:46:41.000000000 +0200
@@ -34,6 +34,8 @@
Frantisek Reznicek <frantisek.reznicek(a)centrum.cz>
Giovanni Berlanda-Scorza <38668349+giovanni-superpedestrian(a)users.noreply.github.com>
Hugh Brown <hbrown(a)amplify.com>
+Ikuze <37222566+Ikuze(a)users.noreply.github.com>
+JO2M <37215959+J02M(a)users.noreply.github.com>
Jake Ruth <jake2ruth(a)gmail.com>
James Whitworth <James.Whitworth(a)vicon.com>
James Whitworth <fun4jimmy(a)gmail.com>
@@ -122,6 +124,7 @@
lechat <ctpeko3a(a)gmail.com>
lphoward <larry.howard(a)vanderbilt.edu>
luciali <luciali(a)twitter.com>
+mdear <mdear(a)cisco.com>
mthak <manoj.thakkar(a)gmail.com>
mthakkar <mthakkar(a)cloudera.com>
mvr <matthewvonrocketstein@gmail-dot-com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/ChangeLog new/jenkinsapi-0.3.9/ChangeLog
--- old/jenkinsapi-0.3.8/ChangeLog 2018-12-27 23:08:07.000000000 +0100
+++ new/jenkinsapi-0.3.9/ChangeLog 2019-04-13 02:46:41.000000000 +0200
@@ -1,6 +1,20 @@
CHANGES
=======
+0.3.9
+-----
+
+* Updated password
+* url encode folder name, to fix forward slashes (#702)
+* Add new method to create job and use it to speedup QueueItem (#699)
+* See if Jenkins is lazy when loading build history (#698)
+* Removed python 3.4 and added 3.7 (#695)
+* Proposed CloudBees integration fix to job.invoke. (#693)
+* Fix pylint errors (#694)
+* Add authentication system tests (#686)
+* Use session id cookie to improve performace (#685)
+* Parameterize war-filename and locally save hpi-files (#684)
+
0.3.8
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/PKG-INFO new/jenkinsapi-0.3.9/PKG-INFO
--- old/jenkinsapi-0.3.8/PKG-INFO 2018-12-27 23:08:09.000000000 +0100
+++ new/jenkinsapi-0.3.9/PKG-INFO 2019-04-13 02:46:42.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: jenkinsapi
-Version: 0.3.8
+Version: 0.3.9
Summary: A Python API for accessing resources on a Jenkins continuous-integration server.
Home-page: UNKNOWN
Author: Salim Fadhley, Aleksey Maksimov
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi/jenkins.py new/jenkinsapi-0.3.9/jenkinsapi/jenkins.py
--- old/jenkinsapi-0.3.8/jenkinsapi/jenkins.py 2018-11-26 14:23:11.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi/jenkins.py 2019-04-12 15:45:38.000000000 +0200
@@ -6,6 +6,7 @@
import warnings
import six.moves.urllib.parse as urlparse
+from six.moves.urllib.request import Request, HTTPRedirectHandler, build_opener
from six.moves.urllib.parse import quote as urlquote
from six.moves.urllib.parse import urlencode
from requests import HTTPError, ConnectionError
@@ -15,6 +16,7 @@
from jenkinsapi.credentials import CredentialsById
from jenkinsapi.executors import Executors
from jenkinsapi.jobs import Jobs
+from jenkinsapi.job import Job
from jenkinsapi.view import View
from jenkinsapi.label import Label
from jenkinsapi.nodes import Nodes
@@ -141,6 +143,15 @@
"""
return self.jobs[jobname]
+ def get_job_by_url(self, url, job_name):
+ """
+ Get a job by url
+ :param url: jobs' url
+ :param jobname: name of the job, str
+ :return: Job obj
+ """
+ return Job(url, job_name, self)
+
def has_job(self, jobname):
"""
Does a job by the name specified exist
@@ -543,3 +554,43 @@
raise JenkinsAPIException('Unexpected response %d.' % response.status_code)
return response.text
+
+ def use_auth_cookie(self):
+ assert (self.username and
+ self.baseurl), 'Please provide jenkins url, username '\
+ 'and password to get the session ID cookie.'
+
+ login_url = 'j_acegi_security_check'
+ jenkins_url = '{0}/{1}'.format(self.baseurl, login_url)
+ data = urlencode({'j_username': self.username,
+ 'j_password': self.password}).encode("utf-8")
+
+ class SmartRedirectHandler(HTTPRedirectHandler):
+
+ def extract_cookie(self, setcookie):
+ # Extracts the last cookie.
+ # Example of set-cookie value for python2
+ # ('set-cookie', 'JSESSIONID.30blah=blahblahblah;Path=/;
+ # HttpOnly, JSESSIONID.30ablah=blahblah;Path=/;HttpOnly'),
+ return setcookie.split(',')[-1].split(';')[0].strip('\n\r ')
+
+ def http_error_302(self, req, fp, code, msg, headers):
+ # Jenkins can send several Set-Cookie values sometimes
+ # The valid one is the last one
+ for header, value in headers.items():
+ if header.lower() == 'set-cookie':
+ cookie = self.extract_cookie(value)
+
+ req.headers['Cookie'] = cookie
+ result = HTTPRedirectHandler.http_error_302(self, req, fp,
+ code, msg,
+ headers)
+ result.orig_status = code
+ result.orig_headers = headers
+ result.cookie = cookie
+ return result
+
+ request = Request(jenkins_url, data)
+ opener = build_opener(SmartRedirectHandler())
+ res = opener.open(request)
+ Requester.AUTH_COOKIE = res.cookie
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi/jenkinsbase.py new/jenkinsapi-0.3.9/jenkinsapi/jenkinsbase.py
--- old/jenkinsapi-0.3.8/jenkinsapi/jenkinsbase.py 2018-11-13 01:11:17.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi/jenkinsbase.py 2019-04-12 16:44:27.000000000 +0200
@@ -5,6 +5,7 @@
import ast
import pprint
import logging
+from six.moves.urllib.parse import quote as urlquote
from jenkinsapi import config
from jenkinsapi.custom_exceptions import JenkinsAPIException
@@ -100,7 +101,7 @@
return jobs
def process_job_folder(self, folder, folder_path):
- folder_path += '/job/%s' % folder['name']
+ folder_path += '/job/%s' % urlquote(folder['name'])
data = self.get_data(self.python_api_url(folder_path),
tree='jobs[name,color]')
result = []
@@ -109,7 +110,7 @@
if 'color' not in job.keys():
result += self.process_job_folder(job, folder_path)
else:
- job['url'] = '%s/job/%s' % (folder_path, job['name'])
+ job['url'] = '%s/job/%s' % (folder_path, urlquote(job['name']))
result.append(job)
return result
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi/job.py new/jenkinsapi-0.3.9/jenkinsapi/job.py
--- old/jenkinsapi-0.3.8/jenkinsapi/job.py 2018-11-13 01:11:17.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi/job.py 2019-04-12 15:45:38.000000000 +0200
@@ -90,7 +90,7 @@
def poll(self, tree=None):
data = super(Job, self).poll(tree=tree)
- if not tree:
+ if not tree and not self.jenkins.lazy:
self._data = self._add_missing_builds(self._data)
return data
@@ -211,7 +211,26 @@
redirect_url = response.headers['location']
- if not redirect_url.startswith("%s/queue/item" % self.jenkins.baseurl):
+ #
+ # Enterprise Jenkins implementations such as CloudBees locate their
+ # queue REST API base https://server.domain.com/jenkins/queue/api/
+ # above the team-specific REST API base
+ # https://server.domain.com/jenkins/job/my_team/api/
+ #
+ queue_baseurl_candidates = [self.jenkins.baseurl]
+ scheme, netloc, path, _, query, frag = \
+ urlparse.urlparse(self.jenkins.baseurl)
+ while path:
+ path = '/'.join(path.rstrip('/').split('/')[:-1])
+ queue_baseurl_candidates.append(
+ urlparse.urlunsplit([scheme, netloc, path, query, frag]))
+ redirect_url_valid = False
+ for queue_baseurl_candidate in queue_baseurl_candidates:
+ redirect_url_valid = redirect_url.startswith(
+ "%s/queue/item" % queue_baseurl_candidate)
+ if redirect_url_valid:
+ break
+ if not redirect_url_valid:
raise ValueError("Not a Queue URL: %s" % redirect_url)
qi = QueueItem(redirect_url, self.jenkins)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi/node.py new/jenkinsapi-0.3.9/jenkinsapi/node.py
--- old/jenkinsapi-0.3.8/jenkinsapi/node.py 2018-11-13 01:11:17.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi/node.py 2019-04-12 15:45:38.000000000 +0200
@@ -220,7 +220,8 @@
"temporarilyOffline = %s" %
(self._data['offline'],
self._data['temporarilyOffline']))
- elif self._data['offline'] and self._data['temporarilyOffline']:
+
+ if self._data['offline'] and self._data['temporarilyOffline']:
self.toggle_temporarily_offline()
if self._data['offline']:
raise AssertionError("The node state is still offline, "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi/nodes.py new/jenkinsapi-0.3.9/jenkinsapi/nodes.py
--- old/jenkinsapi-0.3.8/jenkinsapi/nodes.py 2018-11-13 01:11:17.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi/nodes.py 2019-04-12 15:45:38.000000000 +0200
@@ -123,8 +123,8 @@
else:
if item != 'master':
raise UnknownNode('Node %s does not exist' % item)
- else:
- log.info('Requests to remove master node ignored')
+
+ log.info('Requests to remove master node ignored')
def __setitem__(self, name, node_dict):
if not isinstance(node_dict, dict):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi/plugin.py new/jenkinsapi-0.3.9/jenkinsapi/plugin.py
--- old/jenkinsapi-0.3.8/jenkinsapi/plugin.py 2017-12-14 14:59:25.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi/plugin.py 2019-04-12 15:45:38.000000000 +0200
@@ -22,9 +22,9 @@
'"plugin-name@version", not "{0}"')
usage_err = usage_err.format(plugin_string)
raise ValueError(usage_err)
- else:
- shortName, version = plugin_string.split('@')
- return {'shortName': shortName, 'version': version}
+
+ shortName, version = plugin_string.split('@')
+ return {'shortName': shortName, 'version': version}
def __eq__(self, other):
return self.__dict__ == other.__dict__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi/plugins.py new/jenkinsapi-0.3.9/jenkinsapi/plugins.py
--- old/jenkinsapi-0.3.8/jenkinsapi/plugins.py 2018-11-26 14:23:11.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi/plugins.py 2019-04-12 15:45:38.000000000 +0200
@@ -275,13 +275,14 @@
if plugin.shortName in self:
return True # for Jenkins 1.X
time.sleep(interval)
+
if self.jenkins_obj.version.startswith('2'):
raise JenkinsAPIException(
"Problem installing plugin '%s'." % plugin.shortName)
- else:
- log.warning("Plugin '%s' not found in loaded plugins."
- "You may need to restart Jenkins.", plugin.shortName)
- return False
+
+ log.warning("Plugin '%s' not found in loaded plugins."
+ "You may need to restart Jenkins.", plugin.shortName)
+ return False
def __contains__(self, plugin_name):
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi/queue.py new/jenkinsapi-0.3.9/jenkinsapi/queue.py
--- old/jenkinsapi-0.3.8/jenkinsapi/queue.py 2018-11-13 01:11:17.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi/queue.py 2019-04-12 15:45:38.000000000 +0200
@@ -1,11 +1,11 @@
"""
Queue module for jenkinsapi
"""
+import logging
+import time
from requests import HTTPError
from jenkinsapi.jenkinsbase import JenkinsBase
from jenkinsapi.custom_exceptions import UnknownQueueItem, NotBuiltYet
-import logging
-import time
log = logging.getLogger(__name__)
@@ -110,7 +110,10 @@
"""
Return the job associated with this queue item
"""
- return self.jenkins[self._data['task']['name']]
+ return self.jenkins.get_job_by_url(
+ self._data['task']['url'],
+ self._data['task']['name'],
+ )
def get_parameters(self):
"""returns parameters of queue item"""
@@ -131,8 +134,8 @@
def get_build(self):
build_number = self.get_build_number()
- job_name = self.get_job_name()
- return self.jenkins[job_name][build_number]
+ job = self.get_job()
+ return job[build_number]
def block_until_complete(self, delay=5):
build = self.block_until_building(delay)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi/utils/requester.py new/jenkinsapi-0.3.9/jenkinsapi/utils/requester.py
--- old/jenkinsapi-0.3.8/jenkinsapi/utils/requester.py 2018-12-27 23:00:41.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi/utils/requester.py 2019-04-12 15:45:38.000000000 +0200
@@ -37,6 +37,7 @@
"""
VALID_STATUS_CODES = [200, ]
+ AUTH_COOKIE = None
def __init__(self, *args, **kwargs):
@@ -94,6 +95,11 @@
'headers must be a dict, got %s' % repr(headers)
requestKwargs['headers'] = headers
+ if self.AUTH_COOKIE:
+ currentheaders = requestKwargs.get('headers', {})
+ currentheaders.update({'Cookie': self.AUTH_COOKIE})
+ requestKwargs['headers'] = currentheaders
+
requestKwargs['verify'] = self.ssl_verify
requestKwargs['cert'] = self.cert
@@ -186,12 +192,12 @@
if response.status_code not in valid:
if response.status_code == 405: # POST required
raise PostRequired('POST required for url {0}'.format(url))
- else:
- raise JenkinsAPIException(
- 'Operation failed. url={0}, headers={1}, status={2}, '
- 'text={3}'.format(
- response.url, headers, response.status_code,
- response.text.encode('UTF-8')
- )
+
+ raise JenkinsAPIException(
+ 'Operation failed. url={0}, headers={1}, status={2}, '
+ 'text={3}'.format(
+ response.url, headers, response.status_code,
+ response.text.encode('UTF-8')
)
+ )
return response
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi.egg-info/PKG-INFO new/jenkinsapi-0.3.9/jenkinsapi.egg-info/PKG-INFO
--- old/jenkinsapi-0.3.8/jenkinsapi.egg-info/PKG-INFO 2018-12-27 23:08:08.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi.egg-info/PKG-INFO 2019-04-13 02:46:41.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: jenkinsapi
-Version: 0.3.8
+Version: 0.3.9
Summary: A Python API for accessing resources on a Jenkins continuous-integration server.
Home-page: UNKNOWN
Author: Salim Fadhley, Aleksey Maksimov
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi.egg-info/SOURCES.txt new/jenkinsapi-0.3.9/jenkinsapi.egg-info/SOURCES.txt
--- old/jenkinsapi-0.3.8/jenkinsapi.egg-info/SOURCES.txt 2018-12-27 23:08:08.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi.egg-info/SOURCES.txt 2019-04-13 02:46:41.000000000 +0200
@@ -104,6 +104,7 @@
jenkinsapi_tests/systests/get-jenkins-war.sh
jenkinsapi_tests/systests/jenkins_home.tar.gz
jenkinsapi_tests/systests/job_configs.py
+jenkinsapi_tests/systests/test_authentication.py
jenkinsapi_tests/systests/test_credentials.py
jenkinsapi_tests/systests/test_crumbs_requester.py
jenkinsapi_tests/systests/test_downstream_upstream.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi.egg-info/pbr.json new/jenkinsapi-0.3.9/jenkinsapi.egg-info/pbr.json
--- old/jenkinsapi-0.3.8/jenkinsapi.egg-info/pbr.json 2018-12-27 23:08:08.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi.egg-info/pbr.json 2019-04-13 02:46:41.000000000 +0200
@@ -1 +1 @@
-{"git_version": "3c18310", "is_release": true}
\ No newline at end of file
+{"git_version": "b4d62f1", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi_tests/systests/conftest.py new/jenkinsapi-0.3.9/jenkinsapi_tests/systests/conftest.py
--- old/jenkinsapi-0.3.8/jenkinsapi_tests/systests/conftest.py 2018-11-25 03:54:32.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi_tests/systests/conftest.py 2019-04-12 15:45:38.000000000 +0200
@@ -7,6 +7,10 @@
log = logging.getLogger(__name__)
state = {}
+# User/password for authentication testcases
+ADMIN_USER = 'admin'
+ADMIN_PASSWORD = 'admin'
+
# Extra plugins required by the systests
PLUGIN_DEPENDENCIES = [
"http://updates.jenkins-ci.org/latest/"
@@ -54,12 +58,56 @@
del jenkins.credentials[name]
+def _create_admin_user(launched_jenkins):
+ # Groovy script that creates a user "admin/admin" in jenkins
+ # and enable security. "admin" user will be the only user and
+ # have admin permissions. Anonymous cannot read anything.
+ create_admin_groovy = """
+import jenkins.model.*
+import hudson.security.*
+
+def instance = Jenkins.getInstance()
+
+def hudsonRealm = new HudsonPrivateSecurityRealm(false)
+hudsonRealm.createAccount('{0}','{1}')
+instance.setSecurityRealm(hudsonRealm)
+
+def strategy = new FullControlOnceLoggedInAuthorizationStrategy()
+strategy.setAllowAnonymousRead(false)
+instance.setAuthorizationStrategy(strategy)
+ """.format(ADMIN_USER, ADMIN_PASSWORD)
+
+ url = launched_jenkins.jenkins_url
+ jenkins_instance = Jenkins(url)
+ jenkins_instance.run_groovy_script(create_admin_groovy)
+
+
+def _disable_security(launched_jenkins):
+ # Groovy script that disables security in jenkins,
+ # reverting the changes made in "_create_admin_user" function.
+ disable_security_groovy = """
+import jenkins.model.*
+import hudson.security.*
+
+def instance = Jenkins.getInstance()
+instance.disableSecurity()
+instance.save()
+ """
+
+ url = launched_jenkins.jenkins_url
+ jenkins_instance = Jenkins(url, ADMIN_USER, ADMIN_PASSWORD)
+ jenkins_instance.run_groovy_script(disable_security_groovy)
+
+
@pytest.fixture(scope='session')
def launched_jenkins():
systests_dir, _ = os.path.split(__file__)
- war_path = os.path.join(systests_dir, 'jenkins.war')
+ local_orig_dir = os.path.join(systests_dir, 'localinstance_files')
+ if not os.path.exists(local_orig_dir):
+ os.mkdir(local_orig_dir)
+ war_name = 'jenkins.war'
launcher = JenkinsLancher(
- war_path, PLUGIN_DEPENDENCIES,
+ local_orig_dir, systests_dir, war_name, PLUGIN_DEPENDENCIES,
jenkins_url=os.getenv('JENKINS_URL', None)
)
launcher.start()
@@ -81,3 +129,31 @@
_delete_all_credentials(jenkins_instance)
return jenkins_instance
+
+
+(a)pytest.fixture(scope='function')
+def lazy_jenkins(launched_jenkins):
+ url = launched_jenkins.jenkins_url
+
+ jenkins_instance = Jenkins(url, lazy=True)
+
+ _delete_all_jobs(jenkins_instance)
+ _delete_all_views(jenkins_instance)
+ _delete_all_credentials(jenkins_instance)
+
+ return jenkins_instance
+
+
+(a)pytest.fixture(scope='function')
+def jenkins_admin_admin(launched_jenkins, jenkins): # pylint: disable=unused-argument
+ # Using "jenkins" fixture makes sure that jobs/views/credentials are
+ # cleaned before security is enabled.
+ url = launched_jenkins.jenkins_url
+
+ _create_admin_user(launched_jenkins)
+ jenkins_admin_instance = Jenkins(url, ADMIN_USER, ADMIN_PASSWORD)
+
+ yield jenkins_admin_instance
+
+ jenkins_admin_instance.requester.__class__.AUTH_COOKIE = None
+ _disable_security(launched_jenkins)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi_tests/systests/get-jenkins-war.sh new/jenkinsapi-0.3.9/jenkinsapi_tests/systests/get-jenkins-war.sh
--- old/jenkinsapi-0.3.8/jenkinsapi_tests/systests/get-jenkins-war.sh 2017-12-14 14:59:25.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi_tests/systests/get-jenkins-war.sh 2019-04-12 15:45:38.000000000 +0200
@@ -1,16 +1,17 @@
#!/bin/bash
#JENKINS_WAR_URL="http://mirrors.jenkins-ci.org/war/latest/jenkins.war"
-if [[ "$#" -ne 2 ]]; then
- echo "Usage: $0 jenkins_url path_to_store_jenkins"
+if [[ "$#" -ne 3 ]]; then
+ echo "Usage: $0 jenkins_url path_to_store_jenkins war_filename"
exit 1
fi
readonly JENKINS_WAR_URL=$1
readonly JENKINS_PATH=$2
+readonly WAR_FILENAME=$3
-if [[ $(type -t wget) ]]; then wget -O ${JENKINS_PATH}/jenkins.war $JENKINS_WAR_URL
-elif [[ $(type -t curl) ]]; then curl -sSL -o ${JENKINS_PATH}/jenkins.war $JENKINS_WAR_URL
+if [[ $(type -t wget) ]]; then wget -O ${JENKINS_PATH}/${WAR_FILENAME} $JENKINS_WAR_URL
+elif [[ $(type -t curl) ]]; then curl -sSL -o ${JENKINS_PATH}/${WAR_FILENAME} $JENKINS_WAR_URL
else
echo "Could not find wget or curl"
exit 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi_tests/systests/test_authentication.py new/jenkinsapi-0.3.9/jenkinsapi_tests/systests/test_authentication.py
--- old/jenkinsapi-0.3.8/jenkinsapi_tests/systests/test_authentication.py 1970-01-01 01:00:00.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi_tests/systests/test_authentication.py 2019-04-12 15:45:38.000000000 +0200
@@ -0,0 +1,80 @@
+'''
+System tests for authentication functionality
+'''
+
+import pytest
+from jenkinsapi.utils.requester import Requester
+from six.moves.urllib.error import HTTPError
+from requests import HTTPError as REQHTTPError
+from jenkinsapi.jenkins import Jenkins
+
+
+def test_normal_uthentication(jenkins_admin_admin):
+ # No problem with the righ user/pass
+ jenkins_user = Jenkins(jenkins_admin_admin.baseurl,
+ jenkins_admin_admin.username,
+ jenkins_admin_admin.password)
+
+ assert jenkins_user is not None
+
+ # We cannot connect if no user/pass
+ with pytest.raises(REQHTTPError) as http_excep:
+ Jenkins(jenkins_admin_admin.baseurl)
+
+ assert Requester.AUTH_COOKIE is None
+ assert http_excep.value.response.status_code == 403
+
+
+def test_auth_cookie(jenkins_admin_admin):
+ initial_cookie_value = None
+ final_cookie_value = "JSESSIONID"
+ assert initial_cookie_value == Requester.AUTH_COOKIE
+
+ jenkins_admin_admin.use_auth_cookie()
+ result = Requester.AUTH_COOKIE
+ assert result is not None
+ assert final_cookie_value in result
+
+
+def test_wrongauth_cookie(jenkins_admin_admin):
+ initial_cookie_value = None
+ assert initial_cookie_value == Requester.AUTH_COOKIE
+
+ jenkins_admin_admin.username = "fakeuser"
+ jenkins_admin_admin.password = "fakepass"
+
+ with pytest.raises(HTTPError) as http_excep:
+ jenkins_admin_admin.use_auth_cookie()
+
+ assert Requester.AUTH_COOKIE is None
+ assert http_excep.value.code == 401
+
+
+def test_verify_cookie_isworking(jenkins_admin_admin):
+ initial_cookie_value = None
+ final_cookie_value = "JSESSIONID"
+ assert initial_cookie_value == Requester.AUTH_COOKIE
+
+ # Remove requester user/pass
+ jenkins_admin_admin.requester.username = None
+ jenkins_admin_admin.requester.password = None
+
+ # Verify that we cannot connect
+ with pytest.raises(REQHTTPError) as http_excep:
+ jenkins_admin_admin.poll()
+
+ assert Requester.AUTH_COOKIE is None
+ assert http_excep.value.response.status_code == 403
+
+ # Retrieve the auth cookie, we can because we
+ # have right values for jenkins_admin_admin.username
+ # and jenkins_admin_admin.password
+ jenkins_admin_admin.use_auth_cookie()
+
+ result = Requester.AUTH_COOKIE
+ assert result is not None
+ assert final_cookie_value in result
+
+ # Verify that we can connect even with no requester user/pass
+ # If we have the cookie the requester user/pass is not needed
+ jenkins_admin_admin.poll()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi_tests/unittests/test_jenkins.py new/jenkinsapi-0.3.9/jenkinsapi_tests/unittests/test_jenkins.py
--- old/jenkinsapi-0.3.8/jenkinsapi_tests/unittests/test_jenkins.py 2017-12-14 14:59:25.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi_tests/unittests/test_jenkins.py 2019-04-12 15:45:38.000000000 +0200
@@ -1,5 +1,6 @@
import pytest
+import jenkinsapi
from jenkinsapi.plugins import Plugins
from jenkinsapi.utils.requester import Requester
from jenkinsapi.jenkins import Jenkins
@@ -266,3 +267,28 @@
jenkins = Jenkins('http://localhost:8080/',
username='foouser', password='foopassword')
assert jenkins.has_plugin('subversion') is True
+
+
+def test_get_use_auth_cookie(mocker, monkeypatch):
+ COOKIE_VALUE = 'FAKE_COOKIE'
+
+ def fake_opener(redirect_handler): # pylint: disable=unused-argument
+ mock_response = mocker.MagicMock()
+ mock_response.cookie = COOKIE_VALUE
+
+ mock_opener = mocker.MagicMock()
+ mock_opener.open.return_value = mock_response
+ return mock_opener
+
+ def fake_poll(cls, tree=None): # pylint: disable=unused-argument
+ return {}
+
+ monkeypatch.setattr(Jenkins, '_poll', fake_poll)
+ monkeypatch.setattr(Requester, 'AUTH_COOKIE', None)
+ monkeypatch.setattr(jenkinsapi.jenkins, 'build_opener', fake_opener)
+
+ jenkins = Jenkins('http://localhost:8080',
+ username='foouser', password='foopassword')
+
+ jenkins.use_auth_cookie()
+ assert Requester.AUTH_COOKIE == COOKIE_VALUE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi_tests/unittests/test_job_get_all_builds.py new/jenkinsapi-0.3.9/jenkinsapi_tests/unittests/test_job_get_all_builds.py
--- old/jenkinsapi-0.3.8/jenkinsapi_tests/unittests/test_job_get_all_builds.py 2018-11-13 01:11:17.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi_tests/unittests/test_job_get_all_builds.py 2019-04-12 15:45:38.000000000 +0200
@@ -195,10 +195,22 @@
# remaining jobs will be fetched automatically, and to have two calls
# to the Jenkins API
TestJobGetAllBuilds.__get_data_call_count = 0
+ self.J.lazy = False
self.j = Job('http://halob:8080/job/foo/', 'foo', self.J)
self.assertEqual(TestJobGetAllBuilds.__get_data_call_count, 2)
@mock.patch.object(JenkinsBase, 'get_data', fakeGetDataTree)
+ def test_lazy_builds_list_will_not_call_jenkins_twice(self):
+ # The job data contains only one build, so we expect that the
+ # remaining jobs will be fetched automatically, and to have two calls
+ # to the Jenkins API
+ TestJobGetAllBuilds.__get_data_call_count = 0
+ self.J.lazy = True
+ self.j = Job('http://halob:8080/job/foo/', 'foo', self.J)
+ self.assertEqual(TestJobGetAllBuilds.__get_data_call_count, 1)
+ self.J.lazy = False
+
+ @mock.patch.object(JenkinsBase, 'get_data', fakeGetDataTree)
def test_complete_builds_list_will_call_jenkins_once(self):
# The job data contains all builds, so we will not gather remaining
# builds
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi_tests/unittests/test_requester.py new/jenkinsapi-0.3.9/jenkinsapi_tests/unittests/test_requester.py
--- old/jenkinsapi-0.3.8/jenkinsapi_tests/unittests/test_requester.py 2018-12-27 23:00:41.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi_tests/unittests/test_requester.py 2019-04-12 15:45:38.000000000 +0200
@@ -3,6 +3,7 @@
import requests
from jenkinsapi.jenkins import Requester
from jenkinsapi.custom_exceptions import JenkinsAPIException
+from mock import patch
def test_no_parameters_uses_default_values():
@@ -127,6 +128,50 @@
assert req_return['auth'] == ('foo', 'bar')
+@patch('jenkinsapi.jenkins.Requester.AUTH_COOKIE', 'FAKE')
+def test_get_request_dict_cookie():
+ req = Requester('foo', 'bar')
+
+ req_return = req.get_request_dict(
+ params={},
+ data=None,
+ headers=None
+ )
+ assert isinstance(req_return, dict)
+ assert req_return.get('headers')
+ assert req_return.get('headers').get('Cookie')
+ assert req_return.get('headers').get('Cookie') == 'FAKE'
+
+
+@patch('jenkinsapi.jenkins.Requester.AUTH_COOKIE', 'FAKE')
+def test_get_request_dict_updatecookie():
+ req = Requester('foo', 'bar')
+
+ req_return = req.get_request_dict(
+ params={},
+ data=None,
+ headers={'key': 'value'}
+ )
+ assert isinstance(req_return, dict)
+ assert req_return.get('headers')
+ assert req_return.get('headers').get('key')
+ assert req_return.get('headers').get('key') == 'value'
+ assert req_return.get('headers').get('Cookie')
+ assert req_return.get('headers').get('Cookie') == 'FAKE'
+
+
+def test_get_request_dict_nocookie():
+ req = Requester('foo', 'bar')
+
+ req_return = req.get_request_dict(
+ params={},
+ data=None,
+ headers=None
+ )
+ assert isinstance(req_return, dict)
+ assert not req_return.get('headers')
+
+
def test_get_request_dict_wrong_params():
req = Requester('foo', 'bar')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/jenkinsapi_utils/jenkins_launcher.py new/jenkinsapi-0.3.9/jenkinsapi_utils/jenkins_launcher.py
--- old/jenkinsapi-0.3.8/jenkinsapi_utils/jenkins_launcher.py 2018-11-13 01:11:17.000000000 +0100
+++ new/jenkinsapi-0.3.9/jenkinsapi_utils/jenkins_launcher.py 2019-04-12 15:45:38.000000000 +0200
@@ -64,9 +64,15 @@
"""
Launch jenkins
"""
- JENKINS_WAR_URL = "http://mirrors.jenkins-ci.org/war/latest/jenkins.war"
+ JENKINS_WEEKLY_WAR_URL = (
+ "http://mirrors.jenkins-ci.org/war/latest/jenkins.war"
+ )
+ JENKINS_LTS_WAR_URL = (
+ "http://mirrors.jenkins-ci.org/war-stable/latest/jenkins.war"
+ )
- def __init__(self, war_path, plugin_urls=None, jenkins_url=None):
+ def __init__(self, local_orig_dir, systests_dir, war_name, plugin_urls=None,
+ jenkins_url=None):
if jenkins_url is not None:
self.jenkins_url = jenkins_url
self.http_port = urlparse(jenkins_url).port
@@ -83,8 +89,10 @@
self.start_new_instance = True
self.threads = []
- self.war_path = war_path
- self.war_directory, self.war_filename = os.path.split(self.war_path)
+ self.war_path = os.path.join(local_orig_dir, war_name)
+ self.local_orig_dir = local_orig_dir
+ self.systests_dir = systests_dir
+ self.war_filename = war_name
if 'JENKINS_HOME' not in os.environ:
self.jenkins_home = tempfile.mkdtemp(prefix='jenkins-home-')
@@ -96,20 +104,22 @@
self.queue = queue.Queue()
self.plugin_urls = plugin_urls or []
if os.environ.get('JENKINS_VERSION', 'stable') == 'stable':
- self.JENKINS_WAR_URL = (
- 'http://mirrors.jenkins-ci.org/war-stable/latest/jenkins.war'
- )
+ self.JENKINS_WAR_URL = self.JENKINS_LTS_WAR_URL
+ else:
+ self.JENKINS_WAR_URL = self.JENKINS_WEEKLY_WAR_URL
def update_war(self):
- os.chdir(self.war_directory)
+ os.chdir(self.systests_dir)
if os.path.exists(self.war_path):
- log.info("We already have the War file...")
+ log.info("War file already present, delete it to redownload and"
+ " update jenkins")
else:
- log.info("Redownloading Jenkins")
- script_dir = os.path.join(self.war_directory,
+ log.info("Downloading Jenkins War")
+ script_dir = os.path.join(self.systests_dir,
'get-jenkins-war.sh')
subprocess.check_call([script_dir,
- self.JENKINS_WAR_URL, self.war_directory])
+ self.JENKINS_WAR_URL, self.local_orig_dir,
+ self.war_filename])
def update_config(self):
tarball = TarFile.open(fileobj=resource_stream(
@@ -117,27 +127,37 @@
tarball.extractall(path=self.jenkins_home)
def install_plugins(self):
- plugin_dir = os.path.join(self.jenkins_home, 'plugins')
- log.info("Plugins will be installed in '%s'", plugin_dir)
+ plugin_dest_dir = os.path.join(self.jenkins_home, 'plugins')
+ log.info("Plugins will be installed in '%s'", plugin_dest_dir)
- if not os.path.exists(plugin_dir):
- os.mkdir(plugin_dir)
+ if not os.path.exists(plugin_dest_dir):
+ os.mkdir(plugin_dest_dir)
for url in self.plugin_urls:
- self.install_plugin(url, plugin_dir)
+ self.install_plugin(url, plugin_dest_dir)
- def install_plugin(self, hpi_url, plugin_dir):
- log.info("Downloading %s", hpi_url)
+ def install_plugin(self, hpi_url, plugin_dest_dir):
path = urlparse(hpi_url).path
filename = posixpath.basename(path)
- plugin_path = os.path.join(plugin_dir, filename)
- with open(plugin_path, 'wb') as hpi:
- request = requests.get(hpi_url)
- hpi.write(request.content)
+ plugin_orig_dir = os.path.join(self.local_orig_dir, 'plugins')
+ if not os.path.exists(plugin_orig_dir):
+ os.mkdir(plugin_orig_dir)
+ plugin_orig_path = os.path.join(plugin_orig_dir, filename)
+ plugin_dest_path = os.path.join(plugin_dest_dir, filename)
+ if os.path.exists(plugin_orig_path):
+ log.info("%s already locally present, delete the file to redownload"
+ " and update", filename)
+ else:
+ log.info("Downloading %s from %s", filename, hpi_url)
+ with open(plugin_orig_path, 'wb') as hpi:
+ request = requests.get(hpi_url)
+ hpi.write(request.content)
+ log.info("Installing %s", filename)
+ shutil.copy(plugin_orig_path, plugin_dest_path)
# Create an empty .pinned file, so that the downloaded plugin
# will be used, instead of the version bundled in jenkins.war
# See https://wiki.jenkins-ci.org/display/JENKINS/Pinned+Plugins
- open(plugin_path + ".pinned", 'a').close()
+ open(plugin_dest_path + ".pinned", 'a').close()
def stop(self):
if self.start_new_instance:
@@ -176,7 +196,7 @@
self.update_config()
self.install_plugins()
- os.chdir(self.war_directory)
+ os.chdir(self.local_orig_dir)
jenkins_command = ['java',
'-Djenkins.install.runSetupWizard=false',
@@ -236,7 +256,8 @@
jl = JenkinsLancher(
'/home/sal/workspace/jenkinsapi/src/'
- 'jenkinsapi_tests/systests/jenkins.war'
+ 'jenkinsapi_tests/systests/',
+ 'jenkins.war'
)
jl.start()
log.info("Jenkins was launched...")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jenkinsapi-0.3.8/tox.ini new/jenkinsapi-0.3.9/tox.ini
--- old/jenkinsapi-0.3.8/tox.ini 2018-11-13 01:11:17.000000000 +0100
+++ new/jenkinsapi-0.3.9/tox.ini 2019-04-12 15:45:38.000000000 +0200
@@ -12,7 +12,7 @@
# $ tox # lint/tests for both
#
[tox]
-envlist = py27,py34,py35,py36
+envlist = py27,py35,py36,py37
[testenv]
deps=-rtest-requirements.txt
1
0
Hello community,
here is the log from the commit of package python-jupyter_console for openSUSE:Factory checked in at 2019-05-22 11:13:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_console (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_console.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_console"
Wed May 22 11:13:49 2019 rev:9 rq:703767 version:6.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jupyter_console/python-jupyter_console.changes 2018-10-18 15:37:19.466230182 +0200
+++ /work/SRC/openSUSE:Factory/.python-jupyter_console.new.5148/python-jupyter_console.changes 2019-05-22 11:13:51.414557827 +0200
@@ -1,0 +2,5 @@
+Fri May 17 18:46:30 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Split jupyter components into own subpackage.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_console.spec ++++++
--- /var/tmp/diff_new_pack.SflRra/_old 2019-05-22 11:13:52.142557692 +0200
+++ /var/tmp/diff_new_pack.SflRra/_new 2019-05-22 11:13:52.146557692 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-jupyter_console
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -20,21 +20,22 @@
%define skip_python2 1
Name: python-jupyter_console
Version: 6.0.0
+%define doc_ver 6.0.0
Release: 0
Summary: Jupyter terminal console
License: BSD-3-Clause
Group: Development/Languages/Python
Url: https://github.com/jupyter/jupyter_console
Source0: https://files.pythonhosted.org/packages/source/j/jupyter_console/jupyter_co…
-Source1: https://media.readthedocs.org/pdf/jupyter-console/v%{version}/jupyter-conso…
-BuildRequires: %{python_module devel}
+Source1: https://media.readthedocs.org/pdf/jupyter-console/v%{doc_ver}/jupyter-conso…
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-jupyter_client
-Requires: python-jupyter_ipykernel
-Requires: python-jupyter_ipython
+Requires: python-ipykernel
+Requires: python-ipython
Requires: python-prompt_toolkit >= 2
+Requires: jupyter-jupyter_console = %{version}
BuildArch: noarch
%python_subpackages
@@ -43,16 +44,31 @@
A terminal-based console frontend for Jupter kernels.
This code is based on the single-process IPython terminal.
-%package -n %{name}-doc
-Summary: Documentation for %{name}
+This package provides the python components.
+
+%package -n jupyter-jupyter_console
+Summary: Jupyter terminal console
+Requires: python3-jupyter_console = %{version}
+
+%description -n jupyter-jupyter_console
+A terminal-based console frontend for Jupter kernels.
+This code is based on the single-process IPython terminal.
+
+This package provides the jupyter components.
+
+%package -n jupyter-jupyter_console-doc
+Summary: Documentation for jupyter-jupyter_console
Group: Documentation/Other
+Provides: python-jupyter_console-doc = %{version}
+Obsoletes: python-jupyter_console-doc <= %{version}
Provides: %{python_module jupyter_console-doc = %{version}}
+Obsoletes: %{python_module jupyter_console-doc <= %{version}}
-%description -n %{name}-doc
+%description -n jupyter-jupyter_console-doc
A terminal-based console frontend for Jupter kernels.
This code is based on the single-process IPython terminal.
-This package provides the help files for %{name}.
+This package provides the help files.
%prep
%setup -q -n jupyter_console-%{version}
@@ -72,10 +88,13 @@
%files %{python_files}
%doc CONTRIBUTING.md README.md
%license COPYING.md
-%{_bindir}/jupyter-console
%{python_sitelib}/*
-%files -n %{name}-doc
+%files -n jupyter-jupyter_console
+%license COPYING.md
+%{_bindir}/jupyter-console
+
+%files -n jupyter-jupyter_console-doc
%license COPYING.md
%doc jupyter-console.pdf
1
0
Hello community,
here is the log from the commit of package qqc2-desktop-style for openSUSE:Factory checked in at 2019-05-22 11:12:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qqc2-desktop-style (Old)
and /work/SRC/openSUSE:Factory/.qqc2-desktop-style.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qqc2-desktop-style"
Wed May 22 11:12:59 2019 rev:22 rq:703393 version:5.58.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/qqc2-desktop-style/qqc2-desktop-style.changes 2019-05-02 19:16:36.113339115 +0200
+++ /work/SRC/openSUSE:Factory/.qqc2-desktop-style.new.5148/qqc2-desktop-style.changes 2019-05-22 11:12:59.642570651 +0200
@@ -1,0 +2,18 @@
+Wed May 15 18:16:19 UTC 2019 - lbeltrame(a)kde.org
+
+- Update to 5.58.0
+ * New feature release
+ * For more details please see:
+ * https://www.kde.org/announcements/kde-frameworks-5.58.0.php
+- Changes since 5.57.0:
+ * Avoid nesting Controls in TextField (kde#406851)
+ * make the mobile text toolbar appear only on press
+ * [TabBar] Update height when TabButtons are added dynamically
+ * refer to the proper id
+ * use the new Kirigami.WheelHandler
+ * Support custom icon size for ToolButton
+ * It compile fine without foreach
+Refreshed patches:
+ * 0001-Fix-MobileTextActionsToolBar.qml-with-Qt-5.9.patch
+
+-------------------------------------------------------------------
Old:
----
qqc2-desktop-style-5.57.0.tar.xz
New:
----
qqc2-desktop-style-5.58.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ qqc2-desktop-style.spec ++++++
--- /var/tmp/diff_new_pack.ylpRH8/_old 2019-05-22 11:13:01.082570286 +0200
+++ /var/tmp/diff_new_pack.ylpRH8/_new 2019-05-22 11:13:01.122570276 +0200
@@ -16,9 +16,9 @@
#
-%define _tar_path 5.57
+%define _tar_path 5.58
Name: qqc2-desktop-style
-Version: 5.57.0
+Version: 5.58.0
Release: 0
Summary: A Qt Quick Controls 2 Style for Desktop UIs
License: GPL-2.0-or-later
++++++ 0001-Fix-MobileTextActionsToolBar.qml-with-Qt-5.9.patch ++++++
--- /var/tmp/diff_new_pack.ylpRH8/_old 2019-05-22 11:13:01.358570216 +0200
+++ /var/tmp/diff_new_pack.ylpRH8/_new 2019-05-22 11:13:01.374570212 +0200
@@ -7,36 +7,34 @@
org.kde.desktop/private/MobileTextActionsToolBar.qml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-diff --git a/org.kde.desktop/private/MobileTextActionsToolBar.qml b/org.kde.desktop/private/MobileTextActionsToolBar.qml
-index e1e0043..c0953a2 100644
---- a/org.kde.desktop/private/MobileTextActionsToolBar.qml
-+++ b/org.kde.desktop/private/MobileTextActionsToolBar.qml
-@@ -57,7 +57,7 @@ Popup {
+Index: qqc2-desktop-style-5.56.0git.20190424T214652~06ea48c/org.kde.desktop/private/MobileTextActionsToolBar.qml
+===================================================================
+--- qqc2-desktop-style-5.56.0git.20190424T214652~06ea48c.orig/org.kde.desktop/private/MobileTextActionsToolBar.qml 2019-04-25 08:40:38.789971927 +0200
++++ qqc2-desktop-style-5.56.0git.20190424T214652~06ea48c/org.kde.desktop/private/MobileTextActionsToolBar.qml 2019-04-25 08:42:16.320959453 +0200
+@@ -58,7 +58,7 @@
contentItem: RowLayout {
ToolButton {
focusPolicy: Qt.NoFocus
- icon.name: "edit-cut"
+ @DISABLE_UNDER_QQC2_2_3@ icon.name: "edit-cut"
- visible: controlRoot.selectedText.length > 0
+ visible: controlRoot.selectedText.length > 0 && (!controlRoot.hasOwnProperty("echoMode") || controlRoot.echoMode === TextInput.Normal)
onClicked: {
controlRoot.cut();
-@@ -65,7 +65,7 @@ Popup {
+@@ -66,7 +66,7 @@
}
ToolButton {
focusPolicy: Qt.NoFocus
- icon.name: "edit-copy"
+ @DISABLE_UNDER_QQC2_2_3@ icon.name: "edit-copy"
- visible: controlRoot.selectedText.length > 0
+ visible: controlRoot.selectedText.length > 0 && (!controlRoot.hasOwnProperty("echoMode") || controlRoot.echoMode === TextInput.Normal)
onClicked: {
controlRoot.copy();
-@@ -73,7 +73,7 @@ Popup {
+@@ -74,7 +74,7 @@
}
ToolButton {
focusPolicy: Qt.NoFocus
- icon.name: "edit-paste"
+ @DISABLE_UNDER_QQC2_2_3@ icon.name: "edit-paste"
+ visible: controlRoot.canPaste
onClicked: {
controlRoot.paste();
- }
---
-2.20.1
++++++ qqc2-desktop-style-5.57.0.tar.xz -> qqc2-desktop-style-5.58.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-5.57.0/CMakeLists.txt new/qqc2-desktop-style-5.58.0/CMakeLists.txt
--- old/qqc2-desktop-style-5.57.0/CMakeLists.txt 2019-04-07 09:21:46.000000000 +0200
+++ new/qqc2-desktop-style-5.58.0/CMakeLists.txt 2019-05-05 00:46:57.000000000 +0200
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.5)
-set(KF5_VERSION "5.57.0") # handled by release scripts
-set(KF5_DEP_VERSION "5.57.0") # handled by release scripts
+set(KF5_VERSION "5.58.0") # handled by release scripts
+set(KF5_DEP_VERSION "5.58.0") # handled by release scripts
project(qqc2-desktop-style VERSION ${KF5_VERSION})
@@ -21,7 +21,7 @@
################# set KDE specific information #################
-find_package(ECM 5.57.0 REQUIRED NO_MODULE)
+find_package(ECM 5.58.0 REQUIRED NO_MODULE)
# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
@@ -87,7 +87,7 @@
SOVERSION 5)
#########################################################################
-
+add_definitions(-DQT_NO_FOREACH)
add_subdirectory(plugin)
if (KF5IconThemes_FOUND AND KF5WidgetsAddons_FOUND)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-5.57.0/org.kde.desktop/ComboBox.qml new/qqc2-desktop-style-5.58.0/org.kde.desktop/ComboBox.qml
--- old/qqc2-desktop-style-5.57.0/org.kde.desktop/ComboBox.qml 2019-04-07 09:21:46.000000000 +0200
+++ new/qqc2-desktop-style-5.58.0/org.kde.desktop/ComboBox.qml 2019-05-05 00:46:57.000000000 +0200
@@ -151,6 +151,9 @@
}
}
+ onTextChanged: Private.MobileTextActionsToolBar.shouldBeVisible = false;
+ onPressed: Private.MobileTextActionsToolBar.shouldBeVisible = true;
+
onPressAndHold: {
if (!Kirigami.Settings.tabletMode) {
return;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-5.57.0/org.kde.desktop/ScrollView.qml new/qqc2-desktop-style-5.58.0/org.kde.desktop/ScrollView.qml
--- old/qqc2-desktop-style-5.57.0/org.kde.desktop/ScrollView.qml 2019-04-07 09:21:46.000000000 +0200
+++ new/qqc2-desktop-style-5.58.0/org.kde.desktop/ScrollView.qml 2019-05-05 00:46:57.000000000 +0200
@@ -23,7 +23,7 @@
import QtQuick 2.9
import QtQuick.Controls @QQC2_VERSION@
import QtQuick.Templates @QQC2_VERSION@ as T
-import org.kde.kirigami 2.4 as Kirigami
+import org.kde.kirigami 2.9 as Kirigami
import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate
T.ScrollView {
@@ -35,9 +35,6 @@
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: scrollHelper.flickableItem ? scrollHelper.flickableItem.contentWidth : 0
- contentHeight: scrollHelper.flickableItem ? scrollHelper.flickableItem.contentHeight : 0
-
Kirigami.Theme.colorSet: Kirigami.Theme.View
Kirigami.Theme.inherit: !background || !background.visible
@@ -54,88 +51,24 @@
}
}
- children: [
- MouseArea {
- id: scrollHelper
- anchors.fill: parent
- drag.filterChildren: !Kirigami.Settings.isMobile
- property bool isMobile: !verticalScrollBar.interactive
- onIsMobileChanged: {
- flickableItem.boundsBehavior = scrollHelper.isMobile ? Flickable.DragAndOvershootBounds : Flickable.StopAtBounds;
- }
- readonly property Flickable flickableItem: controlRoot.contentItem
-
- onFlickableItemChanged: {
-
- flickableItem.boundsBehavior = scrollHelper.isMobile ? Flickable.DragAndOvershootBounds : Flickable.StopAtBounds;
-
- //don't make the scrolling items overlap the background borders.
- flickableItem.anchors.margins = Qt.binding(function() { return controlRoot.background && controlRoot.background.visible ? 2 : 0; });
- flickableItem.clip = true;
- flickableItem.interactive = Kirigami.Settings.isMobile
- flickableItem.parent = scrollHelper;
- }
- onPressed: {
- mouse.accepted = false;
- flickableItem.interactive = true;
- }
- onPositionChanged: {
- mouse.accepted = false;
- }
- onReleased: {
- mouse.accepted = false;
- //flickableItem.interactive = false;
- }
- onWheel: {
- if (isMobile || flickableItem.contentHeight < flickableItem.height) {
- return;
- }
-
- flickableItem.interactive = false;
- var y = wheel.pixelDelta.y != 0 ? wheel.pixelDelta.y : wheel.angleDelta.y / 8
-
- //if we don't have a pixeldelta, apply the configured mouse wheel lines
- if (!wheel.pixelDelta.y) {
- y *= Kirigami.Settings.mouseWheelScrollLines;
- }
-
- var minYExtent = flickableItem.topMargin - flickableItem.originY;
- var maxYExtent = flickableItem.height - (flickableItem.contentHeight + flickableItem.bottomMargin + flickableItem.originY);
-
- flickableItem.contentY = Math.min(-maxYExtent, Math.max(-minYExtent, flickableItem.contentY - y));
-
- //this is just for making the scrollbar appear
- flickableItem.flick(0, 0);
- flickableItem.cancelFlick();
- }
-
- Connections {
- target: scrollHelper.flickableItem
- onFlickEnded: {
- scrollHelper.flickableItem.interactive = false;
- scrollHelper.flickableItem.contentY = Math.round(scrollHelper.flickableItem.contentY);
- }
- onMovementEnded: {
- scrollHelper.flickableItem.interactive = false;
- scrollHelper.flickableItem.contentY = Math.round(scrollHelper.flickableItem.contentY);
- }
- }
-
- /*create a background only after Component.onCompleted because:
- * implementations can set their own background in a declarative way
- * ScrollView {background.visible: true} must *not* work, becasue all upstream styles don't have a background so applications using this would break with other styles
- * This is child of scrollHelper as it would break native scrollview finding of the flickable if it was a direct child
- */
- Component {
- id: backgroundComponent
- StylePrivate.StyleItem {
- control: controlRoot
- elementType: "edit"
- visible: false
- sunken: true
- hasFocus: controlRoot.activeFocus || scrollHelper.flickableItem.activeFocus
- hover: controlRoot.hovered
- }
+ data: [
+ Kirigami.WheelHandler {
+ target: controlRoot.contentItem
+ },
+ /*create a background only after Component.onCompleted because:
+ * implementations can set their own background in a declarative way
+ * ScrollView {background.visible: true} must *not* work, becasue all upstream styles don't have a background so applications using this would break with other styles
+ * This is child of scrollHelper as it would break native scrollview finding of the flickable if it was a direct child
+ */
+ Component {
+ id: backgroundComponent
+ StylePrivate.StyleItem {
+ control: controlRoot
+ elementType: "edit"
+ visible: false
+ sunken: true
+ hasFocus: controlRoot.activeFocus || controlRoot.contentItem.activeFocus
+ hover: controlRoot.hovered
}
}
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-5.57.0/org.kde.desktop/TabBar.qml new/qqc2-desktop-style-5.58.0/org.kde.desktop/TabBar.qml
--- old/qqc2-desktop-style-5.57.0/org.kde.desktop/TabBar.qml 2019-04-07 09:21:46.000000000 +0200
+++ new/qqc2-desktop-style-5.58.0/org.kde.desktop/TabBar.qml 2019-05-05 00:46:57.000000000 +0200
@@ -40,7 +40,8 @@
contentItem: ListView {
implicitWidth: contentWidth
- implicitHeight: controlRoot.contentModel.get(0).height
+ // The binding to contentModel.count is so it updates when the TabBar is populated on demand
+ implicitHeight: controlRoot.contentModel.get(controlRoot.contentModel.count * 0).height
model: controlRoot.contentModel
currentIndex: controlRoot.currentIndex
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-5.57.0/org.kde.desktop/TextArea.qml new/qqc2-desktop-style-5.58.0/org.kde.desktop/TextArea.qml
--- old/qqc2-desktop-style-5.57.0/org.kde.desktop/TextArea.qml 2019-04-07 09:21:46.000000000 +0200
+++ new/qqc2-desktop-style-5.58.0/org.kde.desktop/TextArea.qml 2019-05-05 00:46:57.000000000 +0200
@@ -63,6 +63,9 @@
}
}
+ onTextChanged: Private.MobileTextActionsToolBar.shouldBeVisible = false;
+ onPressed: Private.MobileTextActionsToolBar.shouldBeVisible = true;
+
onPressAndHold: {
if (!Kirigami.Settings.tabletMode) {
return;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-5.57.0/org.kde.desktop/TextField.qml new/qqc2-desktop-style-5.58.0/org.kde.desktop/TextField.qml
--- old/qqc2-desktop-style-5.57.0/org.kde.desktop/TextField.qml 2019-04-07 09:21:46.000000000 +0200
+++ new/qqc2-desktop-style-5.58.0/org.kde.desktop/TextField.qml 2019-05-05 00:46:57.000000000 +0200
@@ -67,6 +67,9 @@
}
}
+ onTextChanged: Private.MobileTextActionsToolBar.shouldBeVisible = false;
+ onPressed: Private.MobileTextActionsToolBar.shouldBeVisible = true;
+
onPressAndHold: {
if (!Kirigami.Settings.tabletMode) {
return;
@@ -83,13 +86,17 @@
y: rect.y + target.padding
}
- Controls.Label {
+ Text {
id: placeholder
x: controlRoot.leftPadding
y: controlRoot.topPadding
width: controlRoot.width - (controlRoot.leftPadding + controlRoot.rightPadding)
height: controlRoot.height - (controlRoot.topPadding + controlRoot.bottomPadding)
+ // Work around Qt bug where NativeRendering breaks for non-integer scale factors
+ // https://bugreports.qt.io/browse/QTBUG-67007
+ renderType: Screen.devicePixelRatio % 1 !== 0 ? Text.QtRendering : Text.NativeRendering
+
text: controlRoot.placeholderText
font: controlRoot.font
color: Kirigami.Theme.disabledTextColor
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-5.57.0/org.kde.desktop/private/MobileCursor.qml new/qqc2-desktop-style-5.58.0/org.kde.desktop/private/MobileCursor.qml
--- old/qqc2-desktop-style-5.57.0/org.kde.desktop/private/MobileCursor.qml 2019-04-07 09:21:46.000000000 +0200
+++ new/qqc2-desktop-style-5.58.0/org.kde.desktop/private/MobileCursor.qml 2019-05-05 00:46:57.000000000 +0200
@@ -43,6 +43,7 @@
Rectangle {
width: Math.round(Kirigami.Units.gridUnit/1.5)
height: width
+ visible: MobileTextActionsToolBar.shouldBeVisible
anchors {
horizontalCenter: parent.horizontalCenter
verticalCenter: parent.bottom
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-5.57.0/org.kde.desktop/private/MobileTextActionsToolBar.qml new/qqc2-desktop-style-5.58.0/org.kde.desktop/private/MobileTextActionsToolBar.qml
--- old/qqc2-desktop-style-5.57.0/org.kde.desktop/private/MobileTextActionsToolBar.qml 2019-04-07 09:21:46.000000000 +0200
+++ new/qqc2-desktop-style-5.58.0/org.kde.desktop/private/MobileTextActionsToolBar.qml 2019-05-05 00:46:57.000000000 +0200
@@ -33,6 +33,7 @@
modal: false
focus: false
closePolicy: Popup.NoAutoClose
+ property bool shouldBeVisible: false
x: controlRoot ? Math.min(Math.max(0, controlRoot.mapToItem(root.parent, controlRoot.positionToRectangle(controlRoot.selectionStart).x, 0).x - root.width/2), controlRoot.Window.contentItem.width - root.width) : 0
@@ -50,7 +51,7 @@
}
- visible: controlRoot ? Kirigami.Settings.tabletMode && (controlRoot.selectedText.length > 0 || controlRoot.canPaste) : false
+ visible: controlRoot ? shouldBeVisible && Kirigami.Settings.tabletMode && (controlRoot.selectedText.length > 0 || controlRoot.canPaste) : false
width: contentItem.implicitWidth + leftPadding + rightPadding
@@ -58,7 +59,7 @@
ToolButton {
focusPolicy: Qt.NoFocus
icon.name: "edit-cut"
- visible: controlRoot.selectedText.length > 0
+ visible: controlRoot.selectedText.length > 0 && (!controlRoot.hasOwnProperty("echoMode") || controlRoot.echoMode === TextInput.Normal)
onClicked: {
controlRoot.cut();
}
@@ -66,7 +67,7 @@
ToolButton {
focusPolicy: Qt.NoFocus
icon.name: "edit-copy"
- visible: controlRoot.selectedText.length > 0
+ visible: controlRoot.selectedText.length > 0 && (!controlRoot.hasOwnProperty("echoMode") || controlRoot.echoMode === TextInput.Normal)
onClicked: {
controlRoot.copy();
}
@@ -74,6 +75,7 @@
ToolButton {
focusPolicy: Qt.NoFocus
icon.name: "edit-paste"
+ visible: controlRoot.canPaste
onClicked: {
controlRoot.paste();
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qqc2-desktop-style-5.57.0/plugin/kquickstyleitem.cpp new/qqc2-desktop-style-5.58.0/plugin/kquickstyleitem.cpp
--- old/qqc2-desktop-style-5.57.0/plugin/kquickstyleitem.cpp 2019-04-07 09:21:46.000000000 +0200
+++ new/qqc2-desktop-style-5.58.0/plugin/kquickstyleitem.cpp 2019-05-05 00:46:57.000000000 +0200
@@ -331,6 +331,17 @@
} else if (icon.canConvert<QString>()) {
opt->icon = m_theme->iconFromTheme(icon.value<QString>(), m_properties[QStringLiteral("iconColor")].value<QColor>());
}
+ auto iconSize = QSize(m_properties[QStringLiteral("iconWidth")].toInt(), m_properties[QStringLiteral("iconHeight")].toInt());
+ if (iconSize.isEmpty()) {
+ int e = KQuickStyleItem::style()->pixelMetric(QStyle::PM_ToolBarIconSize, m_styleoption, nullptr);
+ if (iconSize.width() <= 0) {
+ iconSize.setWidth(e);
+ }
+ if (iconSize.height() <= 0) {
+ iconSize.setHeight(e);
+ }
+ }
+ opt->iconSize = iconSize;
if (m_properties.value(QStringLiteral("menu")).toBool()) {
opt->subControls |= QStyle::SC_ToolButtonMenu;
@@ -351,9 +362,6 @@
opt->toolButtonStyle = Qt::ToolButtonFollowStyle;
}
- int e = KQuickStyleItem::style()->pixelMetric(QStyle::PM_ToolBarIconSize, m_styleoption, nullptr);
- opt->iconSize = QSize(e, e);
-
const QFont font = qApp->font("QToolButton");
opt->font = font;
opt->fontMetrics = QFontMetrics(font);
1
0
Hello community,
here is the log from the commit of package kmediaplayer for openSUSE:Factory checked in at 2019-05-22 11:12:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kmediaplayer (Old)
and /work/SRC/openSUSE:Factory/.kmediaplayer.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kmediaplayer"
Wed May 22 11:12:55 2019 rev:65 rq:703366 version:5.58.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/kmediaplayer/kmediaplayer.changes 2019-05-02 19:16:33.281333912 +0200
+++ /work/SRC/openSUSE:Factory/.kmediaplayer.new.5148/kmediaplayer.changes 2019-05-22 11:12:55.950571589 +0200
@@ -1,0 +2,9 @@
+Wed May 15 18:16:17 UTC 2019 - lbeltrame(a)kde.org
+
+- Update to 5.58.0
+ * New feature release
+ * For more details please see:
+ * https://www.kde.org/announcements/kde-frameworks-5.58.0.php
+- No code changes since 5.57.0
+
+-------------------------------------------------------------------
Old:
----
kmediaplayer-5.57.0.tar.xz
New:
----
kmediaplayer-5.58.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kmediaplayer.spec ++++++
--- /var/tmp/diff_new_pack.Y02uQZ/_old 2019-05-22 11:12:57.406571219 +0200
+++ /var/tmp/diff_new_pack.Y02uQZ/_new 2019-05-22 11:12:57.438571211 +0200
@@ -17,13 +17,13 @@
%define lname libKF5MediaPlayer5
-%define _tar_path 5.57
+%define _tar_path 5.58
# Full KF5 version (e.g. 5.33.0)
%{!?_kf5_version: %global _kf5_version %{version}}
# Last major and minor KF5 version (e.g. 5.33)
%{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | awk -F. '{print $1"."$2}')}
Name: kmediaplayer
-Version: 5.57.0
+Version: 5.58.0
Release: 0
Summary: Interface for media player KParts
License: LGPL-2.1-or-later
++++++ kmediaplayer-5.57.0.tar.xz -> kmediaplayer-5.58.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kmediaplayer-5.57.0/CMakeLists.txt new/kmediaplayer-5.58.0/CMakeLists.txt
--- old/kmediaplayer-5.57.0/CMakeLists.txt 2019-04-07 09:19:27.000000000 +0200
+++ new/kmediaplayer-5.58.0/CMakeLists.txt 2019-05-05 00:44:45.000000000 +0200
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.5)
-set(KF5_VERSION "5.57.0") # handled by release scripts
-set(KF5_DEP_VERSION "5.57.0") # handled by release scripts
+set(KF5_VERSION "5.58.0") # handled by release scripts
+set(KF5_DEP_VERSION "5.58.0") # handled by release scripts
project(KMediaPlayer VERSION ${KF5_VERSION})
@@ -9,7 +9,7 @@
# CMake stuff from ECM
#
include(FeatureSummary)
-find_package(ECM 5.57.0 NO_MODULE)
+find_package(ECM 5.58.0 NO_MODULE)
set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules")
feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES)
1
0
Hello community,
here is the log from the commit of package kapidox for openSUSE:Factory checked in at 2019-05-22 11:12:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kapidox (Old)
and /work/SRC/openSUSE:Factory/.kapidox.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kapidox"
Wed May 22 11:12:52 2019 rev:65 rq:703328 version:5.58.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/kapidox/kapidox.changes 2019-05-02 19:16:30.141328144 +0200
+++ /work/SRC/openSUSE:Factory/.kapidox.new.5148/kapidox.changes 2019-05-22 11:12:53.134572304 +0200
@@ -1,0 +2,9 @@
+Wed May 15 18:16:15 UTC 2019 - lbeltrame(a)kde.org
+
+- Update to 5.58.0
+ * New feature release
+ * For more details please see:
+ * https://www.kde.org/announcements/kde-frameworks-5.58.0.php
+- No code changes since 5.57.0
+
+-------------------------------------------------------------------
Old:
----
kapidox-5.57.0.tar.xz
New:
----
kapidox-5.58.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kapidox.spec ++++++
--- /var/tmp/diff_new_pack.aOGcKt/_old 2019-05-22 11:12:54.750571894 +0200
+++ /var/tmp/diff_new_pack.aOGcKt/_new 2019-05-22 11:12:54.774571888 +0200
@@ -16,13 +16,13 @@
#
-%define _tar_path 5.57
+%define _tar_path 5.58
# Full KF5 version (e.g. 5.33.0)
%{!?_kf5_version: %global _kf5_version %{version}}
# Last major and minor KF5 version (e.g. 5.33)
%{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | awk -F. '{print $1"."$2}')}
Name: kapidox
-Version: 5.57.0
+Version: 5.58.0
Release: 0
Summary: Scripts and data for building API documentation
License: BSD-2-Clause
++++++ kapidox-5.57.0.tar.xz -> kapidox-5.58.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.57.0/setup.py new/kapidox-5.58.0/setup.py
--- old/kapidox-5.57.0/setup.py 2019-03-25 19:39:33.000000000 +0100
+++ new/kapidox-5.58.0/setup.py 2019-04-13 11:57:17.000000000 +0200
@@ -6,7 +6,7 @@
setup(
name='kapidox',
- version='5.57.0',
+ version='5.58.0',
description='KDE API documentation generation tools',
maintainer = 'Olivier Churlaud',
maintainer_email = 'olivier(a)churlaud.com',
1
0
Hello community,
here is the log from the commit of package python-llfuse for openSUSE:Factory checked in at 2019-05-22 11:12:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-llfuse (Old)
and /work/SRC/openSUSE:Factory/.python-llfuse.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-llfuse"
Wed May 22 11:12:21 2019 rev:4 rq:703195 version:1.3.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-llfuse/python-llfuse.changes 2018-09-28 08:54:04.345671003 +0200
+++ /work/SRC/openSUSE:Factory/.python-llfuse.new.5148/python-llfuse.changes 2019-05-22 11:12:28.810578481 +0200
@@ -1,0 +2,9 @@
+Fri May 10 07:11:40 UTC 2019 - simmphonie(a)opensuse.org
+
+- Update to version 1.3.6
+ * Python-LLFUSE is no longer actively maintained. Unless you are stuck
+ with Python 2.x or libfuse 2.x, we recommended to use the pyfuse3_
+ module instead.
+- Remove upstreamed patch fix-char-cast-to-unsigned-int.patch
+
+-------------------------------------------------------------------
Old:
----
fix-char-cast-to-unsigned-int.patch
llfuse-1.3.5.tar.bz2
llfuse-1.3.5.tar.bz2.asc
python-llfuse.keyring
New:
----
python-llfuse-release-1.3.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-llfuse.spec ++++++
--- /var/tmp/diff_new_pack.IDSe1N/_old 2019-05-22 11:12:29.910578202 +0200
+++ /var/tmp/diff_new_pack.IDSe1N/_new 2019-05-22 11:12:29.914578200 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-llfuse
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,17 +19,15 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%bcond_without python2
Name: python-llfuse
-Version: 1.3.5
+Version: 1.3.6
Release: 0
Summary: Python Bindings for the low-level FUSE API
License: LGPL-2.1-or-later
Group: Development/Libraries/Python
-URL: https://bitbucket.org/nikratio/python-llfuse/
-Source: https://bitbucket.org/nikratio/python-llfuse/downloads/llfuse-%{version}.ta…
-Source1000: https://bitbucket.org/nikratio/python-llfuse/downloads/llfuse-%{version}.ta…
-Source1001: %{name}.keyring
-Patch0: fix-char-cast-to-unsigned-int.patch
-Patch1: fix-test-for-fusermount.patch
+URL: https://github.com/python-llfuse/python-llfuse
+Source: https://github.com/python-llfuse/python-llfuse/archive/release-%{version}.t…
+Patch0: fix-test-for-fusermount.patch
+BuildRequires: %{python_module Cython}
BuildRequires: %{python_module devel}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module setuptools}
@@ -45,6 +43,7 @@
%ifpython2
Requires: python-contextlib2
%endif
+Obsoletes: %{name}-docs
%python_subpackages
%description
@@ -54,29 +53,17 @@
LLFUSE was originally part of S3QL, but has been factored out so that it can be
used by other projects as well.
-%package -n %{name}-docs
-Summary: Documentation for the python bindings for the low-level FUSE API
-Group: Development/Libraries/Python
-Requires: %{name} = %{version}
-BuildArch: noarch
-
-%description -n %{name}-docs
-LLFUSE is a set of Python bindings for the low level FUSE API. It requires at
-least FUSE 2.8.0 and supports both Python 2.x and 3.x.
-
-LLFUSE was originally part of S3QL, but has been factored out so that it can be
-used by other projects as well.
-
-Documentation for the python bindings llfuse
-
%prep
-%setup -q -n llfuse-%{version}
-%autopatch -p1
-
-rm doc/html/.buildinfo
+%setup -q -n python-llfuse-release-%{version}
+%patch0 -p1
dos2unix README.rst
%build
+%python_expand $python setup.py build_cython
+# fix-char-cast-to-unsigned-int
+sed -i 's|udata, i, padding_char);|udata, i, (unsigned char)padding_char);|' src/llfuse.c
+sed -i 's|udata, uoffset+i, chars\[i\]);|udata, uoffset+i, (unsigned char)chars\[i\]);|' src/llfuse.c
+
%python_build
%install
@@ -87,14 +74,11 @@
# Note: There are some tests that are skipped because the user that
# runs rpmbuild should be able to run fusermount but there's no way
# to add it to the trusted group.
-%python_expand PYTHONPATH=%{buildroot}%{$python_sitearch} $python -m pytest test/ -rsx
+%pytest_arch
%files %{python_files}
%doc Changes.rst README.rst
%license LICENSE
%{python_sitearch}
-%files -n %{name}-docs
-%doc doc/html
-
%changelog
1
0
Hello community,
here is the log from the commit of package python-bqplot for openSUSE:Factory checked in at 2019-05-22 11:12:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-bqplot (Old)
and /work/SRC/openSUSE:Factory/.python-bqplot.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-bqplot"
Wed May 22 11:12:03 2019 rev:1 rq:702898 version:0.11.5
Changes:
--------
New Changes file:
--- /dev/null 2019-05-02 15:18:01.516169518 +0200
+++ /work/SRC/openSUSE:Factory/.python-bqplot.new.5148/python-bqplot.changes 2019-05-22 11:12:03.922584801 +0200
@@ -0,0 +1,63 @@
+-------------------------------------------------------------------
+Tue May 14 16:35:14 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Fix dependencies
+
+-------------------------------------------------------------------
+Thu Apr 25 01:59:57 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Update to version 0.11.5
+ * silence brush events on selected_changed
+- Update to version 0.11.4
+ * Scatter label color now follow theme
+ * Fixup color axis domain
+ * Fixup election example notebook
+- Update to version 0.11.3
+ * Fixup interaction layer wrt typed fields
+ * Set # of axis ticks for DateScale by width
+ * fixed an issue where 'selected' wasn't getting updated on empty brush
+ * Revise outlier selection method
+ * Fix d3 selections
+ * not setting default labels in lieu of empty labels
+ * increased pie label font size to 12px
+ * Make fill_opcities work with fill=inside
+- Rename to to match python package naming guidelines.
+- Split jupyter components into own subpackage.
+
+-------------------------------------------------------------------
+Sat Dec 22 07:01:21 UTC 2018 - Todd R <toddrme2178(a)gmail.com>
+
+- Update to version 0.11.2
+ * Merge pull request #742 from ChakriCherukuri/pyplot_fix
+ * fixed an issue with marker strings (default_colors renamed to colors)
+ * use trait instead of setter
+ * fix: empty brush updates brush.selected
+ * Don't squeeze array because of single stacked bar
+ * apply selected styles on redraw
+ * Listen to colorscale changes in GridHeatMap
+ * Adding extrapolation option for ColorScale
+ * Do light/dark styling with JupyterLab theming system.
+ * add auto_detect_outliers property to front-end model
+
+-------------------------------------------------------------------
+Fri Sep 28 04:06:40 UTC 2018 - Todd R <toddrme2178(a)gmail.com>
+
+- Update to version 0.11.1
+ * Fixup notebook links
+ * Fixup marker update in Scatter plot
+ * package-lock update
+
+-------------------------------------------------------------------
+Wed Apr 25 20:11:40 UTC 2018 - toddrme2178(a)gmail.com
+
+- Don't need to manually enable extension.
+
+-------------------------------------------------------------------
+Sun Apr 22 03:46:31 UTC 2018 - toddrme2178(a)gmail.com
+
+- Double-check target directory.
+
+-------------------------------------------------------------------
+Fri Apr 20 20:19:32 UTC 2018 - toddrme2178(a)gmail.com
+
+- Initial version
New:
----
bqplot-0.11.5-py2.py3-none-any.whl
python-bqplot.changes
python-bqplot.spec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-bqplot.spec ++++++
#
# spec file for package python-bqplot
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-bqplot
Version: 0.11.5
Release: 0
Summary: Interactive plotting package for the Jupyter notebook
License: Apache-2.0
Group: Development/Languages/Python
URL: https://github.com/bloomberg/bqplot
Source: https://files.pythonhosted.org/packages/py2.py3/b/bqplot/bqplot-%{version}-…
BuildRequires: %{python_module notebook}
BuildRequires: %{python_module pip}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: jupyter-bqplot = %{version}
Requires: python-ipywidgets >= 7.0.0a8
Requires: python-numpy >= 1.10.4
Requires: python-pandas
Requires: python-traitlets >= 4.3.0
Requires: python-traittypes >= 0.0.6
Provides: python-jupyter_bqplot = %{version}
Obsoletes: python-jupyter_bqplot < %{version}
BuildArch: noarch
# SECTION test requirements
BuildRequires: %{python_module ipywidgets >= 7.0.0a8}
BuildRequires: %{python_module numpy >= 1.10.4}
BuildRequires: %{python_module pandas}
BuildRequires: %{python_module traitlets >= 4.3.0}
BuildRequires: %{python_module traittypes >= 0.0.6}
# /SECTION
%python_subpackages
%description
Plotting system for the Jupyter notebook based on the
interactive Jupyter widgets.
This package provides the python interface.
%package -n jupyter-bqplot
Summary: Interactive plotting package for the Jupyter notebook
Requires: jupyter-notebook
Requires: python3-bqplot = %{version}
%description -n jupyter-bqplot
Plotting system for the Jupyter notebook based on the
interactive Jupyter widgets.
This package provides the jupyter notebook extension.
%prep
%setup -q -c -T
%build
# Not Needed
%install
%python_expand pip%{$python_bin_suffix} install --root=%{buildroot} %{SOURCE0}
%{python_expand sed -i -e "s|^#!%{_bindir}/env python|#!%{__$python}|" %{buildroot}%{$python_sitelib}/bqplot/install.py
chmod a+x %{buildroot}%{$python_sitelib}/bqplot/install.py
$python -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/bqplot/
$python -O -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/bqplot/
%python_expand %fdupes %{buildroot}%{$python_sitelib}
}
%{jupyter_move_config}
cp %{buildroot}%{python3_sitelib}/bqplot-%{version}.dist-info/LICENSE .
%{fdupes %{buildroot}%{_jupyter_prefix} %{buildroot}%{python3_sitelib}}
%check
%{python_expand export PYTHONPATH=%{buildroot}%{$python_sitelib}
$python -c "import bqplot"
}
%files %{python_files}
%license %{python_sitelib}/bqplot-%{version}.dist-info/LICENSE
%{python_sitelib}/bqplot/
%{python_sitelib}/bqplot-%{version}.dist-info/
%files -n jupyter-bqplot
%license LICENSE
%config %{_jupyter_nb_notebook_confdir}/bqplot.json
%{_jupyter_nbextension_dir}/bqplot/
%changelog
1
0
Hello community,
here is the log from the commit of package python-perfume-bench for openSUSE:Factory checked in at 2019-05-22 11:11:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-perfume-bench (Old)
and /work/SRC/openSUSE:Factory/.python-perfume-bench.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-perfume-bench"
Wed May 22 11:11:52 2019 rev:1 rq:702891 version:0.1.6
Changes:
--------
New Changes file:
--- /dev/null 2019-05-02 15:18:01.516169518 +0200
+++ /work/SRC/openSUSE:Factory/.python-perfume-bench.new.5148/python-perfume-bench.changes 2019-05-22 11:11:53.838587361 +0200
@@ -0,0 +1,14 @@
+-------------------------------------------------------------------
+Tue May 14 16:32:08 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Fix license
+
+-------------------------------------------------------------------
+Thu Apr 25 01:59:57 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Rename to to match python package naming guidelines.
+
+-------------------------------------------------------------------
+Tue Jan 8 19:27:37 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- initial version
New:
----
perfume-bench-0.1.6.tar.gz
python-perfume-bench.changes
python-perfume-bench.spec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-perfume-bench.spec ++++++
#
# spec file for package python-perfume-bench
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-perfume-bench
Version: 0.1.6
Release: 0
Summary: Interactive performance benchmarking in Jupyter
License: BSD-3-Clause
Group: Development/Languages/Python
URL: https://github.com/leifwalsh/perfume
Source: https://files.pythonhosted.org/packages/source/p/perfume-bench/perfume-benc…
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-bokeh >= 0.12
Requires: python-ipython >= 5.0
Requires: python-ipywidgets >= 5.0
Requires: python-matplotlib >= 2.0
Requires: python-notebook >= 5.0
Requires: python-numpy >= 1.11
Requires: python-pandas >= 0.19
Requires: python-seaborn >= 0.7
Requires: python-statsmodels >= 0.8
BuildArch: noarch
# SECTION test requirements
BuildRequires: %{python_module bokeh >= 0.12}
BuildRequires: %{python_module ipython >= 5.0}
BuildRequires: %{python_module ipywidgets >= 5.0}
BuildRequires: %{python_module matplotlib >= 2.0}
BuildRequires: %{python_module notebook >= 5.0}
BuildRequires: %{python_module numpy >= 1.11}
BuildRequires: %{python_module pandas >= 0.19}
BuildRequires: %{python_module seaborn >= 0.7}
BuildRequires: %{python_module statsmodels >= 0.8}
# /SECTION
%python_subpackages
%description
Interactive performance benchmarking in Jupyter
%prep
%setup -q -n perfume-bench-%{version}
%build
%python_build
%install
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
%python_exec setup.py test
%files %{python_files}
%doc AUTHORS.rst README.rst
%license LICENSE
%python3_only %{_bindir}/perfume
%{python_sitelib}/*
%changelog
1
0
Hello community,
here is the log from the commit of package python-pycryptodomex for openSUSE:Factory checked in at 2019-05-22 11:11:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pycryptodomex (Old)
and /work/SRC/openSUSE:Factory/.python-pycryptodomex.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pycryptodomex"
Wed May 22 11:11:36 2019 rev:2 rq:702873 version:3.8.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pycryptodomex/python-pycryptodomex.changes 2019-01-10 15:21:07.858467818 +0100
+++ /work/SRC/openSUSE:Factory/.python-pycryptodomex.new.5148/python-pycryptodomex.changes 2019-05-22 11:11:38.110591356 +0200
@@ -1,0 +2,26 @@
+Tue May 14 13:15:38 UTC 2019 - Marketa Calabkova <mcalabkova(a)suse.com>
+
+- Update to 3.8.1
+ * Add support for loading PEM files encrypted with AES192-CBC,
+ AES256-CBC, and AES256-GCM.
+ * When importing ECC keys, ignore EC PARAMS section that was
+ included by some openssl commands.
+ * repr() did not work for ECC.EccKey.
+ * Minimal length for Blowfish cipher is 32 bits, not 40 bits.
+ 3.8.0
+ * Speed-up ECC performance. ECDSA is 33 times faster on the
+ NIST P-256 curve.
+ * Added support for NIST P-384 and P-521 curves.
+ * EccKey has new methods size_in_bits() and size_in_bytes().
+ * Support HMAC-SHA224, HMAC-SHA256, HMAC-SHA384, and HMAC-SHA512
+ in PBE2/PBKDF2.
+ * DER objects were not rejected if their length field had
+ a leading zero.
+ * Allow legacy RC2 ciphers to have 40-bit keys.
+ * point_at_infinity() becomes an instance method for
+ Crypto.PublicKey.ECC.EccKey, from a static one.
+ 3.7.3
+ * GH#258: False positive on PSS signatures when externally
+ provided salt is too long.
+
+-------------------------------------------------------------------
Old:
----
pycryptodome-3.7.2.tar.gz
New:
----
pycryptodome-3.8.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pycryptodomex.spec ++++++
--- /var/tmp/diff_new_pack.GyfIsK/_old 2019-05-22 11:11:39.114591100 +0200
+++ /var/tmp/diff_new_pack.GyfIsK/_new 2019-05-22 11:11:39.114591100 +0200
@@ -20,7 +20,7 @@
%define oldpython python
%bcond_without test
Name: python-pycryptodomex
-Version: 3.7.2
+Version: 3.8.1
Release: 0
Summary: Cryptographic library for Python
License: BSD-2-Clause
++++++ pycryptodome-3.7.2.tar.gz -> pycryptodome-3.8.1.tar.gz ++++++
/work/SRC/openSUSE:Factory/python-pycryptodomex/pycryptodome-3.7.2.tar.gz /work/SRC/openSUSE:Factory/.python-pycryptodomex.new.5148/pycryptodome-3.8.1.tar.gz differ: char 5, line 1
1
0
Hello community,
here is the log from the commit of package minitube for openSUSE:Factory checked in at 2019-05-22 11:11:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/minitube (Old)
and /work/SRC/openSUSE:Factory/.minitube.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "minitube"
Wed May 22 11:11:32 2019 rev:12 rq:701720 version:3.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/minitube/minitube.changes 2018-01-09 14:52:18.570287905 +0100
+++ /work/SRC/openSUSE:Factory/.minitube.new.5148/minitube.changes 2019-05-22 11:11:34.586592327 +0200
@@ -1,0 +2,8 @@
+Wed May 8 21:35:19 UTC 2019 - Alexei Sorokin <sor.alexei(a)meowr.ru>
+
+- Update to version 3.0:
+ * Port from Phonon to MPV.
+ * Support all YouTube video resolutions up to 4K.
+- Switch to SOURCE_DATE_EPOCH for fake build dates.
+
+-------------------------------------------------------------------
@@ -21,0 +30 @@
+
Old:
----
minitube-2.9.tar.gz
New:
----
_service
minitube-3.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ minitube.spec ++++++
--- /var/tmp/diff_new_pack.5mtNP5/_old 2019-05-22 11:11:35.166592153 +0200
+++ /var/tmp/diff_new_pack.5mtNP5/_new 2019-05-22 11:11:35.166592153 +0200
@@ -1,7 +1,7 @@
#
# spec file for package minitube
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,36 +12,39 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: minitube
-Version: 2.9
+Version: 3.0
Release: 0
Summary: Native YouTube Client
-License: GPL-3.0+
+License: GPL-3.0-or-later
Group: Productivity/Multimedia/Video/Players
-Url: http://flavio.tordini.org/minitube
-Source: https://github.com/flaviotordini/%{name}/archive/%{version}.tar.gz#/%{name}…
+URL: https://flavio.tordini.org/minitube
+Source: %{name}-%{version}.tar.xz
# Manpage written by Jakob Haufe <sur5r(a)sur5r.net> for the Debian project.
Source1: minitube.1
+%if 0%{?suse_version} < 1500
Source99: %{name}.changes
+%endif
# PATCH-FIX-OPENSUSE minitube-no-update-check.patch sur5r(a)sur5r.net -- Disable update check.
Patch0: %{name}-no-update-check.patch
BuildRequires: fdupes
BuildRequires: hicolor-icon-theme
BuildRequires: libqt5-linguist
BuildRequires: libqt5-qtdeclarative-devel
+BuildRequires: pkgconfig
BuildRequires: update-desktop-files
BuildRequires: pkgconfig(Qt5DBus)
BuildRequires: pkgconfig(Qt5Network)
BuildRequires: pkgconfig(Qt5Script)
BuildRequires: pkgconfig(Qt5Sql)
BuildRequires: pkgconfig(Qt5Widgets)
+BuildRequires: pkgconfig(Qt5X11Extras)
BuildRequires: pkgconfig(Qt5Xml)
-BuildRequires: pkgconfig(phonon4qt5)
-Requires: phonon4qt5-backend
+BuildRequires: pkgconfig(mpv) >= 0.29.0
Recommends: %{name}-lang
%description
@@ -57,23 +60,28 @@
%prep
%setup -q
%patch0 -p1
+
+%if 0%{?suse_version} < 1500
+SOURCE_DATE="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{_sourcedir}/%{name}.changes")"
+export SOURCE_DATE_EPOCH="$(date -d "$SOURCE_DATE" '+%%s')"
+%endif
# Remove build time references so build-compare can do its work
-FAKE_BUILDDATE=$(LC_ALL=C date -u -r %{SOURCE99} '+%%b %%e %%Y')
-sed -e "s/__DATE__/\"$FAKE_BUILDDATE\"/" -i src/aboutview.cpp
+FAKE_BUILDDATE="$(LC_ALL=C date -u -d "@${SOURCE_DATE_EPOCH}" '+%%b %%e %%Y')"
+sed -i "s/__DATE__/\"$FAKE_BUILDDATE\"/" src/aboutview.cpp
%build
%qmake5 \
"DEFINES+=APP_GOOGLE_API_KEY=AIzaSyBs1wuIgc-QDnk5u7OavF1loJVO0r89B4Y" \
PREFIX=%{_prefix}
-make %{?_smp_mflags}
+make %{?_smp_mflags} V=1
%install
-%{qmake5_install}
-install -Dm 0644 %{SOURCE1} %{buildroot}%{_mandir}/man1/%{name}.1
+%qmake5_install
+install -Dpm 0644 %{SOURCE1} %{buildroot}%{_mandir}/man1/%{name}.1
%suse_update_desktop_file -r %{name} AudioVideo Video Player
%fdupes %{buildroot}%{_datadir}/
-%if 0%{?suse_version} <= 1320
+%if 0%{?suse_version} < 1500
%post
%desktop_database_post
%icon_theme_cache_post
@@ -84,8 +92,8 @@
%endif
%files
-%doc AUTHORS COPYING TODO
-%license CHANGES
+%license COPYING
+%doc AUTHORS CHANGES TODO
%{_bindir}/%{name}
%{_datadir}/%{name}/
%exclude %{_datadir}/%{name}/locale/
@@ -93,12 +101,11 @@
%dir %{_datadir}/icons/hicolor/*/
%dir %{_datadir}/icons/hicolor/*/apps/
%{_datadir}/icons/hicolor/*/apps/%{name}*
-%{_mandir}/man?/%{name}.?%{?ext_man}
-%dir %{_datadir}/appdata
+%dir %{_datadir}/appdata/
%{_datadir}/appdata/%{name}.appdata.xml
+%{_mandir}/man?/%{name}.?%{?ext_man}
%files lang
-%defattr(-,root,root)
%{_datadir}/%{name}/locale/
%changelog
++++++ _service ++++++
<services>
<service mode="disabled" name="tar_scm">
<param name="scm">git</param>
<param name="url">https://github.com/flaviotordini/minitube.git</param>
<param name="filename">minitube</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="revision">3.0</param>
</service>
<service mode="disabled" name="recompress">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service mode="disabled" name="set_version" />
</services>
1
0
Hello community,
here is the log from the commit of package python3-pyside2 for openSUSE:Factory checked in at 2019-05-22 11:10:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-pyside2 (Old)
and /work/SRC/openSUSE:Factory/.python3-pyside2.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-pyside2"
Wed May 22 11:10:55 2019 rev:4 rq:701006 version:5.12.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-pyside2/python3-pyside2.changes 2018-12-31 09:47:27.974163545 +0100
+++ /work/SRC/openSUSE:Factory/.python3-pyside2.new.5148/python3-pyside2.changes 2019-05-22 11:10:57.834597913 +0200
@@ -1,0 +2,20 @@
+Mon May 6 08:19:22 UTC 2019 - Christophe Giboudeaux <christophe(a)krop.fr>
+
+- Update to 5.12.3. No changelog available for this version.
+- Fix the license tag, the shiboken2 subdir uses a different license.
+
+-------------------------------------------------------------------
+Sat Apr 6 17:08:25 UTC 2019 - Christophe Giboudeaux <christophe(a)krop.fr>
+
+- Update to 5.12.2
+ * Added binding for QWebEngineUrlScheme
+ * Fixed a crash related to multiple inheritance
+ * Fixed wrong METADATA for generated wheels
+ * Prevent Python 3.5 from crashing the build
+ Check the changes-* files for the complete list of changes.
+- Drop fix-cmake.patch
+- Drop 0001-Avoid-creation-of-empty-build-directories-in-install.patch
+- Refresh lib64.patch
+- Drop the unused _service file.
+
+-------------------------------------------------------------------
Old:
----
0001-Avoid-creation-of-empty-build-directories-in-install.patch
_service
fix-cmake.patch
pyside-setup-5.12.0.obscpio
New:
----
pyside-setup-everywhere-src-5.12.3.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-pyside2.spec ++++++
--- /var/tmp/diff_new_pack.JG7mv2/_old 2019-05-22 11:10:58.842597979 +0200
+++ /var/tmp/diff_new_pack.JG7mv2/_new 2019-05-22 11:10:58.846597979 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python3-pyside2
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -22,20 +22,17 @@
BuildRequires: python3-devel
BuildRequires: python3-setuptools
Name: python3-pyside2
-
-Version: 5.12.0
+Version: 5.12.3
Release: 0
Summary: Python bindings for Qt
-License: LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later)
+# shiboken2 is licensed under GPL-3.0-with-Qt-Company-Qt-exception-1.1
+License: LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later) AND GPL-3.0-with-Qt-Company-Qt-exception-1.1
Group: Development/Languages/Python
URL: http://wiki.qt.io/Qt_for_Python
-Source0: pyside-setup-%{version}.tar.xz
-Patch1: fix-cmake.patch
-Patch2: lib64.patch
-# PATCH-FIX-UPSTREAM - PYSIDE-882
-Patch3: 0001-Avoid-creation-of-empty-build-directories-in-install.patch
+Source0: https://download.qt.io/official_releases/QtForPython/pyside2/PySide2-%{vers…
+Patch0: lib64.patch
# PATCH-FIX-UPSTREAM - PYSIDE-881
-Patch4: 0001-Remove-unnecessary-she-bang-from-icon-cache.py.patch
+Patch1: 0001-Remove-unnecessary-she-bang-from-icon-cache.py.patch
BuildRequires: cmake
BuildRequires: fdupes
BuildRequires: gcc-c++
@@ -43,53 +40,55 @@
BuildRequires: libqt5-qtdeclarative-private-headers-devel
##### essential modules
-BuildRequires: pkgconfig(Qt5Concurrent)
-BuildConflicts: pkgconfig(Qt5Core) >= 5.13
-BuildRequires: pkgconfig(Qt5Core) >= 5.12
-BuildRequires: pkgconfig(Qt5Network)
-BuildRequires: pkgconfig(Qt5PrintSupport)
-BuildRequires: pkgconfig(Qt5Sql)
-BuildRequires: pkgconfig(Qt5Test)
-BuildRequires: pkgconfig(Qt5Widgets)
-BuildRequires: pkgconfig(Qt5X11Extras)
-BuildRequires: pkgconfig(Qt5Xml)
-BuildRequires: pkgconfig(Qt5XmlPatterns)
+BuildRequires: cmake(Qt5Concurrent)
+BuildConflicts: cmake(Qt5Core) >= 5.13
+BuildRequires: cmake(Qt5Core) >= 5.12
+BuildRequires: cmake(Qt5Network)
+BuildRequires: cmake(Qt5PrintSupport)
+BuildRequires: cmake(Qt5Sql)
+BuildRequires: cmake(Qt5Test)
+BuildRequires: cmake(Qt5Widgets)
+BuildRequires: cmake(Qt5X11Extras)
+BuildRequires: cmake(Qt5Xml)
+BuildRequires: cmake(Qt5XmlPatterns)
##### optional modules
BuildRequires: libQt53DQuickScene2D5
-BuildRequires: pkgconfig(Qt53DAnimation)
-BuildRequires: pkgconfig(Qt53DCore)
-BuildRequires: pkgconfig(Qt53DExtras)
-BuildRequires: pkgconfig(Qt53DInput)
-BuildRequires: pkgconfig(Qt53DLogic)
-BuildRequires: pkgconfig(Qt53DRender)
-BuildRequires: pkgconfig(Qt5Charts)
-BuildRequires: pkgconfig(Qt5DataVisualization)
-BuildRequires: pkgconfig(Qt5Designer)
-BuildRequires: pkgconfig(Qt5Multimedia)
-BuildRequires: pkgconfig(Qt5MultimediaWidgets)
-BuildRequires: pkgconfig(Qt5OpenGL)
-BuildRequires: pkgconfig(Qt5QuickWidgets)
-BuildRequires: pkgconfig(Qt5Script)
-BuildRequires: pkgconfig(Qt5ScriptTools)
-BuildRequires: pkgconfig(Qt5Scxml)
-BuildRequires: pkgconfig(Qt5Svg)
-BuildRequires: pkgconfig(Qt5TextToSpeech)
-BuildRequires: pkgconfig(Qt5WebChannel)
-BuildRequires: pkgconfig(Qt5WebEngineWidgets)
-BuildRequires: pkgconfig(Qt5WebSockets)
-BuildRequires: pkgconfig(Qt5Widgets)
-BuildRequires: pkgconfig(Qt5Xml)
-BuildRequires: pkgconfig(Qt5XmlPatterns)
-#BuildRequires: pkgconfig(Qt5Vector3D)
-# WebKit modules is to be removed when FreeCAD 0.18 is released
-BuildRequires: pkgconfig(Qt5WebKit)
+BuildRequires: cmake(Qt53DAnimation)
+BuildRequires: cmake(Qt53DCore)
+BuildRequires: cmake(Qt53DExtras)
+BuildRequires: cmake(Qt53DInput)
+BuildRequires: cmake(Qt53DLogic)
+BuildRequires: cmake(Qt53DRender)
+BuildRequires: cmake(Qt5Charts)
+BuildRequires: cmake(Qt5DataVisualization)
+BuildRequires: cmake(Qt5Designer)
+BuildRequires: cmake(Qt5Multimedia)
+BuildRequires: cmake(Qt5MultimediaWidgets)
+BuildRequires: cmake(Qt5OpenGL)
+BuildRequires: cmake(Qt5QuickWidgets)
+BuildRequires: cmake(Qt5RemoteObjects)
+BuildRequires: cmake(Qt5Script)
+BuildRequires: cmake(Qt5ScriptTools)
+BuildRequires: cmake(Qt5Scxml)
+BuildRequires: cmake(Qt5Sensors)
+BuildRequires: cmake(Qt5Svg)
+BuildRequires: cmake(Qt5TextToSpeech)
+BuildRequires: cmake(Qt5WebChannel)
+BuildRequires: cmake(Qt5WebEngineWidgets)
+BuildRequires: cmake(Qt5WebSockets)
+BuildRequires: cmake(Qt5Widgets)
+BuildRequires: cmake(Qt5Xml)
+BuildRequires: cmake(Qt5XmlPatterns)
+# FreeCAD 0.18 still uses Qt5Webkit
+BuildRequires: cmake(Qt5WebKit)
BuildRequires: clang-devel >= 3.9
BuildRequires: libxslt-devel
BuildRequires: python3-Sphinx
BuildRequires: python3-idna
BuildRequires: python3-urllib3
+BuildRequires: python3-wheel
%description
The PySide2 project provides Python bindings for the Qt
@@ -113,13 +112,11 @@
Examples and Tutorials for the PySide2 bindings for Qt.
%prep
-%setup -q -n pyside-setup-%{version}
-%patch1 -p1
+%setup -q -n pyside-setup-everywhere-src-%{version}
%if "%{_lib}" == "lib64"
-%patch2 -p1
+%patch0 -p1
%endif
-%patch3 -p1
-%patch4 -p1 -d sources/pyside2-tools/
+%patch1 -p1
%build
export LLVM_INSTALL_DIR=%{_prefix}
@@ -186,6 +183,7 @@
%files
%license LICENSE.*
+%doc dist/changes*
%{_bindir}/*
%{_libdir}/*.so.*
%{python_sitearch}/*
++++++ 0001-Remove-unnecessary-she-bang-from-icon-cache.py.patch ++++++
--- /var/tmp/diff_new_pack.JG7mv2/_old 2019-05-22 11:10:58.862597979 +0200
+++ /var/tmp/diff_new_pack.JG7mv2/_new 2019-05-22 11:10:58.862597979 +0200
@@ -4,13 +4,13 @@
Subject: [PATCH] Remove unnecessary she-bang from icon-cache.py
---
- pyside2uic/icon_cache.py | 1 -
+ sources/pyside2-tools/pyside2uic/icon_cache.py | 1 -
1 file changed, 1 deletion(-)
-diff --git a/pyside2uic/icon_cache.py b/pyside2uic/icon_cache.py
+diff --git a/sources/pyside2-tools/pyside2uic/icon_cache.py b/sources/pyside2-tools/pyside2uic/icon_cache.py
index 523d207..9d0dfe2 100644
---- a/pyside2uic/icon_cache.py
-+++ b/pyside2uic/icon_cache.py
+--- a/sources/pyside2-tools/pyside2uic/icon_cache.py
++++ b/sources/pyside2-tools/pyside2uic/icon_cache.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# This file is part of the PySide project.
++++++ lib64.patch ++++++
--- /var/tmp/diff_new_pack.JG7mv2/_old 2019-05-22 11:10:58.874597980 +0200
+++ /var/tmp/diff_new_pack.JG7mv2/_new 2019-05-22 11:10:58.874597980 +0200
@@ -12,10 +12,10 @@
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/build_scripts/platforms/unix.py b/build_scripts/platforms/unix.py
-index d3767976..63019a0a 100644
+index 83de489..f6498c6 100644
--- a/build_scripts/platforms/unix.py
+++ b/build_scripts/platforms/unix.py
-@@ -80,7 +80,7 @@ def prepare_packages_posix(self, vars):
+@@ -81,7 +81,7 @@ def prepare_packages_posix(self, vars):
# <install>/lib/lib* -> {st_package_name}/
copydir(
@@ -24,7 +24,7 @@
"{st_build_dir}/{st_package_name}",
filter=[
adjusted_lib_name("libshiboken*",
-@@ -155,7 +155,7 @@ def prepare_packages_posix(self, vars):
+@@ -156,7 +156,7 @@ def prepare_packages_posix(self, vars):
# <install>/lib/lib* -> {st_package_name}/
copydir(
@@ -33,24 +33,38 @@
"{st_build_dir}/{st_package_name}",
filter=[
adjusted_lib_name("libpyside*",
+
diff --git a/sources/pyside2/CMakeLists.txt b/sources/pyside2/CMakeLists.txt
-index 1d563fb4..7b8d8b85 100644
+index 1e6f017..fdfb631 100644
--- a/sources/pyside2/CMakeLists.txt
+++ b/sources/pyside2/CMakeLists.txt
-@@ -187,7 +187,7 @@ endif()
+@@ -94,7 +94,7 @@ endif()
option(BUILD_TESTS "Build tests." TRUE)
option(ENABLE_VERSION_SUFFIX "Used to use current version in suffix to generated files. This is used to allow multiples versions installed simultaneous." FALSE)
-set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
+set(LIB_SUFFIX "64" CACHE STRING "Define suffix of directory name (32/64)" )
- set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE)
+ set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE)
if(CMAKE_HOST_APPLE)
set(ALTERNATIVE_QT_INCLUDE_DIR "" CACHE PATH "Deprecated. CMake now finds the proper include dir itself.")
+diff --git a/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp b/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp
+index d3d5c8d..acb1efd 100644
+--- a/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp
++++ b/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp
+@@ -243,7 +243,7 @@ static QString findClangLibDir()
+ {
+ for (const char *envVar : {"LLVM_INSTALL_DIR", "CLANG_INSTALL_DIR"}) {
+ if (qEnvironmentVariableIsSet(envVar)) {
+- const QString path = QFile::decodeName(qgetenv(envVar)) + QLatin1String("/lib");
++ const QString path = QFile::decodeName(qgetenv(envVar)) + QLatin1String("/lib64");
+ if (QFileInfo::exists(path))
+ return path;
+ }
diff --git a/sources/shiboken2/CMakeLists.txt b/sources/shiboken2/CMakeLists.txt
-index 619c0f08..ab1dceff 100644
+index 1e52c42..4cac3ae 100644
--- a/sources/shiboken2/CMakeLists.txt
+++ b/sources/shiboken2/CMakeLists.txt
-@@ -124,7 +124,8 @@ if(MSVC)
+@@ -122,7 +122,8 @@ if(MSVC)
set(CLANG_LIB_NAMES libclang)
endif()
@@ -60,27 +74,11 @@
if (NOT EXISTS ${CLANG_LIBRARY})
string(REPLACE ";" ", " CLANG_LIB_NAMES_STRING "${CLANG_LIB_NAMES}")
message(FATAL_ERROR "Unable to find the Clang library in ${CLANG_DIR}.\
-@@ -333,7 +334,6 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D QT_NO_CAST_FROM_ASCII -D QT_NO_CAST_T
+@@ -309,7 +310,6 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D QT_NO_CAST_FROM_ASCII -D QT_NO_CAST_T
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
- set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE)
+ set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE)
+ set(BIN_INSTALL_DIR "bin" CACHE PATH "The subdirectory relative to the install prefix where dlls will be installed (default is /bin)" FORCE)
- if (WIN32)
-diff --git a/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp b/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp
-index d3d5c8da..acb1efd9 100644
---- a/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp
-+++ b/sources/shiboken2/ApiExtractor/clangparser/compilersupport.cpp
-@@ -243,7 +243,7 @@ static QString findClangLibDir()
- {
- for (const char *envVar : {"LLVM_INSTALL_DIR", "CLANG_INSTALL_DIR"}) {
- if (qEnvironmentVariableIsSet(envVar)) {
-- const QString path = QFile::decodeName(qgetenv(envVar)) + QLatin1String("/lib");
-+ const QString path = QFile::decodeName(qgetenv(envVar)) + QLatin1String("/lib64");
- if (QFileInfo::exists(path))
- return path;
- }
---
-2.19.2
-
1
0
Hello community,
here is the log from the commit of package python-jupyter-require for openSUSE:Factory checked in at 2019-05-22 11:09:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter-require (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter-require.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter-require"
Wed May 22 11:09:58 2019 rev:1 rq:700185 version:0.2.4
Changes:
--------
New Changes file:
--- /dev/null 2019-05-02 15:18:01.516169518 +0200
+++ /work/SRC/openSUSE:Factory/.python-jupyter-require.new.5148/python-jupyter-require.changes 2019-05-22 11:10:02.410594337 +0200
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------
+Wed May 1 17:57:41 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Initial version
New:
----
jupyter_require-0.2.4-py2.py3-none-any.whl
python-jupyter-require.changes
python-jupyter-require.spec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter-require.spec ++++++
#
# spec file for package python-jupyter-require
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-jupyter-require
Version: 0.2.4
Release: 0
License: MIT
Summary: Jupyter nbextension for loading non-python dependencies in Jupyter notebooks
Url: https://github.com/CermakM/jupyter-require
Group: Development/Languages/Python
Source: https://files.pythonhosted.org/packages/py2.py3/j/jupyter-require/jupyter_r…
BuildRequires: %{python_module csscompressor}
BuildRequires: %{python_module daiquiri}
BuildRequires: %{python_module ipython}
BuildRequires: %{python_module ipykernel}
BuildRequires: %{python_module notebook}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module jupyter-contrib-nbextensions}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-csscompressor
Requires: python-daiquiri
Requires: python-ipython
Requires: python-ipykernel
Requires: python-jupyter-contrib-nbextensions
Requires: jupyter-jupyter-require = %{version}
BuildArch: noarch
%python_subpackages
%description
Jupyter nbextension for JavaScript execution and managing linked libraries and
CSS stylesheets in Jupyter notebooks.
This package provides the python interface.
%package -n jupyter-jupyter-require
Summary: Jupyter nbextension for loading non-python dependencies in Jupyter notebooks
Requires: jupyter-ipython
Requires: jupyter-ipykernel
Requires: jupyter-ipykernel
Requires: jupyter-jupyter-contrib-nbextensions
Requires: python3-jupyter-require = %{version}
%description -n jupyter-jupyter-require
Jupyter nbextension for JavaScript execution and managing linked libraries and
CSS stylesheets in Jupyter notebooks.
This package provides the jupyter components.
%prep
%setup -q -c -T
%build
# Not needed
%install
%python_expand pip%{$python_bin_suffix} install --root=%{buildroot} %{SOURCE0}
%jupyter_move_config
%python_expand %fdupes %{buildroot}%{$python_sitelib}
cp %{buildroot}%{python3_sitelib}/jupyter_require-%{version}.dist-info/LICENSE .
%files %{python_files}
%license %{python_sitelib}/jupyter_require-%{version}.dist-info/LICENSE
%{python_sitelib}/jupyter_require-%{version}.dist-info/
%{python_sitelib}/jupyter_require/
%files -n jupyter-jupyter-require
%license LICENSE
%config %{_jupyter_nb_notebook_confdir}/jupyter-require.json
%{_jupyter_nbextension_dir}/jupyter-require/
%changelog
1
0
Hello community,
here is the log from the commit of package python-jupyter_latex_envs for openSUSE:Factory checked in at 2019-05-22 11:09:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_latex_envs (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_latex_envs.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_latex_envs"
Wed May 22 11:09:39 2019 rev:4 rq:699927 version:1.4.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jupyter_latex_envs/python-jupyter_latex_envs.changes 2018-12-24 11:48:08.717094145 +0100
+++ /work/SRC/openSUSE:Factory/.python-jupyter_latex_envs.new.5148/python-jupyter_latex_envs.changes 2019-05-22 11:09:40.230592906 +0200
@@ -1,0 +2,5 @@
+Wed May 1 18:50:20 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Split jupyter components into own package.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_latex_envs.spec ++++++
--- /var/tmp/diff_new_pack.vRQBhZ/_old 2019-05-22 11:09:40.718592937 +0200
+++ /var/tmp/diff_new_pack.vRQBhZ/_new 2019-05-22 11:09:40.722592937 +0200
@@ -26,31 +26,24 @@
Group: Development/Languages/Python
Url: http://github.com/jfbercher/jupyter_latex_envs
Source: https://files.pythonhosted.org/packages/source/j/jupyter_latex_envs/jupyter…
-BuildRequires: %{python_module devel}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-BuildRequires: python3-jupyter_notebook >= 4.0
+BuildRequires: jupyter-notebook >= 4.0
%if %{with test}
BuildRequires: %{python_module entrypoints >= 0.2.2}
BuildRequires: %{python_module jupyter_core}
-BuildRequires: %{python_module jupyter_ipython}
-BuildRequires: %{python_module jupyter_nbconvert}
-BuildRequires: %{python_module jupyter_notebook >= 4.0}
+BuildRequires: %{python_module ipython}
+BuildRequires: %{python_module nbconvert}
+BuildRequires: %{python_module notebook >= 4.0}
BuildRequires: %{python_module traitlets >= 4.1}
%endif
Requires: python-jupyter_core
-Requires: python-jupyter_ipython
-Requires: python-jupyter_nbconvert
-Requires: python-jupyter_notebook >= 4.0
+Requires: python-ipython
+Requires: python-nbconvert
+Requires: python-notebook >= 4.0
Requires: python-traitlets >= 4.1
-%ifpython3
-Requires(post): python-jupyter_notebook
-Requires(preun): python-jupyter_notebook
-%endif
-%ifpython2
-Requires: python3-jupyter_latex_envs = %{version}
-%endif
+Requires: jupyter-jupyter_latex_envs = %{version}
BuildArch: noarch
%python_subpackages
@@ -60,6 +53,26 @@
within markdown cells. Also provides support for labels and
crossreferences, document wide numbering, bibliography, and more.
+This package provides the python interface.
+
+%package -n jupyter-jupyter_latex_envs
+Summary: LaTeX environments for Jupyter notebook
+Requires: jupyter-jupyter_core
+Requires: jupyter-nbconvert
+Requires: jupyter-notebook >= 4.0
+Requires: python3-jupyter_latex_envs = %{version}
+Requires(post): jupyter-notebook
+Requires(preun): jupyter-notebook
+Requires(post): python3-jupyter_latex_envs = %{version}
+Requires(preun): python3-jupyter_latex_envs = %{version}
+
+%description -n jupyter-jupyter_latex_envs
+Jupyter notebook extension which supports (some) LaTeX environments
+within markdown cells. Also provides support for labels and
+crossreferences, document wide numbering, bibliography, and more.
+
+This package provides the jupyter components.
+
%prep
%setup -q -n jupyter_latex_envs-%{version}
rm -r src/latex_envs/static/doc/.ipynb_checkpoints
@@ -72,16 +85,14 @@
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
-PYTHONPATH=%{buildroot}%{python3_sitelib} jupyter nbextension install --nbextensions=%{buildroot}%{_datadir}/jupyter/nbextensions/ --py latex_envs
-%python_expand %fdupes %{buildroot}%{_datadir}/jupyter/nbextensions/
+%{jupyter_nbextension_install latex_envs}
+%{fdupes %{buildroot}%{python3_sitelib} %{buildroot}%{_jupyter_nbextension_dir}}
-%post -n python3-jupyter_latex_envs
-jupyter nbextension enable --system --py latex_envs || true
+%post -n jupyter-jupyter_latex_envs
+%{jupyter_nbextension_enable latex_envs}
-%preun -n python3-jupyter_latex_envs
-if [ $1 = 0 ] && [ -d %{python3_sitelib}/latex_envs/ ] ; then
- jupyter nbextension disable --system --py latex_envs || true
-fi
+%preun -n jupyter-jupyter_latex_envs
+%{jupyter_nbextension_disable latex_envs}
%if %{with test}
%check
@@ -89,11 +100,13 @@
%endif
%files %{python_files}
-%defattr(-,root,root,-)
%doc README.rst
%license LICENSE.txt
%{python_sitelib}/latex_envs
%{python_sitelib}/jupyter_latex_envs-%{version}-py*.egg-info
-%python3_only %{_datadir}/jupyter/nbextensions/latex_envs/
+
+%files -n jupyter-jupyter_latex_envs
+%license LICENSE.txt
+%{_jupyter_nbextension_dir}/latex_envs/
%changelog
1
0
Hello community,
here is the log from the commit of package python-jupyter_highlight_selected_word for openSUSE:Factory checked in at 2019-05-22 11:09:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_highlight_selected_word (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_highlight_selected_word.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_highlight_selected_word"
Wed May 22 11:09:35 2019 rev:4 rq:699926 version:0.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jupyter_highlight_selected_word/python-jupyter_highlight_selected_word.changes 2018-08-04 21:54:56.417450009 +0200
+++ /work/SRC/openSUSE:Factory/.python-jupyter_highlight_selected_word.new.5148/python-jupyter_highlight_selected_word.changes 2019-05-22 11:09:37.102592704 +0200
@@ -1,0 +2,5 @@
+Wed May 1 18:52:09 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Split jupyter components into own package
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_highlight_selected_word.spec ++++++
--- /var/tmp/diff_new_pack.TPt8zW/_old 2019-05-22 11:09:38.058592766 +0200
+++ /var/tmp/diff_new_pack.TPt8zW/_new 2019-05-22 11:09:38.058592766 +0200
@@ -27,23 +27,17 @@
Group: Development/Languages/Python
Url: https://github.com/jcb91/jupyter_highlight_selected_word
Source: https://files.pythonhosted.org/packages/source/j/jupyter_highlight_selected…
-BuildRequires: %{python_module devel}
+BuildRequires: %{python_module notebook}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-BuildRequires: python3-jupyter_notebook
+BuildRequires: jupyter-notebook
%if %{with test}
-BuildRequires: %{python_module jupyter_notebook}
+BuildRequires: %{python_module notebook}
BuildRequires: %{python_module nose}
%endif
-Requires: python-jupyter_notebook >= 4.0
-%ifpython3
-Requires(post): python-jupyter_notebook
-Requires(preun): python-jupyter_notebook
-%endif
-%ifpython2
-Requires: python3-jupyter_highlight_selected_word = %{version}
-%endif
+Requires: python-notebook
+Requires: jupyter-jupyter_highlight_selected_word = %{version}
BuildArch: noarch
%python_subpackages
@@ -53,6 +47,24 @@
currently-selected or cursor-adjecent word in either the current cell's editor,
or in the whole notebook.
+This package provides the python interface.
+
+%package -n jupyter-jupyter_highlight_selected_word
+Summary: Jupyter notebook extension to highlight every instance of the current word
+Requires: jupyter-notebook
+Requires: python3-jupyter_highlight_selected_word = %{version}
+Requires(post): jupyter-notebook
+Requires(preun): jupyter-notebook
+Requires(post): python3-jupyter_highlight_selected_word = %{version}
+Requires(preun): python3-jupyter_highlight_selected_word = %{version}
+
+%description -n jupyter-jupyter_highlight_selected_word
+Jupyter notebook extension that enables highlighting of all instances of the
+currently-selected or cursor-adjecent word in either the current cell's editor,
+or in the whole notebook.
+
+This package provides the jupyter components.
+
%prep
%setup -q -n jupyter_highlight_selected_word-%{version}
@@ -64,16 +76,14 @@
%python_expand chmod a-x %{buildroot}%{$python_sitelib}/jupyter_highlight_selected_word-%{version}-py*.egg-info/PKG-INFO
%python_expand %fdupes %{buildroot}%{$python_sitelib}
-PYTHONPATH=%{buildroot}%{python3_sitelib} jupyter nbextension install --nbextensions=%{buildroot}%{_datadir}/jupyter/nbextensions/ --py jupyter_highlight_selected_word
-%python_expand %fdupes %{buildroot}%{_datadir}/jupyter/nbextensions/
+%{jupyter_nbextension_install jupyter_highlight_selected_word}
+%{fdupes %{buildroot}%{python3_sitelib} %{buildroot}%{_jupyter_nbextension_dir}}
-%post -n python3-jupyter_highlight_selected_word
-jupyter nbextension enable --system --py jupyter_highlight_selected_word || true
+%post -n jupyter-jupyter_highlight_selected_word
+%{jupyter_nbextension_enable jupyter_highlight_selected_word}
-%preun -n python3-jupyter_highlight_selected_word
-if [ $1 = 0 ] && [ -d %{python3_sitelib}/jupyter_highlight_selected_word/ ] ; then
- jupyter nbextension disable --system --py jupyter_highlight_selected_word || true
-fi
+%preun -n jupyter-jupyter_highlight_selected_word
+%{jupyter_nbextension_disable jupyter_highlight_selected_word}
%if %{with test}
%check
@@ -81,11 +91,12 @@
%endif
%files %{python_files}
-%defattr(-,root,root,-)
%doc README.md
%license LICENSE.txt
%{python_sitelib}/jupyter_highlight_selected_word
%{python_sitelib}/jupyter_highlight_selected_word-%{version}-py*.egg-info
-%python3_only %{_datadir}/jupyter/nbextensions/highlight_selected_word/
+
+%files -n jupyter-jupyter_highlight_selected_word
+%{_jupyter_nbextension_dir}/highlight_selected_word/
%changelog
1
0
Hello community,
here is the log from the commit of package python-jupyter_nbextensions_configurator for openSUSE:Factory checked in at 2019-05-22 11:09:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_nbextensions_configurator (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_nbextensions_configurator.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_nbextensions_configurator"
Wed May 22 11:09:29 2019 rev:3 rq:699925 version:0.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jupyter_nbextensions_configurator/python-jupyter_nbextensions_configurator.changes 2018-06-15 14:46:23.072102211 +0200
+++ /work/SRC/openSUSE:Factory/.python-jupyter_nbextensions_configurator.new.5148/python-jupyter_nbextensions_configurator.changes 2019-05-22 11:09:33.370592463 +0200
@@ -1,0 +2,7 @@
+Thu Apr 25 01:59:57 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Update to 0.4.1
+ * Fix for nbextensions tab not shown in notebook.
+- Split jupyter components into own package.
+
+-------------------------------------------------------------------
Old:
----
jupyter_nbextensions_configurator-0.4.0.tar.gz
New:
----
jupyter_nbextensions_configurator-0.4.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_nbextensions_configurator.spec ++++++
--- /var/tmp/diff_new_pack.k4mUsh/_old 2019-05-22 11:09:34.022592505 +0200
+++ /var/tmp/diff_new_pack.k4mUsh/_new 2019-05-22 11:09:34.022592505 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-jupyter_nbextensions_configurator
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@@ -21,14 +21,13 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-jupyter_nbextensions_configurator
-Version: 0.4.0
+Version: 0.4.1
Release: 0
Summary: Configuration interfaces for nbextensions
License: BSD-3-Clause
Group: Development/Languages/Python
Url: https://github.com/jupyter-contrib/jupyter_nbextensions_configurator
Source: https://files.pythonhosted.org/packages/source/j/jupyter_nbextensions_confi…
-BuildRequires: %{python_module devel}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
@@ -47,37 +46,54 @@
Requires: python-PyYAML
Requires: python-jupyter_contrib_core >= 0.3.3
Requires: python-jupyter_core
-Requires: python-jupyter_notebook >= 4.0
+Requires: python-notebook >= 4.0
Requires: python-tornado
Requires: python-traitlets
-%ifpython2
-Requires: python3-jupyter_nbextensions_configurator
-%endif
-%ifpython3
+Requires: jupyter-jupyter_nbextensions_configurator = %{version}
+BuildArch: noarch
+
+%python_subpackages
+
+%description
+The jupyter_nbextensions_configurator jupyter server extension provides
+graphical user interfaces for configuring which nbextensions are enabled (load
+automatically for every notebook), and display their readme files.
+In addition, for extensions which include an appropriate yaml descriptor file,
+the interface also provides controls to configure the extensions' options.
+
+This package provides the python interface.
+
+%package -n jupyter-jupyter_nbextensions_configurator
+Summary: Configuration interfaces for nbextensions
+Group: Development/Languages/Python
+Requires: jupyter-jupyter_contrib_core >= 0.3.3
+Requires: jupyter-jupyter_core
+Requires: jupyter-notebook >= 4.0
+Requires: python3-jupyter_nbextensions_configurator = %{version}
Requires(post): python3-PyYAML
Requires(preun): python3-PyYAML
-Requires(post): python3-jupyter_contrib_core >= 0.3.3
-Requires(preun): python3-jupyter_contrib_core >= 0.3.3
-Requires(post): python3-jupyter_core
-Requires(preun): python3-jupyter_core
-Requires(post): python3-jupyter_notebook >= 4.0
-Requires(preun): python3-jupyter_notebook >= 4.0
+Requires(post): jupyter-jupyter_contrib_core >= 0.3.3
+Requires(preun): jupyter-jupyter_contrib_core >= 0.3.3
+Requires(post): jupyter-jupyter_core
+Requires(preun): jupyter-jupyter_core
+Requires(post): jupyter-notebook >= 4.0
+Requires(preun): jupyter-notebook >= 4.0
Requires(post): python3-tornado
Requires(preun): python3-tornado
Requires(post): python3-traitlets
Requires(preun): python3-traitlets
-%endif
-BuildArch: noarch
+Requires(post): python3-jupyter_nbextensions_configurator = %{version}
+Requires(preun): python3-jupyter_nbextensions_configurator = %{version}
-%python_subpackages
-
-%description
+%description -n jupyter-jupyter_nbextensions_configurator
The jupyter_nbextensions_configurator jupyter server extension provides
graphical user interfaces for configuring which nbextensions are enabled (load
automatically for every notebook), and display their readme files.
In addition, for extensions which include an appropriate yaml descriptor file,
the interface also provides controls to configure the extensions' options.
+This package provides the jupyter components.
+
%prep
%setup -q -n jupyter_nbextensions_configurator-%{version}
sed -i 's/\r$//' LICENSE.txt
@@ -90,10 +106,10 @@
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
-%post -n python3-jupyter_nbextensions_configurator
+%post -n jupyter-jupyter_nbextensions_configurator
%{_bindir}/jupyter-nbextensions_configurator enable --system || true
-%preun -n python3-jupyter_nbextensions_configurator
+%preun -n jupyter-jupyter_nbextensions_configurator
if [ $1 = 0 ] && [ -f %{_bindir}/jupyter-nbextensions_configurator ] ; then
%{_bindir}/jupyter-nbextensions_configurator disable --system || true
fi
@@ -109,8 +125,11 @@
%defattr(-,root,root,-)
%doc README.md
%license LICENSE.txt
-%python3_only %{_bindir}/jupyter-nbextensions_configurator
%{python_sitelib}/jupyter_nbextensions_configurator-%{version}-py*.egg-info
%{python_sitelib}/jupyter_nbextensions_configurator/
+%files -n jupyter-jupyter_nbextensions_configurator
+%license LICENSE.txt
+%{_bindir}/jupyter-nbextensions_configurator
+
%changelog
++++++ jupyter_nbextensions_configurator-0.4.0.tar.gz -> jupyter_nbextensions_configurator-0.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_nbextensions_configurator-0.4.0/PKG-INFO new/jupyter_nbextensions_configurator-0.4.1/PKG-INFO
--- old/jupyter_nbextensions_configurator-0.4.0/PKG-INFO 2018-01-16 17:11:21.000000000 +0100
+++ new/jupyter_nbextensions_configurator-0.4.1/PKG-INFO 2018-12-29 13:36:06.000000000 +0100
@@ -1,13 +1,12 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: jupyter_nbextensions_configurator
-Version: 0.4.0
+Version: 0.4.1
Summary: jupyter serverextension providing configuration interfaces for nbextensions.
Home-page: https://github.com/jupyter-contrib/jupyter_nbextensions_configurator
Author: jcb91, jupyter-contrib developers
Author-email: joshuacookebarnes(a)gmail.com
License: BSD 3-clause
-Download-URL: https://github.com/jupyter-contrib/jupyter_nbextensions_configurator/tarbal…
-Description-Content-Type: UNKNOWN
+Download-URL: https://github.com/jupyter-contrib/jupyter_nbextensions_configurator/tarbal…
Description:
The jupyter_nbextensions_configurator jupyter server extension provides
graphical user interfaces for configuring which nbextensions are enabled (load
@@ -27,3 +26,4 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Utilities
+Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_nbextensions_configurator-0.4.0/README.md new/jupyter_nbextensions_configurator-0.4.1/README.md
--- old/jupyter_nbextensions_configurator-0.4.0/README.md 2018-01-16 17:06:53.000000000 +0100
+++ new/jupyter_nbextensions_configurator-0.4.1/README.md 2018-12-29 11:37:32.000000000 +0100
@@ -5,7 +5,6 @@
[![GitHub issues](https://img.shields.io/github/issues/jupyter-contrib/jupyter_nbexte…
<br/>
[![Travis-CI Build Status](https://img.shields.io/travis/Jupyter-contrib/jupyter_nbextensions_…
-[![Appveyor Build status](https://img.shields.io/appveyor/ci/jcb91/jupyter-nbextensions-confi…
[![Coveralls python test coverage](https://img.shields.io/coveralls/Jupyter-contrib/jupyter_nbextensions_configurator/master.svg?maxAge=3600&label=Coveralls)](https://coveralls.io/github/Jupyter-contrib/jupyter_nbextensions_configurator)
[![Codecov python test coverage](https://img.shields.io/codecov/c/github/Jupyter-contrib/jupyter_nbextensions_configurator/master.svg?maxAge=3600&label=Codecov)](https://codecov.io/gh/Jupyter-contrib/jupyter_nbextensions_configurator)
<br/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_nbextensions_configurator-0.4.0/setup.py new/jupyter_nbextensions_configurator-0.4.1/setup.py
--- old/jupyter_nbextensions_configurator-0.4.0/setup.py 2018-01-16 17:06:53.000000000 +0100
+++ new/jupyter_nbextensions_configurator-0.4.1/setup.py 2018-12-29 11:42:07.000000000 +0100
@@ -24,14 +24,14 @@
file, the interface also provides controls to configure the nbextensions'
options.
""",
- version='0.4.0',
+ version='0.4.1',
author='jcb91, jupyter-contrib developers',
author_email='joshuacookebarnes(a)gmail.com',
url=('https://github.com/'
'jupyter-contrib/jupyter_nbextensions_configurator'),
download_url=('https://github.com/'
'jupyter-contrib/jupyter_nbextensions_configurator/'
- 'tarball/0.4.0'),
+ 'tarball/0.4.1'),
keywords=['Jupyter', 'notebook'],
license='BSD 3-clause',
platforms=['any'],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_nbextensions_configurator-0.4.0/src/jupyter_nbextensions_configurator/__init__.py new/jupyter_nbextensions_configurator-0.4.1/src/jupyter_nbextensions_configurator/__init__.py
--- old/jupyter_nbextensions_configurator-0.4.0/src/jupyter_nbextensions_configurator/__init__.py 2018-01-16 17:06:53.000000000 +0100
+++ new/jupyter_nbextensions_configurator-0.4.1/src/jupyter_nbextensions_configurator/__init__.py 2018-12-29 11:42:07.000000000 +0100
@@ -34,7 +34,7 @@
def json_errors(method):
return method
-__version__ = '0.4.0'
+__version__ = '0.4.1'
absolute_url_re = re.compile(r'^(f|ht)tps?://')
@@ -258,6 +258,21 @@
logger.info('enabled {}'.format(__version__))
+def _jupyter_nbextension_paths():
+ return [
+ dict(
+ section="notebook",
+ src="static/nbextensions_configurator",
+ dest="nbextensions_configurator",
+ require='nbextensions_configurator/config_menu/main',
+ ),
+ dict(
+ section="tree",
+ src="static/nbextensions_configurator",
+ dest="nbextensions_configurator",
+ require='nbextensions_configurator/tree_tab/main',
+ ),
+ ]
def _jupyter_server_extension_paths():
return [{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_nbextensions_configurator-0.4.0/src/jupyter_nbextensions_configurator/static/nbextensions_configurator/tree_tab/main.js new/jupyter_nbextensions_configurator-0.4.1/src/jupyter_nbextensions_configurator/static/nbextensions_configurator/tree_tab/main.js
--- old/jupyter_nbextensions_configurator-0.4.0/src/jupyter_nbextensions_configurator/static/nbextensions_configurator/tree_tab/main.js 2017-03-14 18:03:46.000000000 +0100
+++ new/jupyter_nbextensions_configurator-0.4.1/src/jupyter_nbextensions_configurator/static/nbextensions_configurator/tree_tab/main.js 2018-12-29 11:37:32.000000000 +0100
@@ -1,7 +1,7 @@
define(function (require, exports, module) {
"use strict";
- var $ = require('jqueryui');
+ var $ = require('jquery');
var nbextensions_configurator = require('../main');
var rendermd = require('../render/render');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_nbextensions_configurator-0.4.0/src/jupyter_nbextensions_configurator.egg-info/PKG-INFO new/jupyter_nbextensions_configurator-0.4.1/src/jupyter_nbextensions_configurator.egg-info/PKG-INFO
--- old/jupyter_nbextensions_configurator-0.4.0/src/jupyter_nbextensions_configurator.egg-info/PKG-INFO 2018-01-16 17:11:21.000000000 +0100
+++ new/jupyter_nbextensions_configurator-0.4.1/src/jupyter_nbextensions_configurator.egg-info/PKG-INFO 2018-12-29 13:36:06.000000000 +0100
@@ -1,13 +1,12 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: jupyter-nbextensions-configurator
-Version: 0.4.0
+Version: 0.4.1
Summary: jupyter serverextension providing configuration interfaces for nbextensions.
Home-page: https://github.com/jupyter-contrib/jupyter_nbextensions_configurator
Author: jcb91, jupyter-contrib developers
Author-email: joshuacookebarnes(a)gmail.com
License: BSD 3-clause
-Download-URL: https://github.com/jupyter-contrib/jupyter_nbextensions_configurator/tarbal…
-Description-Content-Type: UNKNOWN
+Download-URL: https://github.com/jupyter-contrib/jupyter_nbextensions_configurator/tarbal…
Description:
The jupyter_nbextensions_configurator jupyter server extension provides
graphical user interfaces for configuring which nbextensions are enabled (load
@@ -27,3 +26,4 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Utilities
+Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_nbextensions_configurator-0.4.0/tox.ini new/jupyter_nbextensions_configurator-0.4.1/tox.ini
--- old/jupyter_nbextensions_configurator-0.4.0/tox.ini 2017-10-05 13:34:27.000000000 +0200
+++ new/jupyter_nbextensions_configurator-0.4.1/tox.ini 2018-12-29 11:37:32.000000000 +0100
@@ -6,19 +6,18 @@
clean,
check,
lint,
- {py27,py34}-notebook{40,41,42,4x},
+ py27-notebook,
+ py36-notebook{44,54,55},
+ py36-notebook,
report,
[testenv]
basepython =
pypy: {env:TOXPYTHON:pypy}
py27: {env:TOXPYTHON:python2.7}
- py33: {env:TOXPYTHON:python3.3}
- py34: {env:TOXPYTHON:python3.4}
- py35: {env:TOXPYTHON:python3.5}
py36: {env:TOXPYTHON:python3.6}
+ py37: {env:TOXPYTHON:python3.7}
{docs,spell}: {env:TOXPYTHON:python2.7}
- {appveyorartifacts,bump,check,clean,codecov,condarecipe,coveralls,jupyterhub,lint,report,pypi_build,pypi_upload}: {env:TOXPYTHON:python3.4}
setenv =
PYTHONPATH={toxinidir}/tests
PYTHONUNBUFFERED=yes
@@ -26,16 +25,12 @@
usedevelop = false
deps =
coverage
- jupyterhub: jupyterhub>=0.7,<0.8
+ jupyterhub: jupyterhub>=0.9
mock
nose
- notebook40: notebook>=4.0,<4.1
- notebook41: notebook>=4.1,<4.2
- notebook42: notebook>=4.2,<4.3
- notebook43: notebook>=4.3,<4.4
- notebook44: notebook>=4.4,<4.5
- notebook4x: https://github.com/jupyter/notebook/archive/4.x.zip
- notebook50: https://github.com/jupyter/notebook/archive/5.0.0.zip
+ notebook44: https://github.com/jupyter/notebook/archive/4.4.0.zip
+ notebook54: https://github.com/jupyter/notebook/archive/5.4.0.zip
+ notebook55: https://github.com/jupyter/notebook/archive/5.5.0.zip
notebookmaster: https://github.com/jupyter/notebook/archive/master.zip
notebook: notebook
requests
@@ -47,17 +42,6 @@
commands =
{posargs:coverage run --parallel-mode --source=src -m nose -vv -a uses_jupyterhub tests}
-[testenv:check]
-skip_install = true
-deps =
- check-manifest
- docutils
- pygments
- readme-renderer
-commands =
- python setup.py check --strict --metadata --restructuredtext
- check-manifest {toxinidir}
-
[testenv:lint]
skip_install = true
deps =
@@ -103,22 +87,6 @@
coverage xml --ignore-errors
codecov []
-[testenv:appveyorartifacts]
-skip_install = true
-whitelist_externals = bash
-deps =
- appveyor-artifacts
- coverage
- coveralls
-commands =
- appveyor-artifacts --owner-name=jcb91 --repo-name=jupyter-nbextensions-configurator-ixdb9 --mangle-coverage download
- ; tox doesn't run commands through a shell (makes windows inconsistent)
- ; So to get wildcard expansion, run through bash.
- ; Travis is the only place this env should be run, so it's ok to use bash.
- bash -c \"coverage combine --append */.coverage\"
- coverage report
- coveralls
-
[testenv:report]
skip_install = true
deps = coverage
1
0
Hello community,
here is the log from the commit of package testdisk for openSUSE:Factory checked in at 2019-05-22 11:08:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/testdisk (Old)
and /work/SRC/openSUSE:Factory/.testdisk.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "testdisk"
Wed May 22 11:08:48 2019 rev:4 rq:699398 version:7.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/testdisk/testdisk.changes 2015-05-23 13:07:25.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.testdisk.new.5148/testdisk.changes 2019-05-22 11:08:52.706608653 +0200
@@ -1,0 +2,35 @@
+Sun Apr 28 08:26:32 UTC 2019 - opensuse.lietuviu.kalba(a)gmail.com
+
+- update to version 7.1-beta:
+ * TestDisk
+ + Ask confirmation when user quits the list of partitions found by TestDisk
+ + Various bug fixes for scripted run
+ * PhotoRec & QPhotoRec
+ + Improvements
+ - Log the correct filenames in photorec.log file
+ - Reduced false positives for tar
+ - Fix recovery of mobius camera videos.
+ - Fix recovery of progressive jpeg
+ - Extract the filesize from sqlite header when available
+ + New file formats recovered by PhotoRec:
+ - .aes: Synology AES key files
+ - .axp: Pinnacle Studio
+ - .bdm: AVHCD index
+ - .cpi: AVCHD Clip Information
+ - .DS_Store: Apple Desktop Services Store
+ - .dvr: RT60
+ - .gi: Roxio Creator
+ - .gpx: Guitar Pro 6
+ - .gp4: Guitar Pro 4
+ - .iam/.ipt Autodesk Inventor part
+ - .icns: Apple Icon Image
+ - .jsonlz4: Mozilla bookmarks
+ - .lyx LyX 2.X
+ - .mpl: AVHCD playlist
+ - .tg Tux Guitar 1.2
+ - .vdj: VirtualDJ
+ - .wee: weecast
+ - .xar: XAR Archive
+- switch from Qt4 to Qt5 for QPhotoRec.
+
+-------------------------------------------------------------------
Old:
----
testdisk-7.0.tar.bz2
New:
----
testdisk-7.1-WIP.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ testdisk.spec ++++++
--- /var/tmp/diff_new_pack.OrzufR/_old 2019-05-22 11:08:53.714608180 +0200
+++ /var/tmp/diff_new_pack.OrzufR/_new 2019-05-22 11:08:53.718608179 +0200
@@ -17,19 +17,20 @@
Name: testdisk
-Version: 7.0
+Version: 7.1
Release: 0
Summary: Tool to Recover and Fix Partitions
License: GPL-2.0
Group: System/Filesystems
Url: http://www.cgsecurity.org/wiki/TestDisk
-Source0: http://www.cgsecurity.org/%{name}-%{version}.tar.bz2
+Source0: http://www.cgsecurity.org/%{name}-%{version}-WIP.tar.bz2
Patch0: testdisk-file-contains-date-and-time.patch
BuildRequires: hicolor-icon-theme
BuildRequires: libewf-devel
BuildRequires: libext2fs-devel
BuildRequires: libjpeg-devel
-BuildRequires: libqt4-devel
+BuildRequires: libqt5-qtbase-devel
+BuildRequires: libqt5-linguist
BuildRequires: libreiserfs-devel
BuildRequires: libuuid-devel
BuildRequires: ncurses-devel
@@ -66,8 +67,10 @@
More user friendly, it recognizes the same file formats.
%prep
-%setup -q
+%define TAR_TOP_FOLDER %{name}-%{version}-WIP
+%setup -q -n %{TAR_TOP_FOLDER}
%patch0 -p1
+cp README.md README
%build
%configure
1
0
Hello community,
here is the log from the commit of package jupyter-octave_kernel for openSUSE:Factory checked in at 2019-05-22 11:07:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/jupyter-octave_kernel (Old)
and /work/SRC/openSUSE:Factory/.jupyter-octave_kernel.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "jupyter-octave_kernel"
Wed May 22 11:07:30 2019 rev:1 rq:698390 version:0.28.4
Changes:
--------
New Changes file:
--- /dev/null 2019-05-02 15:18:01.516169518 +0200
+++ /work/SRC/openSUSE:Factory/.jupyter-octave_kernel.new.5148/jupyter-octave_kernel.changes 2019-05-22 11:07:30.778581832 +0200
@@ -0,0 +1,41 @@
+-------------------------------------------------------------------
+Thu Apr 25 01:59:57 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Rename to to match jupyter package naming guidelines.
+
+-------------------------------------------------------------------
+Thu Aug 2 17:16:18 UTC 2018 - toddrme2178(a)gmail.com
+
+- Update to version 0.28.4
+ * Include license file in wheels
+
+-------------------------------------------------------------------
+Thu Apr 19 14:35:45 UTC 2018 - toddrme2178(a)gmail.com
+
+- Update to version 0.28.3
+ * Bugfix release
+- Switch to using wheels for more reliable installation
+
+-------------------------------------------------------------------
+Wed Apr 4 21:24:34 UTC 2018 - sebix+novell.com(a)sebix.at
+
+- Package needed kernel.json file.
+
+-------------------------------------------------------------------
+Mon Mar 19 19:46:15 UTC 2018 - sebix+novell.com(a)sebix.at
+
+- Use %license macro for license.
+- update to version 0.28.0:
+ * Automatically install the kernel when installing the python package. #104
+- do not use removed option --display-name anymore for jupyter kernel installation
+
+-------------------------------------------------------------------
+Wed Sep 20 16:10:55 UTC 2017 - toddrme2178(a)gmail.com
+
+- Update to version 0.27.0
+- Only install kernel for python3
+
+-------------------------------------------------------------------
+Wed Jul 12 16:23:32 UTC 2017 - toddrme2178(a)gmail.com
+
+- Initial version
New:
----
jupyter-octave_kernel.changes
jupyter-octave_kernel.spec
octave_kernel-0.28.4-py2.py3-none-any.whl
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ jupyter-octave_kernel.spec ++++++
#
# spec file for package jupyter-octave_kernel
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%bcond_with test
Name: jupyter-octave_kernel
Version: 0.28.4
Release: 0
Summary: Jupyter kernel for Octave
License: BSD-3-Clause
Group: Development/Languages/Python
URL: http://github.com/Calysto/octave_kernel
Source: https://files.pythonhosted.org/packages/py2.py3/o/octave_kernel/octave_kern…
BuildRequires: fdupes
BuildRequires: jupyter-ipykernel
BuildRequires: jupyter-jupyter_client >= 4.3.0
BuildRequires: jupyter-metakernel >= 0.18.0
BuildRequires: python-rpm-macros
BuildRequires: python3-certifi
BuildRequires: python3-pip
BuildRequires: python3-setuptools
Requires: jupyter-ipykernel
Requires: jupyter-jupyter_client >= 4.3.0
Requires: jupyter-metakernel >= 0.18.0
Requires: octave
Requires: python-certifi
Provides: python3-jupyter_octave_kernel = %{version}
Obsoletes: python3-jupyter_octave_kernel <= %{version}
Provides: python3-octave_kernel = %{version}
BuildArch: noarch
%if %{with test}
BuildRequires: jupyter-jupyter_kernel_test
BuildRequires: octave
%endif
%description
An Octave kernel for Jupyter.
%prep
%setup -q -c -T
%build
# not needed
%install
pip%{python3_bin_suffix} install --root=%{buildroot} %{SOURCE0}
sed -i "s|\"python\"|\"python3\"|" %{buildroot}%{_jupyter_kernel_dir}/octave/kernel.json
%{fdupes %{buildroot}%{_jupyter_prefix} %{buildroot}%{python3_sitelib}}
%if %{with test}
%check
export PYTHONPATH=%{buildroot}%{python3_sitelib}
python3 test_octave_kernel.py
%endif
%files
%license %{python3_sitelib}/octave_kernel-%{version}.dist-info/LICENSE.txt
%{python3_sitelib}/octave_kernel/
%{python3_sitelib}/octave_kernel-%{version}.dist-info
%{_jupyter_kernel_dir}/octave/
%changelog
1
0
Hello community,
here is the log from the commit of package jupyter-jupyterlab-latex for openSUSE:Factory checked in at 2019-05-22 11:06:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/jupyter-jupyterlab-latex (Old)
and /work/SRC/openSUSE:Factory/.jupyter-jupyterlab-latex.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "jupyter-jupyterlab-latex"
Wed May 22 11:06:37 2019 rev:1 rq:698354 version:0.4.1
Changes:
--------
New Changes file:
--- /dev/null 2019-05-02 15:18:01.516169518 +0200
+++ /work/SRC/openSUSE:Factory/.jupyter-jupyterlab-latex.new.5148/jupyter-jupyterlab-latex.changes 2019-05-22 11:06:40.886593586 +0200
@@ -0,0 +1,35 @@
+-------------------------------------------------------------------
+Thu Apr 25 01:59:57 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Rename to to match jupyter package naming guidelines.
+
+-------------------------------------------------------------------
+Fri Sep 28 02:49:00 UTC 2018 - Todd R <toddrme2178(a)gmail.com>
+
+- Update to 0.4.1
+ * Allow SyncTeX to work on windows by using absolute file paths.
+
+-------------------------------------------------------------------
+Fri Sep 7 15:58:57 UTC 2018 - toddrme2178(a)gmail.com
+
+- Update to 0.4.0
+ * Fixes for Windows paths and line endings.
+ * Use absolute path in SyncTeX view command.
+ * Output synctex response when parse fails.
+ * Updates for JupyterLab v0.34.
+
+-------------------------------------------------------------------
+Thu Aug 2 20:24:32 UTC 2018 - toddrme2178(a)gmail.com
+
+- Update to 0.3.1
+ * Flip the y coordinate for PDFJS, and add a margin when scrolling.
+
+-------------------------------------------------------------------
+Wed Apr 25 20:18:43 UTC 2018 - toddrme2178(a)gmail.com
+
+- Don't need to manually enable extension.
+
+-------------------------------------------------------------------
+Fri Apr 20 20:18:26 UTC 2018 - toddrme2178(a)gmail.com
+
+- Initial version
New:
----
jupyter-jupyterlab-latex.changes
jupyter-jupyterlab-latex.spec
jupyterlab_latex-0.4.1-py3-none-any.whl
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ jupyter-jupyterlab-latex.spec ++++++
#
# spec file for package jupyter-jupyterlab-latex
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: jupyter-jupyterlab-latex
Version: 0.4.1
Release: 0
Summary: Jupyter Notebook server extension which acts as an endpoint for LaTeX
License: BSD-3-Clause
Group: Development/Languages/Python
URL: https://github.com/jupyterlab/jupyterlab-latex
Source: https://files.pythonhosted.org/packages/py3/j/jupyterlab_latex/jupyterlab_l…
BuildRequires: fdupes
BuildRequires: jupyter-notebook
BuildRequires: python-rpm-macros
BuildRequires: python3-base >= 3.6
BuildRequires: python3-pip
Requires: jupyter-notebook
Requires: texlive-latex-bin
Provides: python3-jupyter_jupyterlab_latex = %{version}
Obsoletes: python3-jupyter_jupyterlab_latex <= %{version}
Provides: python3-jupyterlab-latex = %{version}
BuildArch: noarch
# SECTION test requirements
BuildRequires: jupyter-jupyterlab
# /SECTION
%description
An extension for JupyterLab which allows for live-editing of LaTeX documents.
%prep
%setup -q -c -T
%build
# Not Needed
%install
pip%{python3_bin_suffix} install --root=%{buildroot} %{SOURCE0}
%{jupyter_move_config}
%{fdupes %{buildroot}%{_jupyter_prefix} %{buildroot}%{python3_sitelib}}
%files
%license %{python3_sitelib}/jupyterlab_latex-*.dist-info/LICENSE.txt
%{python3_sitelib}/jupyterlab_latex-*.dist-info
%{python3_sitelib}/jupyterlab_latex/
%config %{_jupyter_servextension_confdir}/jupyterlab_latex.json
%changelog
1
0
Hello community,
here is the log from the commit of package jupyter-jupyterlab-widgets for openSUSE:Factory checked in at 2019-05-22 11:06:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/jupyter-jupyterlab-widgets (Old)
and /work/SRC/openSUSE:Factory/.jupyter-jupyterlab-widgets.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "jupyter-jupyterlab-widgets"
Wed May 22 11:06:19 2019 rev:1 rq:698349 version:0.6.15
Changes:
--------
New Changes file:
--- /dev/null 2019-05-02 15:18:01.516169518 +0200
+++ /work/SRC/openSUSE:Factory/.jupyter-jupyterlab-widgets.new.5148/jupyter-jupyterlab-widgets.changes 2019-05-22 11:06:23.490589831 +0200
@@ -0,0 +1,24 @@
+-------------------------------------------------------------------
+Thu Apr 25 01:59:57 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Rename to to match jupyter package naming guidelines.
+
+-------------------------------------------------------------------
+Thu Sep 20 18:51:43 UTC 2018 - Todd R <toddrme2178(a)gmail.com>
+
+- Disable python2 build since jupyterlab no longer supports python2
+
+-------------------------------------------------------------------
+Thu May 3 14:07:08 UTC 2018 - toddrme2178(a)gmail.com
+
+- Use %license tag
+
+-------------------------------------------------------------------
+Tue Mar 13 12:33:49 UTC 2018 - toddrme2178(a)gmail.com
+
+- Switch to simpler and more reliable wheel
+
+-------------------------------------------------------------------
+Thu Nov 16 17:51:03 UTC 2017 - toddrme2178(a)gmail.com
+
+- Initial version
New:
----
COPYING.md
LICENSE
jupyter-jupyterlab-widgets.changes
jupyter-jupyterlab-widgets.spec
jupyterlab_widgets-0.6.15-py2.py3-none-any.whl
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ jupyter-jupyterlab-widgets.spec ++++++
#
# spec file for package jupyter-jupyterlab-widgets
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
# Corresponding ipywidgets version, for the license
%define ipyver 7.2.1
Name: jupyter-jupyterlab-widgets
Version: 0.6.15
Release: 0
Summary: JupyterLab extension providing HTML widgets
License: BSD-3-Clause
Group: Development/Languages/Python
URL: https://github.com/ipython/ipywidgets
Source: https://files.pythonhosted.org/packages/py2.py3/j/jupyterlab_widgets/jupyte…
# This package is created from inside the ipywidgets github project at the same time, so use its license.
Source10: https://raw.githubusercontent.com/jupyter-widgets/ipywidgets/%{ipyver}/COPY…
Source11: https://raw.githubusercontent.com/jupyter-widgets/ipywidgets/%{ipyver}/LICE…
BuildRequires: fdupes
BuildRequires: jupyter-jupyterlab >= 0.8.0
BuildRequires: jupyter-widgetsnbextension
BuildRequires: python-rpm-macros
BuildRequires: python3-certifi
BuildRequires: python3-pip
Requires: jupyter-jupyterlab >= 0.8.0
Requires: jupyter-widgetsnbextension
Requires: python3-certifi
Provides: python3-jupyter_jupyterlab_widgets = %{version}
Obsoletes: python3-jupyter_jupyterlab_widgets <= %{version}
Provides: python3-jupyterlab-widgets = %{version}
BuildArch: noarch
%description
Interactive HTML widgets for JupyterLab notebooks. Since JupyterLab is in its
pre-release stage, this package integrating widgets into JupyterLab should also
be considered experimental.
%prep
%setup -q -c -T
cp %{SOURCE10} .
cp %{SOURCE11} .
%build
# not needed
%install
pip%{python3_bin_suffix} install --root=%{buildroot} %{SOURCE0}
%{fdupes %{buildroot}%{_jupyter_prefix} %{buildroot}%{python3_sitelib}}
%files
%license COPYING.md LICENSE
%{_jupyter_prefix}/labextensions/jupyterlab_widgets/
%{python3_sitelib}/jupyterlab_widgets-%{version}.dist-info
%{python3_sitelib}/jupyterlab_widgets/
%changelog
++++++ COPYING.md ++++++
# Licensing terms
This project is licensed under the terms of the Modified BSD License
(also known as New or Revised or 3-Clause BSD), as follows:
- Copyright (c) 2016, Jupyter Development Team
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
Neither the name of the Jupyter Development Team nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
## About the Jupyter Development Team
The Jupyter Development Team is the set of all contributors to the Jupyter project.
This includes all of the Jupyter subprojects.
The core team that coordinates development on GitHub can be found here:
- https://github.com/jupyter/
- https://github.com/ipython/
## Our Copyright Policy
Jupyter uses a shared copyright model. Each contributor maintains copyright
over their contributions to Jupyter. But, it is important to note that these
contributions are typically only changes to the repositories. Thus, the Jupyter
source code, in its entirety is not the copyright of any single person or
institution. Instead, it is the collective copyright of the entire Jupyter
Development Team. If individual contributors want to maintain a record of what
changes/contributions they have specific copyright on, they should indicate
their copyright in the commit message of the change, when they commit the
change to one of the Jupyter repositories.
With this in mind, the following banner should be used in any source code file
to indicate the copyright and license terms:
# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.
++++++ LICENSE ++++++
Copyright (c) 2015-2016, Project Jupyter Contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1
0
Hello community,
here is the log from the commit of package python-ipyparallel for openSUSE:Factory checked in at 2019-05-22 11:05:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ipyparallel (Old)
and /work/SRC/openSUSE:Factory/.python-ipyparallel.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ipyparallel"
Wed May 22 11:05:56 2019 rev:1 rq:698330 version:6.2.3
Changes:
--------
New Changes file:
--- /dev/null 2019-05-02 15:18:01.516169518 +0200
+++ /work/SRC/openSUSE:Factory/.python-ipyparallel.new.5148/python-ipyparallel.changes 2019-05-22 11:06:03.318585476 +0200
@@ -0,0 +1,176 @@
+-------------------------------------------------------------------
+Thu Apr 25 01:59:57 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Rename to to match python package naming guidelines.
+- Split jupyter components into own subpackage.
+
+-------------------------------------------------------------------
+Sat Dec 22 06:55:16 UTC 2018 - Todd R <toddrme2178(a)gmail.com>
+
+- Update to 6.2.3
+ * Fix compatibility for execute requests with ipykernel 5
+ * require ipykernel >= 4.4
+
+-------------------------------------------------------------------
+Thu Aug 2 19:40:16 UTC 2018 - toddrme2178(a)gmail.com
+
+- Update to 6.2.2
+ * Fix compatibility with tornado 4, broken in 6.2.0
+ * Fix encoding of engine and controller logs in ipcluster --debug on Python 3
+ * Fix compatiblity with joblib 0.12
+ * Include LICENSE file in wheels
+
+-------------------------------------------------------------------
+Thu Jun 7 17:42:57 UTC 2018 - toddrme2178(a)gmail.com
+
+- Update to version 6.2.1
+ * Workaround a setuptools issue preventing installation from sdist on Windows
+- Update to version 6.2.0
+ * Drop support for Python 3.3. IPython parallel now requires Python 2.7 or >= 3.4.
+ * Further fixes for compatibility with tornado 5 when run with asyncio (Python 3)
+ * Fix for enabling clusters tab via nbextension
+ * Multiple fixes for handling when engines stop unexpectedly
+ * Installing IPython Parallel enables the Clusters tab extension by default, without any additional commands.
+- Switch to wheel-based install
+- Run tests in main package
+- Remove -doc subpackage and use upstream-build docs
+
+-------------------------------------------------------------------
+Thu Feb 15 14:43:43 UTC 2018 - toddrme2178(a)gmail.com
+
+- Update to 6.1.1
+ * Fix regression in 6.1.0 preventing BatchSpawners (PBS, etc.) from launching with ipcluster.
+- Update to 6.1.0
+ + Compatibility fixes with related packages:
+ * Fix compatibility with pyzmq 17 and tornado 5.
+ * Fix compatibility with IPython ≥ 6.
+ * Improve compatibility with dask.distributed ≥ 1.18.
+ + New features:
+ * Add :attr:`namespace` to BatchSpawners for easier extensibility.
+ * Support serializing partial functions.
+ * Support hostnames for machine location, not just ip addresses.
+ * Add ``--location`` argument to ipcluster for setting the controller location.
+ It can be a hostname or ip.
+ * Engine rank matches MPI rank if engines are started with ``--mpi``.
+ * Avoid duplicate pickling of the same object in maps, etc.
+
+-------------------------------------------------------------------
+Tue Feb 13 19:47:23 UTC 2018 - toddrme2178(a)gmail.com
+
+- Update url
+
+-------------------------------------------------------------------
+Wed Sep 20 17:04:11 UTC 2017 - toddrme2178(a)gmail.com
+
+- Further improvements to notebook extension handling
+
+-------------------------------------------------------------------
+Wed Sep 20 15:26:13 UTC 2017 - toddrme2178(a)gmail.com
+
+- Fix notebook extension handling
+
+-------------------------------------------------------------------
+Sun Aug 6 03:42:48 UTC 2017 - toddrme2178(a)gmail.com
+
+- Fix script interpeter.
+
+-------------------------------------------------------------------
+Thu Apr 27 17:28:08 UTC 2017 - toddrme2178(a)gmail.com
+
+- Implement single-spec version.
+
+-------------------------------------------------------------------
+Fri Apr 7 19:04:07 UTC 2017 - toddrme2178(a)gmail.com
+
+- Clean up update-alternatives usage.
+
+-------------------------------------------------------------------
+Thu Mar 30 19:24:51 UTC 2017 - toddrme2178(a)gmail.com
+
+- Update to 6.0.2
+ * Upload fixed sdist for 6.0.1.
+- Update to 6.0.1
+ * Small encoding fix for Python 2.
+- Update to 6.0
+ * Due to a compatibility change and semver, this is a major release. However, it is not a big release.
+ * The main compatibility change is that all timestamps are now timezone-aware UTC timestamps.
+ * This means you may see comparison errors if you have code that uses datetime objects without timezone info (so-called naïve datetime objects).
+ * Rename :meth:`Client.become_distributed` to :meth:`Client.become_dask`.
+ :meth:`become_distributed` remains as an alias.
+ * import joblib from a public API instead of a private one
+ when using IPython Parallel as a joblib backend.
+ * Compatibility fix in extensions for security changes in notebook 4.3
+- Update to 5.2
+ * Fix compatibility with changes in ipykernel 4.3, 4.4
+ * Improve inspection of ``@remote`` decorated functions
+ * :meth:`Client.wait` accepts any Future.
+ * Add ``--user`` flag to :command:`ipcluster nbextension`
+ * Default to one core per worker in :meth:`Client.become_distributed`.
+ Override by specifying `ncores` keyword-argument.
+ * Subprocess logs are no longer sent to files by default in :command:`ipcluster`.
+- Update to 5.1
+ * IPython Parallel 5.1 adds integration with other parallel computing tools,
+ such as `dask.distributed <https://distributed.readthedocs.io>`_ and `joblib <https://pythonhosted.org/joblib>`__.
+ * IPython parallel now supports the notebook-4.2 API for enabling server extensions,
+ to provide the IPython clusters tab
+ jupyter serverextension enable --py ipyparallel
+ jupyter nbextension install --py ipyparallel
+ jupyter nbextension enable --py ipyparallel
+ though you can still use the more convenient single-call::
+ ipcluster nbextension enable
+ which does all three steps above.
+ * `Slurm <https://computing.llnl.gov/tutorials/linux_clusters>`_ support is added to ipcluster.
+- Update to 5.0.1
+ * Fix imports in :meth:`use_cloudpickle`, :meth:`use_dill`.
+ * Various typos and documentation updates to catch up with 5.0.
+
+-------------------------------------------------------------------
+Wed Feb 17 13:00:52 UTC 2016 - toddrme2178(a)gmail.com
+
+- specfile:
+ * update copyright year
+- update to version 5.0.0:
+ * The highlight of ipyparallel 5.0 is that the Client has been
+ reorganized a bit to use Futures. AsyncResults are now a Future
+ subclass, so they can be `yield`ed in coroutines, etc. Views have
+ also received an Executor interface. This rewrite better connects
+ results to their handles, so the Client.results cache should no
+ longer grow unbounded.
+ + The Executor API :class:`ipyparallel.ViewExecutor`
+ + Creating an Executor from a Client:
+ :meth:`ipyparallel.Client.executor`
+ + Each View has an :attr:`executor` attribute
+ * Part of the Future refactor is that Client IO is now handled in a
+ background thread, which means that :meth:`Client.spin_thread` is
+ obsolete and deprecated.
+ * Other changes:
+ + Add :command:`ipcluster nbextension enable|disable` to toggle
+ the clusters tab in Jupyter notebook
+ * Less interesting development changes for users: Some
+ IPython-parallel extensions to the IPython kernel have been moved
+ to the ipyparallel package:
+ + :mod:`ipykernel.datapub` is now :mod:`ipyparallel.datapub`
+ + ipykernel Python serialization is now in
+ :mod:`ipyparallel.serialize`
+ + apply_request message handling is implememented in a Kernel
+ subclass, rather than the base ipykernel Kernel.
+- update to version 4.1.0:
+ * Add :meth:`.Client.wait_interactive`
+ * Improvements for specifying engines with SSH launcher.
+- Split documentation into own subpackage to speed up builds.
+
+-------------------------------------------------------------------
+Mon Oct 5 10:01:17 UTC 2015 - toddrme2178(a)gmail.com
+
+- Build documentation
+
+-------------------------------------------------------------------
+Fri Aug 28 18:38:51 UTC 2015 - toddrme2178(a)gmail.com
+
+- Fix conflict.
+
+-------------------------------------------------------------------
+Wed Aug 26 13:41:45 UTC 2015 - toddrme2178(a)gmail.com
+
+- Initial version
+
New:
----
ipyparallel-6.2.3-py2.py3-none-any.whl
ipyparallel.pdf
ipyparallel.zip
python-ipyparallel.changes
python-ipyparallel.spec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ipyparallel.spec ++++++
#
# spec file for package python-ipyparallel
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-ipyparallel
Version: 6.2.3
Release: 0
Summary: Interactive parallel computing library for IPython
License: BSD-3-Clause
Group: Development/Languages/Python
URL: https://github.com/ipython/ipyparallel
Source0: https://files.pythonhosted.org/packages/py2.py3/i/ipyparallel/ipyparallel-%…
Source1: https://media.readthedocs.org/pdf/ipyparallel/%{version}/ipyparallel.pdf
Source2: https://media.readthedocs.org/htmlzip/ipyparallel/%{version}/ipyparallel.zip
# Test requirements
BuildRequires: %{python_module decorator}
BuildRequires: %{python_module ipykernel >= 4.4}
BuildRequires: %{python_module ipython >= 4}
BuildRequires: %{python_module ipython-iptest >= 4}
BuildRequires: %{python_module ipython_genutils}
BuildRequires: %{python_module jupyter_client}
BuildRequires: %{python_module jupyter_core}
BuildRequires: %{python_module mock}
BuildRequires: %{python_module notebook}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module pytest-cov}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module python-dateutil >= 2.1}
BuildRequires: %{python_module pyzmq >= 13}
BuildRequires: %{python_module testpath}
BuildRequires: %{python_module tornado >= 4}
BuildRequires: %{python_module traitlets >= 4.3}
BuildRequires: fdupes
BuildRequires: python-futures
BuildRequires: python-rpm-macros
BuildRequires: unzip
# Python 2 test requirements
Requires: python-decorator
Requires: python-ipykernel >= 4.4
Requires: python-ipython >= 4
Requires: python-ipython_genutils
Requires: python-jupyter_client
Requires: python-python-dateutil >= 2.1
Requires: python-pyzmq >= 13
Requires: python-tornado >= 4
Requires: python-traitlets >= 4.3
Requires(post): update-alternatives
Requires(postun): update-alternatives
Recommends: jupyter-ipyparallel = %{version}
Recommends: python-mpi4py
Recommends: python-pymongo
Provides: python-jupyter_ipyparallel = %{version}
Obsoletes: python-jupyter_ipyparallel <= %{version}
BuildArch: noarch
%ifpython2
Requires: python-futures
%endif
%python_subpackages
%description
Use multiple instances of IPython in parallel, interactively.
This package provides the python interface.
%package -n jupyter-ipyparallel
Summary: Interactive parallel computing library for IPython
Requires: jupyter-jupyter_core
Requires: jupyter-notebook
Requires: python3-ipyparallel = %{version}
Provides: python-jupyter_ipyparallel-nbextension = %{version}
Obsoletes: python-jupyter_ipyparallel-nbextension < %{version}
%description -n jupyter-ipyparallel
Use multiple instances of IPython in parallel, interactively.
This package provides the jupyter notebook extension.
%package -n jupyter-ipyparallel-doc
Summary: Documentation for ipyparallel
Group: Documentation/Other
Provides: %{python_module ipyparallel-doc = %{version}}
Provides: %{python_module jupyter_ipyparallel-doc = %{version}}
Obsoletes: %{python_module jupyter_ipyparallel-doc <= %{version}}
%description -n jupyter-ipyparallel-doc
Documentation and help files for ipyparallel.
%prep
%setup -q -c -T
cp %{SOURCE1} .
%setup -q -T -D -a 2
mkdir docs
mv ipyparallel-%{version} docs/html
%build
# Not Needed
%install
%python_expand pip%{$python_bin_suffix} install --root=%{buildroot} %{SOURCE0}
%{fdupes %{buildroot}%{_jupyter_prefix} %{buildroot}%{python3_sitelib}}
%{jupyter_move_config}
# Prepare for update-alternatives
%python_clone -a %{buildroot}%{_bindir}/ipcluster
%python_clone -a %{buildroot}%{_bindir}/ipcontroller
%python_clone -a %{buildroot}%{_bindir}/ipengine
echo pass4
# These files are meant to be runnable stand-alone, so they should be executable
%{python_expand pushd %{buildroot}%{$python_sitelib}
chmod a+x ipyparallel/apps/*app.py
chmod a-x ipyparallel/apps/baseapp.py
chmod a+x ipyparallel/controller/heartmonitor.py
# Fix wrong-script-interpreter
sed -i "s|#!%{_bindir}/env python|#!%__$python|" ipyparallel/apps/*app.py
sed -i "s|#!%{_bindir}/env python|#!%__$python|" ipyparallel/controller/heartmonitor.py
# Deduplicating files can generate a RPMLINT warning for pyc mtime
$python -m compileall -d %{$python_sitearch} ipyparallel/apps/
$python -O -m compileall -d %{$python_sitearch} ipyparallel/apps/
$python -m compileall -d %{$python_sitearch} ipyparallel/controller/heartmonitor.py
$python -O -m compileall -d %{$python_sitearch} ipyparallel/controller/heartmonitor.py
%fdupes .
popd
}
mkdir -p %{buildroot}%{_docdir}/jupyter-ipyparallel
cp %{SOURCE1} %{buildroot}%{_docdir}/jupyter-ipyparallel/
cp -r docs/html %{buildroot}%{_docdir}/jupyter-ipyparallel/
cp %{buildroot}%{python_sitelib}/ipyparallel-%{version}.dist-info/LICENSE.txt .
%fdupes %{buildroot}%{_docdir}/jupyter-ipyparallel/
%post
%{python_install_alternative ipcluster ipcontroller ipengine}
%postun
%python_uninstall_alternative ipcluster
%files %{python_files}
%license %{python_sitelib}/ipyparallel-%{version}.dist-info/LICENSE.txt
%python_alternative %{_bindir}/ipcluster
%python_alternative %{_bindir}/ipcontroller
%python_alternative %{_bindir}/ipengine
%{python_sitelib}/ipyparallel-%{version}.dist-info
%{python_sitelib}/ipyparallel/
%files -n jupyter-ipyparallel
%license LICENSE.txt
%{_jupyter_nbextension_dir}/ipyparallel/
%config %{_jupyter_servextension_confdir}/ipyparallel-serverextension.json
%config %{_jupyter_nb_tree_confdir}/ipyparallel-nbextension.json
%files -n jupyter-ipyparallel-doc
%license LICENSE.txt
%dir %{_docdir}/jupyter-ipyparallel/
%{_docdir}/jupyter-ipyparallel/ipyparallel.pdf
%{_docdir}/jupyter-ipyparallel/html/
%changelog
1
0
Hello community,
here is the log from the commit of package python-jupyter_kernel_test for openSUSE:Factory checked in at 2019-05-22 11:05:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_kernel_test (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_kernel_test.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_kernel_test"
Wed May 22 11:05:52 2019 rev:2 rq:698328 version:0.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jupyter_kernel_test/python-jupyter_kernel_test.changes 2018-06-03 12:35:54.840829486 +0200
+++ /work/SRC/openSUSE:Factory/.python-jupyter_kernel_test.new.5148/python-jupyter_kernel_test.changes 2019-05-22 11:05:54.146583496 +0200
@@ -1,0 +2,5 @@
+Thu Apr 25 01:59:57 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Provide jupyter package.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_kernel_test.spec ++++++
--- /var/tmp/diff_new_pack.wtChPJ/_old 2019-05-22 11:05:55.714583834 +0200
+++ /var/tmp/diff_new_pack.wtChPJ/_new 2019-05-22 11:05:55.754583843 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-jupyter_kernel_test
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@@ -25,9 +25,8 @@
Summary: Machinery for testing Jupyter kernels via the messaging protocol
License: BSD-3-Clause
Group: Development/Languages/Python
-Url: http://github.com/Calysto/octave_kernel
+URL: http://github.com/Calysto/octave_kernel
Source0: https://files.pythonhosted.org/packages/py3/j/jupyter_kernel_test/jupyter_k…
-BuildRequires: %{python_module devel}
BuildRequires: %{python_module jupyter_client}
BuildRequires: %{python_module nose}
BuildRequires: %{python_module pip}
@@ -38,7 +37,9 @@
Requires: python-nose
Requires: python-traitlets
BuildArch: noarch
-
+%ifpython3
+Provides: jupyter-jupyter_kernel_test = %{version}
+%endif
%python_subpackages
%description
@@ -48,7 +49,7 @@
(currently 5.0).
%prep
-%setup -T -c -n %{name}-%{version}
+%setup -q -T -c
%build
# Not needed
@@ -60,7 +61,7 @@
--compile \
%{SOURCE0}
-%python_expand cp %{buildroot}%{python_sitelib}/jupyter_kernel_test-%{version}.dist-info/COPYING.md .
+%python_expand cp %{buildroot}%{$python_sitelib}/jupyter_kernel_test-%{version}.dist-info/COPYING.md .
%if %{with test}
%check
@@ -68,7 +69,6 @@
%endif
%files %{python_files}
-%defattr(-,root,root,-)
%license COPYING.md
%{python_sitelib}/jupyter_kernel_test/
%{python_sitelib}/jupyter_kernel_test-%{version}.dist-info
1
0
Hello community,
here is the log from the commit of package python-jupyter_sphinx for openSUSE:Factory checked in at 2019-05-22 11:05:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_sphinx (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_sphinx.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_sphinx"
Wed May 22 11:05:25 2019 rev:4 rq:698305 version:0.1.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jupyter_sphinx/python-jupyter_sphinx.changes 2018-09-15 15:35:59.740995005 +0200
+++ /work/SRC/openSUSE:Factory/.python-jupyter_sphinx.new.5148/python-jupyter_sphinx.changes 2019-05-22 11:05:27.150577667 +0200
@@ -1,0 +2,5 @@
+Thu Apr 25 01:59:57 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Fix dependencies.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_sphinx.spec ++++++
--- /var/tmp/diff_new_pack.Pla2in/_old 2019-05-22 11:05:27.758577798 +0200
+++ /var/tmp/diff_new_pack.Pla2in/_new 2019-05-22 11:05:27.758577798 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-jupyter_sphinx
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@@ -23,20 +23,21 @@
Summary: Jupyter Sphinx Extensions
License: BSD-3-Clause
Group: Development/Languages/Python
-Url: https://github.com/jupyter-widgets/jupyter-sphinx
+URL: https://github.com/jupyter-widgets/jupyter-sphinx
Source: https://files.pythonhosted.org/packages/source/j/jupyter_sphinx/jupyter_sph…
-BuildRequires: %{python_module devel}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
+Requires: python-Sphinx >= 0.6
+Requires: python-ipywidgets >= 6.0.0
+BuildArch: noarch
# SECTION test requirements
BuildRequires: %{python_module Sphinx >= 0.6}
-BuildRequires: %{python_module jupyter_ipywidgets >= 6.0.0}
+BuildRequires: %{python_module ipywidgets >= 6.0.0}
# /SECTION
-Requires: python-Sphinx >= 0.6
-Requires: python-jupyter_ipywidgets >= 6.0.0
-BuildArch: noarch
-
+%ifpython3
+Provides: jupyter-jupyter_sphinx = %{version}
+%endif
%python_subpackages
%description
@@ -55,6 +56,7 @@
%files %{python_files}
%doc README.md
%license LICENSE
-%{python_sitelib}/*
+%{python_sitelib}/jupyter_sphinx-%{version}-py*.egg-info
+%{python_sitelib}/jupyter_sphinx/
%changelog
1
0
Hello community,
here is the log from the commit of package python-jupyter_core for openSUSE:Factory checked in at 2019-05-22 11:05:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_core (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_core.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_core"
Wed May 22 11:05:14 2019 rev:8 rq:698303 version:4.4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jupyter_core/python-jupyter_core-doc.changes 2018-02-21 14:12:56.711005162 +0100
+++ /work/SRC/openSUSE:Factory/.python-jupyter_core.new.5148/python-jupyter_core-doc.changes 2019-05-22 11:05:25.558577323 +0200
@@ -1,0 +2,7 @@
+Thu Apr 25 01:58:55 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Split out jupyter components into subpackage.
+- Add rpm macros.
+- Rename doc package to match jupyter package.
+
+-------------------------------------------------------------------
python-jupyter_core.changes: same change
New:
----
jupyter-core.pdf
jupyter-core.zip
macros.jupyter
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_core-doc.spec ++++++
--- /var/tmp/diff_new_pack.n9zpWB/_old 2019-05-22 11:05:26.158577453 +0200
+++ /var/tmp/diff_new_pack.n9zpWB/_new 2019-05-22 11:05:26.158577453 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-jupyter_core-doc
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,106 +12,96 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
-%if 0%{?suse_version} && 0%{?suse_version} > 1320
-%bcond_without pdf
-%else
-%bcond_with pdf
-%endif
-
-%bcond_without html
-
-%bcond_without tests
-
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%bcond_without tests
Name: python-jupyter_core-doc
Version: 4.4.0
Release: 0
-Summary: Documentation for python-jupyter_core
+Summary: Documentation for the Jupyter base package
License: BSD-3-Clause
-Group: Development/Languages/Python
-Url: https://github.com/jupyter/jupyter_core
-Source: https://files.pythonhosted.org/packages/source/j/jupyter_core/jupyter_core-…
+Group: Documentation/Other
+URL: https://github.com/jupyter/jupyter_core
+Source0: https://files.pythonhosted.org/packages/source/j/jupyter_core/jupyter_core-…
+Source1: https://buildmedia.readthedocs.org/media/pdf/jupyter-core/stable/jupyter-co…
+Source2: https://buildmedia.readthedocs.org/media/htmlzip/jupyter-core/stable/jupyte…
# PATCH-FIX-OPENSUSE -- use_rpms_paths.patch -- change paths so they are easy to replace at build time
Patch0: use_rpms_paths.patch
BuildRequires: %{python_module jupyter_core}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
+BuildRequires: unzip
+BuildArch: noarch
%if %{with tests}
# Test requirements
BuildRequires: %{python_module pytest}
# Python 2.7 test requirements
BuildRequires: python-mock
%endif
-# Documentation requirements
-BuildRequires: %{python_module sphinxcontrib-github-alt}
-%if %{with pdf} || %{with html}
-BuildRequires: python3-Sphinx
-%endif
-%if %{with pdf}
-BuildRequires: python3-Sphinx-latex
-%endif
-Provides: %{name}-html = %{version}
-Provides: %{name}-pdf = %{version}
-Obsoletes: %{name}-html < %{version}
-Obsoletes: %{name}-pdf < %{version}
-Provides: %{python_module jupyter_core-doc = %{version}}
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-BuildArch: noarch
%description
-Documentation and help files for python-jupyter_core.
+Documentation and help files for the Jupyter base package.
+
+%package -n jupyter-jupyter_core-doc
+Summary: Documentation for the Jupyter base package
+Group: Documentation/Other
+Provides: python-jupyter_core-doc = %{version}
+Obsoletes: python-jupyter_core-doc <= %{version}
+Provides: python-jupyter_core-html = %{version}
+Provides: python-jupyter_core-pdf = %{version}
+Obsoletes: python-jupyter_core-html < %{version}
+Obsoletes: python-jupyter_core-pdf < %{version}
+Provides: %{python_module jupyter_core-doc = %{version}}
+Obsoletes: %{python_module jupyter_core-doc <= %{version}}
+Provides: %{python_module jupyter_core-doc-pdf = %{version}}
+Obsoletes: %{python_module jupyter_core-doc-pdf <= %{version}}
+Provides: %{python_module jupyter_core-doc-html = %{version}}
+Obsoletes: %{python_module jupyter_core-doc-html <= %{version}}
+
+%description -n jupyter-jupyter_core-doc
+Documentation and help files for the Jupyter base package.
%prep
%setup -q -n jupyter_core-%{version}
%patch0 -p1
+unzip %{SOURCE2} -d docs
+mv docs/jupyter-core-* docs/html
+rm docs/html/.buildinfo
+
+echo %{_jupyter_prefix}
+echo %{_jupyter_confdir}
+
# Set the appropriate paths dynamically
-sed -i "s|\"/usr/share/jupyter\"|\"%{_datadir}/jupyter\"|" jupyter_core/paths.py
-sed -i "s|\"/etc/jupyter\"|\"%{_sysconfdir}/jupyter\"|" jupyter_core/paths.py
+sed -i "s|\"%{_datadir}/jupyter\"|\"%{_datadir}/jupyter\"|" jupyter_core/paths.py
+sed -i "s|\"%{_sysconfdir}/jupyter\"|\"%{_sysconfdir}/jupyter\"|" jupyter_core/paths.py
sed -i "s|(sys\.prefix, 'share', 'jupyter')|('%{_datadir}', 'jupyter')|" jupyter_core/paths.py
sed -i "s|(sys\.prefix, 'etc', 'jupyter')|('%{_sysconfdir}', 'jupyter')|" jupyter_core/paths.py
%build
-# Build the documentation
-pushd docs
-%if %{with html}
-make html
-rm -rf build/html/.buildinfo
-%endif
-%if %{with pdf}
-make latexpdf
-%endif
-popd
+# Not needed
%install
-mkdir -p %{buildroot}%{_docdir}/python-jupyter_core
+mkdir -p %{buildroot}%{_docdir}/jupyter-jupyter_core/
-%if %{with pdf}
-cp docs/_build/latex/*.pdf %{buildroot}%{_docdir}/python-jupyter_core/
-%endif
-
-%if %{with html}
-cp -r docs/_build/html %{buildroot}%{_docdir}/python-jupyter_core/
-%endif
+cp %{SOURCE1} %{buildroot}%{_docdir}/jupyter-jupyter_core/
+cp -r docs/html %{buildroot}%{_docdir}/jupyter-jupyter_core/
-cp -r examples %{buildroot}%{_docdir}/python-jupyter_core/
-%fdupes %{buildroot}%{_docdir}/python-jupyter_core/
+%fdupes %{buildroot}%{_docdir}/jupyter-jupyter_core/
%if %{with tests}
%check
# test_migrate requires files not found in the package
pushd jupyter_core/tests
rm test_migrate.py
-%python_expand py.test-%{$python_bin_suffix}
+%pytest
popd
%endif
-%files
-%defattr(-,root,root,-)
-%doc COPYING.md
-%{_docdir}/python-jupyter_core/
+%files -n jupyter-jupyter_core-doc
+%license COPYING.md
+%{_docdir}/jupyter-jupyter_core/
%changelog
++++++ python-jupyter_core.spec ++++++
--- /var/tmp/diff_new_pack.n9zpWB/_old 2019-05-22 11:05:26.174577456 +0200
+++ /var/tmp/diff_new_pack.n9zpWB/_new 2019-05-22 11:05:26.178577457 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-jupyter_core
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@@ -23,20 +23,20 @@
Summary: Base package on which Jupyter projects rely
License: BSD-3-Clause
Group: Development/Languages/Python
-Url: https://github.com/jupyter/jupyter_core
-Source: https://files.pythonhosted.org/packages/source/j/jupyter_core/jupyter_core-…
+URL: https://github.com/jupyter/jupyter_core
+Source0: https://files.pythonhosted.org/packages/source/j/jupyter_core/jupyter_core-…
+Source10: macros.jupyter
# PATCH-FIX-OPENSUSE -- use_rpms_paths.patch -- change paths so they are easy to replace at build time
Patch0: use_rpms_paths.patch
-BuildRequires: %{python_module devel}
BuildRequires: %{python_module ipython_genutils}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module traitlets}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
+Requires: jupyter-jupyter_core = %{version}
Requires: python-ipython_genutils
Requires: python-traitlets
-Recommends: python-jupyter_ipython
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
+Recommends: python-ipython
BuildArch: noarch
%python_subpackages
@@ -49,12 +49,30 @@
There is no reason to install this package on its own. It will be pulled in
as a dependency by packages that require it.
+This package provides the python interface.
+
+%package -n jupyter-jupyter_core
+Summary: Base package on which Jupyter projects rely
+Group: Development/Languages/Python
+Requires: python3-jupyter_core = %{version}
+
+%description -n jupyter-jupyter_core
+Core common functionality of Jupyter projects.
+
+This package contains base application classes and configuration inherited by
+other projects. It doesn't do much on its own.
+
+There is no reason to install this package on its own. It will be pulled in
+as a dependency by packages that require it.
+
+This package provides the jupyter components.
+
%prep
%setup -q -n jupyter_core-%{version}
%patch0 -p1
# Set the appropriate paths dynamically
-sed -i "s|\"/usr/share/jupyter\"|\"%{_datadir}/jupyter\"|" jupyter_core/paths.py
-sed -i "s|\"/etc/jupyter\"|\"%{_sysconfdir}/jupyter\"|" jupyter_core/paths.py
+sed -i "s|\"%{_datadir}/jupyter\"|\"%{_datadir}/jupyter\"|" jupyter_core/paths.py
+sed -i "s|\"%{_sysconfdir}/jupyter\"|\"%{_sysconfdir}/jupyter\"|" jupyter_core/paths.py
sed -i "s|(sys\.prefix, 'share', 'jupyter')|('%{_datadir}', 'jupyter')|" jupyter_core/paths.py
sed -i "s|(sys\.prefix, 'etc', 'jupyter')|('%{_sysconfdir}', 'jupyter')|" jupyter_core/paths.py
@@ -65,7 +83,7 @@
%python_install
%{python_expand chmod a+x %{buildroot}%{$python_sitelib}/jupyter_core/troubleshoot.py
-sed -i "s|^#!/usr/bin/env python$|#!%{__$python}|" %{buildroot}%{$python_sitelib}/jupyter_core/troubleshoot.py
+sed -i "s|^#!%{_bindir}/env python$|#!%{__$python}|" %{buildroot}%{$python_sitelib}/jupyter_core/troubleshoot.py
$python -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/jupyter_core/
$python -O -m compileall -d %{$python_sitelib} %{buildroot}%{$python_sitelib}/jupyter_core/
%fdupes %{buildroot}%{$python_sitelib}
@@ -76,17 +94,23 @@
mkdir -p %{buildroot}%{_datadir}/jupyter/kernels/
mkdir -p %{buildroot}%{_sysconfdir}/jupyter/
+install -D -m644 %{SOURCE10} %{buildroot}%{_rpmconfigdir}/macros.d/macros.jupyter
+
%files %{python_files}
-%defattr(-,root,root,-)
-%doc CONTRIBUTING.md COPYING.md README.md
-%python3_only %{_bindir}/jupyter
-%python3_only %{_bindir}/jupyter-migrate
-%{python_sitelib}/jupyter*.py*
-%pycache_only %{python_sitelib}/__pycache__/jupyter*.*.py*
-%{_datadir}/jupyter/
-%{_datadir}/jupyter/kernels/
-%{_sysconfdir}/jupyter/
+%license COPYING.md
+%{python_sitelib}/jupyter.py*
+%pycache_only %{python_sitelib}/__pycache__/jupyter.*.py*
%{python_sitelib}/jupyter_core/
%{python_sitelib}/jupyter_core-%{version}-*.egg-info
+%files -n jupyter-jupyter_core
+%license COPYING.md
+%doc CONTRIBUTING.md README.md
+%{_bindir}/jupyter
+%{_bindir}/jupyter-migrate
+%{_rpmconfigdir}/macros.d/macros.jupyter
+%dir %{_datadir}/jupyter/
+%dir %{_datadir}/jupyter/kernels/
+%dir %{_sysconfdir}/jupyter/
+
%changelog
++++++ macros.jupyter ++++++
%_jupyter_prefix %{_datadir}/jupyter/
%_jupyter_kernel_dir %{_jupyter_prefix}/kernels/
%_jupyter_confdir %{_sysconfdir}/jupyter/
%jupyter_move_config \
%if "$(dirname %{_prefix}/etc/jupyter)" != "$(dirname %{_jupyter_confdir})" \
mkdir -p %{buildroot}%{_sysconfdir} \
mv %{buildroot}%{_prefix}/etc/jupyter %{buildroot}%{_jupyter_confdir} \
rm -d %{buildroot}%{_prefix}/etc \
%endif \
%{nil}
1
0
Hello community,
here is the log from the commit of package python-jupyter_client for openSUSE:Factory checked in at 2019-05-22 11:05:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_client (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_client.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_client"
Wed May 22 11:05:02 2019 rev:9 rq:698302 version:5.2.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jupyter_client/python-jupyter_client-doc.changes 2018-12-24 11:47:29.485128589 +0100
+++ /work/SRC/openSUSE:Factory/.python-jupyter_client.new.5148/python-jupyter_client-doc.changes 2019-05-22 11:05:14.598574957 +0200
@@ -1,0 +2,6 @@
+Thu Apr 25 01:59:57 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Split jupyter components into own subpackage.
+- Rename doc package to match jupyter name.
+
+-------------------------------------------------------------------
python-jupyter_client.changes: same change
New:
----
jupyter-client.pdf
jupyter-client.zip
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_client-doc.spec ++++++
--- /var/tmp/diff_new_pack.b3bwLz/_old 2019-05-22 11:05:18.882575883 +0200
+++ /var/tmp/diff_new_pack.b3bwLz/_new 2019-05-22 11:05:18.910575888 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-jupyter_client-doc
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,11 +12,12 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%define doc_ver 5.2.3
# PDF documentation currently broken
%bcond_with pdf
%bcond_without html
@@ -24,24 +25,26 @@
Name: python-jupyter_client-doc
Version: 5.2.4
Release: 0
-Summary: Documentation for python-jupyter_client
+Summary: Documentation for the Jupyter client libraries
License: BSD-3-Clause
-Group: Development/Languages/Python
-Url: https://github.com/jupyter/jupyter_client
-Source: https://files.pythonhosted.org/packages/source/j/jupyter_client/jupyter_cli…
+Group: Documentation/Other
+URL: https://github.com/jupyter/jupyter_client
+Source0: https://files.pythonhosted.org/packages/source/j/jupyter_client/jupyter_cli…
+Source1: https://buildmedia.readthedocs.org/media/pdf/jupyter-client/%{doc_ver}/jupy…
+Source2: https://buildmedia.readthedocs.org/media/htmlzip/jupyter-client/%{doc_ver}/…
BuildRequires: %{python_module jupyter_client}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
+BuildRequires: unzip
Provides: %{name}-html = %{version}
Provides: %{name}-pdf = %{version}
Obsoletes: %{name}-html < %{version}
Obsoletes: %{name}-pdf < %{version}
-Provides: python-jupyter_client-doc = %{version}
BuildArch: noarch
%if %{with tests}
# Test Requirements
BuildRequires: %{python_module backcall}
-BuildRequires: %{python_module jupyter_ipykernel}
+BuildRequires: %{python_module ipykernel}
BuildRequires: %{python_module nose}
BuildRequires: %{python_module pytest}
# Python 2.7 test requirements
@@ -57,45 +60,49 @@
%endif
%description
-Documentation and help files for python-jupyter_client.
+This package contains documentation and help files for the Jupyter
+client libraries.
+
+%package -n jupyter-jupyter_client-doc
+Summary: Documentation for the Jupyter client libraries
+Group: Documentation/Other
+Requires: jupyter-jupyter_client = %{version}
+Provides: python-jupyter_client-doc = %{version}
+Obsoletes: python-jupyter_client-doc <= %{version}
+Provides: %{python_module jupyter_client-doc = %{version}}
+Obsoletes: %{python_module jupyter_client-doc <= %{version}}
+
+%description -n jupyter-jupyter_client-doc
+This package contains documentation and help files for the Jupyter
+client libraries.
%prep
%setup -q -n jupyter_client-%{version}
+unzip %{SOURCE2} -d docs
+mv docs/jupyter-client-* docs/html
+rm docs/html/.buildinfo
%build
-# Build the documentation
-pushd docs
-%if %{with html}
-make %{?_smp_mflags} html
-rm -rf build/html/.buildinfo
-%endif
-%if %{with pdf}
-make %{?_smp_mflags} latexpdf
-%endif
-popd
+# Not needed
%install
-mkdir -p %{buildroot}%{_docdir}/python-jupyter_client
+mkdir -p %{buildroot}%{_docdir}/jupyter-jupyter_client
-%if %{with pdf}
-cp docs/_build/latex/jupyter_core.pdf %{buildroot}%{_docdir}/python-jupyter_client/
-%endif
-
-%if %{with html}
-cp -r docs/_build/html %{buildroot}%{_docdir}/python-jupyter_client/
-%endif
+cp %{SOURCE1} %{buildroot}%{_docdir}/jupyter-jupyter_client/
+cp -r docs/html %{buildroot}%{_docdir}/jupyter-jupyter_client/
-%fdupes %{buildroot}%{_docdir}/python-jupyter_client/
+%fdupes %{buildroot}%{_docdir}/jupyter-jupyter_client/
%if %{with tests}
%check
pushd jupyter_client/tests
-%python_expand py.test-%{$python_bin_suffix}
+%pytest
popd
%endif
-%files
+%files -n jupyter-jupyter_client-doc
%license COPYING.md
-%{_docdir}/python-jupyter_client/
+%{_docdir}/jupyter-jupyter_client/jupyter-client.pdf
+%{_docdir}/jupyter-jupyter_client/html/
%changelog
++++++ python-jupyter_client.spec ++++++
--- /var/tmp/diff_new_pack.b3bwLz/_old 2019-05-22 11:05:19.234575958 +0200
+++ /var/tmp/diff_new_pack.b3bwLz/_new 2019-05-22 11:05:19.266575965 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-jupyter_client
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@@ -23,12 +23,12 @@
Summary: Jupyter protocol implementation and client libraries
License: BSD-3-Clause
Group: Development/Languages/Python
-Url: https://github.com/jupyter/jupyter_client
+URL: https://github.com/jupyter/jupyter_client
Source: https://files.pythonhosted.org/packages/source/j/jupyter_client/jupyter_cli…
-BuildRequires: %{python_module devel}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
+Requires: jupyter-jupyter_client = %{version}
Requires: python-entrypoints
Requires: python-jupyter_core
Requires: python-python-dateutil >= 2.1
@@ -45,6 +45,22 @@
It also provides the jupyter kernelspec entrypoint for installing kernelspecs
for use with Jupyter frontends.
+This package provides the python interface.
+
+%package -n jupyter-jupyter_client
+Summary: Jupyter protocol implementation and client libraries
+Group: Development/Languages/Python
+Requires: python3-jupyter_client = %{version}
+
+%description -n jupyter-jupyter_client
+This package contains the reference implementation of the Jupyter protocol.
+It also provides client and kernel management APIs for working with kernels.
+
+It also provides the jupyter kernelspec entrypoint for installing kernelspecs
+for use with Jupyter frontends.
+
+This package provides the jupyter components.
+
%prep
%setup -q -n jupyter_client-%{version}
@@ -57,10 +73,14 @@
%files %{python_files}
%license COPYING.md
+%{python_sitelib}/jupyter_client-%{version}-py*.egg-info
+%{python_sitelib}/jupyter_client/
+
+%files -n jupyter-jupyter_client
+%license COPYING.md
%doc CONTRIBUTING.md README.md
-%python3_only %{_bindir}/jupyter-kernel
-%python3_only %{_bindir}/jupyter-kernelspec
-%python3_only %{_bindir}/jupyter-run
-%{python_sitelib}/*
+%{_bindir}/jupyter-kernel
+%{_bindir}/jupyter-kernelspec
+%{_bindir}/jupyter-run
%changelog
1
0
Hello community,
here is the log from the commit of package python-jupyter_contrib_core for openSUSE:Factory checked in at 2019-05-22 11:04:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_contrib_core (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_contrib_core.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_contrib_core"
Wed May 22 11:04:22 2019 rev:2 rq:697969 version:0.3.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jupyter_contrib_core/python-jupyter_contrib_core.changes 2018-06-03 12:35:32.733638835 +0200
+++ /work/SRC/openSUSE:Factory/.python-jupyter_contrib_core.new.5148/python-jupyter_contrib_core.changes 2019-05-22 11:04:24.426596452 +0200
@@ -1,0 +2,11 @@
+Thu Apr 25 01:59:57 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Update to 0.5.1
+ * Fix for navigation hotkeys
+ * gist_it Making github endpoint configurable to support publishing gists to Github Enterprise
+ * Fix treefilter
+ * Enable ruler extension in editor
+ * Several spelling fixes
+- Split jupyter components into own subpackage.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_contrib_core.spec ++++++
--- /var/tmp/diff_new_pack.rEf8SH/_old 2019-05-22 11:04:25.710595843 +0200
+++ /var/tmp/diff_new_pack.rEf8SH/_new 2019-05-22 11:04:25.746595826 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-jupyter_contrib_core
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,39 +12,41 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
-
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
-%bcond_without tests
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%bcond_without tests
Name: python-jupyter_contrib_core
Version: 0.3.3
Release: 0
-License: BSD-3-Clause
Summary: Common utilities for jupyter-contrib projects
-Url: https://github.com/jupyter-contrib/jupyter_contrib_core
+License: BSD-3-Clause
Group: Development/Languages/Python
+Url: https://github.com/jupyter-contrib/jupyter_contrib_core
Source: https://files.pythonhosted.org/packages/source/j/jupyter_contrib_core/jupyt…
-BuildRequires: %{python_module devel}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
%if %{with tests}
BuildRequires: %{python_module jupyter_core}
-BuildRequires: %{python_module jupyter_notebook >= 4.0}
BuildRequires: %{python_module nose}
+BuildRequires: %{python_module notebook >= 4.0}
BuildRequires: %{python_module tornado}
BuildRequires: %{python_module traitlets}
BuildRequires: python-mock
%endif
Requires: python-jupyter_core
-Requires: python-jupyter_notebook >= 4.0
+Requires: python-notebook >= 4.0
Requires: python-setuptools
Requires: python-tornado
Requires: python-traitlets
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
+Provides: python-jupyter_contrib_core = %{version}
+Obsoletes: python-jupyter_contrib_core <= %{version}
+Requires: jupyter-jupyter_contrib_core = %{version}
BuildArch: noarch
+
%python_subpackages
%description
@@ -55,6 +57,25 @@
- common application components and cli scripts
- utility classes and functions for use in tests
+This package provides the python interface.
+
+%package -n jupyter-jupyter_contrib_core
+Summary: Libraries and Languages for Jupyter
+Group: Development/Languages/Python
+Requires: jupyter-jupyter_core
+Requires: jupyter-notebook >= 4.0
+Requires: python3-jupyter_contrib_core = %{version}
+
+%description -n jupyter-jupyter_contrib_core
+Common utilities for jupyter-contrib projects. Includes:
+
+- providing a notebook-4.2-compatible nbextension API in order to
+ smooth over differences in versions 4.0 and 4.1
+- common application components and cli scripts
+- utility classes and functions for use in tests
+
+This package provides the jupyter components.
+
%prep
%setup -q -n jupyter_contrib_core-%{version}
@@ -76,11 +97,13 @@
%endif
%files %{python_files}
-%defattr(-,root,root,-)
%doc README.md
%license LICENSE.txt
-%python3_only %{_bindir}/jupyter-contrib
%{python_sitelib}/jupyter_contrib_core/
%{python_sitelib}/jupyter_contrib_core-%{version}-py*.egg-info
+%files -n jupyter-jupyter_contrib_core
+%license LICENSE.txt
+%{_bindir}/jupyter-contrib
+
%changelog
1
0
Hello community,
here is the log from the commit of package python-traittypes for openSUSE:Factory checked in at 2019-05-22 11:04:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-traittypes (Old)
and /work/SRC/openSUSE:Factory/.python-traittypes.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-traittypes"
Wed May 22 11:04:14 2019 rev:4 rq:697961 version:0.2.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-traittypes/python-traittypes.changes 2019-02-24 17:17:14.424430886 +0100
+++ /work/SRC/openSUSE:Factory/.python-traittypes.new.5148/python-traittypes.changes 2019-05-22 11:04:17.158599901 +0200
@@ -1,0 +2,6 @@
+Thu Apr 25 20:40:37 UTC 2019 - Todd R <toddrme2178(a)gmail.com>
+
+- Disable xarray dependency and tests that require it on python2
+ since xarray no longer supports python2.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-traittypes.spec ++++++
--- /var/tmp/diff_new_pack.jmIeVb/_old 2019-05-22 11:04:18.202599406 +0200
+++ /var/tmp/diff_new_pack.jmIeVb/_new 2019-05-22 11:04:18.202599406 +0200
@@ -37,7 +37,7 @@
BuildRequires: %{python_module pandas}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module traitlets >= 4.2.2}
-BuildRequires: %{python_module xarray}
+BuildRequires: python3-xarray
# /SECTION
%python_subpackages
@@ -56,7 +56,8 @@
%check
# gh#jupyter-widgets/traittypes#31
-%python_expand nosetests-%{$python_bin_suffix} -v -e 'test_bad_values' traittypes
+# tests require xarray, which doesn't support python2, even though the package itself doesn't
+nosetests-%{python3_bin_suffix} -v -e 'test_bad_values' traittypes
%files %{python_files}
%doc README.md
1
0
Hello community,
here is the log from the commit of package python-django-rest-framework-client for openSUSE:Factory checked in at 2019-05-22 11:03:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-rest-framework-client (Old)
and /work/SRC/openSUSE:Factory/.python-django-rest-framework-client.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-django-rest-framework-client"
Wed May 22 11:03:53 2019 rev:1 rq:697028 version:0.1.1
Changes:
--------
New Changes file:
--- /dev/null 2019-05-02 15:18:01.516169518 +0200
+++ /work/SRC/openSUSE:Factory/.python-django-rest-framework-client.new.5148/python-django-rest-framework-client.changes 2019-05-22 11:03:57.914609034 +0200
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------
+Thu Apr 11 23:23:06 UTC 2019 - John Vandenberg <jayvdb(a)gmail.com>
+
+- Initial spec for v0.1.1
New:
----
django-rest-framework-client-0.1.1.tar.gz
python-django-rest-framework-client.changes
python-django-rest-framework-client.spec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-django-rest-framework-client.spec ++++++
#
# spec file for package python-django-rest-framework-client
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-django-rest-framework-client
Version: 0.1.1
Release: 0
License: MIT
Summary: Python client for a Django REST Framework based web site
Url: https://github.com/dkarchmer/django-rest-framework-client
Group: Development/Languages/Python
Source: https://github.com/dkarchmer/django-rest-framework-client/archive/v%{versio…
BuildRequires: python-rpm-macros
BuildRequires: %{python_module setuptools}
# SECTION test requirements
BuildRequires: %{python_module Django}
BuildRequires: %{python_module mock}
BuildRequires: %{python_module requests}
BuildRequires: %{python_module requests-mock}
BuildRequires: %{python_module unittest2}
# /SECTION
BuildRequires: fdupes
Requires: python-Django
Requires: python-requests
BuildArch: noarch
%python_subpackages
%description
Python client for a Django REST Framework based web site.
%prep
%setup -q -n django-rest-framework-client-%{version}
%build
%python_build
%install
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
%python_exec setup.py test --test-suite=tests
%files %{python_files}
%doc CHANGELOG.md README.md
%license LICENSE
%{python_sitelib}/*
%changelog
1
0
Hello community,
here is the log from the commit of package azure-cli-backup for openSUSE:Factory checked in at 2019-05-22 11:03:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-backup (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-backup.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-backup"
Wed May 22 11:03:29 2019 rev:5 rq:696869 version:1.2.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-backup/azure-cli-backup.changes 2018-10-15 10:48:22.731073629 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-backup.new.5148/azure-cli-backup.changes 2019-05-22 11:03:37.034618942 +0200
@@ -1,0 +2,18 @@
+Wed Apr 17 07:28:25 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 1.2.3
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Add patch to drop compatible releases operator from setup.py,
+ required for SLES12 as the setuptools version is too old
+ + acb_drop-compatible-releases-operator.patch
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+
+-------------------------------------------------------------------
Old:
----
azure-cli-backup-1.2.1.tar.gz
New:
----
acb_drop-compatible-releases-operator.patch
azure-cli-backup-1.2.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-backup.spec ++++++
--- /var/tmp/diff_new_pack.kd7067/_old 2019-05-22 11:03:39.466617788 +0200
+++ /var/tmp/diff_new_pack.kd7067/_new 2019-05-22 11:03:39.506617769 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-backup
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-backup
-Version: 1.2.1
+Version: 1.2.3
Release: 0
Summary: Microsoft Azure CLI 'backup' Command Module
License: MIT
@@ -25,18 +25,18 @@
Url: https://github.com/Azure/azure-cli
Source: https://files.pythonhosted.org/packages/source/a/azure-cli-backup/azure-cli…
Source1: LICENSE.txt
+Patch1: acb_drop-compatible-releases-operator.patch
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
Requires: python3-azure-mgmt-recoveryservices >= 0.1.0
Requires: python3-azure-mgmt-recoveryservicesbackup >= 0.1.1
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -49,6 +49,7 @@
%prep
%setup -q -n azure-cli-backup-%{version}
+%patch1 -p1
%build
install -m 644 %{SOURCE1} %{_builddir}/azure-cli-backup-%{version}
@@ -56,6 +57,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ acb_drop-compatible-releases-operator.patch ++++++
diff -Nru azure-cli-backup-1.2.3.orig/setup.py azure-cli-backup-1.2.3/setup.py
--- azure-cli-backup-1.2.3.orig/setup.py 2019-04-05 00:46:51.000000000 +0200
+++ azure-cli-backup-1.2.3/setup.py 2019-04-17 09:27:06.420230415 +0200
@@ -31,8 +31,8 @@
]
DEPENDENCIES = [
- 'azure-mgmt-recoveryservices~=0.1.1',
- 'azure-mgmt-recoveryservicesbackup~=0.1.2',
+ 'azure-mgmt-recoveryservices>=0.1.1',
+ 'azure-mgmt-recoveryservicesbackup>=0.1.2',
'azure-cli-core'
]
++++++ azure-cli-backup-1.2.1.tar.gz -> azure-cli-backup-1.2.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-backup-1.2.1/HISTORY.rst new/azure-cli-backup-1.2.3/HISTORY.rst
--- old/azure-cli-backup-1.2.1/HISTORY.rst 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-backup-1.2.3/HISTORY.rst 2019-04-05 00:46:51.000000000 +0200
@@ -2,6 +2,13 @@
Release History
===============
+1.2.3
++++++
+* Minor fixes.
+
+1.2.2
++++++
+* Minor fixes.
1.2.1
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-backup-1.2.1/PKG-INFO new/azure-cli-backup-1.2.3/PKG-INFO
--- old/azure-cli-backup-1.2.1/PKG-INFO 2018-08-23 01:10:11.000000000 +0200
+++ new/azure-cli-backup-1.2.3/PKG-INFO 2019-04-05 00:47:25.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-backup
-Version: 1.2.1
+Version: 1.2.3
Summary: Microsoft Azure Command-Line Tools Recovery Services Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -19,6 +19,13 @@
Release History
===============
+ 1.2.3
+ +++++
+ * Minor fixes.
+
+ 1.2.2
+ +++++
+ * Minor fixes.
1.2.1
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-backup-1.2.1/azure/cli/command_modules/backup/_help.py new/azure-cli-backup-1.2.3/azure/cli/command_modules/backup/_help.py
--- old/azure-cli-backup-1.2.1/azure/cli/command_modules/backup/_help.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-backup-1.2.3/azure/cli/command_modules/backup/_help.py 2019-04-05 00:46:51.000000000 +0200
@@ -5,208 +5,309 @@
# --------------------------------------------------------------------------------------------
from knack.help_files import helps
+# pylint: disable=line-too-long, too-many-lines
helps['backup'] = """
- type: group
- short-summary: Manage Azure Backups.
- """
-
-helps['backup vault'] = """
- type: group
- short-summary: Online storage entity in Azure used to hold data such as backup copies, recovery points and backup policies.
- """
-
-helps['backup vault create'] = """
- type: command
- short-summary: Create a new Recovery Services vault.
- """
-
-helps['backup vault delete'] = """
- type: command
- short-summary: Delete an existing Recovery services vault.
- """
-
-helps['backup vault list'] = """
- type: command
- short-summary: List Recovery service vaults within a subscription.
- """
-
-helps['backup vault show'] = """
- type: command
- short-summary: Show details of a particular Recovery service vault.
- """
-
-helps['backup vault backup-properties'] = """
- type: group
- short-summary: Properties of the Recovery Services vault.
- """
-
-helps['backup vault backup-properties show'] = """
- type: command
- short-summary: Gets backup related properties of the Recovery Services vault.
- """
-
-helps['backup vault backup-properties set'] = """
- type: command
- short-summary: Sets backup related properties of the Recovery Services vault.
- """
+type: group
+short-summary: Manage Azure Backups.
+"""
helps['backup container'] = """
- type: group
- short-summary: Resource which houses items or applications to be protected.
- """
+type: group
+short-summary: Resource which houses items or applications to be protected.
+"""
helps['backup container list'] = """
- type: command
- short-summary: List containers registered to a Recovery services vault.
- """
+type: command
+short-summary: List containers registered to a Recovery services vault.
+examples:
+ - name: List containers registered to a Recovery services vault. (autogenerated)
+ text: az backup container list --resource-group MyResourceGroup --vault-name MyVault
+ crafted: true
+"""
helps['backup container show'] = """
- type: command
- short-summary: Show details of a container registered to a Recovery services vault.
- """
+type: command
+short-summary: Show details of a container registered to a Recovery services vault.
+examples:
+ - name: Show details of a container registered to a Recovery services vault. (autogenerated)
+ text: az backup container show --name MyContainer --resource-group MyResourceGroup --vault-name MyVault
+ crafted: true
+"""
helps['backup item'] = """
- type: group
- short-summary: An item which is already protected or backed up to an Azure Recovery services vault with an associated policy.
- """
+type: group
+short-summary: An item which is already protected or backed up to an Azure Recovery services vault with an associated policy.
+"""
helps['backup item list'] = """
- type: command
- short-summary: List all backed up items within a container.
- """
+type: command
+short-summary: List all backed up items within a container.
+examples:
+ - name: List all backed up items within a container. (autogenerated)
+ text: az backup item list --resource-group MyResourceGroup --vault-name MyVault
+ crafted: true
+"""
+
+helps['backup item set-policy'] = """
+type: command
+short-summary: Update the policy associated with this item.
+"""
helps['backup item show'] = """
- type: command
- short-summary: Show details of a particular backed up item.
- """
+type: command
+short-summary: Show details of a particular backed up item.
+"""
-helps['backup item set-policy'] = """
- type: command
- short-summary: Update the policy associated with this item.
- """
+helps['backup job'] = """
+type: group
+short-summary: Entity which contains details of the job.
+"""
-helps['backup policy'] = """
- type: group
- short-summary: A backup policy defines when you want to take a backup and for how long you would retain each backup copy.
- """
+helps['backup job list'] = """
+type: command
+short-summary: List all backup jobs of a Recovery Services vault.
+examples:
+ - name: List all backup jobs of a Recovery Services vault
+ text: az backup job list --resource-group MyResourceGroup --vault-name MyVault
+ crafted: true
+"""
-helps['backup policy get-default-for-vm'] = """
- type: command
- short-summary: Get the default policy with default values to backup a VM.
- """
+helps['backup job show'] = """
+type: command
+short-summary: Show details of a particular job.
+examples:
+ - name: Show details of a particular job. (autogenerated)
+ text: az backup job show --name MyJob --resource-group MyResourceGroup --vault-name MyVault
+ crafted: true
+"""
-helps['backup policy list'] = """
- type: command
- short-summary: List all policies for a Recovery services vault.
- """
+helps['backup job stop'] = """
+type: command
+short-summary: Suspend or terminate a currently running job.
+examples:
+ - name: Suspend or terminate a currently running job. (autogenerated)
+ text: az backup job stop --name MyJob --resource-group MyResourceGroup --vault-name MyVault
+ crafted: true
+"""
-helps['backup policy show'] = """
- type: command
- short-summary: Show details of a particular policy.
- """
+helps['backup job wait'] = """
+type: command
+short-summary: Wait until either the job completes or the specified timeout value is reached.
+examples:
+ - name: Wait until either the job completes or the specified timeout value is reached
+ text: az backup job wait --name MyJob --resource-group MyResourceGroup --vault-name MyVault
+ crafted: true
+"""
+
+helps['backup policy'] = """
+type: group
+short-summary: A backup policy defines when you want to take a backup and for how long you would retain each backup copy.
+"""
helps['backup policy delete'] = """
- type: command
- short-summary: Before you can delete a Backup protection policy, the policy must not have any associated Backup items. To associate another policy with a Backup item, use the backup item set-policy command.
- """
+type: command
+short-summary: Before you can delete a Backup protection policy, the policy must not have any associated Backup items. To associate another policy with a Backup item, use the backup item set-policy command.
+examples:
+ - name: Before you can delete a Backup protection policy, the policy must not have any associated Backup items. To associate another policy with a Backup item, use the backup item set-policy command. (autogenerated)
+ text: az backup policy delete --name MyBackupPolicy --resource-group MyResourceGroup --vault-name MyVault
+ crafted: true
+"""
-helps['backup policy set'] = """
- type: command
- short-summary: Update the properties of the backup policy.
- """
+helps['backup policy get-default-for-vm'] = """
+type: command
+short-summary: Get the default policy with default values to backup a VM.
+examples:
+ - name: Get the default policy with default values to backup a VM. (autogenerated)
+ text: az backup policy get-default-for-vm --resource-group MyResourceGroup --vault-name MyVault
+ crafted: true
+"""
-helps['backup policy list-associated-items'] = """
- type: command
- short-summary: List all items protected by a backup policy.
- """
+helps['backup policy list'] = """
+type: command
+short-summary: List all policies for a Recovery services vault.
+examples:
+ - name: List all policies for a Recovery services vault. (autogenerated)
+ text: az backup policy list --resource-group MyResourceGroup --vault-name MyVault
+ crafted: true
+"""
-helps['backup recoverypoint'] = """
- type: group
- short-summary: A snapshot of data at that point-of-time, stored in Recovery Services Vault, from which you can restore information.
- """
+helps['backup policy list-associated-items'] = """
+type: command
+short-summary: List all items protected by a backup policy.
+examples:
+ - name: List all items protected by a backup policy
+ text: az backup policy list-associated-items --name MyBackupPolicy --resource-group MyResourceGroup --vault-name MyVault
+ crafted: true
+"""
-helps['backup recoverypoint list'] = """
- type: command
- short-summary: List all recovery points of a backed up item.
- """
+helps['backup policy set'] = """
+type: command
+short-summary: Update the properties of the backup policy.
+examples:
+ - name: Update the properties of the backup policy. (autogenerated)
+ text: az backup policy set --policy {policy} --resource-group MyResourceGroup --vault-name MyVault
+ crafted: true
+"""
-helps['backup recoverypoint show'] = """
- type: command
- short-summary: Shows details of a particular recovery point.
- """
+helps['backup policy show'] = """
+type: command
+short-summary: Show details of a particular policy.
+examples:
+ - name: Show details of a particular policy
+ text: az backup policy show --name MyBackupPolicy --resource-group MyResourceGroup --vault-name MyVault
+ crafted: true
+"""
helps['backup protection'] = """
- type: group
- short-summary: Manage protection of your items, enable protection or disable it, or take on-demand backups.
- """
+type: group
+short-summary: Manage protection of your items, enable protection or disable it, or take on-demand backups.
+"""
+
+helps['backup protection backup-now'] = """
+type: command
+short-summary: Perform an on-demand backup of a backed up item.
+examples:
+ - name: Perform an on-demand backup of a backed up item. (autogenerated)
+ text: az backup protection backup-now --container-name MyContainer --item-name MyItem --resource-group MyResourceGroup --retain-until 01-02-2018 --vault-name MyVault
+ crafted: true
+"""
helps['backup protection check-vm'] = """
- type: command
- short-summary: Find out whether the virtual machine is protected or not. If protected, it returns the recovery services vault ID, otherwise it returns empty.
- """
+type: command
+short-summary: Find out whether the virtual machine is protected or not. If protected, it returns the recovery services vault ID, otherwise it returns empty.
+examples:
+ - name: Find out whether the virtual machine is protected or not. If protected, it returns the recovery services vault ID, otherwise it returns empty. (autogenerated)
+ text: az backup protection check-vm --vm-id {vm-id}
+ crafted: true
+"""
+
+helps['backup protection disable'] = """
+type: command
+short-summary: Stop protecting a backed up Azure VM.
+examples:
+ - name: Stop protecting a backed up Azure VM. (autogenerated)
+ text: az backup protection disable --container-name MyContainer --delete-backup-data false --item-name MyItem --resource-group MyResourceGroup --vault-name MyVault --yes
+ crafted: true
+"""
helps['backup protection enable-for-vm'] = """
- type: command
- short-summary: Start protecting a previously unprotected Azure VM as per the specified policy to a Recovery services vault.
- """
+type: command
+short-summary: Start protecting a previously unprotected Azure VM as per the specified policy to a Recovery services vault.
+examples:
+ - name: Start protecting a previously unprotected Azure VM as per the specified policy to a Recovery services vault. (autogenerated)
+ text: az backup protection enable-for-vm --policy-name MyPolicy --resource-group MyResourceGroup --vault-name MyVault --vm myVM
+ crafted: true
+"""
-helps['backup protection backup-now'] = """
- type: command
- short-summary: Perform an on-demand backup of a backed up item.
- """
+helps['backup recoverypoint'] = """
+type: group
+short-summary: A snapshot of data at that point-of-time, stored in Recovery Services Vault, from which you can restore information.
+"""
-helps['backup protection disable'] = """
- type: command
- short-summary: Stop protecting a backed up Azure VM.
- """
+helps['backup recoverypoint list'] = """
+type: command
+short-summary: List all recovery points of a backed up item.
+examples:
+ - name: List all recovery points of a backed up item. (autogenerated)
+ text: az backup recoverypoint list --container-name MyContainer --item-name MyItem --resource-group MyResourceGroup --vault-name MyVault
+ crafted: true
+"""
-helps['backup restore'] = """
- type: group
- short-summary: Restore backed up items from recovery points in a Recovery Services vault.
- """
+helps['backup recoverypoint show'] = """
+type: command
+short-summary: Shows details of a particular recovery point.
+"""
-helps['backup restore restore-disks'] = """
- type: command
- short-summary: Restore disks of the backed VM from the specified recovery point.
- """
+helps['backup restore'] = """
+type: group
+short-summary: Restore backed up items from recovery points in a Recovery Services vault.
+"""
helps['backup restore files'] = """
- type: group
- short-summary: Gives access to all files of a recovery point.
- """
+type: group
+short-summary: Gives access to all files of a recovery point.
+"""
helps['backup restore files mount-rp'] = """
- type: command
- short-summary: Download a script which mounts files of a recovery point.
- """
+type: command
+short-summary: Download a script which mounts files of a recovery point.
+examples:
+ - name: Download a script which mounts files of a recovery point. (autogenerated)
+ text: az backup restore files mount-rp --container-name MyContainer --item-name MyItem --resource-group MyResourceGroup --rp-name MyRp --vault-name MyVault
+ crafted: true
+"""
helps['backup restore files unmount-rp'] = """
- type: command
- short-summary: Close access to the recovery point.
- """
+type: command
+short-summary: Close access to the recovery point.
+"""
-helps['backup job'] = """
- type: group
- short-summary: Entity which contains details of the job.
- """
+helps['backup restore restore-disks'] = """
+type: command
+short-summary: Restore disks of the backed VM from the specified recovery point.
+examples:
+ - name: Restore disks of the backed VM from the specified recovery point. (autogenerated)
+ text: az backup restore restore-disks --container-name MyContainer --item-name MyItem --resource-group MyResourceGroup --rp-name MyRp --storage-account mystorageaccount --vault-name MyVault
+ crafted: true
+"""
-helps['backup job list'] = """
- type: command
- short-summary: List all backup jobs of a Recovery Services vault.
- """
+helps['backup vault'] = """
+type: group
+short-summary: Online storage entity in Azure used to hold data such as backup copies, recovery points and backup policies.
+"""
-helps['backup job show'] = """
- type: command
- short-summary: Show details of a particular job.
- """
+helps['backup vault backup-properties'] = """
+type: group
+short-summary: Properties of the Recovery Services vault.
+"""
-helps['backup job stop'] = """
- type: command
- short-summary: Suspend or terminate a currently running job.
- """
+helps['backup vault backup-properties set'] = """
+type: command
+short-summary: Sets backup related properties of the Recovery Services vault.
+examples:
+ - name: Sets backup related properties of the Recovery Services vault. (autogenerated)
+ text: az backup vault backup-properties set --backup-storage-redundancy GeoRedundant --name MyRecoveryServicesVault --resource-group MyResourceGroup
+ crafted: true
+"""
-helps['backup job wait'] = """
- type: command
- short-summary: Wait until either the job completes or the specified timeout value is reached.
- """
+helps['backup vault backup-properties show'] = """
+type: command
+short-summary: Gets backup related properties of the Recovery Services vault.
+examples:
+ - name: Gets backup related properties of the Recovery Services vault. (autogenerated)
+ text: az backup vault backup-properties show --name MyRecoveryServicesVault --resource-group MyResourceGroup
+ crafted: true
+"""
+
+helps['backup vault create'] = """
+type: command
+short-summary: Create a new Recovery Services vault.
+examples:
+ - name: Create a new Recovery Services vault. (autogenerated)
+ text: az backup vault create --location westus2 --name MyRecoveryServicesVault --resource-group MyResourceGroup
+ crafted: true
+"""
+
+helps['backup vault delete'] = """
+type: command
+short-summary: Delete an existing Recovery services vault.
+examples:
+ - name: Delete an existing Recovery services vault. (autogenerated)
+ text: az backup vault delete --name MyRecoveryServicesVault --resource-group MyResourceGroup --yes
+ crafted: true
+"""
+
+helps['backup vault list'] = """
+type: command
+short-summary: List Recovery service vaults within a subscription.
+"""
+
+helps['backup vault show'] = """
+type: command
+short-summary: Show details of a particular Recovery service vault.
+examples:
+ - name: Show details of a particular Recovery service vault. (autogenerated)
+ text: az backup vault show --name MyRecoveryServicesVault --resource-group MyResourceGroup
+ crafted: true
+"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-backup-1.2.1/azure/cli/command_modules/backup/commands.py new/azure-cli-backup-1.2.3/azure/cli/command_modules/backup/commands.py
--- old/azure-cli-backup-1.2.1/azure/cli/command_modules/backup/commands.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-backup-1.2.3/azure/cli/command_modules/backup/commands.py 2019-04-05 00:46:51.000000000 +0200
@@ -19,11 +19,11 @@
backup_custom = CliCommandType(operations_tmpl='azure.cli.command_modules.backup.custom#{}')
backup_vaults_sdk = CliCommandType(
- operations_tmpl='azure.mgmt.recoveryservices.operations.vaults_operations#VaultsOperations.{}',
+ operations_tmpl='azure.mgmt.recoveryservices.operations#VaultsOperations.{}',
client_factory=vaults_cf)
backup_storage_config_sdk = CliCommandType(
- operations_tmpl='azure.mgmt.recoveryservices.operations.backup_storage_configs_operations#BackupStorageConfigsOperations.{}',
+ operations_tmpl='azure.mgmt.recoveryservices.operations#BackupStorageConfigsOperations.{}',
client_factory=vaults_cf)
with self.command_group('backup vault', backup_vaults_sdk, client_factory=vaults_cf) as g:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-backup-1.2.1/azure_cli_backup.egg-info/PKG-INFO new/azure-cli-backup-1.2.3/azure_cli_backup.egg-info/PKG-INFO
--- old/azure-cli-backup-1.2.1/azure_cli_backup.egg-info/PKG-INFO 2018-08-23 01:10:11.000000000 +0200
+++ new/azure-cli-backup-1.2.3/azure_cli_backup.egg-info/PKG-INFO 2019-04-05 00:47:25.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-backup
-Version: 1.2.1
+Version: 1.2.3
Summary: Microsoft Azure Command-Line Tools Recovery Services Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -19,6 +19,13 @@
Release History
===============
+ 1.2.3
+ +++++
+ * Minor fixes.
+
+ 1.2.2
+ +++++
+ * Minor fixes.
1.2.1
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-backup-1.2.1/azure_cli_backup.egg-info/requires.txt new/azure-cli-backup-1.2.3/azure_cli_backup.egg-info/requires.txt
--- old/azure-cli-backup-1.2.1/azure_cli_backup.egg-info/requires.txt 2018-08-23 01:10:11.000000000 +0200
+++ new/azure-cli-backup-1.2.3/azure_cli_backup.egg-info/requires.txt 2019-04-05 00:47:25.000000000 +0200
@@ -1,3 +1,3 @@
-azure-mgmt-recoveryservices==0.1.0
-azure-mgmt-recoveryservicesbackup==0.1.1
+azure-mgmt-recoveryservices~=0.1.1
+azure-mgmt-recoveryservicesbackup~=0.1.2
azure-cli-core
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-backup-1.2.1/setup.py new/azure-cli-backup-1.2.3/setup.py
--- old/azure-cli-backup-1.2.1/setup.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-backup-1.2.3/setup.py 2019-04-05 00:46:51.000000000 +0200
@@ -13,7 +13,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "1.2.1"
+VERSION = "1.2.3"
# The full list of classifiers is available at
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
@@ -31,8 +31,8 @@
]
DEPENDENCIES = [
- 'azure-mgmt-recoveryservices==0.1.0',
- 'azure-mgmt-recoveryservicesbackup==0.1.1',
+ 'azure-mgmt-recoveryservices~=0.1.1',
+ 'azure-mgmt-recoveryservicesbackup~=0.1.2',
'azure-cli-core'
]
1
0
Hello community,
here is the log from the commit of package azure-cli-vm for openSUSE:Factory checked in at 2019-05-22 11:03:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-vm (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-vm.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-vm"
Wed May 22 11:03:15 2019 rev:5 rq:696868 version:2.2.15
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-vm/azure-cli-vm.changes 2018-10-15 10:44:18.251334935 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-vm.new.5148/azure-cli-vm.changes 2019-05-22 11:03:27.882623285 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 19:03:45 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.2.15
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-vm-2.2.2.tar.gz
New:
----
azure-cli-vm-2.2.15.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-vm.spec ++++++
--- /var/tmp/diff_new_pack.2XLffc/_old 2019-05-22 11:03:29.130622693 +0200
+++ /var/tmp/diff_new_pack.2XLffc/_new 2019-05-22 11:03:29.130622693 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-vm
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-vm
-Version: 2.2.2
+Version: 2.2.15
Release: 0
Summary: Microsoft Azure CLI 'vm' Command Module
License: MIT
@@ -27,22 +27,21 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
Requires: python3-azure-keyvault >= 1.1.0
Requires: python3-azure-mgmt-authorization >= 0.50.0
-Requires: python3-azure-mgmt-compute >= 4.0.0
+Requires: python3-azure-mgmt-compute >= 4.4.0
Requires: python3-azure-mgmt-keyvault >= 1.1.0
Requires: python3-azure-mgmt-marketplaceordering >= 0.1.0
Requires: python3-azure-mgmt-msi >= 0.2.0
-Requires: python3-azure-mgmt-network >= 2.0.0
+Requires: python3-azure-mgmt-network >= 2.4.0
Requires: python3-azure-multiapi-storage >= 0.2.2
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -62,6 +61,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-vm-2.2.2.tar.gz -> azure-cli-vm-2.2.15.tar.gz ++++++
++++ 3213 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package azure-cli-telemetry for openSUSE:Factory checked in at 2019-05-22 11:03:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-telemetry (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-telemetry.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-telemetry"
Wed May 22 11:03:05 2019 rev:2 rq:696867 version:1.0.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-telemetry/azure-cli-telemetry.changes 2018-10-15 10:49:20.379012101 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-telemetry.new.5148/azure-cli-telemetry.changes 2019-05-22 11:03:10.238631658 +0200
@@ -1,0 +2,15 @@
+Tue Apr 16 19:01:40 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 1.0.1
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+
+-------------------------------------------------------------------
Old:
----
azure-cli-telemetry-1.0.0.tar.gz
New:
----
azure-cli-telemetry-1.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-telemetry.spec ++++++
--- /var/tmp/diff_new_pack.X9iqGV/_old 2019-05-22 11:03:10.954631318 +0200
+++ /var/tmp/diff_new_pack.X9iqGV/_new 2019-05-22 11:03:10.958631316 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-telemetry
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,11 +12,12 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
+
Name: azure-cli-telemetry
-Version: 1.0.0
+Version: 1.0.1
Release: 0
Summary: Microsoft Azure CLI Telemetry Package
License: MIT
@@ -25,14 +26,13 @@
Source: https://files.pythonhosted.org/packages/source/a/azure-cli-telemetry/azure-…
Source1: LICENSE.txt
Patch0: act_relax-requires-versions.patch
-BuildRequires: python3-devel
-BuildRequires: python3-setuptools
-BuildRequires: unzip
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
+BuildRequires: python3-setuptools
Requires: azure-cli-nspkg
-Requires: python3-azure-nspkg
Requires: python3-applicationinsights >= 0.11.1
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-portalocker >= 1.2.1
Conflicts: azure-cli < 2.0.0
@@ -57,6 +57,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/__init__.*
@@ -68,4 +69,5 @@
%license LICENSE.txt
%{python3_sitelib}/azure/cli/telemetry
%{python3_sitelib}/azure_cli_telemetry-*.egg-info
+
%changelog
++++++ azure-cli-telemetry-1.0.0.tar.gz -> azure-cli-telemetry-1.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-telemetry-1.0.0/HISTORY.rst new/azure-cli-telemetry-1.0.1/HISTORY.rst
--- old/azure-cli-telemetry-1.0.0/HISTORY.rst 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-telemetry-1.0.1/HISTORY.rst 2019-01-25 20:43:40.000000000 +0100
@@ -2,6 +2,9 @@
Release History
===============
+1.0.1
++++++
+* Minor fixes
1.0.0
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-telemetry-1.0.0/PKG-INFO new/azure-cli-telemetry-1.0.1/PKG-INFO
--- old/azure-cli-telemetry-1.0.0/PKG-INFO 2018-08-09 08:35:53.000000000 +0200
+++ new/azure-cli-telemetry-1.0.1/PKG-INFO 2019-01-25 20:44:23.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-telemetry
-Version: 1.0.0
+Version: 1.0.1
Summary: Microsoft Azure CLI Telemetry Package
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -21,6 +21,9 @@
Release History
===============
+ 1.0.1
+ +++++
+ * Minor fixes
1.0.0
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-telemetry-1.0.0/azure/cli/telemetry/__init__.py new/azure-cli-telemetry-1.0.1/azure/cli/telemetry/__init__.py
--- old/azure-cli-telemetry-1.0.0/azure/cli/telemetry/__init__.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-telemetry-1.0.1/azure/cli/telemetry/__init__.py 2019-01-25 20:43:40.000000000 +0100
@@ -54,7 +54,7 @@
kwargs['stderr'] = subprocess.STDOUT
subprocess.Popen(**kwargs)
- logger.info('Return from creating porcess')
+ logger.info('Return from creating process')
def save(config_dir, payload):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-telemetry-1.0.0/azure_cli_telemetry.egg-info/PKG-INFO new/azure-cli-telemetry-1.0.1/azure_cli_telemetry.egg-info/PKG-INFO
--- old/azure-cli-telemetry-1.0.0/azure_cli_telemetry.egg-info/PKG-INFO 2018-08-09 08:35:53.000000000 +0200
+++ new/azure-cli-telemetry-1.0.1/azure_cli_telemetry.egg-info/PKG-INFO 2019-01-25 20:44:23.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-telemetry
-Version: 1.0.0
+Version: 1.0.1
Summary: Microsoft Azure CLI Telemetry Package
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -21,6 +21,9 @@
Release History
===============
+ 1.0.1
+ +++++
+ * Minor fixes
1.0.0
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-telemetry-1.0.0/setup.py new/azure-cli-telemetry-1.0.1/setup.py
--- old/azure-cli-telemetry-1.0.0/setup.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-telemetry-1.0.1/setup.py 2019-01-25 20:43:40.000000000 +0100
@@ -16,7 +16,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "1.0.0"
+VERSION = "1.0.1"
CLASSIFIERS = [
'Development Status :: 5 - Production/Stable',
1
0
Hello community,
here is the log from the commit of package azure-cli-taskhelp for openSUSE:Factory checked in at 2019-05-22 11:02:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-taskhelp (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-taskhelp.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-taskhelp"
Wed May 22 11:02:59 2019 rev:2 rq:696866 version:0.1.7
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-taskhelp/azure-cli-taskhelp.changes 2017-11-10 14:55:24.212405135 +0100
+++ /work/SRC/openSUSE:Factory/.azure-cli-taskhelp.new.5148/azure-cli-taskhelp.changes 2019-05-22 11:03:04.318634468 +0200
@@ -1,0 +2,12 @@
+Tue Apr 16 18:56:37 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Move LICENSE.txt from %doc to %license section
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-taskhelp.spec ++++++
--- /var/tmp/diff_new_pack.zZ5l6l/_old 2019-05-22 11:03:05.034634128 +0200
+++ /var/tmp/diff_new_pack.zZ5l6l/_new 2019-05-22 11:03:05.038634126 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-taskhelp
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,9 +12,10 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
+
Name: azure-cli-taskhelp
Version: 0.1.7
Release: 0
@@ -24,16 +25,15 @@
Url: https://github.com/Azure/azure-cli
Source: https://files.pythonhosted.org/packages/source/a/azure-cli-taskhelp/azure-c…
Source1: LICENSE.txt
-BuildRequires: python3-devel
-BuildRequires: python3-setuptools
-BuildRequires: unzip
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
+BuildRequires: python3-setuptools
Requires: azure-cli-command-modules-nspkg
-Requires: azure-cli-nspkg
-Requires: python3-azure-nspkg
Requires: azure-cli-core
+Requires: azure-cli-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -53,6 +53,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
@@ -62,7 +63,9 @@
%files
%defattr(-,root,root,-)
-%doc LICENSE.txt README.rst
+%doc README.rst
+%license LICENSE.txt
%{python3_sitelib}/azure/cli/command_modules/taskhelp
%{python3_sitelib}/azure_cli_taskhelp-*.egg-info
+
%changelog
1
0
Hello community,
here is the log from the commit of package azure-cli-storage for openSUSE:Factory checked in at 2019-05-22 11:02:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-storage (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-storage.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-storage"
Wed May 22 11:02:53 2019 rev:5 rq:696865 version:2.3.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-storage/azure-cli-storage.changes 2018-10-15 10:44:22.859330004 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-storage.new.5148/azure-cli-storage.changes 2019-05-22 11:02:58.026637828 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 18:50:01 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.3.1
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-storage-2.2.1.tar.gz
New:
----
azure-cli-storage-2.3.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-storage.spec ++++++
--- /var/tmp/diff_new_pack.oyMCPs/_old 2019-05-22 11:03:00.054636666 +0200
+++ /var/tmp/diff_new_pack.oyMCPs/_new 2019-05-22 11:03:00.082636650 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-storage
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-storage
-Version: 2.2.1
+Version: 2.3.1
Release: 0
Summary: Microsoft Azure CLI 'storage' Command Module
License: MIT
@@ -27,16 +27,15 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-mgmt-storage >= 2.0.0
+Requires: python3-azure-mgmt-storage >= 3.1.1
Requires: python3-azure-multiapi-storage >= 0.2.2
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -56,6 +55,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-storage-2.2.1.tar.gz -> azure-cli-storage-2.3.1.tar.gz ++++++
++++ 1929 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package azure-cli-sqlvm for openSUSE:Factory checked in at 2019-05-22 11:02:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-sqlvm (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-sqlvm.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-sqlvm"
Wed May 22 11:02:47 2019 rev:1 rq:696864 version:0.1.0
Changes:
--------
New Changes file:
--- /dev/null 2019-05-02 15:18:01.516169518 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-sqlvm.new.5148/azure-cli-sqlvm.changes 2019-05-22 11:02:50.254642282 +0200
@@ -0,0 +1,5 @@
+-------------------------------------------------------------------
+Tue Apr 16 18:45:19 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Initial build
+ + Version 0.1.0
New:
----
LICENSE.txt
azure-cli-sqlvm-0.1.0.tar.gz
azure-cli-sqlvm.changes
azure-cli-sqlvm.spec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-sqlvm.spec ++++++
#
# spec file for package azure-cli-sqlvm
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: azure-cli-sqlvm
Version: 0.1.0
Release: 0
Summary: Microsoft Azure CLI 'SQL VM' Command Module
License: MIT
Group: System/Management
Url: https://github.com/Azure/azure-cli
Source: https://files.pythonhosted.org/packages/source/a/azure-cli-sqlvm/azure-cli-…
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
BuildRequires: fdupes
BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-azure-mgmt-sqlvirtualmachine >= 0.2.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
%description
Microsoft Azure CLI 'SQL VM' Command Module
This package is for the 'sql vm' module.
i.e. 'az sql vm'
%prep
%setup -q -n azure-cli-sqlvm-%{version}
%build
install -m 644 %{SOURCE1} %{_builddir}/azure-cli-sqlvm-%{version}
python3 setup.py build
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/__pycache__
%files
%defattr(-,root,root,-)
%doc HISTORY.rst README.rst
%license LICENSE.txt
%{python3_sitelib}/azure/cli/command_modules/sqlvm
%{python3_sitelib}/azure_cli_sqlvm-*.egg-info
%changelog
++++++ LICENSE.txt ++++++
The MIT License (MIT)
Copyright (c) 2016 Microsoft Corporation. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
1
0
Hello community,
here is the log from the commit of package azure-cli-sql for openSUSE:Factory checked in at 2019-05-22 11:02:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-sql (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-sql.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-sql"
Wed May 22 11:02:38 2019 rev:5 rq:696863 version:2.1.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-sql/azure-cli-sql.changes 2018-10-15 10:46:03.651222206 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-sql.new.5148/azure-cli-sql.changes 2019-05-22 11:02:44.242645727 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 18:42:59 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.1.9
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-sql-2.1.3.tar.gz
New:
----
azure-cli-sql-2.1.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-sql.spec ++++++
--- /var/tmp/diff_new_pack.sxafSZ/_old 2019-05-22 11:02:46.810644255 +0200
+++ /var/tmp/diff_new_pack.sxafSZ/_new 2019-05-22 11:02:46.814644253 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-sql
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-sql
-Version: 2.1.3
+Version: 2.1.9
Release: 0
Summary: Microsoft Azure CLI 'SQL' Command Module
License: MIT
@@ -27,16 +27,15 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-mgmt-sql >= 0.9.1
-Requires: python3-azure-mgmt-storage >= 2.0.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-mgmt-sql >= 0.11.0
+Requires: python3-azure-mgmt-storage >= 3.1.1
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-six
Conflicts: azure-cli < 2.0.0
@@ -57,6 +56,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-sql-2.1.3.tar.gz -> azure-cli-sql-2.1.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-sql-2.1.3/HISTORY.rst new/azure-cli-sql-2.1.9/HISTORY.rst
--- old/azure-cli-sql-2.1.3/HISTORY.rst 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-sql-2.1.9/HISTORY.rst 2019-02-12 03:05:13.000000000 +0100
@@ -2,6 +2,29 @@
Release History
===============
+2.1.9
++++++
+* Minor fixes
+
+2.1.8
++++++
+* Minor fixes
+
+2.1.7
++++++
+* Updating dependencies
+
+2.1.6
++++++
+* Support for custom collation on managed instance.
+
+2.1.5
++++++
+* Fixed az sql failover-group create and az sql failover-group update to work with Manual failover policy.
+
+2.1.4
++++++
+* Minor fixes
2.1.3
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-sql-2.1.3/PKG-INFO new/azure-cli-sql-2.1.9/PKG-INFO
--- old/azure-cli-sql-2.1.3/PKG-INFO 2018-08-23 01:09:12.000000000 +0200
+++ new/azure-cli-sql-2.1.9/PKG-INFO 2019-02-12 03:05:38.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-sql
-Version: 2.1.3
+Version: 2.1.9
Summary: Microsoft Azure Command-Line Tools SQL Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -15,6 +15,29 @@
Release History
===============
+ 2.1.9
+ +++++
+ * Minor fixes
+
+ 2.1.8
+ +++++
+ * Minor fixes
+
+ 2.1.7
+ +++++
+ * Updating dependencies
+
+ 2.1.6
+ +++++
+ * Support for custom collation on managed instance.
+
+ 2.1.5
+ +++++
+ * Fixed az sql failover-group create and az sql failover-group update to work with Manual failover policy.
+
+ 2.1.4
+ +++++
+ * Minor fixes
2.1.3
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-sql-2.1.3/azure/cli/command_modules/sql/_help.py new/azure-cli-sql-2.1.9/azure/cli/command_modules/sql/_help.py
--- old/azure-cli-sql-2.1.3/azure/cli/command_modules/sql/_help.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-sql-2.1.9/azure/cli/command_modules/sql/_help.py 2019-02-12 03:05:13.000000000 +0100
@@ -3,6 +3,7 @@
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
+# pylint: disable=line-too-long, too-many-lines
from knack.help_files import helps
@@ -80,10 +81,19 @@
type: command
short-summary: Update a database.
examples:
+ - name: Update a database to Standard edition, S0 performance level (10 DTU) by specifying DTU capacity. Note that GeneralPurpose allows a wider range of max size than Standard edition.
+ text: az sql db update -g mygroup -s myserver -n mydb --edition Standard --capacity 10 --max-size 250GB
+ - name: Update a database to Standard edition, S1 performance level (20 DTU) by specifying performance level name. Note that GeneralPurpose allows a wider range of max size than Standard edition.
+ text: az sql db update -g mygroup -s myserver -n mydb --edition Standard --service-objective S1 --max-size 250GB
+ - name: Update a database to GeneralPurpose edition, 4 vcores with Gen5 hardware
+ text: az sql db update -g mygroup -s myserver -n mydb --edition GeneralPurpose --capacity 4 --family Gen5
+ - name: Update database with increased max size
+ text: az sql db update -g mygroup -s myserver -n mydb --max-size 500GB
- name: Update database with zone redundancy enabled
- text: az sql db update -g mygroup -s myserver -n mypool -z
+ text: az sql db update -g mygroup -s myserver -n mydb -z
- name: Update database with zone redundancy explicitly disabled
- text: az sql db update -g mygroup -s myserver -n mypool -z false
+ text: az sql db update -g mygroup -s myserver -n mydb -z false
+
"""
helps['sql db audit-policy'] = """
type: group
@@ -133,7 +143,7 @@
type: command
examples:
- name: Cancel an operation.
- text: az sql db op cancel -g mygroup -s myserver -d mydb -n d2896db1-2ba8-4c84-bac1-387c430cce40
+ text: az sql db op cancel -g mygroup -s myserver -d mydb -n d2896mydb-2ba8-4c84-bac1-387c430cce40
"""
helps['sql db replica'] = """
type: group
@@ -175,12 +185,12 @@
az sql db export -s myserver -n mydatabase -g mygroup -p password -u login \\
--storage-key "?sr=b&sp=rw&se=2018-01-01T00%3A00%3A00Z&sig=mysignature&sv=2015-07-08" \\
--storage-key-type SharedAccessKey \\
- --storage-uri https://mystorageaccount.blob.core.windows.net/bacpacs/mybacpac.bacpac
+ --storage-uri https://mystorageaccount.blob.core.windows.net/bacpacs/myBacpac.bacpac
- name: Export bacpac using a storage account key.
text: |
az sql db export -s myserver -n mydatabase -g mygroup -p password -u login \\
--storage-key MYKEY== --storage-key-type StorageAccessKey \\
- --storage-uri https://mystorageaccount.blob.core.windows.net/bacpacs/mybacpac.bacpac
+ --storage-uri https://mystorageaccount.blob.core.windows.net/bacpacs/myBacpac.bacpac
"""
helps['sql db import'] = """
type: command
@@ -195,12 +205,12 @@
az sql db import -s myserver -n mydatabase -g mygroup -p password -u login \\
--storage-key "?sr=b&sp=rw&se=2018-01-01T00%3A00%3A00Z&sig=mysignature&sv=2015-07-08" \\
--storage-key-type SharedAccessKey \\
- --storage-uri https://mystorageaccount.blob.core.windows.net/bacpacs/mybacpac.bacpac
+ --storage-uri https://mystorageaccount.blob.core.windows.net/bacpacs/myBacpac.bacpac
- name: Import bacpac into an existing database using a storage account key.
text: |
az sql db import -s myserver -n mydatabase -g mygroup -p password -u login --storage-key MYKEY== \\
--storage-key-type StorageAccessKey \\
- --storage-uri https://mystorageaccount.blob.core.windows.net/bacpacs/mybacpac.bacpac
+ --storage-uri https://mystorageaccount.blob.core.windows.net/bacpacs/myBacpac.bacpac
"""
helps['sql db restore'] = """
type: command
@@ -320,7 +330,7 @@
type: command
examples:
- name: Cancel an operation.
- text: az sql elastic-pool op cancel -g mygroup -s myserver -ep myelasticpool -n d2896db1-2ba8-4c84-bac1-387c430cce40
+ text: az sql elastic-pool op cancel -g mygroup -s myserver --elastic-pool myelasticpool -n d2896mydb-2ba8-4c84-bac1-387c430cce40
"""
helps['sql failover-group'] = """
type: group
@@ -458,10 +468,12 @@
examples:
- name: Create a vnet rule by providing the subnet id.
text: |
- az sql server vnet-rule create \\
- --subnet /subscriptions/{SubID}/resourceGroups/{ResourceGroup}/providers/Microsoft.Network/virtualNetworks/{VNETName}/subnets/{SubnetName}
+ az sql server vnet-rule create --server MyAzureSqlServer --name MyVNetRule \\
+ -g MyResourceGroup --subnet /subscriptions/{SubID}/resourceGroups/{ResourceGroup}/providers/Microsoft.Network/virtualNetworks/{VNETName}/subnets/{SubnetName}
- name: Create a vnet rule by providing the vnet and subnet name. The subnet id is created by taking the resource group name and subscription id of the SQL server.
- text: az sql server vnet-rule create --subnet subnetName --vnet-name vnetName
+ text: |
+ az sql server vnet-rule create --server MyAzureSqlServer --name MyVNetRule \\
+ -g MyResourceGroup --subnet subnetName --vnet-name vnetName
"""
helps['sql mi'] = """
type: group
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-sql-2.1.3/azure/cli/command_modules/sql/_params.py new/azure-cli-sql-2.1.9/azure/cli/command_modules/sql/_params.py
--- old/azure-cli-sql-2.1.3/azure/cli/command_modules/sql/_params.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-sql-2.1.9/azure/cli/command_modules/sql/_params.py 2019-02-12 03:05:13.000000000 +0100
@@ -1073,6 +1073,9 @@
options_list=['--capacity', '-c'],
help='The capacity of the managed instance in vcores.')
+ c.argument('collation',
+ help='The collation of the managed instance.')
+
with self.argument_context('sql mi create') as c:
# Create args that will be used to build up the ManagedInstance object
create_args_for_complex_type(
@@ -1082,7 +1085,8 @@
'license_type',
'virtual_network_subnet_id',
'vcores',
- 'storage_size_in_gb'
+ 'storage_size_in_gb',
+ 'collation'
])
# Create args that will be used to build up the Managed Instance's Sku object
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-sql-2.1.3/azure/cli/command_modules/sql/custom.py new/azure-cli-sql-2.1.9/azure/cli/command_modules/sql/custom.py
--- old/azure-cli-sql-2.1.3/azure/cli/command_modules/sql/custom.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-sql-2.1.9/azure/cli/command_modules/sql/custom.py 2019-02-12 03:05:13.000000000 +0100
@@ -2155,6 +2155,9 @@
# Convert grace period from hours to minutes
grace_period = int(grace_period) * 60
+ if failover_policy == FailoverPolicyType.manual.value:
+ grace_period = None
+
if add_db is None:
add_db = []
@@ -2196,13 +2199,14 @@
if failover_policy is not None:
instance.read_write_endpoint.failover_policy = failover_policy
+ if instance.read_write_endpoint.failover_policy == FailoverPolicyType.manual.value:
+ grace_period = None
+ instance.read_write_endpoint.failover_with_data_loss_grace_period_minutes = grace_period
+
if grace_period is not None:
grace_period = int(grace_period) * 60
instance.read_write_endpoint.failover_with_data_loss_grace_period_minutes = grace_period
- if instance.read_write_endpoint.failover_policy == 'Manual':
- grace_period = None
-
if add_db is None:
add_db = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-sql-2.1.3/azure_cli_sql.egg-info/PKG-INFO new/azure-cli-sql-2.1.9/azure_cli_sql.egg-info/PKG-INFO
--- old/azure-cli-sql-2.1.3/azure_cli_sql.egg-info/PKG-INFO 2018-08-23 01:09:12.000000000 +0200
+++ new/azure-cli-sql-2.1.9/azure_cli_sql.egg-info/PKG-INFO 2019-02-12 03:05:38.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-sql
-Version: 2.1.3
+Version: 2.1.9
Summary: Microsoft Azure Command-Line Tools SQL Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -15,6 +15,29 @@
Release History
===============
+ 2.1.9
+ +++++
+ * Minor fixes
+
+ 2.1.8
+ +++++
+ * Minor fixes
+
+ 2.1.7
+ +++++
+ * Updating dependencies
+
+ 2.1.6
+ +++++
+ * Support for custom collation on managed instance.
+
+ 2.1.5
+ +++++
+ * Fixed az sql failover-group create and az sql failover-group update to work with Manual failover policy.
+
+ 2.1.4
+ +++++
+ * Minor fixes
2.1.3
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-sql-2.1.3/azure_cli_sql.egg-info/requires.txt new/azure-cli-sql-2.1.9/azure_cli_sql.egg-info/requires.txt
--- old/azure-cli-sql-2.1.3/azure_cli_sql.egg-info/requires.txt 2018-08-23 01:09:12.000000000 +0200
+++ new/azure-cli-sql-2.1.9/azure_cli_sql.egg-info/requires.txt 2019-02-12 03:05:38.000000000 +0100
@@ -1,4 +1,4 @@
azure-cli-core
-azure-mgmt-sql==0.9.1
-azure-mgmt-storage==2.0.0rc4
+azure-mgmt-sql==0.11.0
+azure-mgmt-storage==3.1.1
six
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-sql-2.1.3/setup.py new/azure-cli-sql-2.1.9/setup.py
--- old/azure-cli-sql-2.1.3/setup.py 2018-08-23 01:07:58.000000000 +0200
+++ new/azure-cli-sql-2.1.9/setup.py 2019-02-12 03:05:13.000000000 +0100
@@ -12,7 +12,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "2.1.3"
+VERSION = "2.1.9"
CLASSIFIERS = [
'Development Status :: 4 - Beta',
@@ -30,8 +30,8 @@
DEPENDENCIES = [
'azure-cli-core',
- 'azure-mgmt-sql==0.9.1',
- 'azure-mgmt-storage==2.0.0rc4',
+ 'azure-mgmt-sql==0.11.0',
+ 'azure-mgmt-storage==3.1.1',
'six'
]
1
0
Hello community,
here is the log from the commit of package azure-cli-servicefabric for openSUSE:Factory checked in at 2019-05-22 11:02:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-servicefabric (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-servicefabric.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-servicefabric"
Wed May 22 11:02:24 2019 rev:5 rq:696861 version:0.1.12
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-servicefabric/azure-cli-servicefabric.changes 2018-10-15 10:47:35.407124162 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-servicefabric.new.5148/azure-cli-servicefabric.changes 2019-05-22 11:02:27.882655102 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 18:38:08 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.1.12
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-servicefabric-0.1.2.tar.gz
New:
----
azure-cli-servicefabric-0.1.12.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-servicefabric.spec ++++++
--- /var/tmp/diff_new_pack.ILPTrv/_old 2019-05-22 11:02:29.070654421 +0200
+++ /var/tmp/diff_new_pack.ILPTrv/_new 2019-05-22 11:02:29.070654421 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-servicefabric
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-servicefabric
-Version: 0.1.2
+Version: 0.1.12
Release: 0
Summary: Microsoft Azure CLI Service Fabric Module
License: MIT
@@ -27,21 +27,20 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-graphrbac >= 0.40.0
+Requires: python3-azure-graphrbac >= 0.53.0
Requires: python3-azure-keyvault >= 1.1.0
-Requires: python3-azure-mgmt-compute >= 4.0.0
+Requires: python3-azure-mgmt-compute >= 4.4.0
Requires: python3-azure-mgmt-keyvault >= 1.1.0
-Requires: python3-azure-mgmt-network >= 2.0.0
+Requires: python3-azure-mgmt-network >= 2.4.0
Requires: python3-azure-mgmt-servicefabric >= 0.2.0
-Requires: python3-azure-mgmt-storage >= 2.0.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-mgmt-storage >= 3.1.1
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-pyOpenSSL
Conflicts: azure-cli < 2.0.0
@@ -65,6 +64,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-servicefabric-0.1.2.tar.gz -> azure-cli-servicefabric-0.1.12.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicefabric-0.1.2/HISTORY.rst new/azure-cli-servicefabric-0.1.12/HISTORY.rst
--- old/azure-cli-servicefabric-0.1.2/HISTORY.rst 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-servicefabric-0.1.12/HISTORY.rst 2019-01-25 20:43:41.000000000 +0100
@@ -2,6 +2,45 @@
Release History
===============
+0.1.12
+++++++
+* Minor fixes
+
+0.1.11
+++++++
+* Updated dependencies.
+
+0.1.10
+++++++
+* Minor fixes
+
+0.1.9
++++++
+* Minor fixes
+
+0.1.8
++++++
+* Minor fixes
+
+0.1.7
++++++
+* Minor fixes
+
+0.1.6
++++++
+* Minor fixes
+
+0.1.5
++++++
+* Minor fixes
+
+0.1.4
++++++
+* Minor fixes
+
+0.1.3
++++++
+* Minor fixes
0.1.2
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicefabric-0.1.2/PKG-INFO new/azure-cli-servicefabric-0.1.12/PKG-INFO
--- old/azure-cli-servicefabric-0.1.2/PKG-INFO 2018-08-23 01:10:00.000000000 +0200
+++ new/azure-cli-servicefabric-0.1.12/PKG-INFO 2019-01-25 20:44:03.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-servicefabric
-Version: 0.1.2
+Version: 0.1.12
Summary: Microsoft Azure Service Fabric Command-Line Tools
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -16,6 +16,45 @@
Release History
===============
+ 0.1.12
+ ++++++
+ * Minor fixes
+
+ 0.1.11
+ ++++++
+ * Updated dependencies.
+
+ 0.1.10
+ ++++++
+ * Minor fixes
+
+ 0.1.9
+ +++++
+ * Minor fixes
+
+ 0.1.8
+ +++++
+ * Minor fixes
+
+ 0.1.7
+ +++++
+ * Minor fixes
+
+ 0.1.6
+ +++++
+ * Minor fixes
+
+ 0.1.5
+ +++++
+ * Minor fixes
+
+ 0.1.4
+ +++++
+ * Minor fixes
+
+ 0.1.3
+ +++++
+ * Minor fixes
0.1.2
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicefabric-0.1.2/azure/cli/command_modules/servicefabric/_help.py new/azure-cli-servicefabric-0.1.12/azure/cli/command_modules/servicefabric/_help.py
--- old/azure-cli-servicefabric-0.1.2/azure/cli/command_modules/servicefabric/_help.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-servicefabric-0.1.12/azure/cli/command_modules/servicefabric/_help.py 2019-01-25 20:43:41.000000000 +0100
@@ -94,7 +94,7 @@
- name: Add a certificate to a cluster using a keyvault secret identifier.
text: |
az sf cluster certificate add -g group-name -n cluster1 \\
- --secret-identifier 'https://{KeyVault}.vault.azure.net/secrets/{Secret}
+ --secret-identifier 'https://{KeyVault}.vault.azure.net/secrets/{Secret}'
- name: Add a self-signed certificate to a cluster.
text: >
az sf cluster certificate add -g group-name -n cluster1 --certificate-subject-name test.com
@@ -167,7 +167,7 @@
examples:
- name: Change the cluster durability level to 'Silver'.
text: >
- az sf cluster durability update -g group-name -n cluster1 --durability-level Silver
+ az sf cluster durability update -g group-name -n cluster1 --durability-level Silver --node-type nt1
"""
@@ -216,5 +216,5 @@
examples:
- name: Add an application certificate.
text: >
- az sf cluster application certificate add -g group-name -n cluster1 --secret-identifier 'https://{KeyVault}.vault.azure.net/secrets/{Secret}'
+ az sf application certificate add -g group-name -n cluster1 --secret-identifier 'https://{KeyVault}.vault.azure.net/secrets/{Secret}'
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicefabric-0.1.2/azure/cli/command_modules/servicefabric/custom.py new/azure-cli-servicefabric-0.1.12/azure/cli/command_modules/servicefabric/custom.py
--- old/azure-cli-servicefabric-0.1.2/azure/cli/command_modules/servicefabric/custom.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-servicefabric-0.1.12/azure/cli/command_modules/servicefabric/custom.py 2019-01-25 20:43:41.000000000 +0100
@@ -1692,7 +1692,7 @@
# pylint: disable=inconsistent-return-statements
def _get_current_user_object_id(graph_client):
try:
- current_user = graph_client.objects.get_current_user()
+ current_user = graph_client.signed_in_user.get()
if current_user and current_user.object_id: # pylint:disable=no-member
return current_user.object_id # pylint:disable=no-member
except CloudError:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicefabric-0.1.2/azure_cli_servicefabric.egg-info/PKG-INFO new/azure-cli-servicefabric-0.1.12/azure_cli_servicefabric.egg-info/PKG-INFO
--- old/azure-cli-servicefabric-0.1.2/azure_cli_servicefabric.egg-info/PKG-INFO 2018-08-23 01:10:00.000000000 +0200
+++ new/azure-cli-servicefabric-0.1.12/azure_cli_servicefabric.egg-info/PKG-INFO 2019-01-25 20:44:03.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-servicefabric
-Version: 0.1.2
+Version: 0.1.12
Summary: Microsoft Azure Service Fabric Command-Line Tools
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -16,6 +16,45 @@
Release History
===============
+ 0.1.12
+ ++++++
+ * Minor fixes
+
+ 0.1.11
+ ++++++
+ * Updated dependencies.
+
+ 0.1.10
+ ++++++
+ * Minor fixes
+
+ 0.1.9
+ +++++
+ * Minor fixes
+
+ 0.1.8
+ +++++
+ * Minor fixes
+
+ 0.1.7
+ +++++
+ * Minor fixes
+
+ 0.1.6
+ +++++
+ * Minor fixes
+
+ 0.1.5
+ +++++
+ * Minor fixes
+
+ 0.1.4
+ +++++
+ * Minor fixes
+
+ 0.1.3
+ +++++
+ * Minor fixes
0.1.2
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicefabric-0.1.2/azure_cli_servicefabric.egg-info/requires.txt new/azure-cli-servicefabric-0.1.12/azure_cli_servicefabric.egg-info/requires.txt
--- old/azure-cli-servicefabric-0.1.2/azure_cli_servicefabric.egg-info/requires.txt 2018-08-23 01:10:00.000000000 +0200
+++ new/azure-cli-servicefabric-0.1.12/azure_cli_servicefabric.egg-info/requires.txt 2019-01-25 20:44:03.000000000 +0100
@@ -1,8 +1,8 @@
-azure-graphrbac==0.40.0
+azure-graphrbac==0.53.0
azure-keyvault==1.1.0
-azure-mgmt-network==2.0.0rc3
-azure-mgmt-compute==4.0.0
-azure-mgmt-storage==2.0.0rc4
+azure-mgmt-network==2.4.0
+azure-mgmt-compute==4.4.0
+azure-mgmt-storage==3.1.1
azure-mgmt-servicefabric==0.2.0
azure-mgmt-keyvault==1.1.0
azure-cli-core
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicefabric-0.1.2/setup.py new/azure-cli-servicefabric-0.1.12/setup.py
--- old/azure-cli-servicefabric-0.1.2/setup.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-servicefabric-0.1.12/setup.py 2019-01-25 20:43:41.000000000 +0100
@@ -16,7 +16,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "0.1.2"
+VERSION = "0.1.12"
# The full list of classifiers is available at
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
@@ -35,11 +35,11 @@
]
DEPENDENCIES = [
- 'azure-graphrbac==0.40.0',
+ 'azure-graphrbac==0.53.0',
'azure-keyvault==1.1.0',
- 'azure-mgmt-network==2.0.0rc3',
- 'azure-mgmt-compute==4.0.0',
- 'azure-mgmt-storage==2.0.0rc4',
+ 'azure-mgmt-network==2.4.0',
+ 'azure-mgmt-compute==4.4.0',
+ 'azure-mgmt-storage==3.1.1',
'azure-mgmt-servicefabric==0.2.0',
'azure-mgmt-keyvault==1.1.0',
'azure-cli-core',
1
0
Hello community,
here is the log from the commit of package azure-cli-servicebus for openSUSE:Factory checked in at 2019-05-22 11:02:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-servicebus (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-servicebus.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-servicebus"
Wed May 22 11:02:18 2019 rev:3 rq:696860 version:0.3.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-servicebus/azure-cli-servicebus.changes 2018-10-11 11:59:52.333686347 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-servicebus.new.5148/azure-cli-servicebus.changes 2019-05-22 11:02:21.974658488 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 18:36:37 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.3.3
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-servicebus-0.2.2.tar.gz
New:
----
azure-cli-servicebus-0.3.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-servicebus.spec ++++++
--- /var/tmp/diff_new_pack.giQ1Tx/_old 2019-05-22 11:02:23.918657374 +0200
+++ /var/tmp/diff_new_pack.giQ1Tx/_new 2019-05-22 11:02:23.942657360 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-servicebus
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-servicebus
-Version: 0.2.2
+Version: 0.3.3
Release: 0
Summary: Microsoft Azure CLI 'servicebus' Command Module
License: MIT
@@ -27,15 +27,14 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-mgmt-servicebus >= 0.5.1
-Requires: python3-azure-nspkg
+Requires: python3-azure-mgmt-servicebus >= 0.5.3
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-six
Conflicts: azure-cli < 2.0.0
@@ -56,6 +55,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-servicebus-0.2.2.tar.gz -> azure-cli-servicebus-0.3.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicebus-0.2.2/HISTORY.rst new/azure-cli-servicebus-0.3.3/HISTORY.rst
--- old/azure-cli-servicebus-0.2.2/HISTORY.rst 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-servicebus-0.3.3/HISTORY.rst 2019-01-25 20:43:41.000000000 +0100
@@ -2,6 +2,25 @@
Release History
===============
+0.3.3
++++++
+* Minor fixes
+
+0.3.2
++++++
+* Minor fixes
+
+0.3.1
++++++
+* Added Read-Only migration_state to MigrationConfigProperties to show current Service Bus Standard to Premium namespace migration state.
+
+0.3.0
++++++
+* BREAKING CHANGE: 'list' commands errors for resource(s) NotFound(404) are now handled in the typical way instead of showing empty list
+
+0.2.3
++++++
+* Minor fixes
0.2.2
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicebus-0.2.2/PKG-INFO new/azure-cli-servicebus-0.3.3/PKG-INFO
--- old/azure-cli-servicebus-0.2.2/PKG-INFO 2018-08-23 01:09:43.000000000 +0200
+++ new/azure-cli-servicebus-0.3.3/PKG-INFO 2019-01-25 20:44:07.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-servicebus
-Version: 0.2.2
+Version: 0.3.3
Summary: Microsoft Azure Command-Line Tools Service Bus Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -19,6 +19,25 @@
Release History
===============
+ 0.3.3
+ +++++
+ * Minor fixes
+
+ 0.3.2
+ +++++
+ * Minor fixes
+
+ 0.3.1
+ +++++
+ * Added Read-Only migration_state to MigrationConfigProperties to show current Service Bus Standard to Premium namespace migration state.
+
+ 0.3.0
+ +++++
+ * BREAKING CHANGE: 'list' commands errors for resource(s) NotFound(404) are now handled in the typical way instead of showing empty list
+
+ 0.2.3
+ +++++
+ * Minor fixes
0.2.2
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicebus-0.2.2/azure/cli/command_modules/servicebus/_help.py new/azure-cli-servicebus-0.3.3/azure/cli/command_modules/servicebus/_help.py
--- old/azure-cli-servicebus-0.2.2/azure/cli/command_modules/servicebus/_help.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-servicebus-0.3.3/azure/cli/command_modules/servicebus/_help.py 2019-01-25 20:43:41.000000000 +0100
@@ -167,7 +167,7 @@
short-summary: Shows the list of Authorization Rule by Service Bus Namespace
examples:
- name: Shows the list of Authorization Rule by Service Bus Namespace
- text: az servicebus namespace authorization-rule show --resource-group myresourcegroup --namespace-name mynamespace
+ text: az servicebus namespace authorization-rule list --resource-group myresourcegroup --namespace-name mynamespace
"""
helps['servicebus namespace authorization-rule keys list'] = """
@@ -175,7 +175,7 @@
short-summary: List the keys and connection strings of Authorization Rule for Service Bus Namespace
examples:
- name: List the keys and connection strings of Authorization Rule for Service Bus Namespace
- text: az servicebus namespace authorization-rule list-keys --resource-group myresourcegroup --namespace-name mynamespace --name myauthorule
+ text: az servicebus namespace authorization-rule keys list --resource-group myresourcegroup --namespace-name mynamespace --name myauthorule
"""
helps['servicebus namespace authorization-rule keys renew'] = """
@@ -183,7 +183,7 @@
short-summary: Regenerate keys of Authorization Rule for the Service Bus Namespace.
examples:
- name: Regenerate keys of Authorization Rule for the Service Bus Namespace.
- text: az servicebus namespace authorization-rule regenerate-keys --resource-group myresourcegroup --namespace-name mynamespace --name myauthorule --key PrimaryKey
+ text: az servicebus namespace authorization-rule keys renew --resource-group myresourcegroup --namespace-name mynamespace --name myauthorule --key PrimaryKey
"""
helps['servicebus namespace authorization-rule delete'] = """
@@ -263,7 +263,7 @@
short-summary: List of Authorization Rule by Service Bus Queue.
examples:
- name: List of Authorization Rule by Queue
- text: az servicebus queue authorization-rule show --resource-group myresourcegroup --namespace-name mynamespace --queue-name myqueue
+ text: az servicebus queue authorization-rule list --resource-group myresourcegroup --namespace-name mynamespace --queue-name myqueue
"""
helps['servicebus queue authorization-rule keys list'] = """
@@ -271,7 +271,7 @@
short-summary: List the keys and connection strings of Authorization Rule for the given Service Bus Queue
examples:
- name: List the keys and connection strings of Authorization Rule for the given Service Bus Queue
- text: az servicebus queue authorization-rule list-keys --resource-group myresourcegroup --namespace-name mynamespace --queue-name myqueue --name myauthorule
+ text: az servicebus queue authorization-rule keys list --resource-group myresourcegroup --namespace-name mynamespace --queue-name myqueue --name myauthorule
"""
helps['servicebus queue authorization-rule keys renew'] = """
@@ -279,7 +279,7 @@
short-summary: Regenerate keys of Authorization Rule for Service Bus Queue
examples:
- name: Regenerate keys of Authorization Rule for Service Bus Queue
- text: az servicebus queue authorization-rule regenerate-keys --resource-group myresourcegroup --namespace-name mynamespace --queue-name myqueue --name myauthorule --key PrimaryKey
+ text: az servicebus queue authorization-rule keys renew --resource-group myresourcegroup --namespace-name mynamespace --queue-name myqueue --name myauthorule --key PrimaryKey
"""
helps['servicebus queue authorization-rule delete'] = """
@@ -351,7 +351,7 @@
short-summary: Shows the details of Authorization Rule for given Service Bus Topic
examples:
- name: Shows the details of Authorization Rule for given Service Bus Topic
- text: az servicebus topic authorization-rule get --resource-group myresourcegroup --namespace-name mynamespace --topic-name mytopic --name myauthorule
+ text: az servicebus topic authorization-rule show --resource-group myresourcegroup --namespace-name mynamespace --topic-name mytopic --name myauthorule
"""
helps['servicebus topic authorization-rule list'] = """
@@ -359,7 +359,7 @@
short-summary: shows list of Authorization Rule by Service Bus Topic
examples:
- name: shows list of Authorization Rule by Service Bus Topic
- text: az servicebus topic authorization-rule get --resource-group myresourcegroup --namespace-name mynamespace --topic-name mytopic
+ text: az servicebus topic authorization-rule list --resource-group myresourcegroup --namespace-name mynamespace --topic-name mytopic
"""
helps['servicebus topic authorization-rule keys list'] = """
@@ -367,7 +367,7 @@
short-summary: List the keys and connection strings of Authorization Rule for Service Bus Topic.
examples:
- name: List the keys and connection strings of Authorization Rule for Service Bus Topic.
- text: az servicebus topic authorization-rule listkeys --resource-group myresourcegroup --namespace-name mynamespace --topic-name mytopic --name myauthorule
+ text: az servicebus topic authorization-rule keys list --resource-group myresourcegroup --namespace-name mynamespace --topic-name mytopic --name myauthorule
"""
helps['servicebus topic authorization-rule keys renew'] = """
@@ -375,7 +375,7 @@
short-summary: Regenerate keys of Authorization Rule for Service Bus Topic.
examples:
- name: Regenerate key of Service Bus Topic.
- text: az servicebus topic authorization-rule regenerate_keys --resource-group myresourcegroup --namespace-name mynamespace --topic-name mytopic --name myauthorule --key PrimaryKey
+ text: az servicebus topic authorization-rule keys renew --resource-group myresourcegroup --namespace-name mynamespace --topic-name mytopic --name myauthorule --key PrimaryKey
"""
helps['servicebus topic authorization-rule delete'] = """
@@ -408,7 +408,7 @@
short-summary: Shows Service Bus Subscription Details
examples:
- name: Shows the Subscription details.
- text: az servicebus topic subscription get --resource-group myresourcegroup --namespace-name mynamespace --topic-name mytopic --name mysubscription
+ text: az servicebus topic subscription show --resource-group myresourcegroup --namespace-name mynamespace --topic-name mytopic --name mysubscription
"""
helps['servicebus topic subscription list'] = """
@@ -416,7 +416,7 @@
short-summary: List the Subscription by Service Bus Topic
examples:
- name: Shows the Subscription by Service Bus Topic.
- text: az servicebus topic subscription list --resource-group myresourcegroup --namespace-name mynamespace
+ text: az servicebus topic subscription list --resource-group myresourcegroup --namespace-name mynamespace --topic-name mytopic
"""
helps['servicebus topic subscription delete'] = """
@@ -456,7 +456,7 @@
short-summary: List the ServiceBus Rule by Subscription
examples:
- name: Shows the Rule ServiceBus by Subscription.
- text: az servicebus topic subscription rule list --resource-group myresourcegroup --namespace-name mynamespace
+ text: az servicebus topic subscription rule list --resource-group myresourcegroup --namespace-name mynamespace --topic-name mytopic
--subscription-name mysubscription
"""
@@ -499,7 +499,7 @@
short-summary: Shows the list of Authorization Rule by Service Bus Namespace
examples:
- name: Shows the list of Authorization Rule by Service Bus Namespace
- text: az servicebus georecovery-alias authorization-rule show --resource-group myresourcegroup --namespace-name mynamespace
+ text: az servicebus georecovery-alias authorization-rule list --resource-group myresourcegroup --namespace-name mynamespace --alias myaliasname
"""
helps['servicebus georecovery-alias authorization-rule keys list'] = """
@@ -507,7 +507,7 @@
short-summary: List the keys and connection strings of Authorization Rule for the Service Bus Namespace
examples:
- name: List the keys and connection strings of Authorization Rule for the namespace.
- text: az servicebus georecovery-alias authorization-rule keys list --resource-group myresourcegroup --namespace-name mynamespace --name myauthorule
+ text: az servicebus georecovery-alias authorization-rule keys list --resource-group myresourcegroup --namespace-name mynamespace --name myauthorule --alias myaliasname
"""
helps['servicebus georecovery-alias break-pair'] = """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicebus-0.2.2/azure/cli/command_modules/servicebus/commands.py new/azure-cli-servicebus-0.3.3/azure/cli/command_modules/servicebus/commands.py
--- old/azure-cli-servicebus-0.2.2/azure/cli/command_modules/servicebus/commands.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-servicebus-0.3.3/azure/cli/command_modules/servicebus/commands.py 2019-01-25 20:43:41.000000000 +0100
@@ -13,7 +13,6 @@
from azure.cli.command_modules.servicebus._client_factory import namespaces_mgmt_client_factory, \
queues_mgmt_client_factory, topics_mgmt_client_factory, subscriptions_mgmt_client_factory, \
rules_mgmt_client_factory, disaster_recovery_mgmt_client_factory, migration_mgmt_client_factory
- from azure.cli.command_modules.servicebus.custom import empty_on_404
sb_namespace_util = CliCommandType(
operations_tmpl='azure.mgmt.servicebus.operations.namespaces_operations#NamespacesOperations.{}',
@@ -56,15 +55,15 @@
with self.command_group('servicebus namespace', sb_namespace_util, client_factory=namespaces_mgmt_client_factory) as g:
g.custom_command('create', 'cli_namespace_create')
g.show_command('show', 'get')
- g.custom_command('list', 'cli_namespace_list', exception_handler=empty_on_404)
+ g.custom_command('list', 'cli_namespace_list')
g.command('delete', 'delete')
g.command('exists', 'check_name_availability_method')
g.generic_update_command('update', custom_func_name='cli_namespace_update', custom_func_type=servicebus_custom)
with self.command_group('servicebus namespace authorization-rule', sb_namespace_util, client_factory=namespaces_mgmt_client_factory) as g:
- g.command('create', 'create_or_update_authorization_rule',)
+ g.command('create', 'create_or_update_authorization_rule')
g.show_command('show', 'get_authorization_rule')
- g.command('list', 'list_authorization_rules', exception_handler=empty_on_404)
+ g.command('list', 'list_authorization_rules')
g.command('keys list', 'list_keys')
g.command('keys renew', 'regenerate_keys')
g.command('delete', 'delete_authorization_rule')
@@ -74,14 +73,14 @@
with self.command_group('servicebus queue', sb_queue_util, client_factory=queues_mgmt_client_factory) as g:
g.custom_command('create', 'cli_sbqueue_create')
g.show_command('show', 'get')
- g.command('list', 'list_by_namespace', exception_handler=empty_on_404)
+ g.command('list', 'list_by_namespace')
g.command('delete', 'delete')
g.generic_update_command('update', custom_func_name='cli_sbqueue_update')
with self.command_group('servicebus queue authorization-rule', sb_queue_util, client_factory=queues_mgmt_client_factory) as g:
- g.command('create', 'create_or_update_authorization_rule',)
+ g.command('create', 'create_or_update_authorization_rule')
g.show_command('show', 'get_authorization_rule')
- g.command('list', 'list_authorization_rules', exception_handler=empty_on_404)
+ g.command('list', 'list_authorization_rules')
g.command('keys list', 'list_keys')
g.command('keys renew', 'regenerate_keys')
g.command('delete', 'delete_authorization_rule')
@@ -91,14 +90,14 @@
with self.command_group('servicebus topic', sb_topic_util, client_factory=topics_mgmt_client_factory) as g:
g.custom_command('create', 'cli_sbtopic_create')
g.show_command('show', 'get')
- g.command('list', 'list_by_namespace', exception_handler=empty_on_404)
+ g.command('list', 'list_by_namespace')
g.command('delete', 'delete')
g.generic_update_command('update', custom_func_name='cli_sbtopic_update')
with self.command_group('servicebus topic authorization-rule', sb_topic_util, client_factory=topics_mgmt_client_factory) as g:
g.command('create', 'create_or_update_authorization_rule')
g.show_command('show', 'get_authorization_rule')
- g.command('list', 'list_authorization_rules', exception_handler=empty_on_404)
+ g.command('list', 'list_authorization_rules')
g.command('keys list', 'list_keys')
g.command('keys renew', 'regenerate_keys')
g.command('delete', 'delete_authorization_rule')
@@ -108,7 +107,7 @@
with self.command_group('servicebus topic subscription', sb_subscriptions_util, client_factory=subscriptions_mgmt_client_factory) as g:
g.custom_command('create', 'cli_sbsubscription_create')
g.show_command('show', 'get')
- g.command('list', 'list_by_topic', exception_handler=empty_on_404)
+ g.command('list', 'list_by_topic')
g.command('delete', 'delete')
g.generic_update_command('update', custom_func_name='cli_sbsubscription_update')
@@ -116,7 +115,7 @@
with self.command_group('servicebus topic subscription rule', sb_rule_util, client_factory=rules_mgmt_client_factory) as g:
g.custom_command('create', 'cli_rules_create')
g.show_command('show', 'get')
- g.command('list', 'list_by_subscriptions', exception_handler=empty_on_404)
+ g.command('list', 'list_by_subscriptions')
g.command('delete', 'delete')
g.generic_update_command('update', custom_func_name='cli_rules_update')
@@ -124,7 +123,7 @@
with self.command_group('servicebus georecovery-alias', sb_geodr_util, client_factory=disaster_recovery_mgmt_client_factory) as g:
g.command('set', 'create_or_update')
g.show_command('show', 'get')
- g.command('list', 'list', exception_handler=empty_on_404)
+ g.command('list', 'list')
g.command('break-pair', 'break_pairing')
g.command('fail-over', 'fail_over')
g.command('exists', 'check_name_availability_method')
@@ -140,5 +139,5 @@
with self.command_group('servicebus migration', sb_migration_util, client_factory=migration_mgmt_client_factory) as g:
g.custom_command('start', 'cli_migration_start')
g.show_command('show', 'get')
- g.command('complete', 'complete_migration', exception_handler=empty_on_404)
+ g.command('complete', 'complete_migration')
g.command('abort', 'revert')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicebus-0.2.2/azure/cli/command_modules/servicebus/custom.py new/azure-cli-servicebus-0.3.3/azure/cli/command_modules/servicebus/custom.py
--- old/azure-cli-servicebus-0.2.2/azure/cli/command_modules/servicebus/custom.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-servicebus-0.3.3/azure/cli/command_modules/servicebus/custom.py 2019-01-25 20:43:41.000000000 +0100
@@ -9,7 +9,6 @@
# pylint: disable=unused-variable
import re
-import time
# Namespace Region
@@ -393,6 +392,7 @@
def cli_migration_start(client, resource_group_name, namespace_name, target_namespace, post_migration_name):
+ import time
client.create_and_start_migration(resource_group_name, namespace_name, target_namespace, post_migration_name)
getresponse = client.get(resource_group_name, namespace_name)
@@ -410,13 +410,6 @@
return client.get(resource_group_name, namespace_name)
-def empty_on_404(ex):
- from azure.mgmt.servicebus.models import ErrorResponseException
- if isinstance(ex, ErrorResponseException) and ex.response.status_code == 404:
- return None
- raise ex
-
-
iso8601pattern = re.compile("^P(?!$)(\\d+Y)?(\\d+M)?(\\d+W)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+.)?(\\d+S)?)?$")
timedeltapattern = re.compile("^\\d+:\\d+:\\d+$")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicebus-0.2.2/azure_cli_servicebus.egg-info/PKG-INFO new/azure-cli-servicebus-0.3.3/azure_cli_servicebus.egg-info/PKG-INFO
--- old/azure-cli-servicebus-0.2.2/azure_cli_servicebus.egg-info/PKG-INFO 2018-08-23 01:09:43.000000000 +0200
+++ new/azure-cli-servicebus-0.3.3/azure_cli_servicebus.egg-info/PKG-INFO 2019-01-25 20:44:07.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-servicebus
-Version: 0.2.2
+Version: 0.3.3
Summary: Microsoft Azure Command-Line Tools Service Bus Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -19,6 +19,25 @@
Release History
===============
+ 0.3.3
+ +++++
+ * Minor fixes
+
+ 0.3.2
+ +++++
+ * Minor fixes
+
+ 0.3.1
+ +++++
+ * Added Read-Only migration_state to MigrationConfigProperties to show current Service Bus Standard to Premium namespace migration state.
+
+ 0.3.0
+ +++++
+ * BREAKING CHANGE: 'list' commands errors for resource(s) NotFound(404) are now handled in the typical way instead of showing empty list
+
+ 0.2.3
+ +++++
+ * Minor fixes
0.2.2
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicebus-0.2.2/azure_cli_servicebus.egg-info/requires.txt new/azure-cli-servicebus-0.3.3/azure_cli_servicebus.egg-info/requires.txt
--- old/azure-cli-servicebus-0.2.2/azure_cli_servicebus.egg-info/requires.txt 2018-08-23 01:09:43.000000000 +0200
+++ new/azure-cli-servicebus-0.3.3/azure_cli_servicebus.egg-info/requires.txt 2019-01-25 20:44:07.000000000 +0100
@@ -1,3 +1,3 @@
azure-cli-core
six
-azure-mgmt-servicebus==0.5.1
+azure-mgmt-servicebus==0.5.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-servicebus-0.2.2/setup.py new/azure-cli-servicebus-0.3.3/setup.py
--- old/azure-cli-servicebus-0.2.2/setup.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-servicebus-0.3.3/setup.py 2019-01-25 20:43:41.000000000 +0100
@@ -13,7 +13,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "0.2.2"
+VERSION = "0.3.3"
# The full list of classifiers is available at
@@ -35,7 +35,7 @@
DEPENDENCIES = [
'azure-cli-core',
'six',
- 'azure-mgmt-servicebus==0.5.1',
+ 'azure-mgmt-servicebus==0.5.3',
]
with open('README.rst', 'r', encoding='utf-8') as f:
1
0
Hello community,
here is the log from the commit of package azure-cli-search for openSUSE:Factory checked in at 2019-05-22 11:02:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-search (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-search.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-search"
Wed May 22 11:02:06 2019 rev:2 rq:696858 version:0.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-search/azure-cli-search.changes 2018-10-15 10:49:25.415006728 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-search.new.5148/azure-cli-search.changes 2019-05-22 11:02:09.370665711 +0200
@@ -1,0 +2,11 @@
+Tue Apr 16 18:33:43 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-search.spec ++++++
--- /var/tmp/diff_new_pack.65BYrx/_old 2019-05-22 11:02:11.762664340 +0200
+++ /var/tmp/diff_new_pack.65BYrx/_new 2019-05-22 11:02:11.806664315 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-search
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,9 +12,10 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
+
Name: azure-cli-search
Version: 0.1.1
Release: 0
@@ -24,17 +25,16 @@
Url: https://github.com/Azure/azure-cli
Source: https://files.pythonhosted.org/packages/source/a/azure-cli-search/azure-cli…
Source1: LICENSE.txt
-BuildRequires: python3-devel
-BuildRequires: python3-setuptools
-BuildRequires: unzip
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
+BuildRequires: python3-setuptools
Requires: azure-cli-command-modules-nspkg
-Requires: azure-cli-nspkg
-Requires: python3-azure-nspkg
Requires: azure-cli-core
+Requires: azure-cli-nspkg
Requires: python3-azure-mgmt-search >= 2.0.0
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -51,6 +51,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
@@ -64,4 +65,5 @@
%license LICENSE.txt
%{python3_sitelib}/azure/cli/command_modules/search
%{python3_sitelib}/azure_cli_search-*.egg-info
+
%changelog
1
0
Hello community,
here is the log from the commit of package azure-cli-role for openSUSE:Factory checked in at 2019-05-22 11:02:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-role (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-role.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-role"
Wed May 22 11:02:00 2019 rev:5 rq:696857 version:2.4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-role/azure-cli-role.changes 2018-10-15 10:47:05.375156242 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-role.new.5148/azure-cli-role.changes 2019-05-22 11:02:03.050669333 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 18:30:49 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.4.0
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-role-2.1.4.tar.gz
New:
----
azure-cli-role-2.4.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-role.spec ++++++
--- /var/tmp/diff_new_pack.7oCiU4/_old 2019-05-22 11:02:04.734668367 +0200
+++ /var/tmp/diff_new_pack.7oCiU4/_new 2019-05-22 11:02:04.738668365 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-role
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-role
-Version: 2.1.4
+Version: 2.4.0
Release: 0
Summary: Microsoft Azure CLI 'role' Command Module for Role-Based Access Control (RBAC)
License: MIT
@@ -27,18 +27,17 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-graphrbac >= 0.40.0
+Requires: python3-azure-graphrbac >= 0.53.0
Requires: python3-azure-keyvault >= 1.1.0
Requires: python3-azure-mgmt-authorization >= 0.50.0
Requires: python3-azure-mgmt-monitor >= 0.5.2
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-pytz
Conflicts: azure-cli < 2.0.0
@@ -59,6 +58,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-role-2.1.4.tar.gz -> azure-cli-role-2.4.0.tar.gz ++++++
++++ 1923 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package azure-cli-resource for openSUSE:Factory checked in at 2019-05-22 11:01:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-resource (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-resource.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-resource"
Wed May 22 11:01:56 2019 rev:5 rq:696856 version:2.1.10
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-resource/azure-cli-resource.changes 2018-10-15 10:48:01.947095820 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-resource.new.5148/azure-cli-resource.changes 2019-05-22 11:01:57.962672248 +0200
@@ -1,0 +2,15 @@
+Tue Apr 16 18:28:17 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.1.10
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+
+-------------------------------------------------------------------
Old:
----
azure-cli-resource-2.1.3.tar.gz
New:
----
azure-cli-resource-2.1.10.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-resource.spec ++++++
--- /var/tmp/diff_new_pack.rralQ2/_old 2019-05-22 11:01:58.766671788 +0200
+++ /var/tmp/diff_new_pack.rralQ2/_new 2019-05-22 11:01:58.770671785 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-resource
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-resource
-Version: 2.1.3
+Version: 2.1.10
Release: 0
Summary: Microsoft Azure CLI 'resource' Command Module
License: MIT
@@ -27,16 +27,15 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
Requires: python3-azure-mgmt-authorization >= 0.50.0
Requires: python3-azure-mgmt-managementgroups >= 0.1.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -56,6 +55,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-resource-2.1.3.tar.gz -> azure-cli-resource-2.1.10.tar.gz ++++++
++++ 2844 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package azure-cli-reservations for openSUSE:Factory checked in at 2019-05-22 11:01:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-reservations (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-reservations.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-reservations"
Wed May 22 11:01:49 2019 rev:3 rq:696855 version:0.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-reservations/azure-cli-reservations.changes 2018-10-15 10:47:50.807107715 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-reservations.new.5148/azure-cli-reservations.changes 2019-05-22 11:01:54.850674032 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 18:26:45 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.4.1
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-reservations-0.3.2.tar.gz
New:
----
azure-cli-reservations-0.4.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-reservations.spec ++++++
--- /var/tmp/diff_new_pack.cE3iUL/_old 2019-05-22 11:01:56.714672963 +0200
+++ /var/tmp/diff_new_pack.cE3iUL/_new 2019-05-22 11:01:56.714672963 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-reservations
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-reservations
-Version: 0.3.2
+Version: 0.4.1
Release: 0
Summary: Microsoft Azure CLI 'reservations' Command Module
License: MIT
@@ -27,15 +27,14 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-mgmt-reservations >= 0.2.1
-Requires: python3-azure-nspkg
+Requires: python3-azure-mgmt-reservations >= 0.3.1
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -55,6 +54,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-reservations-0.3.2.tar.gz -> azure-cli-reservations-0.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-reservations-0.3.2/HISTORY.rst new/azure-cli-reservations-0.4.1/HISTORY.rst
--- old/azure-cli-reservations-0.3.2/HISTORY.rst 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-reservations-0.4.1/HISTORY.rst 2018-11-15 19:56:29.000000000 +0100
@@ -2,6 +2,14 @@
Release History
===============
+0.4.1
++++++
+* Add RedHat in the reserved resource enum type
+
+0.4.0
++++++
+* Add CosmosDb in the reserved resource enum type
+* Add name property in Patch model
0.3.2
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-reservations-0.3.2/PKG-INFO new/azure-cli-reservations-0.4.1/PKG-INFO
--- old/azure-cli-reservations-0.3.2/PKG-INFO 2018-08-23 01:10:10.000000000 +0200
+++ new/azure-cli-reservations-0.4.1/PKG-INFO 2018-11-15 19:56:53.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-reservations
-Version: 0.3.2
+Version: 0.4.1
Summary: Microsoft Azure Command-Line Tools Reservations Command Module
Home-page: https://github.com/azure/azure-cli
Author: Microsoft Corporation
@@ -17,6 +17,14 @@
Release History
===============
+ 0.4.1
+ +++++
+ * Add RedHat in the reserved resource enum type
+
+ 0.4.0
+ +++++
+ * Add CosmosDb in the reserved resource enum type
+ * Add name property in Patch model
0.3.2
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-reservations-0.3.2/azure_cli_reservations.egg-info/PKG-INFO new/azure-cli-reservations-0.4.1/azure_cli_reservations.egg-info/PKG-INFO
--- old/azure-cli-reservations-0.3.2/azure_cli_reservations.egg-info/PKG-INFO 2018-08-23 01:10:10.000000000 +0200
+++ new/azure-cli-reservations-0.4.1/azure_cli_reservations.egg-info/PKG-INFO 2018-11-15 19:56:53.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-reservations
-Version: 0.3.2
+Version: 0.4.1
Summary: Microsoft Azure Command-Line Tools Reservations Command Module
Home-page: https://github.com/azure/azure-cli
Author: Microsoft Corporation
@@ -17,6 +17,14 @@
Release History
===============
+ 0.4.1
+ +++++
+ * Add RedHat in the reserved resource enum type
+
+ 0.4.0
+ +++++
+ * Add CosmosDb in the reserved resource enum type
+ * Add name property in Patch model
0.3.2
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-reservations-0.3.2/azure_cli_reservations.egg-info/requires.txt new/azure-cli-reservations-0.4.1/azure_cli_reservations.egg-info/requires.txt
--- old/azure-cli-reservations-0.3.2/azure_cli_reservations.egg-info/requires.txt 2018-08-23 01:10:10.000000000 +0200
+++ new/azure-cli-reservations-0.4.1/azure_cli_reservations.egg-info/requires.txt 2018-11-15 19:56:53.000000000 +0100
@@ -1,2 +1,2 @@
-azure-mgmt-reservations==0.2.1
+azure-mgmt-reservations==0.3.1
azure-cli-core
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-reservations-0.3.2/setup.py new/azure-cli-reservations-0.4.1/setup.py
--- old/azure-cli-reservations-0.3.2/setup.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-reservations-0.4.1/setup.py 2018-11-15 19:56:29.000000000 +0100
@@ -15,7 +15,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "0.3.2"
+VERSION = "0.4.1"
# The full list of classifiers is available at
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
CLASSIFIERS = [
@@ -33,7 +33,7 @@
]
DEPENDENCIES = [
- 'azure-mgmt-reservations==0.2.1',
+ 'azure-mgmt-reservations==0.3.1',
'azure-cli-core'
]
1
0
Hello community,
here is the log from the commit of package azure-cli-redis for openSUSE:Factory checked in at 2019-05-22 11:01:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-redis (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-redis.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-redis"
Wed May 22 11:01:40 2019 rev:5 rq:696853 version:0.4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-redis/azure-cli-redis.changes 2018-10-15 10:44:31.331320939 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-redis.new.5148/azure-cli-redis.changes 2019-05-22 11:01:44.202680134 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 18:24:01 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.4.0
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-redis-0.3.2.tar.gz
New:
----
azure-cli-redis-0.4.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-redis.spec ++++++
--- /var/tmp/diff_new_pack.IkPm6O/_old 2019-05-22 11:01:44.710679843 +0200
+++ /var/tmp/diff_new_pack.IkPm6O/_new 2019-05-22 11:01:44.714679840 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-redis
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-redis
-Version: 0.3.2
+Version: 0.4.0
Release: 0
Summary: Microsoft Azure CLI 'redis' Command Module
License: MIT
@@ -27,15 +27,14 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-mgmt-redis >= 5.0.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-mgmt-redis >= 6.0.0
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -55,6 +54,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-redis-0.3.2.tar.gz -> azure-cli-redis-0.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-redis-0.3.2/HISTORY.rst new/azure-cli-redis-0.4.0/HISTORY.rst
--- old/azure-cli-redis-0.3.2/HISTORY.rst 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-redis-0.4.0/HISTORY.rst 2019-02-12 03:05:13.000000000 +0100
@@ -3,6 +3,16 @@
Release History
===============
+0.4.0
+++++++
+* Added commands for managing firewall-rules (create, update, delete, show, list)
+* Added commands for managing server-link (create, delete, show, list)
+* Added commands for managing patch-schedule (create, update, delete, show)
+* `az redis create` : Support for Availability Zones and Minimum TLS Version
+* BREAKING CHANGE: Removed 'az redis update-settings' and 'az redis list-all' command
+* BREAKING CHANGE: Parameter for redis create: 'tenant settings' is not accepted in key[=value] format
+* Added warning message for deprecating 'az redis import-method' command.
+
0.3.2
+++++
* Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-redis-0.3.2/PKG-INFO new/azure-cli-redis-0.4.0/PKG-INFO
--- old/azure-cli-redis-0.3.2/PKG-INFO 2018-08-23 01:09:23.000000000 +0200
+++ new/azure-cli-redis-0.4.0/PKG-INFO 2019-02-12 03:05:30.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-redis
-Version: 0.3.2
+Version: 0.4.0
Summary: Microsoft Azure Command-Line Tools Redis Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,16 @@
Release History
===============
+ 0.4.0
+ ++++++
+ * Added commands for managing firewall-rules (create, update, delete, show, list)
+ * Added commands for managing server-link (create, delete, show, list)
+ * Added commands for managing patch-schedule (create, update, delete, show)
+ * `az redis create` : Support for Availability Zones and Minimum TLS Version
+ * BREAKING CHANGE: Removed 'az redis update-settings' and 'az redis list-all' command
+ * BREAKING CHANGE: Parameter for redis create: 'tenant settings' is not accepted in key[=value] format
+ * Added warning message for deprecating 'az redis import-method' command.
+
0.3.2
+++++
* Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-redis-0.3.2/azure/cli/command_modules/redis/_client_factory.py new/azure-cli-redis-0.4.0/azure/cli/command_modules/redis/_client_factory.py
--- old/azure-cli-redis-0.3.2/azure/cli/command_modules/redis/_client_factory.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-redis-0.4.0/azure/cli/command_modules/redis/_client_factory.py 2019-02-12 03:05:13.000000000 +0100
@@ -4,7 +4,7 @@
# --------------------------------------------------------------------------------------------
-def cf_redis(cli_ctx, _):
+def cf_redis(cli_ctx, *_):
from azure.cli.core.commands.client_factory import get_mgmt_service_client
from azure.mgmt.redis import RedisManagementClient
return get_mgmt_service_client(cli_ctx, RedisManagementClient).redis
@@ -14,3 +14,15 @@
from azure.cli.core.commands.client_factory import get_mgmt_service_client
from azure.mgmt.redis import RedisManagementClient
return get_mgmt_service_client(cli_ctx, RedisManagementClient).patch_schedules
+
+
+def cf_firewall_rule(cli_ctx, _):
+ from azure.cli.core.commands.client_factory import get_mgmt_service_client
+ from azure.mgmt.redis import RedisManagementClient
+ return get_mgmt_service_client(cli_ctx, RedisManagementClient).firewall_rules
+
+
+def cf_linked_server(cli_ctx, _):
+ from azure.cli.core.commands.client_factory import get_mgmt_service_client
+ from azure.mgmt.redis import RedisManagementClient
+ return get_mgmt_service_client(cli_ctx, RedisManagementClient).linked_server
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-redis-0.3.2/azure/cli/command_modules/redis/_help.py new/azure-cli-redis-0.4.0/azure/cli/command_modules/redis/_help.py
--- old/azure-cli-redis-0.3.2/azure/cli/command_modules/redis/_help.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-redis-0.4.0/azure/cli/command_modules/redis/_help.py 2019-02-12 03:05:13.000000000 +0100
@@ -12,6 +12,11 @@
short-summary: Manage dedicated Redis caches for your Azure applications.
"""
+helps['redis create'] = """
+ type: command
+ short-summary: Create new Redis Cache instance.
+"""
+
helps['redis export'] = """
type: command
short-summary: Export data stored in a Redis cache.
@@ -22,32 +27,58 @@
short-summary: Import data into a Redis cache.
"""
-helps['redis import-method'] = """
+helps['redis list'] = """
type: command
- short-summary: Import data into a Redis cache.
+ short-summary: List Redis Caches.
+ long-summary: Lists details about all caches within current Subscription or provided Resource Group.
"""
-helps['redis list'] = """
+helps['redis update'] = """
+ type: command
+ short-summary: Update a Redis cache.
+ long-summary: Scale or update settings of a Redis cache.
+"""
+
+helps['redis patch-schedule'] = """
+ type: group
+ short-summary: Manage Redis patch schedules.
+"""
+
+helps['redis patch-schedule create'] = """
type: command
- short-summary: List Redis caches.
+ short-summary: Create patching schedule for Redis cache.
+ long-summary: Usage example - az redis patch-schedule create --name testCacheName --resource-group testResourceGroup --schedule-entries '[{\"dayOfWeek\":\"Tuesday\",\"startHourUtc\":\"00\",\"maintenanceWindow\":\"PT5H\"}]'
"""
-helps['redis list-all'] = """
+helps['redis patch-schedule update'] = """
type: command
- short-summary: Gets all Redis caches in the specified subscription.
+ short-summary: Update the patching schedule for Redis cache.
+ long-summary: Usage example - az redis patch-schedule update --name testCacheName --resource-group testResourceGroup --schedule-entries '[{\"dayOfWeek\":\"Tuesday\",\"startHourUtc\":\"00\",\"maintenanceWindow\":\"PT5H\"}]'
+"""
+
+helps['redis firewall-rules'] = """
+ type: group
+ short-summary: Manage Redis firewall rules.
"""
-helps['redis update-settings'] = """
+helps['redis firewall-rules create'] = """
type: command
- short-summary: Update the settings of a Redis cache.
+ short-summary: Create a redis cache firewall rule.
+ long-summary: Usage example - az redis firewall-rules create --name testCacheName --resource-group testResourceGroup --start-ip 10.10.10.10 --end-ip 20.20.20.20 --rule-name 10to20
"""
-helps['redis update'] = """
+helps['redis firewall-rules update'] = """
type: command
- short-summary: Scale or update settings of a Redis cache.
+ short-summary: Update a redis cache firewall rule.
"""
-helps['redis patch-schedule'] = """
+helps['redis server-link'] = """
type: group
- short-summary: Manage Redis patch schedules.
+ short-summary: Manage Redis server links.
+"""
+
+helps['redis server-link create'] = """
+ type: command
+ short-summary: Adds a server link to the Redis cache (requires Premium SKU).
+ long-summary: Usage example - az redis server-link create --name testCacheName --resource-group testResourceGroup --cache-to-link secondTestCacheName --replication-role Secondary
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-redis-0.3.2/azure/cli/command_modules/redis/_params.py new/azure-cli-redis-0.4.0/azure/cli/command_modules/redis/_params.py
--- old/azure-cli-redis-0.3.2/azure/cli/command_modules/redis/_params.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-redis-0.4.0/azure/cli/command_modules/redis/_params.py 2019-02-12 03:05:13.000000000 +0100
@@ -2,44 +2,57 @@
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
+# pylint: disable=line-too-long
+from knack.arguments import CLIArgumentType
import azure.cli.command_modules.redis._help # pylint: disable=unused-import
def load_arguments(self, _):
- from azure.mgmt.redis.models import RebootType, RedisKeyType, SkuName
+ from azure.mgmt.redis.models import RebootType, RedisKeyType, SkuName, TlsVersion, ReplicationRole
from azure.cli.command_modules.redis._validators import JsonString, ScheduleEntryList
- from azure.cli.core.commands.parameters import get_enum_type # TODO: Move this into Knack
- from azure.cli.core.commands.parameters import get_resource_name_completion_list, name_type, tags_type
+ from azure.cli.command_modules.redis.custom import allowed_c_family_sizes, allowed_p_family_sizes
+ from azure.cli.core.commands.parameters import get_enum_type, tags_type, zones_type
+ from azure.cli.core.commands.parameters import get_resource_name_completion_list
with self.argument_context('redis') as c:
- c.argument('name', options_list=['--name', '-n'], help='Name of the Redis cache.', id_part='name',
- completer=get_resource_name_completion_list('Microsoft.Cache/redis'))
+ cache_name = CLIArgumentType(options_list=['--name', '-n'], help='Name of the Redis cache.', id_part='name',
+ completer=get_resource_name_completion_list('Microsoft.Cache/redis'))
+ format_type = CLIArgumentType(options_list=['--file-format'], help='Format of the blob (Currently rdb is the only supported format, with other formats expected in the future)')
+
+ c.argument('name', arg_type=cache_name)
c.argument('redis_configuration', help='JSON encoded configuration settings. Use @{file} to load from a file.',
type=JsonString)
c.argument('reboot_type', arg_type=get_enum_type(RebootType))
c.argument('key_type', arg_type=get_enum_type(RedisKeyType))
+ c.argument('files', help='SAS url for blobs that needs to be imported', nargs='+')
+ c.argument('format', arg_type=format_type)
+ c.argument('file_format', arg_type=format_type)
+ c.argument('container', help='SAS url for container where data needs to be exported to')
+ c.argument('prefix', help='Prefix to use for exported files')
+ c.argument('cache_name', arg_type=cache_name)
+ c.argument('shard_count', type=int, help='The number of shards to be created on a Premium Cluster Cache.')
+ c.argument('subnet_id', help='The full resource ID of a subnet in a virtual network to deploy the redis cache in. Example format /subscriptions/{subid}/resourceGroups/{resourceGroupName}/Microsoft.{Network|ClassicNetwork}/VirtualNetworks/vnet1/subnets/subnet1')
+ c.argument('static_ip', help='Specify a static ip if required for the VNET. If you do not specify a static IP then an IP address is chosen automatically')
+ c.argument('tenant_settings', arg_type=tags_type, help='Space-separated tenant settings in key[=value] format')
+ c.argument('tags', arg_type=tags_type)
+ c.argument('zones', arg_type=zones_type)
c.argument('shard_id', type=int)
c.argument('sku', help='Type of Redis cache.', arg_type=get_enum_type(SkuName))
- c.argument('vm_size', help='Size of Redis cache to deploy. Example : values for C family (C0, C1, C2, C3, C4, '
- 'C5, C6). For P family (P1, P2, P3, P4)')
- c.argument('enable_non_ssl_port', action='store_true')
- c.argument('shard_count', type=int)
- c.argument('tags', tags_type)
-
- for scope in ['redis import-method', 'redis import']:
- with self.argument_context(scope) as c:
- c.argument('files', nargs='+', help='Space-separated list of files to import.')
- c.argument('file_format', help='File format to import.')
-
- with self.argument_context('redis patch-schedule set') as c:
- c.argument('schedule_entries', type=ScheduleEntryList)
-
- with self.argument_context('redis create') as c:
- c.argument('name', arg_type=name_type, completer=None)
- c.argument('tenant_settings', type=JsonString)
-
- with self.argument_context('redis export') as c:
- c.argument('container', help='Container name to export to.')
- c.argument('prefix', help='Prefix to use for exported files.')
- c.argument('file_format', help='File format to export.')
+ c.argument('minimum_tls_version', help='Specifies the TLS version required by clients to connect to cache', arg_type=get_enum_type(TlsVersion))
+ c.argument('vm_size', arg_type=get_enum_type(allowed_c_family_sizes + allowed_p_family_sizes), help='Size of Redis cache to deploy. Basic and Standard Cache sizes start with C. Premium Cache sizes start with P')
+ c.argument('enable_non_ssl_port', action='store_true', help='If the value is true, then the non-ssl redis server port (6379) will be enabled.')
+
+ with self.argument_context('redis firewall-rules list') as c:
+ c.argument('cache_name', arg_type=cache_name, id_part=None)
+ c.argument('rule_name', help='Name of the firewall rule')
+
+ with self.argument_context('redis server-link') as c:
+ c.argument('name', arg_type=cache_name, id_part=None)
+ c.argument('server_to_link', help='Resource ID or name of the redis cache to be linked')
+ c.argument('replication_role', help='Role of the redis cache to be linked', arg_type=get_enum_type(ReplicationRole))
+ c.argument('linked_server_name', help='Name of the linked redis cache')
+
+ with self.argument_context('redis patch-schedule') as c:
+ c.argument('name', arg_type=cache_name, id_part=None)
+ c.argument('schedule_entries', help="List of Patch schedule entries. Example Value:[{\"dayOfWeek\":\"Monday\",\"startHourUtc\":\"00\",\"maintenanceWindow\":\"PT5H\"}]", type=ScheduleEntryList)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-redis-0.3.2/azure/cli/command_modules/redis/commands.py new/azure-cli-redis-0.4.0/azure/cli/command_modules/redis/commands.py
--- old/azure-cli-redis-0.3.2/azure/cli/command_modules/redis/commands.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-redis-0.4.0/azure/cli/command_modules/redis/commands.py 2019-02-12 03:05:13.000000000 +0100
@@ -5,11 +5,11 @@
from azure.cli.core.commands import CliCommandType
+# pylint: disable=line-too-long
+from azure.cli.command_modules.redis._client_factory import cf_redis, cf_patch_schedules, cf_firewall_rule, cf_linked_server
-def load_command_table(self, _):
- from azure.cli.command_modules.redis._client_factory import cf_redis, cf_patch_schedules
- from azure.cli.command_modules.redis.custom import wrong_vmsize_argument_exception_handler
+def load_command_table(self, _):
redis_sdk = CliCommandType(
operations_tmpl='azure.mgmt.redis.operations.redis_operations#RedisOperations.{}',
client_factory=cf_redis)
@@ -18,26 +18,42 @@
operations_tmpl='azure.mgmt.redis.operations.patch_schedules_operations#PatchSchedulesOperations.{}',
client_factory=cf_patch_schedules)
+ redis_firewall_rules = CliCommandType(
+ operations_tmpl='azure.mgmt.redis.operations.firewall_rules_operations#FirewallRulesOperations.{}',
+ client_factory=cf_firewall_rule)
+
+ redis_linked_server = CliCommandType(
+ operations_tmpl='azure.mgmt.redis.operations.linked_server_operations#LinkedServerOperations.{}',
+ client_factory=cf_linked_server)
+
with self.command_group('redis', redis_sdk) as g:
- g.custom_command('create', 'cli_redis_create', client_factory=cf_redis,
- exception_handler=wrong_vmsize_argument_exception_handler)
- g.command('delete', 'delete')
+ g.custom_command('create', 'cli_redis_create', client_factory=cf_redis)
+ g.command('delete', 'delete', confirmation=True)
g.custom_command('export', 'cli_redis_export')
g.command('force-reboot', 'force_reboot')
- g.custom_command('import-method', 'cli_redis_import_method',
- deprecate_info=g.deprecate(redirect='redis import', hide='2.0.34'))
- g.custom_command('import', 'cli_redis_import_method')
- g.custom_command('list', 'cli_redis_list')
- g.command('list-all', 'list', deprecate_info=g.deprecate(redirect='redis list', hide='2.0.34'))
+ g.command('import-method', 'import_data', deprecate_info=g.deprecate(redirect='redis import', hide=True))
+ g.command('import', 'import_data')
+ g.custom_command('list', 'cli_redis_list_cache')
g.command('list-keys', 'list_keys')
g.command('regenerate-keys', 'regenerate_key')
- g.show_command('show', 'get')
- g.custom_command('update-settings', 'cli_redis_update_settings',
- deprecate_info=g.deprecate(redirect='redis update', hide='2.0.34'))
- g.generic_update_command('update', exception_handler=wrong_vmsize_argument_exception_handler,
- setter_name='update', custom_func_name='cli_redis_update')
+ g.command('show', 'get')
+ g.generic_update_command('update', setter_name='update', custom_func_name='cli_redis_update')
with self.command_group('redis patch-schedule', redis_patch) as g:
- g.command('set', 'create_or_update')
+ g.command('create', 'create_or_update')
+ g.command('update', 'create_or_update')
+ g.command('delete', 'delete')
+ g.command('show', 'get')
+
+ with self.command_group('redis firewall-rules', redis_firewall_rules) as g:
+ g.command('create', 'create_or_update')
+ g.command('update', 'create_or_update')
+ g.command('delete', 'delete')
+ g.command('show', 'get')
+ g.command('list', 'list_by_redis_resource')
+
+ with self.command_group('redis server-link', redis_linked_server) as g:
+ g.custom_command('create', 'cli_redis_create_server_link', client_factory=cf_linked_server)
g.command('delete', 'delete')
- g.show_command('show', 'get')
+ g.command('show', 'get')
+ g.command('list', 'list')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-redis-0.3.2/azure/cli/command_modules/redis/custom.py new/azure-cli-redis-0.4.0/azure/cli/command_modules/redis/custom.py
--- old/azure-cli-redis-0.3.2/azure/cli/command_modules/redis/custom.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-redis-0.4.0/azure/cli/command_modules/redis/custom.py 2019-02-12 03:05:13.000000000 +0100
@@ -5,68 +5,24 @@
from knack.log import get_logger
from knack.util import CLIError
-
+from azure.cli.command_modules.redis._client_factory import cf_redis
logger = get_logger(__name__)
-
-def wrong_vmsize_argument_exception_handler(ex):
-
- from msrest.exceptions import ClientException
- if isinstance(ex, ClientException):
- if ("The value of the parameter 'properties.sku.family/properties.sku.capacity' is invalid"
- in format(ex)) \
- or ("The value of the parameter 'properties.sku.family' is invalid"
- in format(ex)):
- raise CLIError('Invalid VM size. Example for Valid values: '
- 'For C family (C0, C1, C2, C3, C4, C5, C6), '
- 'for P family (P1, P2, P3, P4)')
- raise ex
-
+allowed_c_family_sizes = ['c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6']
+allowed_p_family_sizes = ['p1', 'p2', 'p3', 'p4', 'p5']
+wrong_vmsize_error = CLIError('Invalid VM size. Example for Valid values: '
+ 'For Standard Sku : (C0, C1, C2, C3, C4, C5, C6), '
+ 'for Premium Sku : (P1, P2, P3, P4, P5)')
# region Custom Commands
+
# pylint: disable=unused-argument
def cli_redis_export(cmd, client, resource_group_name, name, prefix, container, file_format=None):
from azure.mgmt.redis.models import ExportRDBParameters
parameters = ExportRDBParameters(prefix, container, file_format)
- return client.export(resource_group_name, name, parameters)
-
-
-# pylint: disable=unused-argument
-def cli_redis_import_method(cmd, client, resource_group_name, name, file_format, files):
- from azure.mgmt.redis.models import ImportRDBParameters
- parameters = ImportRDBParameters(files, file_format)
- return client.import_method(resource_group_name, name, files, parameters)
-
-
-# pylint: disable=unused-argument
-def cli_redis_list(cmd, client, resource_group_name=None):
- if resource_group_name:
- return client.list_by_resource_group(resource_group_name)
- return client.list()
-
-
-# pylint: disable=unused-argument
-def cli_redis_update_settings(cmd, client, resource_group_name, name, redis_configuration):
- from azure.mgmt.redis.models import RedisUpdateParameters
-
- existing = client.get(resource_group_name, name)
- existing.redis_configuration.update(redis_configuration)
-
- # Due to swagger/mgmt SDK quirkiness, we have to manually copy over
- # the resource retrieved to a create_parameters object
- update_params = RedisUpdateParameters( # pylint: disable=too-many-function-args
- existing.redis_configuration,
- existing.enable_non_ssl_port,
- existing.tenant_settings,
- existing.shard_count,
- existing.subnet_id,
- existing.static_ip,
- existing.sku,
- existing.tags
- )
- return client.update(resource_group_name, name, parameters=update_params)
+ return client.export_data(resource_group_name, name, parameters)
# pylint: disable=unused-argument
@@ -79,15 +35,15 @@
instance.sku.family = vm_size[0]
instance.sku.capacity = vm_size[1:]
- update_params = RedisUpdateParameters( # pylint: disable=too-many-function-args
- instance.redis_configuration,
- instance.enable_non_ssl_port,
- instance.tenant_settings,
- instance.shard_count,
- instance.subnet_id,
- instance.static_ip,
- instance.sku,
- instance.tags
+ # pylint: disable=too-many-function-args
+ update_params = RedisUpdateParameters(
+ redis_configuration=instance.redis_configuration,
+ enable_non_ssl_port=instance.enable_non_ssl_port,
+ tenant_settings=instance.tenant_settings,
+ shard_count=instance.shard_count,
+ minimum_tls_version=instance.minimum_tls_version,
+ sku=instance.sku,
+ tags=instance.tags
)
return update_params
@@ -96,32 +52,70 @@
def cli_redis_create(cmd, client,
resource_group_name, name, location, sku, vm_size, tags=None,
redis_configuration=None, enable_non_ssl_port=None, tenant_settings=None,
- shard_count=None, subnet_id=None, static_ip=None):
+ shard_count=None, minimum_tls_version=None, subnet_id=None, static_ip=None, zones=None):
# pylint:disable=line-too-long
- """Create new Redis Cache instance
- :param resource_group_name: Name of resource group
- :param name: Name of redis cache
- :param location: Location
- :param sku: What type of redis cache to deploy. Valid values: (Basic, Standard, Premium).
- :param vm_size: What size of redis cache to deploy. Valid values for C family (C0, C1, C2, C3, C4, C5, C6), for P family (P1, P2, P3, P4)
- :param redis_configuration: All Redis Settings. Few possible keys rdb-backup-enabled, rdb-storage-connection-string, rdb-backup-frequency, maxmemory-delta, maxmemory-policy, notify-keyspace-events, maxmemory-samples, slowlog-log-slower-than, slowlog-max-len, list-max-ziplist-entries, list-max-ziplist-value, hash-max-ziplist-entries, hash-max-ziplist-value, set-max-intset-entries, zset-max-ziplist-entries, zset-max-ziplist-value etc.
- :param enable_non_ssl_port: If the value is true, then the non-ssl redis server port (6379) will be enabled.
- :param tenant_settings: Json dictionary with tenant settings
- :param shard_count: The number of shards to be created on a Premium Cluster Cache.
- :param subnet_id: The full resource ID of a subnet in a virtual network to deploy the redis cache in. Example format /subscriptions/{subid}/resourceGroups/{resourceGroupName}/Microsoft.{Network|ClassicNetwork}/VirtualNetworks/vnet1/subnets/subnet1
- :param static_ip: Required when deploying a redis cache inside an existing Azure Virtual Network.
- """
+ if ((sku.lower() in ['standard', 'basic'] and vm_size.lower() not in allowed_c_family_sizes) or (sku.lower() in ['premium'] and vm_size.lower() not in allowed_p_family_sizes)):
+ raise wrong_vmsize_error
+ tenant_settings_in_json = {}
+ if tenant_settings is not None:
+ for item in tenant_settings:
+ tenant_settings_in_json.update(get_key_value_pair(item))
from azure.mgmt.redis.models import RedisCreateParameters, Sku
+ # pylint: disable=too-many-function-args
params = RedisCreateParameters(
+ sku=Sku(name=sku, family=vm_size[0], capacity=vm_size[1:]),
location=location,
- sku=Sku(sku, vm_size[0], vm_size[1:]),
- tags=tags,
redis_configuration=redis_configuration,
enable_non_ssl_port=enable_non_ssl_port,
- tenant_settings=tenant_settings,
+ tenant_settings=tenant_settings_in_json,
shard_count=shard_count,
+ minimum_tls_version=minimum_tls_version,
subnet_id=subnet_id,
- static_ip=static_ip)
+ static_ip=static_ip,
+ zones=zones,
+ tags=tags)
return client.create(resource_group_name, name, params)
+
+def get_key_value_pair(string):
+ result = {}
+ if string:
+ kvp = string.split('=', 1)
+ result = {kvp[0]: kvp[1]} if len(kvp) > 1 else {string: ''}
+ return result
+
+
+# pylint: disable=unused-argument
+def cli_redis_create_server_link(cmd, client, resource_group_name, name, server_to_link, replication_role):
+ redis_client = cf_redis(cmd.cli_ctx)
+ from azure.cli.core.commands.client_factory import get_subscription_id
+ from msrestazure.tools import is_valid_resource_id, resource_id
+ if not is_valid_resource_id(server_to_link):
+ server_to_link = resource_id(
+ subscription=get_subscription_id(cmd.cli_ctx),
+ resource_group=resource_group_name,
+ namespace='Microsoft.Cache', type='Redis',
+ name=server_to_link
+ )
+
+ cache_to_link = get_cache_from_resource_id(redis_client, server_to_link)
+
+ from azure.mgmt.redis.models import RedisLinkedServerCreateParameters
+ params = RedisLinkedServerCreateParameters(linked_redis_cache_id=cache_to_link.id,
+ linked_redis_cache_location=cache_to_link.location,
+ server_role=replication_role)
+ return client.create(resource_group_name, name, cache_to_link.name, params)
+
+
+def cli_redis_list_cache(client, resource_group_name=None):
+ cache_list = client.list_by_resource_group(resource_group_name=resource_group_name) \
+ if resource_group_name else client.list()
+ return list(cache_list)
+
+
+def get_cache_from_resource_id(client, cache_resource_id):
+ from msrestazure.tools import parse_resource_id
+ id_comps = parse_resource_id(cache_resource_id)
+ return client.get(id_comps['resource_group'], id_comps['name'])
+
# endregion
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-redis-0.3.2/azure_cli_redis.egg-info/PKG-INFO new/azure-cli-redis-0.4.0/azure_cli_redis.egg-info/PKG-INFO
--- old/azure-cli-redis-0.3.2/azure_cli_redis.egg-info/PKG-INFO 2018-08-23 01:09:23.000000000 +0200
+++ new/azure-cli-redis-0.4.0/azure_cli_redis.egg-info/PKG-INFO 2019-02-12 03:05:30.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-redis
-Version: 0.3.2
+Version: 0.4.0
Summary: Microsoft Azure Command-Line Tools Redis Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,16 @@
Release History
===============
+ 0.4.0
+ ++++++
+ * Added commands for managing firewall-rules (create, update, delete, show, list)
+ * Added commands for managing server-link (create, delete, show, list)
+ * Added commands for managing patch-schedule (create, update, delete, show)
+ * `az redis create` : Support for Availability Zones and Minimum TLS Version
+ * BREAKING CHANGE: Removed 'az redis update-settings' and 'az redis list-all' command
+ * BREAKING CHANGE: Parameter for redis create: 'tenant settings' is not accepted in key[=value] format
+ * Added warning message for deprecating 'az redis import-method' command.
+
0.3.2
+++++
* Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-redis-0.3.2/azure_cli_redis.egg-info/requires.txt new/azure-cli-redis-0.4.0/azure_cli_redis.egg-info/requires.txt
--- old/azure-cli-redis-0.3.2/azure_cli_redis.egg-info/requires.txt 2018-08-23 01:09:23.000000000 +0200
+++ new/azure-cli-redis-0.4.0/azure_cli_redis.egg-info/requires.txt 2019-02-12 03:05:30.000000000 +0100
@@ -1,2 +1,2 @@
-azure-mgmt-redis==5.0.0
+azure-mgmt-redis==6.0.0
azure-cli-core
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-redis-0.3.2/setup.py new/azure-cli-redis-0.4.0/setup.py
--- old/azure-cli-redis-0.3.2/setup.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-redis-0.4.0/setup.py 2019-02-12 03:05:13.000000000 +0100
@@ -15,7 +15,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "0.3.2"
+VERSION = "0.4.0"
# The full list of classifiers is available at
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
CLASSIFIERS = [
@@ -33,7 +33,7 @@
]
DEPENDENCIES = [
- 'azure-mgmt-redis==5.0.0',
+ 'azure-mgmt-redis==6.0.0',
'azure-cli-core',
]
1
0
Hello community,
here is the log from the commit of package azure-cli-rdbms for openSUSE:Factory checked in at 2019-05-22 11:01:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-rdbms (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-rdbms.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-rdbms"
Wed May 22 11:01:33 2019 rev:5 rq:696852 version:0.3.7
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-rdbms/azure-cli-rdbms.changes 2018-10-15 10:47:11.247149969 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-rdbms.new.5148/azure-cli-rdbms.changes 2019-05-22 11:01:37.870683762 +0200
@@ -1,0 +2,17 @@
+Tue Apr 16 15:57:33 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.3.7
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update %description from setup.py
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-rdbms-0.3.1.tar.gz
New:
----
azure-cli-rdbms-0.3.7.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-rdbms.spec ++++++
--- /var/tmp/diff_new_pack.nGzVCd/_old 2019-05-22 11:01:39.306682939 +0200
+++ /var/tmp/diff_new_pack.nGzVCd/_new 2019-05-22 11:01:39.358682910 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-rdbms
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-rdbms
-Version: 0.3.1
+Version: 0.3.7
Release: 0
Summary: Microsoft Azure CLI 'MySQL and PostgreSQL' Command Module
License: MIT
@@ -27,15 +27,14 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-mgmt-rdbms >= 1.2.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-mgmt-rdbms >= 1.5.0
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-six
Conflicts: azure-cli < 2.0.0
@@ -44,7 +43,7 @@
%description
Microsoft Azure CLI 'MySQL and PostgreSQL' Command Module
This package is for the 'rdbms' module.
-i.e. 'az mysql' and 'az postgres'
+i.e. 'az mariadb', 'az mysql' and 'az postgres'
This package is for the RDBMS module.
i.e. 'az mysql'
@@ -59,6 +58,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-rdbms-0.3.1.tar.gz -> azure-cli-rdbms-0.3.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-rdbms-0.3.1/HISTORY.rst new/azure-cli-rdbms-0.3.7/HISTORY.rst
--- old/azure-cli-rdbms-0.3.1/HISTORY.rst 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-rdbms-0.3.7/HISTORY.rst 2019-02-12 03:05:13.000000000 +0100
@@ -2,6 +2,29 @@
Release History
===============
+0.3.7
++++++
+* Improve help message and command parameters
+
+0.3.6
++++++
+* Minor fixes
+
+0.3.5
++++++
+* Add mariadb vnet commands
+
+0.3.4
++++++
+* Add mysql replica commands
+
+0.3.3
++++++
+* Minor fixes
+
+0.3.2
++++++
+* Add support for MariaDB service
0.3.1
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-rdbms-0.3.1/PKG-INFO new/azure-cli-rdbms-0.3.7/PKG-INFO
--- old/azure-cli-rdbms-0.3.1/PKG-INFO 2018-08-23 01:09:49.000000000 +0200
+++ new/azure-cli-rdbms-0.3.7/PKG-INFO 2019-02-12 03:05:35.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-rdbms
-Version: 0.3.1
+Version: 0.3.7
Summary: Microsoft Azure Command-Line Tools MySQL and PostgreSQL Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -9,7 +9,7 @@
Description: Microsoft Azure CLI 'MySQL and PostgreSQL' Command Module
=========================================================
This package is for the 'rdbms' module.
- i.e. 'az mysql' and 'az postgres'
+ i.e. 'az mariadb', 'az mysql' and 'az postgres'
@@ -17,6 +17,29 @@
Release History
===============
+ 0.3.7
+ +++++
+ * Improve help message and command parameters
+
+ 0.3.6
+ +++++
+ * Minor fixes
+
+ 0.3.5
+ +++++
+ * Add mariadb vnet commands
+
+ 0.3.4
+ +++++
+ * Add mysql replica commands
+
+ 0.3.3
+ +++++
+ * Minor fixes
+
+ 0.3.2
+ +++++
+ * Add support for MariaDB service
0.3.1
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-rdbms-0.3.1/README.rst new/azure-cli-rdbms-0.3.7/README.rst
--- old/azure-cli-rdbms-0.3.1/README.rst 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-rdbms-0.3.7/README.rst 2019-02-12 03:05:13.000000000 +0100
@@ -1,5 +1,5 @@
Microsoft Azure CLI 'MySQL and PostgreSQL' Command Module
=========================================================
This package is for the 'rdbms' module.
-i.e. 'az mysql' and 'az postgres'
+i.e. 'az mariadb', 'az mysql' and 'az postgres'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-rdbms-0.3.1/azure/cli/command_modules/rdbms/_client_factory.py new/azure-cli-rdbms-0.3.7/azure/cli/command_modules/rdbms/_client_factory.py
--- old/azure-cli-rdbms-0.3.1/azure/cli/command_modules/rdbms/_client_factory.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-rdbms-0.3.7/azure/cli/command_modules/rdbms/_client_factory.py 2019-02-12 03:05:13.000000000 +0100
@@ -14,6 +14,35 @@
CLIENT_SECRET = 'AZURE_CLIENT_SECRET'
+def get_mariadb_management_client(cli_ctx, **_):
+ from os import getenv
+ from azure.mgmt.rdbms.mariadb import MariaDBManagementClient
+
+ # Allow overriding resource manager URI using environment variable
+ # for testing purposes. Subscription id is also determined by environment
+ # variable.
+ rm_uri_override = getenv(RM_URI_OVERRIDE)
+ if rm_uri_override:
+ client_id = getenv(CLIENT_ID)
+ if client_id:
+ from azure.common.credentials import ServicePrincipalCredentials
+ credentials = ServicePrincipalCredentials(
+ client_id=client_id,
+ secret=getenv(CLIENT_SECRET),
+ tenant=getenv(TENANT_ID))
+ else:
+ from msrest.authentication import Authentication # pylint: disable=import-error
+ credentials = Authentication()
+
+ return MariaDBManagementClient(
+ subscription_id=getenv(SUB_ID_OVERRIDE),
+ base_url=rm_uri_override,
+ credentials=credentials)
+ else:
+ # Normal production scenario.
+ return get_mgmt_service_client(cli_ctx, MariaDBManagementClient)
+
+
def get_mysql_management_client(cli_ctx, **_):
from os import getenv
from azure.mgmt.rdbms.mysql import MySQLManagementClient
@@ -72,6 +101,10 @@
return get_mgmt_service_client(cli_ctx, PostgreSQLManagementClient)
+def cf_mariadb_servers(cli_ctx, _):
+ return get_mariadb_management_client(cli_ctx).servers
+
+
def cf_mysql_servers(cli_ctx, _):
return get_mysql_management_client(cli_ctx).servers
@@ -80,6 +113,10 @@
return get_postgresql_management_client(cli_ctx).servers
+def cf_mariadb_firewall_rules(cli_ctx, _):
+ return get_mariadb_management_client(cli_ctx).firewall_rules
+
+
def cf_mysql_firewall_rules(cli_ctx, _):
return get_mysql_management_client(cli_ctx).firewall_rules
@@ -88,6 +125,10 @@
return get_postgresql_management_client(cli_ctx).firewall_rules
+def cf_mariadb_config(cli_ctx, _):
+ return get_mariadb_management_client(cli_ctx).configurations
+
+
def cf_mysql_config(cli_ctx, _):
return get_mysql_management_client(cli_ctx).configurations
@@ -96,6 +137,10 @@
return get_postgresql_management_client(cli_ctx).configurations
+def cf_mariadb_log(cli_ctx, _):
+ return get_mariadb_management_client(cli_ctx).log_files
+
+
def cf_mysql_log(cli_ctx, _):
return get_mysql_management_client(cli_ctx).log_files
@@ -104,6 +149,10 @@
return get_postgresql_management_client(cli_ctx).log_files
+def cf_mariadb_db(cli_ctx, _):
+ return get_mariadb_management_client(cli_ctx).databases
+
+
def cf_mysql_db(cli_ctx, _):
return get_mysql_management_client(cli_ctx).databases
@@ -112,9 +161,17 @@
return get_postgresql_management_client(cli_ctx).databases
+def cf_mariadb_virtual_network_rules_operations(cli_ctx, _):
+ return get_mariadb_management_client(cli_ctx).virtual_network_rules
+
+
def cf_mysql_virtual_network_rules_operations(cli_ctx, _):
return get_mysql_management_client(cli_ctx).virtual_network_rules
def cf_postgres_virtual_network_rules_operations(cli_ctx, _):
return get_postgresql_management_client(cli_ctx).virtual_network_rules
+
+
+def cf_mysql_replica(cli_ctx, _):
+ return get_mysql_management_client(cli_ctx).replicas
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-rdbms-0.3.1/azure/cli/command_modules/rdbms/_help.py new/azure-cli-rdbms-0.3.7/azure/cli/command_modules/rdbms/_help.py
--- old/azure-cli-rdbms-0.3.1/azure/cli/command_modules/rdbms/_help.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-rdbms-0.3.7/azure/cli/command_modules/rdbms/_help.py 2019-02-12 03:05:13.000000000 +0100
@@ -22,23 +22,22 @@
type: command
short-summary: Create a server.
examples:
- - name: Create a {0} server with only required paramaters in North Europe.
- text: az {1} server create -l northeurope -g testgroup -n testsvr -u username -p password
- - name: Create a {0} server with a Standard performance tier and 2 vcore in North Europe.
+ - name: Create a {0} server in North Europe with sku GP_Gen5_2 (General Purpose, Gen 5 hardware, 2 vCores).
text: az {1} server create -l northeurope -g testgroup -n testsvr -u username -p password \\
- --sku-name GP_Gen4_2
+ --sku-name GP_Gen5_2
- name: Create a {0} server with all paramaters set.
text: az {1} server create -l northeurope -g testgroup -n testsvr -u username -p password \\
- --sku-name B_Gen4_2 --ssl-enforcement Disabled \\
+ --sku-name B_Gen5_1 --ssl-enforcement Disabled \\
+ --backup-retention 10 --geo-redundant-backup Enabled
--storage-size 51200 --tags "key=value" --version {{server-version}}
""".format(server_type, command_group)
helps['{} server restore'.format(command_group)] = """
type: command
short-summary: Restore a server from backup.
examples:
- - name: Restore 'testsvr' as 'testsvrnew'.
+ - name: Restore 'testsvr' to a specific point-in-time as a new server 'testsvrnew'.
text: az {0} server restore -g testgroup -n testsvrnew --source-server testsvr --restore-point-in-time "2017-06-15T13:10:00Z"
- - name: Restore 'testsvr2' to 'testsvrnew', where 'testsvrnew' is in a different resource group than the backup.
+ - name: Restore 'testsvr2' to 'testsvrnew', where 'testsvrnew' is in a different resource group from 'testsvr2'.
text: |
az {0} server restore -g testgroup -n testsvrnew \\
-s "/subscriptions/${{SubID}}/resourceGroups/${{ResourceGroup}}/providers/Microsoft.DBfor{1}/servers/testsvr2" \\
@@ -46,22 +45,53 @@
""".format(command_group, server_type)
helps['{} server georestore'.format(command_group)] = """
type: command
- short-summary: Georestore a server from backup.
+ short-summary: Geo-restore a server from backup.
examples:
- - name: Georestore 'testsvr' as 'testsvrnew' where 'testsvrnew' is in same resource group as 'testsvr'.
+ - name: Geo-restore 'testsvr' into a new server 'testsvrnew' located in West US 2.
text: az {0} server georestore -g testgroup -n testsvrnew --source-server testsvr -l westus2
- - name: Georestore 'testsvr2' to 'testsvrnew', where 'testsvrnew' is in the different resource group as the original server.
+ - name: Geo-restore 'testsvr' into a new server 'testsvrnew' located in West US 2 with sku GP_Gen5_2.
+ text: az {0} server georestore -g testgroup -n testsvrnew --source-server testsvr -l westus2 --sku-name GP_Gen5_2
+ - name: Geo-restore 'testsvr2' into a new server 'testsvrnew', where 'testsvrnew' is in a different resource group from 'testsvr2'.
text: |
az {0} server georestore -g testgroup -n testsvrnew \\
- -s "/subscriptions/${{SubID}}/resourceGroups/${{ResourceGroup}}/providers/Microsoft.DBfor{1}/servers/testsvr2"
- -l westus2 --sku-name GP_Gen5_2
+ -s "/subscriptions/${{SubID}}/resourceGroups/${{ResourceGroup}}/providers/Microsoft.DBfor{1}/servers/testsvr2" \\
+ -l westus2
""".format(command_group, server_type)
+ helps['mysql server replica'] = """
+ type: group
+ short-summary: Manage read replicas.
+ """
+ helps['mysql server replica create'] = """
+ type: command
+ short-summary: Create a read replica for a server.
+ examples:
+ - name: Create a read replica 'testreplsvr' for 'testsvr'.
+ text: az mysql server replica create -n testreplsvr -g testgroup -s testsvr
+ - name: Create a read replica 'testreplsvr' for 'testsvr2', where 'testreplsvr' is in a different resource group.
+ text: |
+ az mysql server replica create -n testreplsvr -g testgroup \\
+ -s "/subscriptions/${SubID}/resourceGroups/${ResourceGroup}/providers/Microsoft.DBforMySQL/servers/testsvr2"
+ """
+ helps['mysql server replica stop'] = """
+ type: command
+ short-summary: Stop replication to a read replica and make it a read/write server.
+ examples:
+ - name: Stop replication to 'testreplsvr' and make it a read/write server.
+ text: az mysql server replica stop -g testgroup -n testreplsvr
+ """
+ helps['mysql server replica list'] = """
+ type: command
+ short-summary: List all read replicas for a given server.
+ examples:
+ - name: List all read replicas for master server 'testsvr'.
+ text: az mysql server replica list -g testgroup -s testsvr
+ """
helps['{} server update'.format(command_group)] = """
type: command
short-summary: Update a server.
examples:
- name: Update a server's sku.
- text: az {0} server update -g testgroup -n testsvrnew --sku-name GP_Gen4_4
+ text: az {0} server update -g testgroup -n testsvrnew --sku-name GP_Gen5_4
- name: Update a server's tags.
text: az {0} server update -g testgroup -n testsvrnew --tags "k1=v1" "k2=v2"
""".format(command_group)
@@ -72,7 +102,10 @@
helps['{} server delete'.format(command_group)] = """
type: command
short-summary: Delete a server.
- """
+ examples:
+ - name: Delete a server.
+ text: az {0} server delete -g testgroup -n testsvr
+ """.format(command_group)
helps['{} server show'.format(command_group)] = """
type: command
short-summary: Get the details of a server.
@@ -94,17 +127,19 @@
type: command
short-summary: Create a new firewall rule for a server.
examples:
- - name: Create a firewall rule allowing all connections from all IP addresses.
- text: az {} server firewall-rule create -g testgroup -s testsvr -n allowall --start-ip-address 0.0.0.0 --end-ip-address 255.255.255.255
+ - name: Create a firewall rule allowing connections from a specific IP address.
+ text: az {0} server firewall-rule create -g testgroup -s testsvr -n allowip --start-ip-address 107.46.14.221 --end-ip-address 107.46.14.221
+ - name: Create a firewall rule allowing connections from an IP address range.
+ text: az {0} server firewall-rule create -g testgroup -s testsvr -n allowiprange --start-ip-address 107.46.14.0 --end-ip-address 107.46.14.221
""".format(command_group)
helps['{} server firewall-rule update'.format(command_group)] = """
type: command
short-summary: Update a firewall rule.
examples:
- name: Update a firewall rule's start IP address.
- text: az {0} server firewall-rule update -g testgroup -s testsvr -n allowall --start-ip-address 0.0.0.1
+ text: az {0} server firewall-rule update -g testgroup -s testsvr -n allowiprange --start-ip-address 107.46.14.1
- name: Update a firewall rule's start and end IP address.
- text: az {0} server firewall-rule update -g testgroup -s testsvr -n allowall --start-ip-address 0.0.0.1 --end-ip-address 255.255.255.254
+ text: az {0} server firewall-rule update -g testgroup -s testsvr -n allowiprange --start-ip-address 107.46.14.2 --end-ip-address 107.46.14.218
""".format(command_group)
helps['{} server firewall-rule delete'.format(command_group)] = """
type: command
@@ -118,6 +153,7 @@
type: command
short-summary: List all firewall rules for a server.
"""
+
helps['{} server vnet-rule'.format(command_group)] = """
type: group
short-summary: Manage a server's virtual network rules.
@@ -135,6 +171,7 @@
- name: Create a vnet rule by providing the vnet and subnet name. The subnet id is created by taking the resource group name and subscription id of the server.
text: az {} server vnet-rule create -g testgroup -s testsvr -n vnetRuleName --subnet subnetName --vnet-name vnetName
""".format(server_type, command_group, command_group)
+
helps['{} server configuration'.format(command_group)] = """
type: group
short-summary: Manage configuration values for a server.
@@ -214,5 +251,6 @@
""".format(command_group)
+add_helps("mariadb", "MariaDB")
add_helps("mysql", "MySQL")
add_helps("postgres", "PostgreSQL")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-rdbms-0.3.1/azure/cli/command_modules/rdbms/_params.py new/azure-cli-rdbms-0.3.7/azure/cli/command_modules/rdbms/_params.py
--- old/azure-cli-rdbms-0.3.1/azure/cli/command_modules/rdbms/_params.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-rdbms-0.3.7/azure/cli/command_modules/rdbms/_params.py 2019-02-12 03:05:13.000000000 +0100
@@ -16,38 +16,41 @@
def load_arguments(self, _): # pylint: disable=too-many-statements
server_completers = {
+ 'mariadb': get_resource_name_completion_list('Microsoft.DBForMariaDB/servers'),
'mysql': get_resource_name_completion_list('Microsoft.DBForMySQL/servers'),
'postgres': get_resource_name_completion_list('Microsoft.DBForPostgreSQL/servers')
}
def _complex_params(command_group):
with self.argument_context('{} server create'.format(command_group)) as c:
- c.argument('sku_name', options_list=['--sku-name'], required=True, help='The name of the sku, typically, tier + family + cores, e.g. B_Gen4_1, GP_Gen5_8.')
-
- c.argument('backup_retention', type=int, options_list=['--backup-retention'], help='The number of days a backup is retained.')
- c.argument('geo_redundant_backup', options_list=['--geo-redundant-backup'], help='Enable Geo-redundant or not for server backup.')
- c.argument('storage_mb', options_list=['--storage-size'], type=int, help='The max storage size of the server. Unit is megabytes.')
-
+ c.argument('sku_name', options_list=['--sku-name'], required=True, help='The name of the sku. Follows the convention {pricing tier}_{compute generation}_{vCores} in shorthand. Examples: B_Gen5_1, GP_Gen5_4, MO_Gen5_16. ')
c.argument('administrator_login', required=True, arg_group='Authentication')
- c.argument('administrator_login_password', arg_group='Authentication')
+ c.argument('administrator_login_password', required=True, arg_group='Authentication')
+
+ c.argument('backup_retention', type=int, options_list=['--backup-retention'], help='The number of days a backup is retained. Range of 7 to 35 days. Default is 7 days.')
+ c.argument('geo_redundant_backup', arg_type=get_enum_type(['Enabled', 'Disabled']), options_list=['--geo-redundant-backup'], help='Enable or disable geo-redundant backups. Default value is Disabled. Not supported in Basic pricing tier.')
+ c.argument('storage_mb', options_list=['--storage-size'], type=int, help='The storage capacity of the server (unit is megabytes). Minimum 5120 and increases in 1024 increments. Default is 51200.')
c.argument('location', arg_type=get_location_type(self.cli_ctx), required=False)
- c.argument('version', help='Server version')
+ c.argument('version', help='Server major version.')
with self.argument_context('{} server update'.format(command_group)) as c:
c.ignore('family', 'capacity', 'tier')
- c.argument('sku_name', options_list=['--sku-name'], help='The name of the sku, typically, tier + family + cores, e.g. B_Gen4_1, GP_Gen5_8.')
+ c.argument('sku_name', options_list=['--sku-name'], help='The name of the sku. Follows the convention {pricing tier}_{compute generation}_{vCores} in shorthand. Examples: B_Gen5_1, GP_Gen5_4, MO_Gen5_16.')
with self.argument_context('{} server restore'. format(command_group)) as c:
- c.argument('source_server', options_list=['--source-server', '-s'], help='The name or ID of the source server to restore from.')
+ c.argument('source_server', options_list=['--source-server', '-s'], help='The name or resource ID of the source server to restore from.')
c.argument('restore_point_in_time', help='The point in time to restore from (ISO8601 format), e.g., 2017-04-26T02:10:00+08:00')
with self.argument_context('{} server georestore'. format(command_group)) as c:
c.argument('location', arg_type=get_location_type(self.cli_ctx), required=True)
- c.argument('sku_name', options_list=['--sku-name'], required=False, help='The name of the sku, typically, tier + family + cores, e.g. B_Gen4_1, GP_Gen5_8.')
+ c.argument('sku_name', options_list=['--sku-name'], required=False, help='The name of the sku. Defaults to sku of the source server. Follows the convention {pricing tier}_{compute generation}_{vCores} in shorthand. Examples: B_Gen5_1, GP_Gen5_4, MO_Gen5_16.')
c.argument('source_server', options_list=['--source-server', '-s'], required=True, help='The name or ID of the source server to restore from.')
- c.argument('backup_retention', options_list=['--backup-retention'], type=int, help='The max days of retention, unit is days.')
- c.argument('geo_redundant_backup', options_list=['--geo-redundant-backup'], help='Enable Geo-redundant or not for server backup.')
+ c.argument('backup_retention', options_list=['--backup-retention'], type=int, help='The number of days a backup is retained. Range of 7 to 35 days. Default is 7 days.')
+ c.argument('geo_redundant_backup', options_list=['--geo-redundant-backup'], help='Enable or disable geo-redundant backups. Default value is Disabled. Not supported in Basic pricing tier.')
+
+ with self.argument_context('mysql server replica') as c:
+ c.argument('source_server', options_list=['--source-server', '-s'], help='The name or resource ID of the master server to the create replica for.')
with self.argument_context('{} server configuration set'.format(command_group)) as c:
c.argument('value', help='Value of the configuration. If not provided, configuration value will be set to default.', validator=configuration_value_validator)
@@ -56,59 +59,63 @@
with self.argument_context('{} server wait'.format(command_group)) as c:
c.ignore('created', 'deleted', 'updated')
+ _complex_params('mariadb')
_complex_params('mysql')
_complex_params('postgres')
- for scope in ['mysql', 'postgres']:
+ for scope in ['mariadb', 'mysql', 'postgres']:
with self.argument_context(scope) as c:
c.argument('name', options_list=['--sku-name'], required=True)
- c.argument('server_name', completer=server_completers[scope], options_list=['--server-name', '-s'], help='Name of the server.')
+ c.argument('server_name', completer=server_completers[scope], options_list=['--server-name', '-s'], help='Name of the server. The name can contain only lowercase letters, numbers, and the hyphen (-) character. Minimum 3 characters and maximum 63 characters.')
- for scope in ['mysql server', 'postgres server']:
+ for scope in ['mariadb server', 'mysql server', 'postgres server']:
with self.argument_context(scope) as c:
c.ignore('family', 'capacity', 'tier')
- c.argument('server_name', options_list=['--name', '-n'], id_part='name', help='Name of the server.')
- c.argument('administrator_login', options_list=['--admin-user', '-u'])
- c.argument('administrator_login_password', options_list=['--admin-password', '-p'], help='The password of the administrator login.')
- c.argument('ssl_enforcement', arg_type=get_enum_type(['Enabled', 'Disabled']), options_list=['--ssl-enforcement'], help='Enable ssl enforcement or not when connect to server.')
+ c.argument('server_name', options_list=['--name', '-n'], id_part='name', help='Name of the server. The name can contain only lowercase letters, numbers, and the hyphen (-) character. Minimum 3 characters and maximum 63 characters.')
+ c.argument('administrator_login', options_list=['--admin-user', '-u'], help='Administrator username for the server. Once set, it cannot be changed.')
+ c.argument('administrator_login_password', options_list=['--admin-password', '-p'], help='The password of the administrator. Minimum 8 characters and maximum 128 characters. Password must contain characters from three of the following categories: English uppercase letters, English lowercase letters, numbers, and non-alphanumeric characters.')
+ c.argument('ssl_enforcement', arg_type=get_enum_type(['Enabled', 'Disabled']), options_list=['--ssl-enforcement'], help='Enable or disable ssl enforcement for connections to server. Default is Enabled.')
c.argument('tier', arg_type=get_enum_type(['Basic', 'GeneralPurpose', 'MemoryOptimized']), options_list=['--performance-tier'], help='The performance tier of the server.')
c.argument('capacity', options_list=['--vcore'], type=int, help='Number of vcore.')
c.argument('family', options_list=['--family'], arg_type=get_enum_type(['Gen4', 'Gen5']), help='Hardware generation.')
- c.argument('storage_mb', options_list=['--storage-size'], type=int, help='The max storage size of the server. Unit is megabytes.')
- c.argument('backup_retention_days', options_list=['--backup-retention'], type=int, help='The number of days a backup is retained.')
+ c.argument('storage_mb', options_list=['--storage-size'], type=int, help='The storage capacity of the server (unit is megabytes). Minimum 5120 and increases in 1024 increments. Default is 51200.')
+ c.argument('backup_retention_days', options_list=['--backup-retention'], type=int, help='The number of days a backup is retained. Range of 7 to 35 days. Default is 7 days.')
c.argument('tags', tags_type)
- for scope in ['mysql server-logs', 'postgres server-logs']:
+ for scope in ['mariadb server-logs', 'mysql server-logs', 'postgres server-logs']:
with self.argument_context(scope) as c:
c.argument('file_name', options_list=['--name', '-n'], nargs='+', help='Space-separated list of log filenames on the server to download.')
c.argument('max_file_size', type=int, help='The file size limitation to filter files.')
c.argument('file_last_written', type=int, help='Integer in hours to indicate file last modify time, default value is 72.')
c.argument('filename_contains', help='The pattern that file name should match.')
- for scope in ['mysql db', 'postgres db']:
+ for scope in ['mariadb db', 'mysql db', 'postgres db']:
with self.argument_context(scope) as c:
c.argument('database_name', options_list=['--name', '-n'])
- for scope in ['mysql server firewall-rule', 'postgres server firewall-rule']:
+ for scope in ['mariadb server firewall-rule', 'mysql server firewall-rule', 'postgres server firewall-rule']:
with self.argument_context(scope) as c:
c.argument('server_name', options_list=['--server-name', '-s'])
c.argument('firewall_rule_name', options_list=['--name', '-n'], id_part='child_name_1', help='The name of the firewall rule.')
c.argument('start_ip_address', options_list=['--start-ip-address'], help='The start IP address of the firewall rule. Must be IPv4 format. Use value \'0.0.0.0\' to represent all Azure-internal IP addresses.')
c.argument('end_ip_address', options_list=['--end-ip-address'], help='The end IP address of the firewall rule. Must be IPv4 format. Use value \'0.0.0.0\' to represent all Azure-internal IP addresses.')
- for scope in ['mysql server vnet-rule', 'postgres server vnet-rule']:
+ for scope in ['mariadb server vnet-rule', 'mysql server vnet-rule', 'postgres server vnet-rule']:
with self.argument_context(scope) as c:
c.argument('server_name', options_list=['--server-name', '-s'])
c.argument('virtual_network_rule_name', options_list=['--name', '-n'], id_part='child_name_1', help='The name of the vnet rule.')
c.argument('virtual_network_subnet_id', options_list=['--subnet'], help='Name or ID of the subnet that allows access to an Azure Postgres Server. If subnet name is provided, --vnet-name must be provided.')
c.argument('ignore_missing_vnet_service_endpoint', options_list=['--ignore-missing-endpoint', '-i'], help='Create vnet rule before virtual network has vnet service endpoint enabled', arg_type=get_three_state_flag())
- for scope in ['postgres server vnet-rule create', 'postgres server vnet-rule update', 'mysql server vnet-rule create', 'mysql server vnet-rule update']:
+ for scope in ['mariadb server vnet-rule create', 'mariadb server vnet-rule update', 'postgres server vnet-rule create', 'postgres server vnet-rule update', 'mysql server vnet-rule create', 'mysql server vnet-rule update']:
with self.argument_context(scope) as c:
c.extra('vnet_name', options_list=['--vnet-name'], help='The virtual network name', validator=validate_subnet)
- for scope in ['mysql server configuration', 'postgres server configuration']:
+ for scope in ['mariadb server configuration', 'mysql server configuration', 'postgres server configuration']:
with self.argument_context(scope) as c:
c.argument('server_name', options_list=['--server-name', '-s'])
c.argument('configuration_name', id_part='child_name_1', options_list=['--name', '-n'])
+
+ with self.argument_context('mysql server replica list') as c:
+ c.argument('server_name', options_list=['--server-name', '-s'], help='Name of the master server.')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-rdbms-0.3.1/azure/cli/command_modules/rdbms/commands.py new/azure-cli-rdbms-0.3.7/azure/cli/command_modules/rdbms/commands.py
--- old/azure-cli-rdbms-0.3.1/azure/cli/command_modules/rdbms/commands.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-rdbms-0.3.7/azure/cli/command_modules/rdbms/commands.py 2019-02-12 03:05:13.000000000 +0100
@@ -6,12 +6,19 @@
from azure.cli.core.commands import CliCommandType
from azure.cli.command_modules.rdbms._client_factory import (
+ cf_mariadb_servers,
+ cf_mariadb_db,
+ cf_mariadb_firewall_rules,
+ cf_mariadb_virtual_network_rules_operations,
+ cf_mariadb_config,
+ cf_mariadb_log,
cf_mysql_servers,
cf_mysql_db,
cf_mysql_firewall_rules,
cf_mysql_virtual_network_rules_operations,
cf_mysql_config,
cf_mysql_log,
+ cf_mysql_replica,
cf_postgres_servers,
cf_postgres_db,
cf_postgres_firewall_rules,
@@ -25,6 +32,11 @@
rdbms_custom = CliCommandType(operations_tmpl='azure.cli.command_modules.rdbms.custom#{}')
+ mariadb_servers_sdk = CliCommandType(
+ operations_tmpl='azure.mgmt.rdbms.mariadb.operations.servers_operations#ServersOperations.{}',
+ client_factory=cf_mariadb_servers
+ )
+
mysql_servers_sdk = CliCommandType(
operations_tmpl='azure.mgmt.rdbms.mysql.operations.servers_operations#ServersOperations.{}',
client_factory=cf_mysql_servers
@@ -35,6 +47,16 @@
client_factory=cf_postgres_servers
)
+ mysql_replica_sdk = CliCommandType(
+ operations_tmpl='azure.mgmt.rdbms.mysql.operations.replicas_operations#ReplicasOperations.{}',
+ client_factory=cf_mysql_replica
+ )
+
+ mariadb_firewall_rule_sdk = CliCommandType(
+ operations_tmpl='azure.mgmt.rdbms.mariadb.operations.firewall_rules_operations#FirewallRulesOperations.{}',
+ client_factory=cf_mariadb_firewall_rules
+ )
+
mysql_firewall_rule_sdk = CliCommandType(
operations_tmpl='azure.mgmt.rdbms.mysql.operations.firewall_rules_operations#FirewallRulesOperations.{}',
client_factory=cf_mysql_firewall_rules
@@ -45,6 +67,11 @@
client_factory=cf_postgres_firewall_rules
)
+ mariadb_vnet_sdk = CliCommandType(
+ operations_tmpl='azure.mgmt.rdbms.mariadb.operations.virtual_network_rules_operations#VirtualNetworkRulesOperations.{}',
+ client_factory=cf_mariadb_virtual_network_rules_operations
+ )
+
mysql_vnet_sdk = CliCommandType(
operations_tmpl='azure.mgmt.rdbms.mysql.operations.virtual_network_rules_operations#VirtualNetworkRulesOperations.{}',
client_factory=cf_mysql_virtual_network_rules_operations
@@ -55,6 +82,11 @@
client_factory=cf_postgres_virtual_network_rules_operations
)
+ mariadb_config_sdk = CliCommandType(
+ operations_tmpl='azure.mgmt.rdbms.mariadb.operations.configurations_operations#ConfigurationsOperations.{}',
+ client_factory=cf_mariadb_config
+ )
+
mysql_config_sdk = CliCommandType(
operations_tmpl='azure.mgmt.rdbms.mysql.operations.configurations_operations#ConfigurationsOperations.{}',
client_factory=cf_mysql_config
@@ -65,6 +97,11 @@
client_factory=cf_postgres_config
)
+ mariadb_log_sdk = CliCommandType(
+ operations_tmpl='azure.mgmt.rdbms.mariadb.operations.log_files_operations#LogFilesOperations.{}',
+ client_factory=cf_mariadb_log
+ )
+
mysql_log_sdk = CliCommandType(
operations_tmpl='azure.mgmt.rdbms.mysql.operations.log_files_operations#LogFilesOperations.{}',
client_factory=cf_mysql_log
@@ -75,6 +112,11 @@
client_factory=cf_postgres_log
)
+ mariadb_db_sdk = CliCommandType(
+ operations_tmpl='azure.mgmt.rdbms.mariadb.operations.databases_operations#DatabasesOperations.{}',
+ client_factory=cf_mariadb_db
+ )
+
mysql_db_sdk = CliCommandType(
operations_tmpl='azure.mgmt.rdbms.mysql.operations.databases_operations#DatabasesOperations.{}',
client_factory=cf_mysql_db
@@ -85,6 +127,19 @@
client_factory=cf_postgres_db
)
+ with self.command_group('mariadb server', mariadb_servers_sdk, client_factory=cf_mariadb_servers) as g:
+ g.custom_command('create', '_server_create')
+ g.custom_command('restore', '_server_restore', supports_no_wait=True)
+ g.custom_command('georestore', '_server_georestore', supports_no_wait=True)
+ g.command('delete', 'delete', confirmation=True)
+ g.show_command('show', 'get')
+ g.custom_command('list', '_server_list_custom_func')
+ g.generic_update_command('update',
+ getter_name='_server_update_get', getter_type=rdbms_custom,
+ setter_name='_server_update_set', setter_type=rdbms_custom, setter_arg_name='parameters',
+ custom_func_name='_server_update_custom_func')
+ g.custom_wait_command('wait', '_server_mariadb_get')
+
with self.command_group('mysql server', mysql_servers_sdk, client_factory=cf_mysql_servers) as g:
g.custom_command('create', '_server_create')
g.custom_command('restore', '_server_restore', supports_no_wait=True)
@@ -111,6 +166,23 @@
custom_func_name='_server_update_custom_func')
g.custom_wait_command('wait', '_server_postgresql_get')
+ with self.command_group('mysql server replica', mysql_replica_sdk) as g:
+ g.command('list', 'list_by_server')
+
+ with self.command_group('mysql server replica', mysql_servers_sdk, client_factory=cf_mysql_servers) as g:
+ g.custom_command('create', '_replica_create', supports_no_wait=True)
+ g.custom_command('stop', '_replica_stop', confirmation=True)
+
+ with self.command_group('mariadb server firewall-rule', mariadb_firewall_rule_sdk) as g:
+ g.command('create', 'create_or_update')
+ g.command('delete', 'delete', confirmation=True)
+ g.show_command('show', 'get')
+ g.command('list', 'list_by_server')
+ g.generic_update_command('update',
+ getter_name='_firewall_rule_custom_getter', getter_type=rdbms_custom,
+ setter_name='_firewall_rule_custom_setter', setter_type=rdbms_custom, setter_arg_name='parameters',
+ custom_func_name='_firewall_rule_update_custom_func')
+
with self.command_group('mysql server firewall-rule', mysql_firewall_rule_sdk) as g:
g.command('create', 'create_or_update')
g.command('delete', 'delete', confirmation=True)
@@ -131,6 +203,13 @@
setter_name='_firewall_rule_custom_setter', setter_type=rdbms_custom, setter_arg_name='parameters',
custom_func_name='_firewall_rule_update_custom_func')
+ with self.command_group('mariadb server vnet-rule', mariadb_vnet_sdk) as g:
+ g.command('create', 'create_or_update')
+ g.command('delete', 'delete')
+ g.show_command('show', 'get')
+ g.command('list', 'list_by_server')
+ g.generic_update_command('update')
+
with self.command_group('mysql server vnet-rule', mysql_vnet_sdk) as g:
g.command('create', 'create_or_update')
g.command('delete', 'delete')
@@ -145,6 +224,11 @@
g.command('list', 'list_by_server')
g.generic_update_command('update')
+ with self.command_group('mariadb server configuration', mariadb_config_sdk) as g:
+ g.command('set', 'create_or_update')
+ g.show_command('show', 'get')
+ g.command('list', 'list_by_server')
+
with self.command_group('mysql server configuration', mysql_config_sdk) as g:
g.command('set', 'create_or_update')
g.show_command('show', 'get')
@@ -155,6 +239,10 @@
g.show_command('show', 'get')
g.command('list', 'list_by_server')
+ with self.command_group('mariadb server-logs', mariadb_log_sdk, client_factory=cf_mariadb_log) as g:
+ g.custom_command('list', '_list_log_files_with_filter')
+ g.custom_command('download', '_download_log_files')
+
with self.command_group('mysql server-logs', mysql_log_sdk, client_factory=cf_mysql_log) as g:
g.custom_command('list', '_list_log_files_with_filter')
g.custom_command('download', '_download_log_files')
@@ -163,6 +251,12 @@
g.custom_command('list', '_list_log_files_with_filter')
g.custom_command('download', '_download_log_files')
+ with self.command_group('mariadb db', mariadb_db_sdk) as g:
+ g.command('create', 'create_or_update')
+ g.command('delete', 'delete', confirmation=True)
+ g.show_command('show', 'get')
+ g.command('list', 'list_by_server')
+
with self.command_group('mysql db', mysql_db_sdk) as g:
g.command('create', 'create_or_update')
g.command('delete', 'delete', confirmation=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-rdbms-0.3.1/azure/cli/command_modules/rdbms/custom.py new/azure-cli-rdbms-0.3.7/azure/cli/command_modules/rdbms/custom.py
--- old/azure-cli-rdbms-0.3.1/azure/cli/command_modules/rdbms/custom.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-rdbms-0.3.7/azure/cli/command_modules/rdbms/custom.py 2019-02-12 03:05:13.000000000 +0100
@@ -5,11 +5,13 @@
# pylint: disable=unused-argument, line-too-long
+from msrestazure.azure_exceptions import CloudError
from msrestazure.tools import resource_id, is_valid_resource_id, parse_resource_id # pylint: disable=import-error
from azure.cli.core.commands.client_factory import get_subscription_id
-from azure.cli.core.util import sdk_no_wait
-from azure.mgmt.rdbms.mysql.operations.servers_operations import ServersOperations
-from ._client_factory import get_mysql_management_client, get_postgresql_management_client
+from azure.cli.core.util import CLIError, sdk_no_wait
+from azure.mgmt.rdbms.mysql.operations.servers_operations import ServersOperations as MySqlServersOperations
+from azure.mgmt.rdbms.mariadb.operations.servers_operations import ServersOperations as MariaDBServersOperations
+from ._client_factory import get_mariadb_management_client, get_mysql_management_client, get_postgresql_management_client
SKU_TIER_MAP = {'Basic': 'b', 'GeneralPurpose': 'gp', 'MemoryOptimized': 'mo'}
@@ -17,9 +19,14 @@
def _server_create(cmd, client, resource_group_name, server_name, sku_name, no_wait=False,
location=None, administrator_login=None, administrator_login_password=None, backup_retention=None,
geo_redundant_backup=None, ssl_enforcement=None, storage_mb=None, tags=None, version=None):
- provider = 'Microsoft.DBForMySQL' if isinstance(client, ServersOperations) else 'Microsoft.DBforPostgreSQL'
+ provider = 'Microsoft.DBforPostgreSQL'
+ if isinstance(client, MySqlServersOperations):
+ provider = 'Microsoft.DBforMySQL'
+ elif isinstance(client, MariaDBServersOperations):
+ provider = 'Microsoft.DBforMariaDB'
+
parameters = None
- if provider == 'Microsoft.DBForMySQL':
+ if provider == 'Microsoft.DBforMySQL':
from azure.mgmt.rdbms import mysql
parameters = mysql.models.ServerForCreate(
sku=mysql.models.Sku(name=sku_name),
@@ -49,6 +56,21 @@
storage_mb=storage_mb)),
location=location,
tags=tags)
+ elif provider == 'Microsoft.DBforMariaDB':
+ from azure.mgmt.rdbms import mariadb
+ parameters = mariadb.models.ServerForCreate(
+ sku=mariadb.models.Sku(name=sku_name),
+ properties=mariadb.models.ServerPropertiesForDefaultCreate(
+ administrator_login=administrator_login,
+ administrator_login_password=administrator_login_password,
+ version=version,
+ ssl_enforcement=ssl_enforcement,
+ storage_profile=mariadb.models.StorageProfile(
+ backup_retention_days=backup_retention,
+ geo_redundant_backup=geo_redundant_backup,
+ storage_mb=storage_mb)),
+ location=location,
+ tags=tags)
return client.create(resource_group_name, server_name, parameters)
@@ -57,7 +79,12 @@
# The parameter list should be the same as that in factory to use the ParametersContext
# arguments and validators
def _server_restore(cmd, client, resource_group_name, server_name, source_server, restore_point_in_time, no_wait=False):
- provider = 'Microsoft.DBForMySQL' if isinstance(client, ServersOperations) else 'Microsoft.DBforPostgreSQL'
+ provider = 'Microsoft.DBforPostgreSQL'
+ if isinstance(client, MySqlServersOperations):
+ provider = 'Microsoft.DBforMySQL'
+ elif isinstance(client, MariaDBServersOperations):
+ provider = 'Microsoft.DBforMariaDB'
+
parameters = None
if not is_valid_resource_id(source_server):
if len(source_server.split('/')) == 1:
@@ -70,7 +97,7 @@
else:
raise ValueError('The provided source-server {} is invalid.'.format(source_server))
- if provider == 'Microsoft.DBForMySQL':
+ if provider == 'Microsoft.DBforMySQL':
from azure.mgmt.rdbms import mysql
parameters = mysql.models.ServerForCreate(
properties=mysql.models.ServerPropertiesForRestore(
@@ -84,6 +111,13 @@
source_server_id=source_server,
restore_point_in_time=restore_point_in_time),
location=None)
+ elif provider == 'Microsoft.DBforMariaDB':
+ from azure.mgmt.rdbms import mariadb
+ parameters = mariadb.models.ServerForCreate(
+ properties=mariadb.models.ServerPropertiesForRestore(
+ source_server_id=source_server,
+ restore_point_in_time=restore_point_in_time),
+ location=None)
parameters.properties.source_server_id = source_server
parameters.properties.restore_point_in_time = restore_point_in_time
@@ -105,7 +139,12 @@
# auguments and validators
def _server_georestore(cmd, client, resource_group_name, server_name, sku_name, location, source_server,
backup_retention=None, geo_redundant_backup=None, no_wait=False, **kwargs):
- provider = 'Microsoft.DBForMySQL' if isinstance(client, ServersOperations) else 'Microsoft.DBforPostgreSQL'
+ provider = 'Microsoft.DBforPostgreSQL'
+ if isinstance(client, MySqlServersOperations):
+ provider = 'Microsoft.DBforMySQL'
+ elif isinstance(client, MariaDBServersOperations):
+ provider = 'Microsoft.DBforMariaDB'
+
parameters = None
if not is_valid_resource_id(source_server):
@@ -118,7 +157,7 @@
else:
raise ValueError('The provided source-server {} is invalid.'.format(source_server))
- if provider == 'Microsoft.DBForMySQL':
+ if provider == 'Microsoft.DBforMySQL':
from azure.mgmt.rdbms import mysql
parameters = mysql.models.ServerForCreate(
sku=mysql.models.Sku(name=sku_name),
@@ -138,6 +177,16 @@
geo_redundant_backup=geo_redundant_backup),
source_server_id=source_server),
location=location)
+ elif provider == 'Microsoft.DBforMariaDB':
+ from azure.mgmt.rdbms import mariadb
+ parameters = mariadb.models.ServerForCreate(
+ sku=mariadb.models.Sku(name=sku_name),
+ properties=mariadb.models.ServerPropertiesForGeoRestore(
+ storage_profile=mariadb.models.StorageProfile(
+ backup_retention_days=backup_retention,
+ geo_redundant_backup=geo_redundant_backup),
+ source_server_id=source_server),
+ location=location)
parameters.properties.source_server_id = source_server
@@ -152,6 +201,56 @@
return sdk_no_wait(no_wait, client.create, resource_group_name, server_name, parameters)
+# Custom functions for server replica, will add PostgreSQL part after backend ready in future
+def _replica_create(cmd, client, resource_group_name, server_name, source_server, no_wait=False, **kwargs):
+ provider = 'Microsoft.DBForMySQL' if isinstance(client, MySqlServersOperations) else 'Microsoft.DBforPostgreSQL'
+ # set source server id
+ if not is_valid_resource_id(source_server):
+ if len(source_server.split('/')) == 1:
+ source_server = resource_id(subscription=get_subscription_id(cmd.cli_ctx),
+ resource_group=resource_group_name,
+ namespace=provider,
+ type='servers',
+ name=source_server)
+ else:
+ raise CLIError('The provided source-server {} is invalid.'.format(source_server))
+
+ source_server_id_parts = parse_resource_id(source_server)
+ try:
+ source_server_object = client.get(source_server_id_parts['resource_group'], source_server_id_parts['name'])
+ except CloudError as e:
+ raise CLIError('Unable to get source server: {}.'.format(str(e)))
+
+ parameters = None
+ if provider == 'Microsoft.DBForMySQL':
+ from azure.mgmt.rdbms import mysql
+ parameters = mysql.models.ServerForCreate(
+ sku=mysql.models.Sku(name=source_server_object.sku.name),
+ properties=mysql.models.ServerPropertiesForReplica(source_server_id=source_server),
+ location=source_server_object.location)
+
+ return sdk_no_wait(no_wait, client.create, resource_group_name, server_name, parameters)
+
+
+def _replica_stop(client, resource_group_name, server_name):
+ try:
+ server_object = client.get(resource_group_name, server_name)
+ except Exception as e:
+ raise CLIError('Unable to get server: {}.'.format(str(e)))
+
+ if server_object.replication_role.lower() != "replica":
+ raise CLIError('Server {} is not a replica server.'.format(server_name))
+
+ from importlib import import_module
+ server_module_path = server_object.__module__
+ module = import_module(server_module_path.replace('server', 'server_update_parameters'))
+ ServerUpdateParameters = getattr(module, 'ServerUpdateParameters')
+
+ params = ServerUpdateParameters(replication_role='None')
+
+ return client.update(resource_group_name, server_name, params)
+
+
def _server_update_custom_func(instance,
sku_name=None,
storage_mb=None,
@@ -189,6 +288,11 @@
return params
+def _server_mariadb_get(cmd, resource_group_name, server_name):
+ client = get_mariadb_management_client(cmd.cli_ctx)
+ return client.servers.get(resource_group_name, server_name)
+
+
def _server_mysql_get(cmd, resource_group_name, server_name):
client = get_mysql_management_client(cmd.cli_ctx)
return client.servers.get(resource_group_name, server_name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-rdbms-0.3.1/azure/cli/command_modules/rdbms/validators.py new/azure-cli-rdbms-0.3.7/azure/cli/command_modules/rdbms/validators.py
--- old/azure-cli-rdbms-0.3.1/azure/cli/command_modules/rdbms/validators.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-rdbms-0.3.7/azure/cli/command_modules/rdbms/validators.py 2019-02-12 03:05:13.000000000 +0100
@@ -13,8 +13,8 @@
def get_combined_validator(validators):
def _final_validator_impl(cmd, namespace):
# do additional creation validation
- verb = cmd.name.rsplit(' ', 1)[1]
- if verb == 'create':
+ verbs = cmd.name.rsplit(' ', 2)
+ if verbs[1] == 'server' and verbs[2] == 'create':
password_validator(namespace)
get_default_location_from_resource_group(cmd, namespace)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-rdbms-0.3.1/azure_cli_rdbms.egg-info/PKG-INFO new/azure-cli-rdbms-0.3.7/azure_cli_rdbms.egg-info/PKG-INFO
--- old/azure-cli-rdbms-0.3.1/azure_cli_rdbms.egg-info/PKG-INFO 2018-08-23 01:09:49.000000000 +0200
+++ new/azure-cli-rdbms-0.3.7/azure_cli_rdbms.egg-info/PKG-INFO 2019-02-12 03:05:35.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-rdbms
-Version: 0.3.1
+Version: 0.3.7
Summary: Microsoft Azure Command-Line Tools MySQL and PostgreSQL Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -9,7 +9,7 @@
Description: Microsoft Azure CLI 'MySQL and PostgreSQL' Command Module
=========================================================
This package is for the 'rdbms' module.
- i.e. 'az mysql' and 'az postgres'
+ i.e. 'az mariadb', 'az mysql' and 'az postgres'
@@ -17,6 +17,29 @@
Release History
===============
+ 0.3.7
+ +++++
+ * Improve help message and command parameters
+
+ 0.3.6
+ +++++
+ * Minor fixes
+
+ 0.3.5
+ +++++
+ * Add mariadb vnet commands
+
+ 0.3.4
+ +++++
+ * Add mysql replica commands
+
+ 0.3.3
+ +++++
+ * Minor fixes
+
+ 0.3.2
+ +++++
+ * Add support for MariaDB service
0.3.1
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-rdbms-0.3.1/azure_cli_rdbms.egg-info/requires.txt new/azure-cli-rdbms-0.3.7/azure_cli_rdbms.egg-info/requires.txt
--- old/azure-cli-rdbms-0.3.1/azure_cli_rdbms.egg-info/requires.txt 2018-08-23 01:09:49.000000000 +0200
+++ new/azure-cli-rdbms-0.3.7/azure_cli_rdbms.egg-info/requires.txt 2019-02-12 03:05:35.000000000 +0100
@@ -1,3 +1,3 @@
azure-cli-core
-azure-mgmt-rdbms==1.2.0
+azure-mgmt-rdbms==1.5.0
six
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-rdbms-0.3.1/setup.py new/azure-cli-rdbms-0.3.7/setup.py
--- old/azure-cli-rdbms-0.3.1/setup.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-rdbms-0.3.7/setup.py 2019-02-12 03:05:13.000000000 +0100
@@ -12,7 +12,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "0.3.1"
+VERSION = "0.3.7"
CLASSIFIERS = [
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
@@ -29,7 +29,7 @@
DEPENDENCIES = [
'azure-cli-core',
- 'azure-mgmt-rdbms==1.2.0',
+ 'azure-mgmt-rdbms==1.5.0',
'six'
]
1
0
Hello community,
here is the log from the commit of package azure-cli-profile for openSUSE:Factory checked in at 2019-05-22 11:01:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-profile (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-profile.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-profile"
Wed May 22 11:01:27 2019 rev:5 rq:696851 version:2.1.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-profile/azure-cli-profile.changes 2018-10-15 10:45:33.251254708 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-profile.new.5148/azure-cli-profile.changes 2019-05-22 11:01:30.686687879 +0200
@@ -1,0 +2,15 @@
+Tue Apr 16 15:55:45 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.1.3
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+
+-------------------------------------------------------------------
Old:
----
azure-cli-profile-2.1.1.tar.gz
New:
----
azure-cli-profile-2.1.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-profile.spec ++++++
--- /var/tmp/diff_new_pack.m6Hllf/_old 2019-05-22 11:01:32.486686848 +0200
+++ /var/tmp/diff_new_pack.m6Hllf/_new 2019-05-22 11:01:32.514686832 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-profile
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-profile
-Version: 2.1.1
+Version: 2.1.3
Release: 0
Summary: Microsoft Azure CLI 'profile' Command Module
License: MIT
@@ -27,14 +27,13 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -56,6 +55,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-profile-2.1.1.tar.gz -> azure-cli-profile-2.1.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-profile-2.1.1/HISTORY.rst new/azure-cli-profile-2.1.3/HISTORY.rst
--- old/azure-cli-profile-2.1.1/HISTORY.rst 2018-07-26 19:30:51.000000000 +0200
+++ new/azure-cli-profile-2.1.3/HISTORY.rst 2019-01-25 20:43:41.000000000 +0100
@@ -2,6 +2,13 @@
Release History
===============
+2.1.3
++++++
+* az login: enable tenant level account for managed service identity
+
+2.1.2
+++++++
+* az login: expose --use-cert-sn-issuer flag for service principal login with cert auto-rolls
2.1.1
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-profile-2.1.1/PKG-INFO new/azure-cli-profile-2.1.3/PKG-INFO
--- old/azure-cli-profile-2.1.1/PKG-INFO 2018-07-26 19:32:50.000000000 +0200
+++ new/azure-cli-profile-2.1.3/PKG-INFO 2019-01-25 20:44:18.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-profile
-Version: 2.1.1
+Version: 2.1.3
Summary: Microsoft Azure Command-Line Tools Profile Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -21,6 +21,13 @@
Release History
===============
+ 2.1.3
+ +++++
+ * az login: enable tenant level account for managed service identity
+
+ 2.1.2
+ ++++++
+ * az login: expose --use-cert-sn-issuer flag for service principal login with cert auto-rolls
2.1.1
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-profile-2.1.1/azure/cli/command_modules/profile/__init__.py new/azure-cli-profile-2.1.3/azure/cli/command_modules/profile/__init__.py
--- old/azure-cli-profile-2.1.1/azure/cli/command_modules/profile/__init__.py 2018-07-26 19:30:51.000000000 +0200
+++ new/azure-cli-profile-2.1.3/azure/cli/command_modules/profile/__init__.py 2019-01-25 20:43:41.000000000 +0100
@@ -24,6 +24,7 @@
with self.command_group('', profile_custom) as g:
g.command('login', 'login')
g.command('logout', 'logout')
+ g.command('self-test', 'check_cli', deprecate_info=g.deprecate(hide=True))
with self.command_group('account', profile_custom) as g:
g.command('list', 'list_subscriptions', table_transformer=transform_account_list)
@@ -50,6 +51,7 @@
c.argument('identity_port', type=int, help="the port to retrieve tokens for login. Default: 50342", arg_group='Managed Service Identity')
c.argument('use_device_code', action='store_true',
help="Use CLI's old authentication flow based on device code. CLI will also use this if it can't launch a browser in your behalf, e.g. in remote SSH or Cloud Shell")
+ c.argument('use_cert_sn_issuer', action='store_true', help='used with a service principal configured with Subject Name and Issuer Authentication in order to support automatic certificate rolls')
with self.argument_context('logout') as c:
c.argument('username', help='account user, if missing, logout the current active account')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-profile-2.1.1/azure/cli/command_modules/profile/_help.py new/azure-cli-profile-2.1.3/azure/cli/command_modules/profile/_help.py
--- old/azure-cli-profile-2.1.1/azure/cli/command_modules/profile/_help.py 2018-07-26 19:30:51.000000000 +0200
+++ new/azure-cli-profile-2.1.3/azure/cli/command_modules/profile/_help.py 2019-01-25 20:43:41.000000000 +0100
@@ -76,3 +76,8 @@
The token will be valid for at least 5 minutes with the maximum at 60 minutes.
If the subscription argument isn't specified, the current account is used.
"""
+
+helps['self-test'] = """
+ type: command
+ short-summary: Runs a self-test of the CLI.
+"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-profile-2.1.1/azure/cli/command_modules/profile/custom.py new/azure-cli-profile-2.1.3/azure/cli/command_modules/profile/custom.py
--- old/azure-cli-profile-2.1.1/azure/cli/command_modules/profile/custom.py 2018-07-26 19:30:51.000000000 +0200
+++ new/azure-cli-profile-2.1.3/azure/cli/command_modules/profile/custom.py 2019-01-25 20:43:41.000000000 +0100
@@ -86,16 +86,20 @@
# pylint: disable=inconsistent-return-statements
def login(cmd, username=None, password=None, service_principal=None, tenant=None, allow_no_subscriptions=False,
- identity=False, use_device_code=False):
+ identity=False, use_device_code=False, use_cert_sn_issuer=None):
"""Log in to access Azure subscriptions"""
from adal.adal_error import AdalError
import requests
# quick argument usage check
- if any([password, service_principal, tenant, allow_no_subscriptions]) and identity:
+ if any([password, service_principal, tenant]) and identity:
raise CLIError("usage error: '--identity' is not applicable with other arguments")
if any([password, service_principal, username, identity]) and use_device_code:
raise CLIError("usage error: '--use-device-code' is not applicable with other arguments")
+ if use_cert_sn_issuer and not service_principal:
+ raise CLIError("usage error: '--use-sn-issuer' is only applicable with a service principal")
+ if service_principal and not username:
+ raise CLIError('usage error: --service-principal --username NAME --password SECRET --tenant TENANT')
interactive = False
@@ -104,7 +108,7 @@
if identity:
if in_cloud_console():
return profile.find_subscriptions_in_cloud_console()
- return profile.find_subscriptions_in_vm_with_msi(username)
+ return profile.find_subscriptions_in_vm_with_msi(username, allow_no_subscriptions)
elif in_cloud_console(): # tell users they might not need login
logger.warning(_CLOUD_CONSOLE_LOGIN_WARNING)
@@ -125,7 +129,8 @@
service_principal,
tenant,
use_device_code=use_device_code,
- allow_no_subscriptions=allow_no_subscriptions)
+ allow_no_subscriptions=allow_no_subscriptions,
+ use_cert_sn_issuer=use_cert_sn_issuer)
except AdalError as err:
# try polish unfriendly server errors
if username:
@@ -158,3 +163,33 @@
def list_locations(cmd):
from azure.cli.core.commands.parameters import get_subscription_locations
return get_subscription_locations(cmd.cli_ctx)
+
+
+def check_cli(cmd):
+ from azure.cli.core.file_util import (
+ create_invoker_and_load_cmds_and_args, get_all_help)
+
+ exceptions = {}
+
+ print('Running CLI self-test.\n')
+
+ print('Loading all commands and arguments...')
+ try:
+ create_invoker_and_load_cmds_and_args(cmd.cli_ctx)
+ print('Commands loaded OK.\n')
+ except Exception as ex: # pylint: disable=broad-except
+ exceptions['load_commands'] = ex
+ logger.error('Error occurred loading commands!\n')
+
+ print('Retrieving all help...')
+ try:
+ get_all_help(cmd.cli_ctx)
+ print('Help loaded OK.\n')
+ except Exception as ex: # pylint: disable=broad-except
+ exceptions['load_help'] = ex
+ logger.error('Error occurred loading help!\n')
+
+ if not exceptions:
+ print('CLI self-test completed: OK')
+ else:
+ raise CLIError(exceptions)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-profile-2.1.1/azure_cli_profile.egg-info/PKG-INFO new/azure-cli-profile-2.1.3/azure_cli_profile.egg-info/PKG-INFO
--- old/azure-cli-profile-2.1.1/azure_cli_profile.egg-info/PKG-INFO 2018-07-26 19:32:49.000000000 +0200
+++ new/azure-cli-profile-2.1.3/azure_cli_profile.egg-info/PKG-INFO 2019-01-25 20:44:18.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-profile
-Version: 2.1.1
+Version: 2.1.3
Summary: Microsoft Azure Command-Line Tools Profile Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -21,6 +21,13 @@
Release History
===============
+ 2.1.3
+ +++++
+ * az login: enable tenant level account for managed service identity
+
+ 2.1.2
+ ++++++
+ * az login: expose --use-cert-sn-issuer flag for service principal login with cert auto-rolls
2.1.1
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-profile-2.1.1/setup.py new/azure-cli-profile-2.1.3/setup.py
--- old/azure-cli-profile-2.1.1/setup.py 2018-07-26 19:30:51.000000000 +0200
+++ new/azure-cli-profile-2.1.3/setup.py 2019-01-25 20:43:41.000000000 +0100
@@ -14,7 +14,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "2.1.1"
+VERSION = "2.1.3"
CLASSIFIERS = [
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
1
0
Hello community,
here is the log from the commit of package azure-cli-nspkg for openSUSE:Factory checked in at 2019-05-22 11:01:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-nspkg (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-nspkg.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-nspkg"
Wed May 22 11:01:13 2019 rev:3 rq:696849 version:3.0.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-nspkg/azure-cli-nspkg.changes 2018-05-13 16:02:53.115103430 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-nspkg.new.5148/azure-cli-nspkg.changes 2019-05-22 11:01:15.166696773 +0200
@@ -1,0 +2,15 @@
+Tue Apr 16 15:53:15 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 3.0.3
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+
+-------------------------------------------------------------------
Old:
----
azure-cli-nspkg-3.0.2.tar.gz
New:
----
azure-cli-nspkg-3.0.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-nspkg.spec ++++++
--- /var/tmp/diff_new_pack.wi3e4t/_old 2019-05-22 11:01:16.018696284 +0200
+++ /var/tmp/diff_new_pack.wi3e4t/_new 2019-05-22 11:01:16.022696283 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-nspkg
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,12 +12,12 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: azure-cli-nspkg
-Version: 3.0.2
+Version: 3.0.3
Release: 0
Summary: Microsoft Azure CLI Namespace Package
License: MIT
@@ -25,11 +25,10 @@
Url: https://github.com/Azure/azure-cli
Source: https://files.pythonhosted.org/packages/source/a/azure-cli-nspkg/azure-cli-…
Source1: LICENSE.txt
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -52,6 +51,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
%files
%defattr(-,root,root,-)
++++++ azure-cli-nspkg-3.0.2.tar.gz -> azure-cli-nspkg-3.0.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-nspkg-3.0.2/HISTORY.rst new/azure-cli-nspkg-3.0.3/HISTORY.rst
--- old/azure-cli-nspkg-3.0.2/HISTORY.rst 2018-03-10 02:30:57.000000000 +0100
+++ new/azure-cli-nspkg-3.0.3/HISTORY.rst 2018-07-14 01:41:34.000000000 +0200
@@ -3,6 +3,10 @@
Release History
===============
+3.0.3
+++++++
+* Minor fixes.
+
3.0.2
+++++
* minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-nspkg-3.0.2/PKG-INFO new/azure-cli-nspkg-3.0.3/PKG-INFO
--- old/azure-cli-nspkg-3.0.2/PKG-INFO 2018-03-10 02:31:15.000000000 +0100
+++ new/azure-cli-nspkg-3.0.3/PKG-INFO 2018-07-14 01:41:40.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-nspkg
-Version: 3.0.2
+Version: 3.0.3
Summary: Microsoft Azure CLI Namespace Package
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -21,6 +21,10 @@
Release History
===============
+ 3.0.3
+ ++++++
+ * Minor fixes.
+
3.0.2
+++++
* minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-nspkg-3.0.2/azure_cli_nspkg.egg-info/PKG-INFO new/azure-cli-nspkg-3.0.3/azure_cli_nspkg.egg-info/PKG-INFO
--- old/azure-cli-nspkg-3.0.2/azure_cli_nspkg.egg-info/PKG-INFO 2018-03-10 02:31:15.000000000 +0100
+++ new/azure-cli-nspkg-3.0.3/azure_cli_nspkg.egg-info/PKG-INFO 2018-07-14 01:41:40.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-nspkg
-Version: 3.0.2
+Version: 3.0.3
Summary: Microsoft Azure CLI Namespace Package
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -21,6 +21,10 @@
Release History
===============
+ 3.0.3
+ ++++++
+ * Minor fixes.
+
3.0.2
+++++
* minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-nspkg-3.0.2/setup.py new/azure-cli-nspkg-3.0.3/setup.py
--- old/azure-cli-nspkg-3.0.2/setup.py 2018-03-10 02:30:57.000000000 +0100
+++ new/azure-cli-nspkg-3.0.3/setup.py 2018-07-14 01:41:34.000000000 +0200
@@ -8,7 +8,7 @@
from codecs import open
from setuptools import setup
-VERSION = "3.0.2"
+VERSION = "3.0.3"
CLASSIFIERS = [
'Development Status :: 5 - Production/Stable',
1
0
Hello community,
here is the log from the commit of package azure-cli-network for openSUSE:Factory checked in at 2019-05-22 11:01:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-network (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-network.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-network"
Wed May 22 11:01:06 2019 rev:4 rq:696848 version:2.3.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-network/azure-cli-network.changes 2018-10-15 10:48:00.759097088 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-network.new.5148/azure-cli-network.changes 2019-05-22 11:01:11.234699026 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 15:51:40 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.3.2
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-network-2.2.4.tar.gz
New:
----
azure-cli-network-2.3.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-network.spec ++++++
--- /var/tmp/diff_new_pack.qoR4Yl/_old 2019-05-22 11:01:12.134698510 +0200
+++ /var/tmp/diff_new_pack.qoR4Yl/_new 2019-05-22 11:01:12.138698508 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-network
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-network
-Version: 2.2.4
+Version: 2.3.2
Release: 0
Summary: Microsoft Azure CLI 'network' Command Module
License: MIT
@@ -27,18 +27,16 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-mgmt-dns >= 2.0.0
-Requires: python3-azure-mgmt-network >= 2.0.0
-Requires: python3-azure-mgmt-trafficmanager >= 0.50.0
-Requires: python3-azure-nspkg
-Requires: python3-mock
+Requires: python3-azure-mgmt-dns >= 2.1.0
+Requires: python3-azure-mgmt-network >= 2.4.0
+Requires: python3-azure-mgmt-trafficmanager >= 0.51.0
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -58,6 +56,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-network-2.2.4.tar.gz -> azure-cli-network-2.3.2.tar.gz ++++++
++++ 4372 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package azure-cli-monitor for openSUSE:Factory checked in at 2019-05-22 11:01:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-monitor (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-monitor.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-monitor"
Wed May 22 11:01:00 2019 rev:5 rq:696847 version:0.2.10
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-monitor/azure-cli-monitor.changes 2018-10-15 10:47:27.151132980 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-monitor.new.5148/azure-cli-monitor.changes 2019-05-22 11:01:04.934702636 +0200
@@ -1,0 +2,15 @@
+Tue Apr 16 15:48:00 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.2.10
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+
+-------------------------------------------------------------------
Old:
----
azure-cli-monitor-0.2.3.tar.gz
New:
----
azure-cli-monitor-0.2.10.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-monitor.spec ++++++
--- /var/tmp/diff_new_pack.R2xJLE/_old 2019-05-22 11:01:05.650702226 +0200
+++ /var/tmp/diff_new_pack.R2xJLE/_new 2019-05-22 11:01:05.654702224 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-monitor
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-monitor
-Version: 0.2.3
+Version: 0.2.10
Release: 0
Summary: Microsoft Azure CLI 'Monitor' Command Module
License: MIT
@@ -27,15 +27,14 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
Requires: python3-azure-mgmt-monitor >= 0.5.2
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -55,6 +54,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-monitor-0.2.3.tar.gz -> azure-cli-monitor-0.2.10.tar.gz ++++++
++++ 1805 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package azure-cli-lab for openSUSE:Factory checked in at 2019-05-22 11:00:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-lab (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-lab.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-lab"
Wed May 22 11:00:42 2019 rev:5 rq:696845 version:0.1.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-lab/azure-cli-lab.changes 2018-10-15 10:45:52.887233713 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-lab.new.5148/azure-cli-lab.changes 2019-05-22 11:00:44.498716595 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 15:33:45 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.1.5
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-lab-0.1.1.tar.gz
New:
----
azure-cli-lab-0.1.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-lab.spec ++++++
--- /var/tmp/diff_new_pack.B1ayPA/_old 2019-05-22 11:00:46.586714776 +0200
+++ /var/tmp/diff_new_pack.B1ayPA/_new 2019-05-22 11:00:46.622714746 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-lab
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-lab
-Version: 0.1.1
+Version: 0.1.5
Release: 0
Summary: Microsoft Azure CLI 'DevTestLabs' Command Module
License: MIT
@@ -27,16 +27,15 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-graphrbac >= 0.40.0
+Requires: python3-azure-graphrbac >= 0.53.0
Requires: python3-azure-mgmt-devtestlabs >= 2.2.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -56,6 +55,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-lab-0.1.1.tar.gz -> azure-cli-lab-0.1.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-lab-0.1.1/HISTORY.rst new/azure-cli-lab-0.1.5/HISTORY.rst
--- old/azure-cli-lab-0.1.1/HISTORY.rst 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-lab-0.1.5/HISTORY.rst 2019-01-11 05:42:07.000000000 +0100
@@ -2,6 +2,21 @@
Release History
===============
+0.1.5
++++++
+* Minor fixes
+
+0.1.4
++++++
+* Minor fixes
+
+0.1.3
++++++
+* Minor changes
+
+0.1.2
++++++
+* Minor changes
0.1.1
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-lab-0.1.1/PKG-INFO new/azure-cli-lab-0.1.5/PKG-INFO
--- old/azure-cli-lab-0.1.1/PKG-INFO 2018-08-23 01:09:15.000000000 +0200
+++ new/azure-cli-lab-0.1.5/PKG-INFO 2019-01-11 05:42:49.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-lab
-Version: 0.1.1
+Version: 0.1.5
Summary: Microsoft Azure Command-Line Tools DevTestLabs Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -14,6 +14,21 @@
Release History
===============
+ 0.1.5
+ +++++
+ * Minor fixes
+
+ 0.1.4
+ +++++
+ * Minor fixes
+
+ 0.1.3
+ +++++
+ * Minor changes
+
+ 0.1.2
+ +++++
+ * Minor changes
0.1.1
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-lab-0.1.1/azure/cli/command_modules/lab/custom.py new/azure-cli-lab-0.1.5/azure/cli/command_modules/lab/custom.py
--- old/azure-cli-lab-0.1.1/azure/cli/command_modules/lab/custom.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-lab-0.1.5/azure/cli/command_modules/lab/custom.py 2019-01-11 05:42:07.000000000 +0100
@@ -3,11 +3,11 @@
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
-import getpass
-
+from azure.cli.core.util import get_default_admin_username
# pylint: disable=too-many-locals, unused-argument, too-many-statements
+
def create_custom_image(client, resource_group_name, lab_name, name, source_vm_id, os_type, os_state,
author=None, description=None):
""" Command to create a custom image from a source VM, managed image, or VHD """
@@ -29,7 +29,7 @@
def create_lab_vm(client, resource_group_name, lab_name, name, notes=None, image=None, image_type=None,
- size=None, admin_username=getpass.getuser(), admin_password=None,
+ size=None, admin_username=get_default_admin_username(), admin_password=None,
ssh_key=None, authentication_type='password',
vnet_name=None, subnet=None, disallow_public_ip_address=None, artifacts=None,
location=None, tags=None, custom_image_id=None, lab_virtual_network_id=None,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-lab-0.1.1/azure_cli_lab.egg-info/PKG-INFO new/azure-cli-lab-0.1.5/azure_cli_lab.egg-info/PKG-INFO
--- old/azure-cli-lab-0.1.1/azure_cli_lab.egg-info/PKG-INFO 2018-08-23 01:09:15.000000000 +0200
+++ new/azure-cli-lab-0.1.5/azure_cli_lab.egg-info/PKG-INFO 2019-01-11 05:42:49.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-lab
-Version: 0.1.1
+Version: 0.1.5
Summary: Microsoft Azure Command-Line Tools DevTestLabs Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -14,6 +14,21 @@
Release History
===============
+ 0.1.5
+ +++++
+ * Minor fixes
+
+ 0.1.4
+ +++++
+ * Minor fixes
+
+ 0.1.3
+ +++++
+ * Minor changes
+
+ 0.1.2
+ +++++
+ * Minor changes
0.1.1
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-lab-0.1.1/azure_cli_lab.egg-info/requires.txt new/azure-cli-lab-0.1.5/azure_cli_lab.egg-info/requires.txt
--- old/azure-cli-lab-0.1.1/azure_cli_lab.egg-info/requires.txt 2018-08-23 01:09:15.000000000 +0200
+++ new/azure-cli-lab-0.1.5/azure_cli_lab.egg-info/requires.txt 2019-01-11 05:42:49.000000000 +0100
@@ -1,3 +1,3 @@
azure-cli-core
-azure-graphrbac==0.40.0
+azure-graphrbac==0.53.0
azure-mgmt-devtestlabs==2.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-lab-0.1.1/setup.py new/azure-cli-lab-0.1.5/setup.py
--- old/azure-cli-lab-0.1.1/setup.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-lab-0.1.5/setup.py 2019-01-11 05:42:07.000000000 +0100
@@ -12,7 +12,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "0.1.1"
+VERSION = "0.1.5"
CLASSIFIERS = [
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
@@ -29,7 +29,7 @@
DEPENDENCIES = [
'azure-cli-core',
- 'azure-graphrbac==0.40.0',
+ 'azure-graphrbac==0.53.0',
'azure-mgmt-devtestlabs==2.2.0'
]
1
0
Hello community,
here is the log from the commit of package azure-cli-keyvault for openSUSE:Factory checked in at 2019-05-22 11:00:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-keyvault (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-keyvault.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-keyvault"
Wed May 22 11:00:35 2019 rev:5 rq:696843 version:2.2.11
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-keyvault/azure-cli-keyvault.changes 2018-10-15 10:45:30.151258022 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-keyvault.new.5148/azure-cli-keyvault.changes 2019-05-22 11:00:37.274722886 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 15:05:33 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.2.11
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-keyvault-2.2.2.tar.gz
New:
----
azure-cli-keyvault-2.2.11.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-keyvault.spec ++++++
--- /var/tmp/diff_new_pack.h1D9gW/_old 2019-05-22 11:00:38.118722151 +0200
+++ /var/tmp/diff_new_pack.h1D9gW/_new 2019-05-22 11:00:38.118722151 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-keyvault
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-keyvault
-Version: 2.2.2
+Version: 2.2.11
Release: 0
Summary: Microsoft Azure CLI 'keyvault' Command Module
License: MIT
@@ -27,17 +27,16 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-graphrbac >= 0.40.0
+Requires: python3-azure-graphrbac >= 0.53.0
Requires: python3-azure-keyvault >= 1.1.0
Requires: python3-azure-mgmt-keyvault >= 1.1.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-pyOpenSSL
Conflicts: azure-cli < 2.0.0
@@ -58,6 +57,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-keyvault-2.2.2.tar.gz -> azure-cli-keyvault-2.2.11.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-keyvault-2.2.2/HISTORY.rst new/azure-cli-keyvault-2.2.11/HISTORY.rst
--- old/azure-cli-keyvault-2.2.2/HISTORY.rst 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-keyvault-2.2.11/HISTORY.rst 2019-02-12 03:05:13.000000000 +0100
@@ -2,6 +2,41 @@
Release History
===============
+2.2.11
+++++++
+* keyvault secret backup: Fixes issue where some users received an 'unexpected_keyword' error when using --id.
+
+2.2.10
+++++++
+* Minor fixes
+
+2.2.9
++++++
+* Minor fixes
+
+2.2.8
++++++
+* Minor fixes
+
+2.2.7
++++++
+* bug fix: do not drop legit exceptions
+
+2.2.6
++++++
+* Minor changes
+
+2.2.5
++++++
+* Minor changes
+
+2.2.4
++++++
+* Restrict keyvault storage commmands to the latest API profile
+
+2.2.3
++++++
+* Fixed Key Vault key import for RSA keys
2.2.2
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-keyvault-2.2.2/PKG-INFO new/azure-cli-keyvault-2.2.11/PKG-INFO
--- old/azure-cli-keyvault-2.2.2/PKG-INFO 2018-08-09 08:36:46.000000000 +0200
+++ new/azure-cli-keyvault-2.2.11/PKG-INFO 2019-02-12 03:05:39.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-keyvault
-Version: 2.2.2
+Version: 2.2.11
Summary: Microsoft Azure Command-Line Tools Keyvault Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -19,6 +19,41 @@
Release History
===============
+ 2.2.11
+ ++++++
+ * keyvault secret backup: Fixes issue where some users received an 'unexpected_keyword' error when using --id.
+
+ 2.2.10
+ ++++++
+ * Minor fixes
+
+ 2.2.9
+ +++++
+ * Minor fixes
+
+ 2.2.8
+ +++++
+ * Minor fixes
+
+ 2.2.7
+ +++++
+ * bug fix: do not drop legit exceptions
+
+ 2.2.6
+ +++++
+ * Minor changes
+
+ 2.2.5
+ +++++
+ * Minor changes
+
+ 2.2.4
+ +++++
+ * Restrict keyvault storage commmands to the latest API profile
+
+ 2.2.3
+ +++++
+ * Fixed Key Vault key import for RSA keys
2.2.2
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-keyvault-2.2.2/azure/cli/command_modules/keyvault/_command_type.py new/azure-cli-keyvault-2.2.11/azure/cli/command_modules/keyvault/_command_type.py
--- old/azure-cli-keyvault-2.2.2/azure/cli/command_modules/keyvault/_command_type.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-keyvault-2.2.11/azure/cli/command_modules/keyvault/_command_type.py 2019-02-12 03:05:13.000000000 +0100
@@ -44,6 +44,8 @@
'The vault may not exist or you may need to flush your DNS cache '
'and try again later.')
raise CLIError(ex)
+ else:
+ raise CLIError(ex)
class KeyVaultCommandGroup(AzCommandGroup):
@@ -93,6 +95,8 @@
if client_arg_name in op_args:
client = client_factory(self.command_loader.cli_ctx, command_args)
command_args[client_arg_name] = client
+ if 'cmd' not in op_args:
+ command_args.pop('cmd')
try:
result = op(**command_args)
# apply results transform if specified
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-keyvault-2.2.2/azure/cli/command_modules/keyvault/_help.py new/azure-cli-keyvault-2.2.11/azure/cli/command_modules/keyvault/_help.py
--- old/azure-cli-keyvault-2.2.2/azure/cli/command_modules/keyvault/_help.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-keyvault-2.2.11/azure/cli/command_modules/keyvault/_help.py 2019-02-12 03:05:13.000000000 +0100
@@ -5,204 +5,210 @@
# --------------------------------------------------------------------------------------------
from knack.help_files import helps
-
+# pylint: disable=line-too-long, too-many-lines
helps['keyvault'] = """
- type: group
- short-summary: Manage KeyVault keys, secrets, and certificates.
+type: group
+short-summary: Manage KeyVault keys, secrets, and certificates.
"""
-helps['keyvault create'] = """
- type: command
- short-summary: Create a key vault.
- long-summary: Default permissions are created for the current user or service principal unless the `--no-self-perms` flag is specified.
+helps['keyvault certificate'] = """
+type: group
+short-summary: Manage certificates.
"""
-helps['keyvault delete'] = """
- type: command
- short-summary: Delete a key vault.
+helps['keyvault certificate contact'] = """
+type: group
+short-summary: Manage contacts for certificate management.
"""
-helps['keyvault list'] = """
- type: command
- short-summary: List key vaults.
-"""
+helps['keyvault certificate create'] = """
+type: command
+short-summary: Create a Key Vault certificate.
+long-summary: Certificates can be used as a secrets for provisioned virtual machines.
+examples:
+ - name: Create a self-signed certificate with the default policy and add it to a virtual machine.
+ text: |
+ az keyvault certificate create --vault-name vaultname -n cert1 \\
+ -p "$(az keyvault certificate get-default-policy)"
-helps['keyvault show'] = """
- type: command
- short-summary: Show details of a key vault.
-"""
+ secrets=$(az keyvault secret list-versions --vault-name vaultname \\
+ -n cert1 --query "[?attributes.enabled].id" -o tsv)
-helps['keyvault update'] = """
- type: command
- short-summary: Update the properties of a key vault.
-"""
+ vm_secrets=$(az vm secret format -s "$secrets")
-helps['keyvault recover'] = """
- type: command
- short-summary: Recover a key vault.
- long-summary: Recovers a previously deleted key vault for which soft delete was enabled.
+ az vm create -g group-name -n vm-name --admin-username deploy \\
+ --image debian --secrets "$vm_secrets"
"""
-helps['keyvault key'] = """
- type: group
- short-summary: Manage keys.
+helps['keyvault certificate download'] = """
+type: command
+short-summary: Download the public portion of a Key Vault certificate.
+long-summary: The certificate formatted as either PEM or DER. PEM is the default.
+examples:
+ - name: Download a certificate as PEM and check its fingerprint in openssl.
+ text: |
+ az keyvault certificate download --vault-name vault -n cert-name -f cert.pem && \\
+ openssl x509 -in cert.pem -inform PEM -noout -sha1 -fingerprint
+ - name: Download a certificate as DER and check its fingerprint in openssl.
+ text: |
+ az keyvault certificate download --vault-name vault -n cert-name -f cert.crt -e DER && \\
+ openssl x509 -in cert.crt -inform DER -noout -sha1 -fingerprint
"""
-helps['keyvault secret'] = """
- type: group
- short-summary: Manage secrets.
+helps['keyvault certificate get-default-policy'] = """
+type: command
+short-summary: Get the default policy for self-signed certificates.
+long-summary: |
+ This default policy can be used in conjunction with `az keyvault create` to create a self-signed certificate.
+ The default policy can also be used as a starting point to create derivative policies.
+
+ For more details, see: https://docs.microsoft.com/en-us/rest/api/keyvault/certificates-and-policies
+examples:
+ - name: Create a self-signed certificate with the default policy
+ text: |
+ az keyvault certificate create --vault-name vaultname -n cert1 \\
+ -p "$(az keyvault certificate get-default-policy)"
"""
-helps['keyvault certificate'] = """
- type: group
- short-summary: Manage certificates.
-"""
+helps['keyvault certificate import'] = """
+type: command
+short-summary: Import a certificate into KeyVault.
+long-summary: Certificates can also be used as a secrets in provisioned virtual machines.
+examples:
+ - name: Create a service principal with a certificate, add the certificate to Key Vault and provision a VM with that certificate.
+ text: |
+ service_principal=$(az ad sp create-for-rbac --create-cert)
-helps['keyvault storage'] = """
- type: group
- short-summary: Manage storage accounts.
-"""
+ cert_file=$(echo $service_principal | jq .fileWithCertAndPrivateKey -r)
-helps['keyvault storage add'] = """
- type: command
- examples:
- - name: Create a storage account and setup a vault to manage its keys
- text: |
- $id = az storage account create -g resourcegroup -n storageacct --query id
-
- # assign the Azure Key Vault service the "Storage Account Key Operator Service Role" role.
- az role assignment create --role "Storage Account Key Operator Service Role" --scope $id \\
- --assignee cfa8b339-82a2-471a-a3c9-0fc0be7a4093
+ az keyvault create -g my-group -n vaultname
- az keyvault storage add --vault-name vault -n storageacct --active-key-name key1 \\
- --auto-regenerate-key --regeneration-period P90D --resource-id $id
-"""
+ az keyvault certificate import --vault-name vaultname -n cert_name -f cert_file
-helps['keyvault storage sas-definition'] = """
- type: group
- short-summary: Manage storage account SAS definitions.
-"""
+ secrets=$(az keyvault secret list-versions --vault-name vaultname \\
+ -n cert1 --query "[?attributes.enabled].id" -o tsv)
-helps['keyvault storage sas-definition create'] = """
- type: command
- examples:
- - name: Add a sas-definition for an account sas-token
- text: |
+ vm_secrets=$(az vm secret format -s "$secrets")
- $sastoken = az storage account generate-sas --expiry 2020-01-01 --permissions rw \\
- --resource-types sco --services bfqt --https-only --account-name storageacct \\
- --account-key 00000000
+ az vm create -g group-name -n vm-name --admin-username deploy \\
+ --image debian --secrets "$vm_secrets"
+"""
- az keyvault storage sas-definition create --vault-name vault --account-name storageacct \\
- -n rwallserviceaccess --validity-period P2D --sas-type account --template-uri $sastoken
- - name: Add a sas-definition for a blob sas-token
- text: >
+helps['keyvault certificate issuer'] = """
+type: group
+short-summary: Manage certificate issuer information.
+"""
- $sastoken = az storage blob generate-sas --account-name storageacct --account-key 00000000 \\
- -c container1 -n blob1 --https-only --permissions rw
+helps['keyvault certificate issuer admin'] = """
+type: group
+short-summary: Manage admin information for certificate issuers.
+"""
- $url = az storage blob url --account-name storageacct -c container1 -n blob1
+helps['keyvault certificate pending'] = """
+type: group
+short-summary: Manage pending certificate creation operations.
+"""
+helps['keyvault create'] = """
+type: command
+short-summary: Create a key vault.
+long-summary: Default permissions are created for the current user or service principal unless the `--no-self-perms` flag is specified.
+examples:
+ - name: Create a key vault. (autogenerated)
+ text: az keyvault create --name MyKeyVault --resource-group MyResourceGroup
+ crafted: true
+"""
- az keyvault storage sas-definition create --vault-name vault --account-name storageacct \\
- -n rwblobaccess --validity-period P2D --sas-type service --template-uri $url?$sastoken
+helps['keyvault delete'] = """
+type: command
+short-summary: Delete a key vault.
"""
-helps['keyvault network-rule'] = """
- type: group
- short-summary: Manage vault network ACLs.
+helps['keyvault key'] = """
+type: group
+short-summary: Manage keys.
"""
-helps['keyvault certificate download'] = """
- type: command
- short-summary: Download the public portion of a Key Vault certificate.
- long-summary: The certificate formatted as either PEM or DER. PEM is the default.
- examples:
- - name: Download a certificate as PEM and check its fingerprint in openssl.
- text: |
- az keyvault certificate download --vault-name vault -n cert-name -f cert.pem && \\
- openssl x509 -in cert.pem -inform PEM -noout -sha1 -fingerprint
- - name: Download a certificate as DER and check its fingerprint in openssl.
- text: |
- az keyvault certificate download --vault-name vault -n cert-name -f cert.crt -e DER && \\
- openssl x509 -in cert.crt -inform DER -noout -sha1 -fingerprint
+helps['keyvault list'] = """
+type: command
+short-summary: List key vaults.
"""
-helps['keyvault certificate get-default-policy'] = """
- type: command
- short-summary: Get the default policy for self-signed certificates.
- long-summary: |
- This default policy can be used in conjunction with `az keyvault create` to create a self-signed certificate.
- The default policy can also be used as a starting point to create derivative policies.
-
- For more details, see: https://docs.microsoft.com/en-us/rest/api/keyvault/certificates-and-policies
- examples:
- - name: Create a self-signed certificate with the default policy
- text: |
- az keyvault certificate create --vault-name vaultname -n cert1 \\
- -p "$(az keyvault certificate get-default-policy)"
+helps['keyvault network-rule'] = """
+type: group
+short-summary: Manage vault network ACLs.
"""
-helps['keyvault certificate create'] = """
- type: command
- short-summary: Create a Key Vault certificate.
- long-summary: Certificates can be used as a secrets for provisioned virtual machines.
- examples:
- - name: Create a self-signed certificate with the default policy and add it to a virtual machine.
- text: |
- az keyvault certificate create --vault-name vaultname -n cert1 \\
- -p "$(az keyvault certificate get-default-policy)"
+helps['keyvault recover'] = """
+type: command
+short-summary: Recover a key vault.
+long-summary: Recovers a previously deleted key vault for which soft delete was enabled.
+"""
- secrets=$(az keyvault secret list-versions --vault-name vaultname \\
- -n cert1 --query "[?attributes.enabled].id" -o tsv)
+helps['keyvault secret'] = """
+type: group
+short-summary: Manage secrets.
+"""
- vm_secrets=$(az vm secret format -s "$secrets")
+helps['keyvault show'] = """
+type: command
+short-summary: Show details of a key vault.
+examples:
+ - name: Show details of a key vault. (autogenerated)
+ text: az keyvault show --name MyKeyVault
+ crafted: true
+"""
- az vm create -g group-name -n vm-name --admin-username deploy \\
- --image debian --secrets "$vm_secrets"
+helps['keyvault storage'] = """
+type: group
+short-summary: Manage storage accounts.
"""
-helps['keyvault certificate import'] = """
- type: command
- short-summary: Import a certificate into KeyVault.
- long-summary: Certificates can also be used as a secrets in provisioned virtual machines.
- examples:
- - name: Create a service principal with a certificate, add the certificate to Key Vault and provision a VM with that certificate.
- text: |
- service_principal=$(az ad sp create-for-rbac --create-cert)
+helps['keyvault storage add'] = """
+type: command
+examples:
+ - name: Create a storage account and setup a vault to manage its keys
+ text: |
+ $id = az storage account create -g resourcegroup -n storageacct --query id
+
+ # assign the Azure Key Vault service the "Storage Account Key Operator Service Role" role.
+ az role assignment create --role "Storage Account Key Operator Service Role" --scope $id \\
+ --assignee cfa8b339-82a2-471a-a3c9-0fc0be7a4093
- cert_file=$(echo $service_principal | jq .fileWithCertAndPrivateKey -r)
+ az keyvault storage add --vault-name vault -n storageacct --active-key-name key1 \\
+ --auto-regenerate-key --regeneration-period P90D --resource-id $id
+"""
- az keyvault create -g my-group -n vaultname
+helps['keyvault storage sas-definition'] = """
+type: group
+short-summary: Manage storage account SAS definitions.
+"""
- az keyvault certificate import --vault-name vaultname -n cert_file
+helps['keyvault storage sas-definition create'] = """
+type: command
+examples:
+ - name: Add a sas-definition for an account sas-token
+ text: |4
- secrets=$(az keyvault secret list-versions --vault-name vaultname \\
- -n cert1 --query "[?attributes.enabled].id" -o tsv)
+ $sastoken = az storage account generate-sas --expiry 2020-01-01 --permissions rw \\
+ --resource-types sco --services bfqt --https-only --account-name storageacct \\
+ --account-key 00000000
- vm_secrets=$(az vm secret format -s "$secrets")
+ az keyvault storage sas-definition create --vault-name vault --account-name storageacct \\
+ -n rwallserviceaccess --validity-period P2D --sas-type account --template-uri $sastoken
+ - name: Add a sas-definition for a blob sas-token
+ text: >4
- az vm create -g group-name -n vm-name --admin-username deploy \\
- --image debian --secrets "$vm_secrets"
-"""
+ $sastoken = az storage blob generate-sas --account-name storageacct --account-key 00000000 \\ -c container1 -n blob1 --https-only --permissions rw
-helps['keyvault certificate pending'] = """
- type: group
- short-summary: Manage pending certificate creation operations.
-"""
+ $url = az storage blob url --account-name storageacct -c container1 -n blob1
-helps['keyvault certificate contact'] = """
- type: group
- short-summary: Manage contacts for certificate management.
-"""
-helps['keyvault certificate issuer'] = """
- type: group
- short-summary: Manage certificate issuer information.
+ az keyvault storage sas-definition create --vault-name vault --account-name storageacct \\ -n rwblobaccess --validity-period P2D --sas-type service --template-uri $url?$sastoken
"""
-helps['keyvault certificate issuer admin'] = """
- type: group
- short-summary: Manage admin information for certificate issuers.
+helps['keyvault update'] = """
+type: command
+short-summary: Update the properties of a key vault.
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-keyvault-2.2.2/azure/cli/command_modules/keyvault/_params.py new/azure-cli-keyvault-2.2.11/azure/cli/command_modules/keyvault/_params.py
--- old/azure-cli-keyvault-2.2.2/azure/cli/command_modules/keyvault/_params.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-keyvault-2.2.11/azure/cli/command_modules/keyvault/_params.py 2019-02-12 03:05:13.000000000 +0100
@@ -13,7 +13,7 @@
get_resource_name_completion_list, resource_group_name_type, tags_type, file_type, get_three_state_flag,
get_enum_type)
from azure.cli.core.util import get_json_object
-from azure.cli.core.profiles import ResourceType, get_sdk
+from azure.cli.core.profiles import ResourceType
from ._completers import (
get_keyvault_name_completion_list, get_keyvault_version_completion_list)
@@ -34,22 +34,17 @@
# pylint: disable=too-many-locals, too-many-branches, too-many-statements, line-too-long
def load_arguments(self, _):
- JsonWebKeyOperation = get_sdk(self.cli_ctx, ResourceType.DATA_KEYVAULT, 'models.key_vault_client_enums#JsonWebKeyOperation')
- KeyAttributes = get_sdk(self.cli_ctx, ResourceType.DATA_KEYVAULT, 'models.key_attributes#KeyAttributes')
- JsonWebKeyType = get_sdk(self.cli_ctx, ResourceType.DATA_KEYVAULT, 'models.key_vault_client_enums#JsonWebKeyType')
- JsonWebKeyCurveName = get_sdk(self.cli_ctx, ResourceType.DATA_KEYVAULT, 'models.key_vault_client_enums#JsonWebKeyCurveName')
- SasTokenType = get_sdk(self.cli_ctx, ResourceType.DATA_KEYVAULT, 'models.key_vault_client_enums#SasTokenType')
- SasDefinitionAttributes = get_sdk(self.cli_ctx, ResourceType.DATA_KEYVAULT, 'models.sas_definition_attributes#SasDefinitionAttributes')
- SecretAttributes = get_sdk(self.cli_ctx, ResourceType.DATA_KEYVAULT, 'models.secret_attributes#SecretAttributes')
- CertificateAttributes = get_sdk(self.cli_ctx, ResourceType.DATA_KEYVAULT, 'models.certificate_attributes#CertificateAttributes')
- StorageAccountAttributes = get_sdk(self.cli_ctx, ResourceType.DATA_KEYVAULT, 'models.storage_account_attributes#StorageAccountAttributes')
- SkuName = get_sdk(self.cli_ctx, ResourceType.MGMT_KEYVAULT, 'models.key_vault_management_client_enums#SkuName')
- KeyPermissions = get_sdk(self.cli_ctx, ResourceType.MGMT_KEYVAULT, 'models.key_vault_management_client_enums#KeyPermissions')
- SecretPermissions = get_sdk(self.cli_ctx, ResourceType.MGMT_KEYVAULT, 'models.key_vault_management_client_enums#SecretPermissions')
- CertificatePermissions = get_sdk(self.cli_ctx, ResourceType.MGMT_KEYVAULT, 'models.key_vault_management_client_enums#CertificatePermissions')
- StoragePermissions = get_sdk(self.cli_ctx, ResourceType.MGMT_KEYVAULT, 'models.key_vault_management_client_enums#StoragePermissions')
- NetworkRuleBypassOptions = get_sdk(self.cli_ctx, ResourceType.MGMT_KEYVAULT, 'models.key_vault_management_client_enums#NetworkRuleBypassOptions')
- NetworkRuleAction = get_sdk(self.cli_ctx, ResourceType.MGMT_KEYVAULT, 'models.key_vault_management_client_enums#NetworkRuleAction')
+ (JsonWebKeyOperation, KeyAttributes, JsonWebKeyType, JsonWebKeyCurveName, SasTokenType,
+ SasDefinitionAttributes, SecretAttributes, CertificateAttributes, StorageAccountAttributes) = self.get_models(
+ 'JsonWebKeyOperation', 'KeyAttributes', 'JsonWebKeyType', 'JsonWebKeyCurveName', 'SasTokenType',
+ 'SasDefinitionAttributes', 'SecretAttributes', 'CertificateAttributes', 'StorageAccountAttributes',
+ resource_type=ResourceType.DATA_KEYVAULT)
+
+ (SkuName, KeyPermissions, SecretPermissions, CertificatePermissions, StoragePermissions,
+ NetworkRuleBypassOptions, NetworkRuleAction) = self.get_models(
+ 'SkuName', 'KeyPermissions', 'SecretPermissions', 'CertificatePermissions', 'StoragePermissions',
+ 'NetworkRuleBypassOptions', 'NetworkRuleAction')
+
# ARGUMENT DEFINITIONS
vault_name_type = CLIArgumentType(
help='Name of the key vault.', options_list=['--vault-name'], metavar='NAME', id_part=None,
@@ -107,7 +102,10 @@
for cmd in ['backup', 'delete', 'download', 'set-attributes', 'show']:
with self.argument_context('keyvault {} {}'.format(item, cmd), arg_group='Id') as c:
- c.extra('identifier', options_list=['--id'], help='Id of the {}. If specified all other \'Id\' arguments should be omitted.'.format(item), validator=validate_vault_id(item))
+ try:
+ c.extra('identifier', options_list=['--id'], help='Id of the {}. If specified all other \'Id\' arguments should be omitted.'.format(item), validator=validate_vault_id(item))
+ except ValueError:
+ pass
c.argument(item + '_name', help='Name of the {}. Required if --id is not specified.'.format(item), required=False)
c.argument('vault_base_url', help='Name of the key vault. Required if --id is not specified.', required=False)
c.argument(item + '_version', required=False)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-keyvault-2.2.2/azure/cli/command_modules/keyvault/_validators.py new/azure-cli-keyvault-2.2.11/azure/cli/command_modules/keyvault/_validators.py
--- old/azure-cli-keyvault-2.2.2/azure/cli/command_modules/keyvault/_validators.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-keyvault-2.2.11/azure/cli/command_modules/keyvault/_validators.py 2019-02-12 03:05:13.000000000 +0100
@@ -257,7 +257,8 @@
ident = KeyVaultIdentifier(uri=identifier, collection=entity_type + 's')
setattr(ns, entity_type + '_name', ident.name)
setattr(ns, 'vault_base_url', ident.vault)
- setattr(ns, entity_type + '_version', ident.version)
+ if hasattr(ns, entity_type + '_version'):
+ setattr(ns, entity_type + '_version', ident.version)
elif not (name and vault):
raise CLIError('incorrect usage: --id ID | --vault-name VAULT --name NAME [--version VERSION]')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-keyvault-2.2.2/azure/cli/command_modules/keyvault/commands.py new/azure-cli-keyvault-2.2.11/azure/cli/command_modules/keyvault/commands.py
--- old/azure-cli-keyvault-2.2.2/azure/cli/command_modules/keyvault/commands.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-keyvault-2.2.11/azure/cli/command_modules/keyvault/commands.py 2019-02-12 03:05:13.000000000 +0100
@@ -134,14 +134,14 @@
g.keyvault_custom('add', 'add_certificate_issuer_admin')
g.keyvault_custom('delete', 'delete_certificate_issuer_admin')
- with self.command_group('keyvault storage', kv_data_sdk) as g:
- g.keyvault_command('add', 'set_storage_account')
- g.keyvault_command('list', 'get_storage_accounts')
- g.keyvault_command('show', 'get_storage_account')
- g.keyvault_command('update', 'update_storage_account')
- g.keyvault_command('remove', 'delete_storage_account')
- g.keyvault_command('regenerate-key', 'regenerate_storage_account_key')
- if data_api_version != '2016_10_01':
+ if data_api_version != '2016_10_01':
+ with self.command_group('keyvault storage', kv_data_sdk) as g:
+ g.keyvault_command('add', 'set_storage_account')
+ g.keyvault_command('list', 'get_storage_accounts')
+ g.keyvault_command('show', 'get_storage_account')
+ g.keyvault_command('update', 'update_storage_account')
+ g.keyvault_command('remove', 'delete_storage_account')
+ g.keyvault_command('regenerate-key', 'regenerate_storage_account_key')
g.keyvault_command('list-deleted', 'get_deleted_storage_accounts')
g.keyvault_command('show-deleted', 'get_deleted_storage_account')
g.keyvault_command('purge', 'purge_deleted_storage_account')
@@ -153,17 +153,17 @@
'restore_storage_account',
doc_string_source=data_doc_string.format('restore_storage_account'))
- with self.command_group('keyvault storage sas-definition', kv_data_sdk) as g:
- g.keyvault_command('create',
- 'set_sas_definition',
- doc_string_source=data_doc_string.format('set_sas_definition'))
- g.keyvault_command('list', 'get_sas_definitions')
- g.keyvault_command('show', 'get_sas_definition')
- g.keyvault_command('update',
- 'update_sas_definition',
- doc_string_source=data_doc_string.format('update_sas_definition'))
- g.keyvault_command('delete', 'delete_sas_definition')
- if data_api_version != '2016_10_01':
+ if data_api_version != '2016_10_01':
+ with self.command_group('keyvault storage sas-definition', kv_data_sdk) as g:
+ g.keyvault_command('create',
+ 'set_sas_definition',
+ doc_string_source=data_doc_string.format('set_sas_definition'))
+ g.keyvault_command('list', 'get_sas_definitions')
+ g.keyvault_command('show', 'get_sas_definition')
+ g.keyvault_command('update',
+ 'update_sas_definition',
+ doc_string_source=data_doc_string.format('update_sas_definition'))
+ g.keyvault_command('delete', 'delete_sas_definition')
g.keyvault_command('list-deleted', 'get_deleted_sas_definitions')
g.keyvault_command('show-deleted', 'get_deleted_sas_definition')
g.keyvault_command('recover', 'recover_deleted_sas_definition')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-keyvault-2.2.2/azure/cli/command_modules/keyvault/custom.py new/azure-cli-keyvault-2.2.11/azure/cli/command_modules/keyvault/custom.py
--- old/azure-cli-keyvault-2.2.2/azure/cli/command_modules/keyvault/custom.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-keyvault-2.2.11/azure/cli/command_modules/keyvault/custom.py 2019-02-12 03:05:13.000000000 +0100
@@ -161,7 +161,7 @@
def _get_current_user_object_id(graph_client):
from msrestazure.azure_exceptions import CloudError
try:
- current_user = graph_client.objects.get_current_user()
+ current_user = graph_client.signed_in_user.get()
if current_user and current_user.object_id: # pylint:disable=no-member
return current_user.object_id # pylint:disable=no-member
except CloudError:
@@ -621,14 +621,15 @@
return codecs.decode(h, 'hex')
def _private_rsa_key_to_jwk(rsa_key, jwk):
- jwk.n = _int_to_bytes(rsa_key.private_numbers().public_numbers.n)
- jwk.e = _int_to_bytes(rsa_key.private_numbers().public_numbers.e)
- jwk.q = _int_to_bytes(rsa_key.private_numbers().q)
- jwk.p = _int_to_bytes(rsa_key.private_numbers().p)
- jwk.d = _int_to_bytes(rsa_key.private_numbers().d)
- jwk.dq = _int_to_bytes(rsa_key.private_numbers().dmql)
- jwk.dp = _int_to_bytes(rsa_key.private_numbers().dmpl)
- jwk.qi = _int_to_bytes(rsa_key.private_numbers().iqmp)
+ priv = rsa_key.private_numbers()
+ jwk.n = _int_to_bytes(priv.public_numbers.n)
+ jwk.e = _int_to_bytes(priv.public_numbers.e)
+ jwk.q = _int_to_bytes(priv.q)
+ jwk.p = _int_to_bytes(priv.p)
+ jwk.d = _int_to_bytes(priv.d)
+ jwk.dq = _int_to_bytes(priv.dmq1)
+ jwk.dp = _int_to_bytes(priv.dmp1)
+ jwk.qi = _int_to_bytes(priv.iqmp)
def _private_ec_key_to_jwk(ec_key, jwk):
supported_curves = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-keyvault-2.2.2/azure_cli_keyvault.egg-info/PKG-INFO new/azure-cli-keyvault-2.2.11/azure_cli_keyvault.egg-info/PKG-INFO
--- old/azure-cli-keyvault-2.2.2/azure_cli_keyvault.egg-info/PKG-INFO 2018-08-09 08:36:46.000000000 +0200
+++ new/azure-cli-keyvault-2.2.11/azure_cli_keyvault.egg-info/PKG-INFO 2019-02-12 03:05:39.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-keyvault
-Version: 2.2.2
+Version: 2.2.11
Summary: Microsoft Azure Command-Line Tools Keyvault Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -19,6 +19,41 @@
Release History
===============
+ 2.2.11
+ ++++++
+ * keyvault secret backup: Fixes issue where some users received an 'unexpected_keyword' error when using --id.
+
+ 2.2.10
+ ++++++
+ * Minor fixes
+
+ 2.2.9
+ +++++
+ * Minor fixes
+
+ 2.2.8
+ +++++
+ * Minor fixes
+
+ 2.2.7
+ +++++
+ * bug fix: do not drop legit exceptions
+
+ 2.2.6
+ +++++
+ * Minor changes
+
+ 2.2.5
+ +++++
+ * Minor changes
+
+ 2.2.4
+ +++++
+ * Restrict keyvault storage commmands to the latest API profile
+
+ 2.2.3
+ +++++
+ * Fixed Key Vault key import for RSA keys
2.2.2
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-keyvault-2.2.2/azure_cli_keyvault.egg-info/requires.txt new/azure-cli-keyvault-2.2.11/azure_cli_keyvault.egg-info/requires.txt
--- old/azure-cli-keyvault-2.2.2/azure_cli_keyvault.egg-info/requires.txt 2018-08-09 08:36:46.000000000 +0200
+++ new/azure-cli-keyvault-2.2.11/azure_cli_keyvault.egg-info/requires.txt 2019-02-12 03:05:39.000000000 +0100
@@ -1,5 +1,5 @@
azure-mgmt-keyvault==1.1.0
azure-keyvault==1.1.0
-azure-graphrbac==0.40.0
+azure-graphrbac==0.53.0
azure-cli-core
pyOpenSSL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-keyvault-2.2.2/setup.py new/azure-cli-keyvault-2.2.11/setup.py
--- old/azure-cli-keyvault-2.2.2/setup.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-keyvault-2.2.11/setup.py 2019-02-12 03:05:13.000000000 +0100
@@ -15,7 +15,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "2.2.2"
+VERSION = "2.2.11"
# The full list of classifiers is available at
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
@@ -36,7 +36,7 @@
DEPENDENCIES = [
'azure-mgmt-keyvault==1.1.0',
'azure-keyvault==1.1.0',
- 'azure-graphrbac==0.40.0',
+ 'azure-graphrbac==0.53.0',
'azure-cli-core',
'pyOpenSSL'
]
1
0
Hello community,
here is the log from the commit of package azure-cli-iotcentral for openSUSE:Factory checked in at 2019-05-22 11:00:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-iotcentral (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-iotcentral.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-iotcentral"
Wed May 22 11:00:31 2019 rev:1 rq:696842 version:0.1.6
Changes:
--------
New Changes file:
--- /dev/null 2019-05-02 15:18:01.516169518 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-iotcentral.new.5148/azure-cli-iotcentral.changes 2019-05-22 11:00:33.238726401 +0200
@@ -0,0 +1,5 @@
+-------------------------------------------------------------------
+Tue Apr 16 15:02:59 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Initial build
+ + Version 0.1.6
New:
----
LICENSE.txt
azure-cli-iotcentral-0.1.6.tar.gz
azure-cli-iotcentral.changes
azure-cli-iotcentral.spec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-iotcentral.spec ++++++
#
# spec file for package azure-cli-iotcentral
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: azure-cli-iotcentral
Version: 0.1.6
Release: 0
Summary: Microsoft Azure CLI 'iotcentral' Command Module
License: MIT
Group: System/Management
Url: https://github.com/Azure/azure-cli
Source: https://files.pythonhosted.org/packages/source/a/azure-cli-iotcentral/azure…
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
BuildRequires: fdupes
BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-nspkg
Requires: python3-azure-nspkg >= 3.0.0
Requires: azure-cli-core
Requires: python3-azure-mgmt-iotcentral >= 1.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
%description
Microsoft Azure CLI 'iotcentral' Command Module
This package is for the 'iotcentral' module.
i.e. 'az iotcentral'
%prep
%setup -q -n azure-cli-iotcentral-%{version}
%build
install -m 644 %{SOURCE1} %{_builddir}/azure-cli-iotcentral-%{version}
python3 setup.py build
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/__pycache__
%files
%defattr(-,root,root,-)
%doc HISTORY.rst README.rst
%license LICENSE.txt
%{python3_sitelib}/azure/cli/command_modules/iotcentral
%{python3_sitelib}/azure_cli_iotcentral-*.egg-info
%changelog
++++++ LICENSE.txt ++++++
The MIT License (MIT)
Copyright (c) 2016 Microsoft Corporation. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
1
0
Hello community,
here is the log from the commit of package azure-cli-iot for openSUSE:Factory checked in at 2019-05-22 11:00:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-iot (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-iot.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-iot"
Wed May 22 11:00:24 2019 rev:5 rq:696841 version:0.3.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-iot/azure-cli-iot.changes 2018-10-15 10:48:15.387081469 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-iot.new.5148/azure-cli-iot.changes 2019-05-22 11:00:28.242732200 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 15:00:42 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.3.6
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-iot-0.3.1.tar.gz
New:
----
azure-cli-iot-0.3.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-iot.spec ++++++
--- /var/tmp/diff_new_pack.4FeH9C/_old 2019-05-22 11:00:28.946731288 +0200
+++ /var/tmp/diff_new_pack.4FeH9C/_new 2019-05-22 11:00:28.946731288 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-iot
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-iot
-Version: 0.3.1
+Version: 0.3.6
Release: 0
Summary: Microsoft Azure CLI 'iot' Command Module
License: MIT
@@ -27,16 +27,15 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-mgmt-iothub >= 0.5.0
+Requires: python3-azure-mgmt-iothub >= 0.7.0
Requires: python3-azure-mgmt-iothubprovisioningservices >= 0.2.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-pyOpenSSL
Conflicts: azure-cli < 2.0.0
@@ -57,6 +56,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-iot-0.3.1.tar.gz -> azure-cli-iot-0.3.6.tar.gz ++++++
++++ 1642 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package azure-cli-interactive for openSUSE:Factory checked in at 2019-05-22 11:00:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-interactive (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-interactive.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-interactive"
Wed May 22 11:00:20 2019 rev:5 rq:696840 version:0.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-interactive/azure-cli-interactive.changes 2018-10-15 10:47:32.783126965 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-interactive.new.5148/azure-cli-interactive.changes 2019-05-22 11:00:23.378738499 +0200
@@ -1,0 +2,18 @@
+Tue Apr 16 14:59:43 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.4.1
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Refresh patches for new version
+ + aci_drop-compatible-releases-operator.patch
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-interactive-0.3.28.tar.gz
New:
----
azure-cli-interactive-0.4.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-interactive.spec ++++++
--- /var/tmp/diff_new_pack.lVKvS4/_old 2019-05-22 11:00:23.846737893 +0200
+++ /var/tmp/diff_new_pack.lVKvS4/_new 2019-05-22 11:00:23.850737888 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-interactive
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-interactive
-Version: 0.3.28
+Version: 0.4.1
Release: 0
Summary: Microsoft Azure CLI Interactive Shell
License: MIT
@@ -28,22 +28,15 @@
Patch1: aci_drop-compatible-releases-operator.patch
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
+BuildRequires: python3-prompt_toolkit
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-PyYAML < 4.0.0
-Requires: python3-PyYAML >= 3.13
-Requires: python3-applicationinsights < 1.0.0
-Requires: python3-applicationinsights >= 0.11.4
-Requires: python3-azure-nspkg
-Requires: python3-jmespath < 1.0.0
-Requires: python3-jmespath >= 0.9.3
-Requires: python3-six < 2.0.0
-Requires: python3-six >= 1.11.0
+Requires: python3-azure-nspkg >= 3.0.0
+Requires: python3-prompt_toolkit
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -64,6 +57,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ aci_drop-compatible-releases-operator.patch ++++++
--- /var/tmp/diff_new_pack.lVKvS4/_old 2019-05-22 11:00:23.882737847 +0200
+++ /var/tmp/diff_new_pack.lVKvS4/_new 2019-05-22 11:00:23.886737841 +0200
@@ -1,18 +1,12 @@
-diff -Nru azure-cli-interactive-0.3.28.orig/setup.py azure-cli-interactive-0.3.28/setup.py
---- azure-cli-interactive-0.3.28.orig/setup.py 2018-08-09 08:34:43.000000000 +0200
-+++ azure-cli-interactive-0.3.28/setup.py 2018-09-17 12:40:08.342895572 +0200
-@@ -33,10 +33,10 @@
+diff -Nru azure-cli-interactive-0.4.1.orig/setup.py azure-cli-interactive-0.4.1/setup.py
+--- azure-cli-interactive-0.4.1.orig/setup.py 2018-12-14 18:43:41.000000000 +0100
++++ azure-cli-interactive-0.4.1/setup.py 2019-02-25 12:30:21.178633229 +0100
+@@ -32,7 +32,7 @@
+
DEPENDENCIES = [
- 'applicationinsights~=0.11.4',
'azure-cli-core',
-- 'jmespath~=0.9.3',
-- 'prompt_toolkit~=1.0.15',
-- 'pyyaml~=3.13',
-- 'six~=1.11.0',
-+ 'jmespath>=0.9.3',
-+ 'prompt_toolkit>=1.0.15',
-+ 'pyyaml>=3.13',
-+ 'six>=1.11.0',
+- 'prompt_toolkit~=1.0.15'
++ 'prompt_toolkit>=1.0.15'
]
with open('README.rst', 'r', encoding='utf-8') as f:
++++++ azure-cli-interactive-0.3.28.tar.gz -> azure-cli-interactive-0.4.1.tar.gz ++++++
++++ 3383 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package azure-cli-find for openSUSE:Factory checked in at 2019-05-22 11:00:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-find (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-find.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-find"
Wed May 22 11:00:13 2019 rev:5 rq:696838 version:0.2.13
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-find/azure-cli-find.changes 2018-10-15 10:45:43.627243613 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-find.new.5148/azure-cli-find.changes 2019-05-22 11:00:13.910750761 +0200
@@ -1,0 +2,15 @@
+Tue Apr 16 14:53:37 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.2.13
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+
+-------------------------------------------------------------------
Old:
----
azure-cli-find-0.2.12.tar.gz
New:
----
azure-cli-find-0.2.13.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-find.spec ++++++
--- /var/tmp/diff_new_pack.E4UUQp/_old 2019-05-22 11:00:14.414750108 +0200
+++ /var/tmp/diff_new_pack.E4UUQp/_new 2019-05-22 11:00:14.418750103 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-find
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-find
-Version: 0.2.12
+Version: 0.2.13
Release: 0
Summary: Microsoft Azure CLI 'find' Command Module
License: MIT
@@ -27,15 +27,14 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
Requires: python3-Whoosh
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -55,6 +54,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-find-0.2.12.tar.gz -> azure-cli-find-0.2.13.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-find-0.2.12/HISTORY.rst new/azure-cli-find-0.2.13/HISTORY.rst
--- old/azure-cli-find-0.2.12/HISTORY.rst 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-find-0.2.13/HISTORY.rst 2018-12-20 01:55:19.000000000 +0100
@@ -3,6 +3,10 @@
Release History
===============
+0.2.13
+++++++
+* Minor fixes
+
0.2.12
++++++
* Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-find-0.2.12/PKG-INFO new/azure-cli-find-0.2.13/PKG-INFO
--- old/azure-cli-find-0.2.12/PKG-INFO 2018-07-14 01:41:48.000000000 +0200
+++ new/azure-cli-find-0.2.13/PKG-INFO 2018-12-20 01:55:46.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-find
-Version: 0.2.12
+Version: 0.2.13
Summary: Microsoft Azure Command-Line Tools Find Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -17,6 +17,10 @@
Release History
===============
+ 0.2.13
+ ++++++
+ * Minor fixes
+
0.2.12
++++++
* Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-find-0.2.12/azure/cli/command_modules/find/custom.py new/azure-cli-find-0.2.13/azure/cli/command_modules/find/custom.py
--- old/azure-cli-find-0.2.12/azure/cli/command_modules/find/custom.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-find-0.2.13/azure/cli/command_modules/find/custom.py 2018-12-20 01:55:19.000000000 +0100
@@ -76,7 +76,7 @@
print('`az {0}`'.format(hit['cmd_name']))
print_para('short_summary')
- if hit['long_summary']:
+ if hit.get('long_summary', None):
print_para('long_summary')
print('')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-find-0.2.12/azure_cli_find.egg-info/PKG-INFO new/azure-cli-find-0.2.13/azure_cli_find.egg-info/PKG-INFO
--- old/azure-cli-find-0.2.12/azure_cli_find.egg-info/PKG-INFO 2018-07-14 01:41:48.000000000 +0200
+++ new/azure-cli-find-0.2.13/azure_cli_find.egg-info/PKG-INFO 2018-12-20 01:55:46.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-find
-Version: 0.2.12
+Version: 0.2.13
Summary: Microsoft Azure Command-Line Tools Find Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -17,6 +17,10 @@
Release History
===============
+ 0.2.13
+ ++++++
+ * Minor fixes
+
0.2.12
++++++
* Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-find-0.2.12/setup.py new/azure-cli-find-0.2.13/setup.py
--- old/azure-cli-find-0.2.12/setup.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-find-0.2.13/setup.py 2018-12-20 01:55:19.000000000 +0100
@@ -15,7 +15,7 @@
cmdclass = {}
-VERSION = "0.2.12"
+VERSION = "0.2.13"
CLASSIFIERS = [
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
1
0
Hello community,
here is the log from the commit of package azure-cli-feedback for openSUSE:Factory checked in at 2019-05-22 11:00:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-feedback (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-feedback.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-feedback"
Wed May 22 11:00:09 2019 rev:5 rq:696836 version:2.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-feedback/azure-cli-feedback.changes 2018-10-15 10:44:37.435314408 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-feedback.new.5148/azure-cli-feedback.changes 2019-05-22 11:00:12.882752093 +0200
@@ -1,0 +2,15 @@
+Wed Apr 17 07:19:57 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.2.0
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+
+-------------------------------------------------------------------
Old:
----
azure-cli-feedback-2.1.4.tar.gz
New:
----
azure-cli-feedback-2.2.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-feedback.spec ++++++
--- /var/tmp/diff_new_pack.JEchYy/_old 2019-05-22 11:00:13.618751139 +0200
+++ /var/tmp/diff_new_pack.JEchYy/_new 2019-05-22 11:00:13.622751134 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-feedback
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-feedback
-Version: 2.1.4
+Version: 2.2.0
Release: 0
Summary: Microsoft Azure CLI 'feedback' Command Module
License: MIT
@@ -27,15 +27,14 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
Requires: python3-applicationinsights
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -55,6 +54,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-feedback-2.1.4.tar.gz -> azure-cli-feedback-2.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-feedback-2.1.4/HISTORY.rst new/azure-cli-feedback-2.2.0/HISTORY.rst
--- old/azure-cli-feedback-2.1.4/HISTORY.rst 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-feedback-2.2.0/HISTORY.rst 2019-04-05 00:46:52.000000000 +0200
@@ -3,6 +3,12 @@
Release History
===============
+2.2.0
++++++
+* `az feedback` now shows metadata on recently run commands
+* `az feedback` prompts user to assist in issue creation process. Opens browser to issue url and copies auto-generated issue
+ text containing command and system related information to clipboard. Prints out issue body when run with '--verbose'
+
2.1.4
+++++
* Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-feedback-2.1.4/PKG-INFO new/azure-cli-feedback-2.2.0/PKG-INFO
--- old/azure-cli-feedback-2.1.4/PKG-INFO 2018-07-14 01:41:55.000000000 +0200
+++ new/azure-cli-feedback-2.2.0/PKG-INFO 2019-04-05 00:47:37.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-feedback
-Version: 2.1.4
+Version: 2.2.0
Summary: Microsoft Azure Command-Line Tools Feedback Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,12 @@
Release History
===============
+ 2.2.0
+ +++++
+ * `az feedback` now shows metadata on recently run commands
+ * `az feedback` prompts user to assist in issue creation process. Opens browser to issue url and copies auto-generated issue
+ text containing command and system related information to clipboard. Prints out issue body when run with '--verbose'
+
2.1.4
+++++
* Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-feedback-2.1.4/azure/cli/command_modules/feedback/custom.py new/azure-cli-feedback-2.2.0/azure/cli/command_modules/feedback/custom.py
--- old/azure-cli-feedback-2.1.4/azure/cli/command_modules/feedback/custom.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-feedback-2.2.0/azure/cli/command_modules/feedback/custom.py 2019-04-05 00:46:52.000000000 +0200
@@ -4,61 +4,552 @@
# --------------------------------------------------------------------------------------------
from __future__ import print_function
-import sys
+import os
+import math
+import platform
+import datetime
+
+try:
+ from urllib.parse import urlencode # python 3
+except ImportError:
+ from urllib import urlencode # python 2
+
+from collections import namedtuple
from knack.log import get_logger
from knack.prompting import prompt, NoTTYException
from knack.util import CLIError
-from azure.cli.core.util import COMPONENT_PREFIX, get_installed_cli_distributions
-from azure.cli.core.telemetry import set_feedback
+from azure.cli.core.util import get_az_version_string
+from azure.cli.core.azlogging import _UNKNOWN_COMMAND, _CMD_LOG_LINE_PREFIX
+from azure.cli.core.util import open_page_in_browser
+import pyperclip
+
+_ONE_MIN_IN_SECS = 60
+
+_ONE_HR_IN_SECS = 3600
+
logger = get_logger(__name__)
-MSG_RATE = '\nHow likely is it you would recommend our Azure CLI to a friend or colleague? [0 to 10]: '
-MSG_INTR = 'We appreciate your feedback! This survey is only two questions and should take less than a minute.'
-MSG_BAD = '\nWhat changes would we have to make for you to give us a higher rating? '
-MSG_GOOD = '\nWhat do we do really well? '
-MSG_EMIL = '\nIf you would like to join our insiders program and receive tips, tricks, and early access to new ' \
- 'features, let us know by leaving your email address (leave blank to skip): '
-MSG_THNK = '\nThanks for your feedback!'
+_MSG_THNK = 'Thanks for your feedback!'
+
+_GET_STARTED_URL = "aka.ms/azcli/get-started"
+_QUESTIONS_URL = "aka.ms/azcli/questions"
+_CLI_ISSUES_URL = "aka.ms/azcli/issues"
+_EXTENSIONS_ISSUES_URL = "aka.ms/azcli/ext/issues"
+
+_MSG_INTR = \
+ '\nWe appreciate your feedback!\n\n' \
+ 'For more information on getting started, visit: {}\n' \
+ 'If you have questions, visit our Stack Overflow page: {}\n'\
+ .format(_GET_STARTED_URL, _QUESTIONS_URL)
+
+_MSG_CMD_ISSUE = "\nEnter the number of the command you would like to create an issue for. Enter q to quit: "
+
+_MSG_ISSUE = "Would you like to create an issue? Enter Y or N: "
+
+_ISSUES_TEMPLATE_PREFIX = """
+
+BEGIN TEMPLATE
+===============
+**A browser has been opened to {} to create an issue.**
+**The issue template has been copied to your clipboard. You can also run `az feedback --verbose` to emit the output to stdout.**
+"""
+
+_ISSUES_TEMPLATE = """
+
+### **This is an autogenerated template. Please review and update as needed.**
+
+## Describe the bug
+
+**Command Name**
+`{command_name}`
+
+**Errors:**
+{errors_string}
+
+## To Reproduce:
+Steps to reproduce the behavior. Note: Command arguments have been redacted.
+
+- `Fill in additional info here`
+- `Run: {executed_command}`
+
+## Expected Behavior
+
+A clear and concise description of what you expected to happen.
+
+## Environment Summary
+```
+{platform}
+{python_info}
+{shell}
+
+{cli_version}
+```
+## Additional Context
+Add any other context about the problem here.
+
+<!-- Please do not remove these markdown comments -->
+{auto_gen_comment}
+
+"""
+
+_AUTO_GEN_COMMENT = "<!--auto-generated-->"
+
+_LogMetadataType = namedtuple('LogMetadata', ['cmd', 'seconds_ago', 'file_path', 'p_id'])
+
+
+class CommandLogFile(object):
+ _LogRecordType = namedtuple("LogRecord", ["p_id", "date_time", "level", "logger", "log_msg"])
+ UNKNOWN_CMD = "Unknown"
+
+ def __init__(self, log_file_path, time_now=None):
+
+ if (time_now is not None) and (not isinstance(time_now, datetime.datetime)):
+ raise TypeError("Expected type {} for time_now, instead received {}.".format(datetime.datetime, type(time_now))) # pylint: disable=line-too-long
+
+ if not os.path.isfile(log_file_path):
+ raise ValueError("File {} is not an existing file.".format(log_file_path))
+
+ self._command_name = None
+ self._log_file_path = log_file_path
+
+ if time_now is None:
+ self._time_now = datetime.datetime.now()
+ else:
+ self._time_now = time_now
+
+ self._metadata = self._get_command_metadata_from_file()
+ self._data = None
+
+ @property
+ def metadata_tup(self):
+ return self._metadata
+
+ @property
+ def command_data_dict(self):
+ if not self._data:
+ self._data = self._get_command_data_from_metadata()
+ return self._data
+ def get_command_name_str(self):
+ if self._command_name is not None:
+ return self._command_name # attempt to return cached command name
+
+ if not self.metadata_tup:
+ return ""
+
+ args = self.command_data_dict.get("command_args", "")
+
+ if self.metadata_tup.cmd != self.UNKNOWN_CMD:
+ self._command_name = self.metadata_tup.cmd
+
+ if "-h" in args or "--help" in args:
+ self._command_name += " --help"
+ else:
+ self._command_name = self.UNKNOWN_CMD
+ if args:
+ command_args = args if len(args) < 16 else args[:11] + " ..."
+ command_args = command_args.replace("=", "").replace("{", "").replace("}", "")
+ self._command_name = "{} ({}) ".format(self._command_name, command_args)
+
+ return self._command_name
+
+ def get_command_status(self):
+ if not self.command_data_dict:
+ return ""
+
+ was_successful = self.command_data_dict.get("success", None)
+ if was_successful is None:
+ success_msg = "RUNNING"
+ else:
+ success_msg = "SUCCESS" if was_successful else "FAILURE"
+ return success_msg
+
+ def get_command_time_str(self):
+ if not self.metadata_tup:
+ return ""
+
+ total_seconds = self.metadata_tup.seconds_ago
+
+ time_delta = datetime.timedelta(seconds=total_seconds)
+ logger.debug("%s time_delta", time_delta)
+
+ if time_delta.days > 0:
+ time_str = "Ran: {} days ago".format(time_delta.days)
+ elif total_seconds > _ONE_HR_IN_SECS:
+ hrs, secs = divmod(total_seconds, _ONE_HR_IN_SECS)
+ logger.debug("%s hrs, %s secs", hrs, secs)
+ hrs = int(hrs)
+ mins = math.floor(secs / _ONE_MIN_IN_SECS)
+ time_str = "Ran: {} hrs {:02} mins ago".format(hrs, mins)
+ elif total_seconds > _ONE_MIN_IN_SECS:
+ time_str = "Ran: {} mins ago".format(math.floor(total_seconds / _ONE_MIN_IN_SECS))
+ else:
+ time_str = "Ran: {} secs ago".format(math.floor(total_seconds))
+
+ return time_str
+
+ def _get_command_metadata_from_file(self):
+ if not self._log_file_path:
+ return None
+
+ time_now = datetime.datetime.now() if not self._time_now else self._time_now
-def _prompt_net_promoter_score():
- score = -1
- help_string = 'Please rate between 0 and 10'
- while score < 0 or score > 10:
try:
- score = int(prompt(MSG_RATE, help_string=help_string))
- except ValueError:
- logger.warning(help_string)
+ _, file_name = os.path.split(self._log_file_path)
+ poss_date, poss_time, poss_command, poss_pid, _ = file_name.split(".")
+ date_time_stamp = datetime.datetime.strptime("{}-{}".format(poss_date, poss_time), "%Y-%m-%d-%H-%M-%S")
+ command = "az " + poss_command.replace("_", " ") if poss_command != _UNKNOWN_COMMAND else self.UNKNOWN_CMD # pylint: disable=line-too-long
+ except ValueError as e:
+ logger.debug("Could not load metadata from file name %s.", self._log_file_path)
+ logger.debug(e)
+ return None
+
+ difference = time_now - date_time_stamp
+
+ total_seconds = difference.total_seconds()
+
+ return _LogMetadataType(cmd=command, seconds_ago=total_seconds, file_path=self._log_file_path, p_id=int(poss_pid)) # pylint: disable=line-too-long
+
+ def _get_command_data_from_metadata(self): # pylint: disable=too-many-statements
+ def _get_log_record_list(log_fp, p_id):
+ """
+ Get list of records / messages in the log file
+ :param log_fp: log file object
+ :param p_id: process id of command
+ :return:
+ """
+ prev_record = None
+ log_record_list = []
+ for line in log_fp:
+ # attempt to extract log data
+ log_record = CommandLogFile._get_info_from_log_line(line, p_id)
+
+ if log_record: # if new record parsed, add old record to the list
+ if prev_record:
+ log_record_list.append(prev_record)
+ prev_record = log_record
+ elif prev_record: # otherwise this is a continuation of a log record, add to prev record
+ new_log_msg = prev_record.log_msg + line
+ prev_record = CommandLogFile._LogRecordType(p_id=prev_record.p_id, date_time=prev_record.date_time,
+ # pylint: disable=line-too-long
+ level=prev_record.level, logger=prev_record.logger,
+ log_msg=new_log_msg)
+ if prev_record:
+ log_record_list.append(prev_record)
+ return log_record_list
+
+ if not self.metadata_tup:
+ return {}
- return score
+ _EXT_NAME_PREFIX = "extension name:"
+ _EXT_VERS_PREFIX = "extension version:"
+ file_name = self.metadata_tup.file_path
+ p_id = self.metadata_tup.p_id
+
+ try:
+ with open(file_name, 'r') as log_fp:
+ log_record_list = _get_log_record_list(log_fp, p_id)
+ except IOError:
+ logger.debug("Failed to open command log file %s", file_name)
+ return {}
+
+ if not log_record_list:
+ logger.debug("No command log messages found in file %s", file_name)
+ return {}
+
+ log_data = {}
+ # 1. Figure out whether the command was successful or not. Last log record should be the exit code
+ try:
+ status_msg = log_record_list[-1].log_msg.strip()
+ if status_msg.startswith("exit code"):
+ idx = status_msg.index(":") # raises ValueError
+ exit_code = int(log_record_list[-1].log_msg[idx + 1:].strip())
+ log_data["success"] = True if not exit_code else False
+ except (IndexError, ValueError):
+ logger.debug("Couldn't extract exit code from command log %s.", file_name)
+
+ # 2. If there are any errors, this is a failed command. Log the errors
+ # 3. Also get extension information.
+ for record in log_record_list:
+ errors = log_data.setdefault("errors", []) # log_data["errors"]
+ if record.level.lower() == "error":
+ log_data["success"] = False
+ errors.append(record.log_msg)
+
+ poss_ext_msg = record.log_msg.strip()
+ if record.level.lower() == "info":
+ if poss_ext_msg.startswith(_EXT_NAME_PREFIX):
+ log_data["extension_name"] = poss_ext_msg[len(_EXT_NAME_PREFIX):].strip()
+ elif poss_ext_msg.startswith(_EXT_VERS_PREFIX):
+ log_data["extension_version"] = poss_ext_msg[len(_EXT_VERS_PREFIX):].strip()
+
+ # 4. Get command args string. from first record
+ try:
+ command_args_msg = log_record_list[0].log_msg.strip()
+ if command_args_msg.lower().startswith("command args:"):
+ idx = command_args_msg.index(":")
+ log_data["command_args"] = command_args_msg[idx + 1:].strip()
+ else:
+ raise ValueError
+ except (IndexError, ValueError):
+ logger.debug("Couldn't get command args from command log %s.", file_name)
+
+ return log_data
+
+ @staticmethod
+ def _get_info_from_log_line(line, p_id):
+ """
+
+ Extract log line information based on the following command log format in azlogging.py
+
+ lfmt = logging.Formatter('%(process)d | %(created)s | %(levelname)s | %(name)s | %(message)s')
+
+ :param line: the line from the log file.
+ :return: returned parsed line information or None
+ """
+
+ if not line.startswith(_CMD_LOG_LINE_PREFIX):
+ return None
+
+ line = line[len(_CMD_LOG_LINE_PREFIX):]
+ parts = line.split("|", 4)
+
+ if len(parts) != 5: # there must be 5 items
+ return None
+
+ for i, part in enumerate(parts):
+ parts[i] = part.strip()
+ if i == 0:
+ parts[0] = int(parts[0])
+ if parts[0] != p_id: # ensure that this is indeed a valid log.
+ return None
+
+ return CommandLogFile._LogRecordType(*parts)
+
+
+def _build_issue_info_tup(command_log_file=None):
+ def _get_parent_proc_name():
+ import psutil
+ parent = psutil.Process(os.getpid()).parent()
+ if parent:
+ # powershell.exe launches cmd.exe to launch the cli.
+ grandparent = parent.parent()
+ if grandparent and grandparent.name().lower().startswith("powershell"):
+ return grandparent.name()
+ # if powershell is not the grandparent, simply return the parent's name.
+ return parent.name()
+ return None
+
+ format_dict = {"command_name": "", "errors_string": "",
+ "executed_command": ""}
+
+ is_ext = False
+ # Get command information, if applicable
+ if command_log_file:
+ command_name = command_log_file.metadata_tup.cmd
+ format_dict["command_name"] = command_name
+
+ if command_log_file.command_data_dict:
+ errors = "\n".join(command_log_file.command_data_dict.get("errors", []))
+ executed_command = command_log_file.command_data_dict.get("command_args", "")
+ extension_name = command_log_file.command_data_dict.get("extension_name", "")
+ extension_version = command_log_file.command_data_dict.get("extension_version", "")
+
+ extension_info = ""
+ if extension_name:
+ extension_info = "\nExtension Name: {}. Version: {}.".format(extension_name, extension_version)
+ is_ext = True
+
+ if errors:
+ num_lines = errors.count("\n")
+ reaction = ":confused:"
+ if num_lines >= 100:
+ reaction = ":expressionless:"
+ elif num_lines >= 15:
+ reaction = ":open_mouth:"
+ errors = "\n{}\n\n```{}```".format(reaction, errors)
+
+ format_dict["errors_string"] = errors
+ format_dict["executed_command"] = "az " + executed_command if executed_command else executed_command
+ format_dict["command_name"] += extension_info
+
+ # Get other system information
+ format_dict["cli_version"] = _get_az_version_summary()
+ format_dict["python_info"] = "Python {}".format(platform.python_version())
+ format_dict["platform"] = "{}".format(platform.platform())
+ format_dict["shell"] = "Shell: {}".format(_get_parent_proc_name())
+ format_dict["auto_gen_comment"] = _AUTO_GEN_COMMENT
+
+ issues_url = _EXTENSIONS_ISSUES_URL if is_ext else _CLI_ISSUES_URL
+
+ # prefix formatted url with 'https://' if necessary and supply empty body to remove any existing issue template
+ formatted_issues_url = issues_url
+ if not formatted_issues_url.startswith("http"):
+ formatted_issues_url = "https://" + formatted_issues_url
+ new_placeholder = urlencode({'body': "The issue has been copied to your clipboard. Paste it here!"
+ "\nTo print out the issue body locally, run `az feedback --verbose`"})
+ formatted_issues_url = "{}?{}".format(formatted_issues_url, new_placeholder)
+
+ return _ISSUES_TEMPLATE_PREFIX.format(issues_url), _ISSUES_TEMPLATE.format(**format_dict), formatted_issues_url
+
+
+def _get_az_version_summary():
+ """
+ This depends on get_az_version_string not being changed, add some tests to make this and other methods more robust.
+ :return: az version info
+ """
+ az_vers_string = get_az_version_string()[0]
+
+ lines = az_vers_string.splitlines()
+
+ new_lines = []
+ ext_line = -1
+ legal_line = -1
+ for i, line in enumerate(lines):
+ if line.startswith("azure-cli"):
+ new_lines.append(line)
+ if line.lower().startswith("extensions:"):
+ ext_line = i
+ continue
+ l_lower = line.lower()
+ if all(["legal" in l_lower, "docs" in l_lower, "info" in l_lower]):
+ legal_line = i
+ break
+
+ new_lines.append("")
+
+ if 0 < ext_line < legal_line:
+ for i in range(ext_line, legal_line):
+ new_lines.append(lines[i])
+
+ return "\n".join(new_lines)
+
+
+def _get_command_log_files(cli_ctx, time_now=None):
+ command_logs_dir = cli_ctx.logging.get_command_log_dir()
+ files = os.listdir(command_logs_dir)
+ files = (file_name for file_name in files if file_name.endswith(".log"))
+ files = sorted(files)
+ command_log_files = []
+ for file_name in files:
+ file_path = os.path.join(command_logs_dir, file_name)
+ cmd_log_file = CommandLogFile(file_path, time_now)
+
+ if cmd_log_file.metadata_tup:
+ command_log_files.append(cmd_log_file)
+ else:
+ logger.debug("%s is an invalid command log file.", file_path)
+ return command_log_files
+
+
+def _display_recent_commands(cmd):
+ def _pad_string(my_str, pad_len):
+ while len(my_str) < pad_len:
+ my_str += " "
+ return my_str
+
+ time_now = datetime.datetime.now()
+
+ command_log_files = _get_command_log_files(cmd.cli_ctx, time_now)
+
+ # if no command log files, return
+ if not command_log_files:
+ return []
+
+ command_log_files = command_log_files[-9:]
+
+ max_len_dict = dict(name_len=0, success_len=0, time_len=0)
+
+ for log_file in command_log_files:
+ max_len_dict["name_len"] = max(len(log_file.get_command_name_str()), max_len_dict["name_len"])
+ max_len_dict["success_len"] = max(len(log_file.get_command_status()), max_len_dict["success_len"])
+ max_len_dict["time_len"] = max(len(log_file.get_command_time_str()), max_len_dict["time_len"])
+
+ print("Recent commands:\n")
+ command_log_files = [None] + command_log_files
+ for i, log_info in enumerate(command_log_files):
+ if log_info is None:
+ print(" [{}] {}".format(i, "create a generic issue."))
+ else:
+ cmd_name = _pad_string(log_info.get_command_name_str(), max_len_dict["name_len"])
+ success_msg = _pad_string(log_info.get_command_status() + ".", max_len_dict["success_len"] + 1)
+ time_msg = _pad_string(log_info.get_command_time_str() + ".", max_len_dict["time_len"] + 1)
+ print(" [{}] {}: {} {}".format(i, cmd_name, success_msg, time_msg))
+
+ return command_log_files
+
+
+def _prompt_issue(recent_command_list):
+ if recent_command_list:
+ max_idx = len(recent_command_list) - 1
+ ans = -1
+ help_string = 'Please choose between 0 and {}, or enter q to quit: '.format(max_idx)
+
+ while ans < 0 or ans > max_idx:
+ try:
+ ans = prompt(_MSG_CMD_ISSUE.format(max_idx), help_string=help_string)
+ if ans.lower() in ["q", "quit"]:
+ ans = ans.lower()
+ break
+ ans = int(ans)
+ except ValueError:
+ logger.warning(help_string)
+ ans = -1
+
+ else:
+ ans = None
+ help_string = 'Please choose between Y and N: '
+
+ while not ans:
+ ans = prompt(_MSG_ISSUE, help_string=help_string)
+ if ans.lower() not in ["y", "n", "yes", "no", "q"]:
+ ans = None
+ continue
+
+ # strip to short form
+ ans = ans[0].lower() if ans else None
+
+ if ans in ["y", "n"]:
+ if ans == "y":
+ prefix, body, url = _build_issue_info_tup()
+ else:
+ return False
+ else:
+ if ans in ["q", "quit"]:
+ return False
+ if ans == 0:
+ prefix, body, url = _build_issue_info_tup()
+ else:
+ prefix, body, url = _build_issue_info_tup(recent_command_list[ans])
+
+ print(prefix)
+
+ # open issues page in browser and copy issue body to clipboard
+ try:
+ pyperclip.copy(body)
+ except pyperclip.PyperclipException as ex:
+ logger.debug(ex)
-def _get_version_info():
- installed_dists = get_installed_cli_distributions()
+ logger.info(body)
+ open_page_in_browser(url)
- component_version_info = sorted([{'name': dist.key.replace(COMPONENT_PREFIX, ''),
- 'version': dist.version}
- for dist in installed_dists
- if dist.key.startswith(COMPONENT_PREFIX)],
- key=lambda x: x['name'])
- return str(component_version_info), sys.version
+ return True
-def handle_feedback():
+def handle_feedback(cmd):
try:
- print(MSG_INTR)
- score = _prompt_net_promoter_score()
- if score == 10:
- suggestion = prompt(MSG_GOOD)
- else:
- suggestion = prompt(MSG_BAD)
- email_address = prompt(MSG_EMIL)
- set_feedback('[{}]{}[{}]'.format(score, suggestion, email_address))
- print(MSG_THNK)
+ print(_MSG_INTR)
+ recent_commands = _display_recent_commands(cmd)
+ res = _prompt_issue(recent_commands)
+
+ if res:
+ print(_MSG_THNK)
+ return
except NoTTYException:
- raise CLIError('This command is interactive and no tty available.')
+ raise CLIError('This command is interactive, however no tty is available.')
except (EOFError, KeyboardInterrupt):
print()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-feedback-2.1.4/azure_cli_feedback.egg-info/PKG-INFO new/azure-cli-feedback-2.2.0/azure_cli_feedback.egg-info/PKG-INFO
--- old/azure-cli-feedback-2.1.4/azure_cli_feedback.egg-info/PKG-INFO 2018-07-14 01:41:55.000000000 +0200
+++ new/azure-cli-feedback-2.2.0/azure_cli_feedback.egg-info/PKG-INFO 2019-04-05 00:47:37.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-feedback
-Version: 2.1.4
+Version: 2.2.0
Summary: Microsoft Azure Command-Line Tools Feedback Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,12 @@
Release History
===============
+ 2.2.0
+ +++++
+ * `az feedback` now shows metadata on recently run commands
+ * `az feedback` prompts user to assist in issue creation process. Opens browser to issue url and copies auto-generated issue
+ text containing command and system related information to clipboard. Prints out issue body when run with '--verbose'
+
2.1.4
+++++
* Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-feedback-2.1.4/azure_cli_feedback.egg-info/requires.txt new/azure-cli-feedback-2.2.0/azure_cli_feedback.egg-info/requires.txt
--- old/azure-cli-feedback-2.1.4/azure_cli_feedback.egg-info/requires.txt 2018-07-14 01:41:55.000000000 +0200
+++ new/azure-cli-feedback-2.2.0/azure_cli_feedback.egg-info/requires.txt 2019-04-05 00:47:37.000000000 +0200
@@ -1,2 +1 @@
-applicationinsights
azure-cli-core
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-feedback-2.1.4/setup.py new/azure-cli-feedback-2.2.0/setup.py
--- old/azure-cli-feedback-2.1.4/setup.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-feedback-2.2.0/setup.py 2019-04-05 00:46:52.000000000 +0200
@@ -15,7 +15,7 @@
cmdclass = {}
-VERSION = "2.1.4"
+VERSION = "2.2.0"
CLASSIFIERS = [
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
@@ -31,7 +31,6 @@
]
DEPENDENCIES = [
- 'applicationinsights',
'azure-cli-core',
]
1
0
Hello community,
here is the log from the commit of package azure-cli-extension for openSUSE:Factory checked in at 2019-05-22 11:00:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-extension (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-extension.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-extension"
Wed May 22 11:00:05 2019 rev:5 rq:696835 version:0.2.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-extension/azure-cli-extension.changes 2018-10-15 10:48:06.691090754 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-extension.new.5148/azure-cli-extension.changes 2019-05-22 11:00:08.126758252 +0200
@@ -1,0 +2,15 @@
+Tue Apr 16 14:46:24 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.2.3
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+
+-------------------------------------------------------------------
Old:
----
azure-cli-extension-0.2.1.tar.gz
New:
----
azure-cli-extension-0.2.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-extension.spec ++++++
--- /var/tmp/diff_new_pack.iFoYzu/_old 2019-05-22 11:00:09.842756030 +0200
+++ /var/tmp/diff_new_pack.iFoYzu/_new 2019-05-22 11:00:09.882755978 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-extension
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-extension
-Version: 0.2.1
+Version: 0.2.3
Release: 0
Summary: Microsoft Azure CLI 'extension' Command Module
License: MIT
@@ -27,14 +27,13 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-pip
Requires: python3-wheel >= 0.30.0
Conflicts: azure-cli < 2.0.0
@@ -56,6 +55,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-extension-0.2.1.tar.gz -> azure-cli-extension-0.2.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-extension-0.2.1/HISTORY.rst new/azure-cli-extension-0.2.3/HISTORY.rst
--- old/azure-cli-extension-0.2.1/HISTORY.rst 2018-07-26 19:30:50.000000000 +0200
+++ new/azure-cli-extension-0.2.3/HISTORY.rst 2018-11-01 23:22:37.000000000 +0100
@@ -3,6 +3,14 @@
Release History
===============
+0.2.3
++++++
+* Minor fixes.
+
+0.2.2
++++++
+* Attempting to add an extension that is already installed will not raise an exception.
+
0.2.1
+++++
* Fix index url failing requests.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-extension-0.2.1/PKG-INFO new/azure-cli-extension-0.2.3/PKG-INFO
--- old/azure-cli-extension-0.2.1/PKG-INFO 2018-07-26 19:31:58.000000000 +0200
+++ new/azure-cli-extension-0.2.3/PKG-INFO 2018-11-01 23:22:54.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-extension
-Version: 0.2.1
+Version: 0.2.3
Summary: Microsoft Azure Command-Line Tools Extension Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,14 @@
Release History
===============
+ 0.2.3
+ +++++
+ * Minor fixes.
+
+ 0.2.2
+ +++++
+ * Attempting to add an extension that is already installed will not raise an exception.
+
0.2.1
+++++
* Fix index url failing requests.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-extension-0.2.1/azure/cli/command_modules/extension/_completers.py new/azure-cli-extension-0.2.3/azure/cli/command_modules/extension/_completers.py
--- old/azure-cli-extension-0.2.1/azure/cli/command_modules/extension/_completers.py 2018-07-26 19:30:50.000000000 +0200
+++ new/azure-cli-extension-0.2.3/azure/cli/command_modules/extension/_completers.py 2018-11-01 23:22:37.000000000 +0100
@@ -6,7 +6,7 @@
from azure.cli.core.decorators import Completer
from azure.cli.core.extension import get_extension_names
-from azure.cli.command_modules.extension.custom import get_index_extensions
+from azure.cli.core.extension.operations import get_index_extensions
@Completer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-extension-0.2.1/azure/cli/command_modules/extension/_homebrew_patch.py new/azure-cli-extension-0.2.3/azure/cli/command_modules/extension/_homebrew_patch.py
--- old/azure-cli-extension-0.2.1/azure/cli/command_modules/extension/_homebrew_patch.py 2018-07-26 19:30:50.000000000 +0200
+++ new/azure-cli-extension-0.2.3/azure/cli/command_modules/extension/_homebrew_patch.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,50 +0,0 @@
-# --------------------------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for license information.
-# --------------------------------------------------------------------------------------------
-import os
-import sys
-
-from knack.log import get_logger
-
-logger = get_logger(__name__)
-
-
-HOMEBREW_CELLAR_PATH = '/usr/local/Cellar/azure-cli/'
-
-
-def is_homebrew():
- return any((p.startswith(HOMEBREW_CELLAR_PATH) for p in sys.path))
-
-
-# A workaround for https://github.com/Azure/azure-cli/issues/4428
-class HomebrewPipPatch(object): # pylint: disable=too-few-public-methods
-
- CFG_FILE = os.path.expanduser(os.path.join('~', '.pydistutils.cfg'))
-
- def __init__(self):
- self.our_cfg_file = False
-
- def __enter__(self):
- if not is_homebrew():
- return
- if os.path.isfile(HomebrewPipPatch.CFG_FILE):
- logger.debug("Homebrew patch: The file %s already exists and we will not overwrite it. "
- "If extension installation fails, temporarily rename this file and try again.",
- HomebrewPipPatch.CFG_FILE)
- logger.warning("Unable to apply Homebrew patch for extension installation. "
- "Attempting to continue anyway...")
- self.our_cfg_file = False
- else:
- logger.debug("Homebrew patch: Temporarily creating %s to support extension installation on Homebrew.",
- HomebrewPipPatch.CFG_FILE)
- with open(HomebrewPipPatch.CFG_FILE, "w") as f:
- f.write("[install]\nprefix=")
- self.our_cfg_file = True
-
- def __exit__(self, exc_type, exc_value, tb):
- if not is_homebrew():
- return
- if self.our_cfg_file and os.path.isfile(HomebrewPipPatch.CFG_FILE):
- logger.debug("Homebrew patch: Deleting the temporarily created %s", HomebrewPipPatch.CFG_FILE)
- os.remove(HomebrewPipPatch.CFG_FILE)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-extension-0.2.1/azure/cli/command_modules/extension/_index.py new/azure-cli-extension-0.2.3/azure/cli/command_modules/extension/_index.py
--- old/azure-cli-extension-0.2.1/azure/cli/command_modules/extension/_index.py 2018-07-26 19:30:50.000000000 +0200
+++ new/azure-cli-extension-0.2.3/azure/cli/command_modules/extension/_index.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,53 +0,0 @@
-# --------------------------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for license information.
-# --------------------------------------------------------------------------------------------
-import requests
-
-from knack.log import get_logger
-from knack.util import CLIError
-
-logger = get_logger(__name__)
-
-DEFAULT_INDEX_URL = "https://aka.ms/azure-cli-extension-index-v1"
-
-ERR_TMPL_EXT_INDEX = 'Unable to get extension index.\n'
-ERR_TMPL_NON_200 = '{}Server returned status code {{}} for {{}}'.format(ERR_TMPL_EXT_INDEX)
-ERR_TMPL_NO_NETWORK = '{}Please ensure you have network connection. Error detail: {{}}'.format(ERR_TMPL_EXT_INDEX)
-ERR_TMPL_BAD_JSON = '{}Response body does not contain valid json. Error detail: {{}}'.format(ERR_TMPL_EXT_INDEX)
-
-ERR_UNABLE_TO_GET_EXTENSIONS = 'Unable to get extensions from index. Improper index format.'
-TRIES = 3
-
-
-# pylint: disable=inconsistent-return-statements
-def get_index(index_url=None):
- from azure.cli.core.util import should_disable_connection_verify
- index_url = index_url or DEFAULT_INDEX_URL
-
- for try_number in range(TRIES):
- try:
- response = requests.get(index_url, verify=(not should_disable_connection_verify()))
- if response.status_code == 200:
- return response.json()
- msg = ERR_TMPL_NON_200.format(response.status_code, index_url)
- raise CLIError(msg)
- except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err:
- msg = ERR_TMPL_NO_NETWORK.format(str(err))
- raise CLIError(msg)
- except ValueError as err:
- # Indicates that url is not redirecting properly to intended index url, we stop retrying after TRIES calls
- if try_number == TRIES - 1:
- msg = ERR_TMPL_BAD_JSON.format(str(err))
- raise CLIError(msg)
- import time
- time.sleep(0.5)
- continue
-
-
-def get_index_extensions(index_url=None):
- index = get_index(index_url=index_url)
- extensions = index.get('extensions')
- if extensions is None:
- logger.warning(ERR_UNABLE_TO_GET_EXTENSIONS)
- return extensions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-extension-0.2.1/azure/cli/command_modules/extension/_resolve.py new/azure-cli-extension-0.2.3/azure/cli/command_modules/extension/_resolve.py
--- old/azure-cli-extension-0.2.1/azure/cli/command_modules/extension/_resolve.py 2018-07-26 19:30:50.000000000 +0200
+++ new/azure-cli-extension-0.2.3/azure/cli/command_modules/extension/_resolve.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,78 +0,0 @@
-# --------------------------------------------------------------------------------------------
-# Copyright (c) Microsoft Corporation. All rights reserved.
-# Licensed under the MIT License. See License.txt in the project root for license information.
-# --------------------------------------------------------------------------------------------
-from wheel.install import WHEEL_INFO_RE
-from pkg_resources import parse_version
-
-from knack.log import get_logger
-
-from azure.cli.core.extension import ext_compat_with_cli
-
-from azure.cli.command_modules.extension._index import get_index_extensions
-
-
-logger = get_logger(__name__)
-
-
-class NoExtensionCandidatesError(Exception):
- pass
-
-
-def _is_not_platform_specific(item):
- parsed_filename = WHEEL_INFO_RE(item['filename'])
- p = parsed_filename.groupdict()
- if p.get('pyver') == 'py2.py3' and p.get('abi') == 'none' and p.get('plat') == 'any':
- return True
- logger.debug("Skipping '%s' as not universal wheel."
- "We do not currently support platform specific extension detection. "
- "They can be installed with the full URL %s", item['filename'], item.get('downloadUrl'))
- return False
-
-
-def _is_compatible_with_cli_version(item):
- is_compatible, cli_core_version, min_required, max_required = ext_compat_with_cli(item['metadata'])
- if is_compatible:
- return True
- logger.debug("Skipping '%s' as not compatible with this version of the CLI. "
- "Extension compatibility result: is_compatible=%s cli_core_version=%s min_required=%s "
- "max_required=%s", item['filename'], is_compatible, cli_core_version, min_required, max_required)
- return False
-
-
-def _is_greater_than_cur_version(cur_version):
- if not cur_version:
- return None
- cur_version_parsed = parse_version(cur_version)
-
- def filter_func(item):
- item_version = parse_version(item['metadata']['version'])
- if item_version > cur_version_parsed:
- return True
- logger.debug("Skipping '%s' as %s not greater than current version %s", item['filename'],
- item_version, cur_version_parsed)
- return False
- return filter_func
-
-
-def resolve_from_index(extension_name, cur_version=None, index_url=None):
- candidates = get_index_extensions(index_url=index_url).get(extension_name, [])
- if not candidates:
- raise NoExtensionCandidatesError("No extension found with name '{}'".format(extension_name))
-
- filters = [_is_not_platform_specific, _is_compatible_with_cli_version, _is_greater_than_cur_version(cur_version)]
- for f in filters:
- logger.debug("Candidates %s", [c['filename'] for c in candidates])
- candidates = list(filter(f, candidates))
- if not candidates:
- raise NoExtensionCandidatesError("No suitable extensions found.")
-
- candidates_sorted = sorted(candidates, key=lambda c: parse_version(c['metadata']['version']), reverse=True)
- logger.debug("Candidates %s", [c['filename'] for c in candidates_sorted])
- logger.debug("Choosing the latest of the remaining candidates.")
- chosen = candidates_sorted[0]
- logger.debug("Chosen %s", chosen)
- download_url, digest = chosen.get('downloadUrl'), chosen.get('sha256Digest')
- if not download_url:
- raise NoExtensionCandidatesError("No download url found.")
- return download_url, digest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-extension-0.2.1/azure/cli/command_modules/extension/custom.py new/azure-cli-extension-0.2.3/azure/cli/command_modules/extension/custom.py
--- old/azure-cli-extension-0.2.1/azure/cli/command_modules/extension/custom.py 2018-07-26 19:30:50.000000000 +0200
+++ new/azure-cli-extension-0.2.3/azure/cli/command_modules/extension/custom.py 2018-11-01 23:22:37.000000000 +0100
@@ -2,346 +2,37 @@
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
-import sys
-import os
-import tempfile
-import shutil
-import zipfile
-import traceback
-import hashlib
-from subprocess import check_output, STDOUT, CalledProcessError
-from six.moves.urllib.parse import urlparse # pylint: disable=import-error
-from collections import OrderedDict
-
-import requests
-from wheel.install import WHEEL_INFO_RE
-from pkg_resources import parse_version
-
from knack.log import get_logger
-from azure.cli.core.util import CLIError
-from azure.cli.core.extension import (extension_exists, get_extension_path, get_extensions,
- get_extension, ext_compat_with_cli, EXT_METADATA_ISPREVIEW,
- WheelExtension, ExtensionNotInstalledException)
-from azure.cli.core.telemetry import set_extension_management_detail
-
-from ._homebrew_patch import HomebrewPipPatch
-from ._index import get_index_extensions
-from ._resolve import resolve_from_index, NoExtensionCandidatesError
+from azure.cli.core.extension.operations import (
+ add_extension, remove_extension, list_extensions, show_extension,
+ list_available_extensions, update_extension)
logger = get_logger(__name__)
-OUT_KEY_NAME = 'name'
-OUT_KEY_VERSION = 'version'
-OUT_KEY_TYPE = 'extensionType'
-OUT_KEY_METADATA = 'metadata'
-
-IS_WINDOWS = sys.platform.lower() in ['windows', 'win32']
-LIST_FILE_PATH = os.path.join(os.sep, 'etc', 'apt', 'sources.list.d', 'azure-cli.list')
-LSB_RELEASE_FILE = os.path.join(os.sep, 'etc', 'lsb-release')
-
-
-def _run_pip(pip_exec_args):
- cmd = [sys.executable, '-m', 'pip'] + pip_exec_args + ['-vv', '--disable-pip-version-check', '--no-cache-dir']
- logger.debug('Running: %s', cmd)
- try:
- log_output = check_output(cmd, stderr=STDOUT, universal_newlines=True)
- logger.debug(log_output)
- returncode = 0
- except CalledProcessError as e:
- logger.debug(e.output)
- logger.debug(e)
- returncode = e.returncode
- return returncode
-
-
-def _whl_download_from_url(url_parse_result, ext_file):
- from azure.cli.core.util import should_disable_connection_verify
- url = url_parse_result.geturl()
- r = requests.get(url, stream=True, verify=(not should_disable_connection_verify()))
- if r.status_code != 200:
- raise CLIError("Request to {} failed with {}".format(url, r.status_code))
- with open(ext_file, 'wb') as f:
- for chunk in r.iter_content(chunk_size=1024):
- if chunk: # ignore keep-alive new chunks
- f.write(chunk)
-
-
-def _validate_whl_cli_compat(azext_metadata):
- is_compatible, cli_core_version, min_required, max_required = ext_compat_with_cli(azext_metadata)
- logger.debug("Extension compatibility result: is_compatible=%s cli_core_version=%s min_required=%s "
- "max_required=%s", is_compatible, cli_core_version, min_required, max_required)
- if not is_compatible:
- min_max_msg_fmt = "The extension is not compatible with this version of the CLI.\n" \
- "You have CLI core version {} and this extension " \
- "requires ".format(cli_core_version)
- if min_required and max_required:
- min_max_msg_fmt += 'a min of {} and max of {}.'.format(min_required, max_required)
- elif min_required:
- min_max_msg_fmt += 'a min of {}.'.format(min_required)
- elif max_required:
- min_max_msg_fmt += 'a max of {}.'.format(max_required)
- raise CLIError(min_max_msg_fmt)
-
-
-def _validate_whl_extension(ext_file):
- tmp_dir = tempfile.mkdtemp()
- zip_ref = zipfile.ZipFile(ext_file, 'r')
- zip_ref.extractall(tmp_dir)
- zip_ref.close()
- azext_metadata = WheelExtension.get_azext_metadata(tmp_dir)
- shutil.rmtree(tmp_dir)
- _validate_whl_cli_compat(azext_metadata)
-
-
-def _add_whl_ext(source, ext_sha256=None, pip_extra_index_urls=None, pip_proxy=None): # pylint: disable=too-many-statements
- if not source.endswith('.whl'):
- raise ValueError('Unknown extension type. Only Python wheels are supported.')
- url_parse_result = urlparse(source)
- is_url = (url_parse_result.scheme == 'http' or url_parse_result.scheme == 'https')
- logger.debug('Extension source is url? %s', is_url)
- whl_filename = os.path.basename(url_parse_result.path) if is_url else os.path.basename(source)
- parsed_filename = WHEEL_INFO_RE(whl_filename)
- # Extension names can have - but .whl format changes it to _ (PEP 0427). Undo this.
- extension_name = parsed_filename.groupdict().get('name').replace('_', '-') if parsed_filename else None
- if not extension_name:
- raise CLIError('Unable to determine extension name from {}. Is the file name correct?'.format(source))
- if extension_exists(extension_name):
- raise CLIError('The extension {} already exists.'.format(extension_name))
- ext_file = None
- if is_url:
- # Download from URL
- tmp_dir = tempfile.mkdtemp()
- ext_file = os.path.join(tmp_dir, whl_filename)
- logger.debug('Downloading %s to %s', source, ext_file)
- try:
- _whl_download_from_url(url_parse_result, ext_file)
- except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err:
- raise CLIError('Please ensure you have network connection. Error detail: {}'.format(str(err)))
- logger.debug('Downloaded to %s', ext_file)
- else:
- # Get file path
- ext_file = os.path.realpath(os.path.expanduser(source))
- if not os.path.isfile(ext_file):
- raise CLIError("File {} not found.".format(source))
- # Validate the extension
- logger.debug('Validating the extension %s', ext_file)
- if ext_sha256:
- valid_checksum, computed_checksum = is_valid_sha256sum(ext_file, ext_sha256)
- if valid_checksum:
- logger.debug("Checksum of %s is OK", ext_file)
- else:
- logger.debug("Invalid checksum for %s. Expected '%s', computed '%s'.",
- ext_file, ext_sha256, computed_checksum)
- raise CLIError("The checksum of the extension does not match the expected value. "
- "Use --debug for more information.")
- try:
- _validate_whl_extension(ext_file)
- except AssertionError:
- logger.debug(traceback.format_exc())
- raise CLIError('The extension is invalid. Use --debug for more information.')
- except CLIError as e:
- raise e
- logger.debug('Validation successful on %s', ext_file)
- # Check for distro consistency
- check_distro_consistency()
- # Install with pip
- extension_path = get_extension_path(extension_name)
- pip_args = ['install', '--target', extension_path, ext_file]
-
- if pip_proxy:
- pip_args = pip_args + ['--proxy', pip_proxy]
- if pip_extra_index_urls:
- for extra_index_url in pip_extra_index_urls:
- pip_args = pip_args + ['--extra-index-url', extra_index_url]
-
- logger.debug('Executing pip with args: %s', pip_args)
- with HomebrewPipPatch():
- pip_status_code = _run_pip(pip_args)
- if pip_status_code > 0:
- logger.debug('Pip failed so deleting anything we might have installed at %s', extension_path)
- shutil.rmtree(extension_path, ignore_errors=True)
- raise CLIError('An error occurred. Pip failed with status code {}. '
- 'Use --debug for more information.'.format(pip_status_code))
- # Save the whl we used to install the extension in the extension dir.
- dst = os.path.join(extension_path, whl_filename)
- shutil.copyfile(ext_file, dst)
- logger.debug('Saved the whl to %s', dst)
-
-
-def is_valid_sha256sum(a_file, expected_sum):
- sha256 = hashlib.sha256()
- with open(a_file, 'rb') as f:
- sha256.update(f.read())
- computed_hash = sha256.hexdigest()
- return expected_sum == computed_hash, computed_hash
-
-
-def _augment_telemetry_with_ext_info(extension_name):
- # The extension must be available before calling this otherwise we can't get the version from metadata
- if not extension_name:
- return
- try:
- ext = get_extension(extension_name)
- ext_version = ext.version
- set_extension_management_detail(extension_name, ext_version)
- except Exception: # nopa pylint: disable=broad-except
- # Don't error on telemetry
- pass
-
-
-def add_extension(source=None, extension_name=None, index_url=None, yes=None, # pylint: disable=unused-argument
- pip_extra_index_urls=None, pip_proxy=None):
- ext_sha256 = None
- if extension_name:
- if extension_exists(extension_name):
- raise CLIError('The extension {} already exists.'.format(extension_name))
- try:
- source, ext_sha256 = resolve_from_index(extension_name, index_url=index_url)
- except NoExtensionCandidatesError as err:
- logger.debug(err)
- raise CLIError("No matching extensions for '{}'. Use --debug for more information.".format(extension_name))
- _add_whl_ext(source, ext_sha256=ext_sha256, pip_extra_index_urls=pip_extra_index_urls, pip_proxy=pip_proxy)
- _augment_telemetry_with_ext_info(extension_name)
- try:
- if extension_name and get_extension(extension_name).preview:
- logger.warning("The installed extension '%s' is in preview.", extension_name)
- except ExtensionNotInstalledException:
- pass
-
-
-def remove_extension(extension_name):
- def log_err(func, path, exc_info):
- logger.debug("Error occurred attempting to delete item from the extension '%s'.", extension_name)
- logger.debug("%s: %s - %s", func, path, exc_info)
-
- try:
- # Get the extension and it will raise an error if it doesn't exist
- get_extension(extension_name)
- # We call this just before we remove the extension so we can get the metadata before it is gone
- _augment_telemetry_with_ext_info(extension_name)
- shutil.rmtree(get_extension_path(extension_name), onerror=log_err)
- except ExtensionNotInstalledException as e:
- raise CLIError(e)
-
-
-def list_extensions():
- return [{OUT_KEY_NAME: ext.name, OUT_KEY_VERSION: ext.version, OUT_KEY_TYPE: ext.ext_type}
- for ext in get_extensions()]
-
-
-def show_extension(extension_name):
- try:
- extension = get_extension(extension_name)
- return {OUT_KEY_NAME: extension.name,
- OUT_KEY_VERSION: extension.version,
- OUT_KEY_TYPE: extension.ext_type,
- OUT_KEY_METADATA: extension.metadata}
- except ExtensionNotInstalledException as e:
- raise CLIError(e)
-
-
-def update_extension(extension_name, index_url=None, pip_extra_index_urls=None, pip_proxy=None):
- try:
- ext = get_extension(extension_name)
- cur_version = ext.get_version()
- try:
- download_url, ext_sha256 = resolve_from_index(extension_name, cur_version=cur_version, index_url=index_url)
- except NoExtensionCandidatesError as err:
- logger.debug(err)
- raise CLIError("No updates available for '{}'. Use --debug for more information.".format(extension_name))
- # Copy current version of extension to tmp directory in case we need to restore it after a failed install.
- backup_dir = os.path.join(tempfile.mkdtemp(), extension_name)
- extension_path = get_extension_path(extension_name)
- logger.debug('Backing up the current extension: %s to %s', extension_path, backup_dir)
- shutil.copytree(extension_path, backup_dir)
- # Remove current version of the extension
- shutil.rmtree(extension_path)
- # Install newer version
- try:
- _add_whl_ext(download_url, ext_sha256=ext_sha256,
+
+def add_extension_cmd(source=None, extension_name=None, index_url=None, yes=None,
+ pip_extra_index_urls=None, pip_proxy=None):
+ return add_extension(source=source, extension_name=extension_name, index_url=index_url, yes=yes,
pip_extra_index_urls=pip_extra_index_urls, pip_proxy=pip_proxy)
- logger.debug('Deleting backup of old extension at %s', backup_dir)
- shutil.rmtree(backup_dir)
- # This gets the metadata for the extension *after* the update
- _augment_telemetry_with_ext_info(extension_name)
- except Exception as err:
- logger.error('An error occurred whilst updating.')
- logger.error(err)
- logger.debug('Copying %s to %s', backup_dir, extension_path)
- shutil.copytree(backup_dir, extension_path)
- raise CLIError('Failed to update. Rolled {} back to {}.'.format(extension_name, cur_version))
- except ExtensionNotInstalledException as e:
- raise CLIError(e)
-
-
-def list_available_extensions(index_url=None, show_details=False):
- index_data = get_index_extensions(index_url=index_url)
- if show_details:
- return index_data
- installed_extensions = get_extensions()
- installed_extension_names = [e.name for e in installed_extensions]
- results = []
- for name, items in OrderedDict(sorted(index_data.items())).items():
- # exclude extensions/versions incompatible with current CLI version
- items = [item for item in items if ext_compat_with_cli(item['metadata'])[0]]
- if not items:
- continue
-
- latest = max(items, key=lambda c: parse_version(c['metadata']['version']))
- installed = False
- if name in installed_extension_names:
- installed = True
- ext_version = get_extension(name).version
- if ext_version and parse_version(latest['metadata']['version']) > parse_version(ext_version):
- installed = str(True) + ' (upgrade available)'
- results.append({
- 'name': name,
- 'version': latest['metadata']['version'],
- 'summary': latest['metadata']['summary'],
- 'preview': latest['metadata'].get(EXT_METADATA_ISPREVIEW, False),
- 'installed': installed
- })
- return results
-
-
-def get_lsb_release():
- try:
- with open(LSB_RELEASE_FILE, 'r') as lr:
- lsb = lr.readlines()
- desc = lsb[2]
- desc_split = desc.split('=')
- rel = desc_split[1]
- return rel.strip()
- except Exception: # pylint: disable=broad-except
- return None
-
-
-def check_distro_consistency():
- if IS_WINDOWS:
- return
-
- try:
- logger.debug('Linux distro check: Reading from: %s', LIST_FILE_PATH)
-
- with open(LIST_FILE_PATH, 'r') as list_file:
- package_source = list_file.read()
- stored_linux_dist_name = package_source.split(" ")[3]
- logger.debug('Linux distro check: Found in list file: %s', stored_linux_dist_name)
- current_linux_dist_name = get_lsb_release()
- logger.debug('Linux distro check: Reported by API: %s', current_linux_dist_name)
-
- except Exception as err: # pylint: disable=broad-except
- current_linux_dist_name = None
- stored_linux_dist_name = None
- logger.debug('Linux distro check: An error occurred while checking '
- 'linux distribution version source list consistency.')
- logger.debug(err)
-
- if current_linux_dist_name != stored_linux_dist_name:
- logger.debug("Linux distro check: Mismatch distribution "
- "name in %s file", LIST_FILE_PATH)
- logger.debug("Linux distro check: If command fails, install the appropriate package "
- "for your distribution or change the above file accordingly.")
- logger.debug("Linux distro check: %s has '%s', current distro is '%s'",
- LIST_FILE_PATH, stored_linux_dist_name, current_linux_dist_name)
+
+
+def remove_extension_cmd(extension_name):
+ return remove_extension(extension_name)
+
+
+def list_extensions_cmd():
+ return list_extensions()
+
+
+def show_extension_cmd(extension_name):
+ return show_extension(extension_name)
+
+
+def update_extension_cmd(extension_name, index_url=None, pip_extra_index_urls=None, pip_proxy=None):
+ return update_extension(extension_name, index_url=index_url, pip_extra_index_urls=pip_extra_index_urls,
+ pip_proxy=pip_proxy)
+
+
+def list_available_extensions_cmd(index_url=None, show_details=False):
+ return list_available_extensions(index_url=index_url, show_details=show_details)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-extension-0.2.1/azure_cli_extension.egg-info/PKG-INFO new/azure-cli-extension-0.2.3/azure_cli_extension.egg-info/PKG-INFO
--- old/azure-cli-extension-0.2.1/azure_cli_extension.egg-info/PKG-INFO 2018-07-26 19:31:58.000000000 +0200
+++ new/azure-cli-extension-0.2.3/azure_cli_extension.egg-info/PKG-INFO 2018-11-01 23:22:54.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-extension
-Version: 0.2.1
+Version: 0.2.3
Summary: Microsoft Azure Command-Line Tools Extension Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,14 @@
Release History
===============
+ 0.2.3
+ +++++
+ * Minor fixes.
+
+ 0.2.2
+ +++++
+ * Attempting to add an extension that is already installed will not raise an exception.
+
0.2.1
+++++
* Fix index url failing requests.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-extension-0.2.1/azure_cli_extension.egg-info/SOURCES.txt new/azure-cli-extension-0.2.3/azure_cli_extension.egg-info/SOURCES.txt
--- old/azure-cli-extension-0.2.1/azure_cli_extension.egg-info/SOURCES.txt 2018-07-26 19:31:58.000000000 +0200
+++ new/azure-cli-extension-0.2.3/azure_cli_extension.egg-info/SOURCES.txt 2018-11-01 23:22:54.000000000 +0100
@@ -9,9 +9,6 @@
azure/cli/command_modules/extension/__init__.py
azure/cli/command_modules/extension/_completers.py
azure/cli/command_modules/extension/_help.py
-azure/cli/command_modules/extension/_homebrew_patch.py
-azure/cli/command_modules/extension/_index.py
-azure/cli/command_modules/extension/_resolve.py
azure/cli/command_modules/extension/custom.py
azure_cli_extension.egg-info/PKG-INFO
azure_cli_extension.egg-info/SOURCES.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-extension-0.2.1/setup.py new/azure-cli-extension-0.2.3/setup.py
--- old/azure-cli-extension-0.2.1/setup.py 2018-07-26 19:30:50.000000000 +0200
+++ new/azure-cli-extension-0.2.3/setup.py 2018-11-01 23:22:37.000000000 +0100
@@ -14,7 +14,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "0.2.1"
+VERSION = "0.2.3"
CLASSIFIERS = [
'Development Status :: 5 - Production/Stable',
1
0
Hello community,
here is the log from the commit of package azure-cli-eventhubs for openSUSE:Factory checked in at 2019-05-22 10:59:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-eventhubs (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-eventhubs.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-eventhubs"
Wed May 22 10:59:59 2019 rev:3 rq:696834 version:0.3.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-eventhubs/azure-cli-eventhubs.changes 2018-10-15 10:44:38.575313188 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-eventhubs.new.5148/azure-cli-eventhubs.changes 2019-05-22 11:00:04.974762334 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 14:45:11 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.3.3
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-eventhubs-0.2.3.tar.gz
New:
----
azure-cli-eventhubs-0.3.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-eventhubs.spec ++++++
--- /var/tmp/diff_new_pack.njzXNW/_old 2019-05-22 11:00:06.518760335 +0200
+++ /var/tmp/diff_new_pack.njzXNW/_new 2019-05-22 11:00:06.546760298 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-eventhubs
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-eventhubs
-Version: 0.2.3
+Version: 0.3.3
Release: 0
Summary: Microsoft Azure CLI 'eventhubs' Command Module
License: MIT
@@ -27,15 +27,14 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-mgmt-eventhub >= 2.1.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-mgmt-eventhub >= 2.2.0
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-six
Conflicts: azure-cli < 2.0.0
@@ -56,6 +55,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-eventhubs-0.2.3.tar.gz -> azure-cli-eventhubs-0.3.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventhubs-0.2.3/HISTORY.rst new/azure-cli-eventhubs-0.3.3/HISTORY.rst
--- old/azure-cli-eventhubs-0.2.3/HISTORY.rst 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-eventhubs-0.3.3/HISTORY.rst 2019-01-25 20:43:40.000000000 +0100
@@ -2,6 +2,26 @@
Release History
===============
+0.3.3
++++++
+* Minor fixes
+
+0.3.2
++++++
+* Minor fixes
+
+0.3.1
++++++
+* eventhub namespace create/update: Added --enable-kafka flag to support Kafka.
+
+0.3.0
++++++
+* Fix eventhub update command
+* BREAKING CHANGE: 'list' commands errors for resource(s) NotFound(404) are now handled in the typical way instead of showing empty list
+
+0.2.4
++++++
+* Minor fixes
0.2.3
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventhubs-0.2.3/PKG-INFO new/azure-cli-eventhubs-0.3.3/PKG-INFO
--- old/azure-cli-eventhubs-0.2.3/PKG-INFO 2018-08-23 01:10:05.000000000 +0200
+++ new/azure-cli-eventhubs-0.3.3/PKG-INFO 2019-01-25 20:44:02.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-eventhubs
-Version: 0.2.3
+Version: 0.3.3
Summary: Microsoft Azure Command-Line Tools Event Hubs Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -19,6 +19,26 @@
Release History
===============
+ 0.3.3
+ +++++
+ * Minor fixes
+
+ 0.3.2
+ +++++
+ * Minor fixes
+
+ 0.3.1
+ +++++
+ * eventhub namespace create/update: Added --enable-kafka flag to support Kafka.
+
+ 0.3.0
+ +++++
+ * Fix eventhub update command
+ * BREAKING CHANGE: 'list' commands errors for resource(s) NotFound(404) are now handled in the typical way instead of showing empty list
+
+ 0.2.4
+ +++++
+ * Minor fixes
0.2.3
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventhubs-0.2.3/azure/cli/command_modules/eventhubs/_help.py new/azure-cli-eventhubs-0.3.3/azure/cli/command_modules/eventhubs/_help.py
--- old/azure-cli-eventhubs-0.2.3/azure/cli/command_modules/eventhubs/_help.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-eventhubs-0.3.3/azure/cli/command_modules/eventhubs/_help.py 2019-01-25 20:43:40.000000000 +0100
@@ -75,7 +75,7 @@
examples:
- name: Creates a new namespace.
text: az eventhubs namespace create --resource-group myresourcegroup --name mynamespace --location westus
- --tags tag1=value1 tag2=value2 --sku Standard --is-auto-inflate-enabled False --maximum-throughput-units 30
+ --tags tag1=value1 tag2=value2 --sku Standard --enable-auto-inflate False --maximum-throughput-units 30
"""
helps['eventhubs namespace update'] = """
@@ -83,7 +83,7 @@
short-summary: Updates the Event Hubs Namespace
examples:
- name: Update a new namespace.
- text: az eventhubs namespace update --resource-group myresourcegroup --name mynamespace --tags tag=value --is-auto-inflate-enabled True
+ text: az eventhubs namespace update --resource-group myresourcegroup --name mynamespace --tags tag=value --enable-auto-inflate True
"""
helps['eventhubs namespace show'] = """
@@ -141,7 +141,7 @@
short-summary: Shows the list of Authorizationrule by Namespace
examples:
- name: Shows the list of Authorizationrule by Namespace
- text: az eventhubs namespace authorization-rule show --resource-group myresourcegroup --namespace-name mynamespace
+ text: az eventhubs namespace authorization-rule list --resource-group myresourcegroup --namespace-name mynamespace
"""
helps['eventhubs namespace authorization-rule keys list'] = """
@@ -157,7 +157,7 @@
short-summary: Regenerate the connection strings of Authorizationrule for the namespace.
examples:
- name: Regenerate the connection strings of Authorizationrule for the namespace.
- text: az eventhubs namespace authorization-rule regenerate-keys --resource-group myresourcegroup
+ text: az eventhubs namespace authorization-rule keys renew --resource-group myresourcegroup
--namespace-name mynamespace --name myauthorule --key PrimaryKey
"""
@@ -174,7 +174,7 @@
short-summary: Creates the Event Hubs Eventhub
examples:
- name: Create a new Eventhub.
- text: az eventhubs eventhub create --resource-group myresourcegroup --namespace-name mynamespace --name myeventhub --message-retention 4 ---partition-count 15
+ text: az eventhubs eventhub create --resource-group myresourcegroup --namespace-name mynamespace --name myeventhub --message-retention 4 --partition-count 15
"""
helps['eventhubs eventhub update'] = """
@@ -182,7 +182,7 @@
short-summary: Updates the Event Hubs Eventhub
examples:
- name: Updates a new Eventhub.
- text: az eventhubs eventhub update --resource-group myresourcegroup --namespace-name mynamespace --name myeventhub --message-retention 3 ---partition-count 12
+ text: az eventhubs eventhub update --resource-group myresourcegroup --namespace-name mynamespace --name myeventhub --message-retention 3 --partition-count 12
"""
helps['eventhubs eventhub show'] = """
@@ -235,10 +235,10 @@
helps['eventhubs eventhub authorization-rule list'] = """
type: command
- short-summary: shows the list of Authorizationrule by Eventhub
+ short-summary: shows the list of Authorization-rules by Eventhub
examples:
- - name: shows the list of Authorizationrule by Eventhub
- text: az eventhubs eventhub authorization-rule show --resource-group myresourcegroup --namespace-name mynamespace --eventhub-name myeventhub
+ - name: shows the list of Authorization-rules by Eventhub
+ text: az eventhubs eventhub authorization-rule list --resource-group myresourcegroup --namespace-name mynamespace --eventhub-name myeventhub
"""
helps['eventhubs eventhub authorization-rule keys list'] = """
@@ -254,7 +254,7 @@
short-summary: Regenerate the connection strings of Authorizationrule for the namespace.
examples:
- name: Regenerate the connection strings of Authorizationrule for the namespace.
- text: az eventhubs eventhub authorization-rule regenerate-keys --resource-group myresourcegroup --namespace-name mynamespace --eventhub-name myeventhub --name myauthorule --key PrimaryKey
+ text: az eventhubs eventhub authorization-rule keys renew --resource-group myresourcegroup --namespace-name mynamespace --eventhub-name myeventhub --name myauthorule --key PrimaryKey
"""
helps['eventhubs eventhub authorization-rule delete'] = """
@@ -293,8 +293,8 @@
type: command
short-summary: List the ConsumerGroup by Eventhub
examples:
- - name: Shows the ConsumerGroup by Eventhub.
- text: az eventhubs eventhub consumer-group get --resource-group myresourcegroup --namespace-name mynamespace --eventhub-name myeventhub
+ - name: List the ConsumerGroup by Eventhub.
+ text: az eventhubs eventhub consumer-group list --resource-group myresourcegroup --namespace-name mynamespace --eventhub-name myeventhub
"""
helps['eventhubs eventhub consumer-group delete'] = """
@@ -310,7 +310,7 @@
short-summary: Check the availability of Geo-Disaster Recovery Configuration Alias Name
examples:
- name: Check the availability of Geo-Disaster Recovery Configuration Alias Name
- text: az eventhubs georecovery-alias check-name-availability --resource-group myresourcegroup --namespace-name primarynamespace --alias myaliasname
+ text: az eventhubs georecovery-alias exists --resource-group myresourcegroup --namespace-name primarynamespace --alias myaliasname
"""
helps['eventhubs georecovery-alias set'] = """
@@ -344,7 +344,7 @@
short-summary: List of Authorizationrule by Event Hubs Namespace
examples:
- name: List of Authorizationrule by Event Hubs Namespace
- text: az eventhubs georecovery-alias authorization-rule list --resource-group myresourcegroup --namespace-name mynamespace
+ text: az eventhubs georecovery-alias authorization-rule list --resource-group myresourcegroup --namespace-name mynamespace --alias myaliasname
"""
helps['eventhubs georecovery-alias authorization-rule keys list'] = """
@@ -352,7 +352,7 @@
short-summary: Shows the keys and connection strings of Authorizationrule for the Event Hubs Namespace
examples:
- name: Shows the keys and connection strings of Authorizationrule for the namespace.
- text: az eventhubs georecovery-alias authorization-rule keys list --resource-group myresourcegroup --namespace-name mynamespace --name myauthorule
+ text: az eventhubs georecovery-alias authorization-rule keys list --resource-group myresourcegroup --namespace-name mynamespace --name myauthorule --alias myaliasname
"""
helps['eventhubs georecovery-alias break-pair'] = """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventhubs-0.2.3/azure/cli/command_modules/eventhubs/_params.py new/azure-cli-eventhubs-0.3.3/azure/cli/command_modules/eventhubs/_params.py
--- old/azure-cli-eventhubs-0.2.3/azure/cli/command_modules/eventhubs/_params.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-eventhubs-0.3.3/azure/cli/command_modules/eventhubs/_params.py 2019-01-25 20:43:40.000000000 +0100
@@ -31,6 +31,8 @@
with self.argument_context('eventhubs namespace') as c:
c.argument('namespace_name', arg_type=name_type, id_part='name', completer=get_resource_name_completion_list('Microsoft.ServiceBus/namespaces'), help='Name of Namespace')
+ c.argument('is_kafka_enabled', options_list=['--enable-kafka'], arg_type=get_three_state_flag(),
+ help='A boolean value that indicates whether Kafka is enabled for eventhub namespace.')
with self.argument_context('eventhubs namespace create') as c:
c.argument('tags', arg_type=tags_type)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventhubs-0.2.3/azure/cli/command_modules/eventhubs/commands.py new/azure-cli-eventhubs-0.3.3/azure/cli/command_modules/eventhubs/commands.py
--- old/azure-cli-eventhubs-0.2.3/azure/cli/command_modules/eventhubs/commands.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-eventhubs-0.3.3/azure/cli/command_modules/eventhubs/commands.py 2019-01-25 20:43:40.000000000 +0100
@@ -6,34 +6,30 @@
# pylint: disable=line-too-long
# pylint: disable=too-many-statements
+from azure.cli.core.commands import CliCommandType
+
def load_command_table(self, _):
- from azure.cli.core.commands import CliCommandType
from azure.cli.command_modules.eventhubs._client_factory import (namespaces_mgmt_client_factory,
event_hub_mgmt_client_factory,
consumer_groups_mgmt_client_factory,
disaster_recovery_mgmt_client_factory)
- from .custom import empty_on_404
eh_namespace_util = CliCommandType(
operations_tmpl='azure.mgmt.eventhub.operations.namespaces_operations#NamespacesOperations.{}',
- client_factory=namespaces_mgmt_client_factory
- )
+ client_factory=namespaces_mgmt_client_factory)
eh_event_hub_util = CliCommandType(
operations_tmpl='azure.mgmt.eventhub.operations.event_hubs_operations#EventHubsOperations.{}',
- client_factory=event_hub_mgmt_client_factory
- )
+ client_factory=event_hub_mgmt_client_factory)
eh_consumer_groups_util = CliCommandType(
operations_tmpl='azure.mgmt.eventhub.operations.consumer_groups_operations#ConsumerGroupsOperations.{}',
- client_factory=consumer_groups_mgmt_client_factory
- )
+ client_factory=consumer_groups_mgmt_client_factory)
eh_geodr_util = CliCommandType(
operations_tmpl='azure.mgmt.eventhub.operations.disaster_recovery_configs_operations#DisasterRecoveryConfigsOperations.{}',
- client_factory=disaster_recovery_mgmt_client_factory
- )
+ client_factory=disaster_recovery_mgmt_client_factory)
# Namespace Region
custom_tmpl = 'azure.cli.command_modules.eventhubs.custom#{}'
@@ -41,7 +37,7 @@
with self.command_group('eventhubs namespace', eh_namespace_util, client_factory=namespaces_mgmt_client_factory) as g:
g.custom_command('create', 'cli_namespace_create')
g.show_command('show', 'get')
- g.custom_command('list', 'cli_namespace_list', exception_handler=empty_on_404)
+ g.custom_command('list', 'cli_namespace_list')
g.command('delete', 'delete')
g.command('exists', 'check_name_availability')
g.generic_update_command('update', custom_func_name='cli_namespace_update', custom_func_type=eventhubs_custom)
@@ -49,7 +45,7 @@
with self.command_group('eventhubs namespace authorization-rule', eh_namespace_util, client_factory=namespaces_mgmt_client_factory) as g:
g.command('create', 'create_or_update_authorization_rule')
g.show_command('show', 'get_authorization_rule')
- g.command('list', 'list_authorization_rules', exception_handler=empty_on_404)
+ g.command('list', 'list_authorization_rules')
g.command('keys list', 'list_keys')
g.command('keys renew', 'regenerate_keys')
g.command('delete', 'delete_authorization_rule')
@@ -59,14 +55,14 @@
with self.command_group('eventhubs eventhub', eh_event_hub_util, client_factory=event_hub_mgmt_client_factory) as g:
g.custom_command('create', 'cli_eheventhub_create')
g.show_command('show', 'get')
- g.command('list', 'list_by_namespace', exception_handler=empty_on_404)
+ g.command('list', 'list_by_namespace')
g.command('delete', 'delete')
g.generic_update_command('update', custom_func_name='cli_eheventhub_update')
with self.command_group('eventhubs eventhub authorization-rule', eh_event_hub_util, client_factory=event_hub_mgmt_client_factory) as g:
g.command('create', 'create_or_update_authorization_rule')
g.show_command('show', 'get_authorization_rule')
- g.command('list', 'list_authorization_rules', exception_handler=empty_on_404)
+ g.command('list', 'list_authorization_rules')
g.command('keys list', 'list_keys')
g.command('keys renew', 'regenerate_keys')
g.command('delete', 'delete_authorization_rule')
@@ -76,7 +72,7 @@
with self.command_group('eventhubs eventhub consumer-group', eh_consumer_groups_util, client_factory=consumer_groups_mgmt_client_factory) as g:
g.command('create', 'create_or_update')
g.show_command('show', 'get')
- g.command('list', 'list_by_event_hub', exception_handler=empty_on_404)
+ g.command('list', 'list_by_event_hub')
g.command('delete', 'delete')
g.generic_update_command('update')
@@ -84,7 +80,7 @@
with self.command_group('eventhubs georecovery-alias', eh_geodr_util, client_factory=disaster_recovery_mgmt_client_factory) as g:
g.command('set', 'create_or_update')
g.show_command('show', 'get')
- g.command('list', 'list', exception_handler=empty_on_404)
+ g.command('list', 'list')
g.command('break-pair', 'break_pairing')
g.command('fail-over', 'fail_over')
g.command('exists', 'check_name_availability')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventhubs-0.2.3/azure/cli/command_modules/eventhubs/custom.py new/azure-cli-eventhubs-0.3.3/azure/cli/command_modules/eventhubs/custom.py
--- old/azure-cli-eventhubs-0.2.3/azure/cli/command_modules/eventhubs/custom.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-eventhubs-0.3.3/azure/cli/command_modules/eventhubs/custom.py 2019-01-25 20:43:40.000000000 +0100
@@ -9,7 +9,7 @@
# Namespace Region
-def cli_namespace_create(client, resource_group_name, namespace_name, location=None, tags=None, sku='Standard', capacity=None, is_auto_inflate_enabled=None, maximum_throughput_units=None):
+def cli_namespace_create(client, resource_group_name, namespace_name, location=None, tags=None, sku='Standard', capacity=None, is_auto_inflate_enabled=None, maximum_throughput_units=None, is_kafka_enabled=None):
from azure.mgmt.eventhub.models import EHNamespace, Sku
return client.create_or_update(
resource_group_name=resource_group_name,
@@ -19,10 +19,11 @@
tags=tags,
sku=Sku(name=sku, tier=sku, capacity=capacity),
is_auto_inflate_enabled=is_auto_inflate_enabled,
- maximum_throughput_units=maximum_throughput_units))
+ maximum_throughput_units=maximum_throughput_units,
+ kafka_enabled=is_kafka_enabled))
-def cli_namespace_update(instance, tags=None, sku=None, capacity=None, is_auto_inflate_enabled=None, maximum_throughput_units=None):
+def cli_namespace_update(instance, tags=None, sku=None, capacity=None, is_auto_inflate_enabled=None, maximum_throughput_units=None, is_kafka_enabled=None):
if tags:
instance.tags = tags
@@ -40,6 +41,9 @@
if maximum_throughput_units:
instance.maximum_throughput_units = maximum_throughput_units
+ if is_kafka_enabled:
+ instance.kafka_enabled = is_kafka_enabled
+
return instance
@@ -94,7 +98,7 @@
enabled=None, capture_interval_seconds=None,
capture_size_limit_bytes=None, destination_name=None, storage_account_resource_id=None,
blob_container=None, archive_name_format=None):
-
+ from azure.mgmt.eventhub.models import CaptureDescription, Destination, EncodingCaptureDescription
if message_retention_in_days:
instance.message_retention_in_days = message_retention_in_days
@@ -104,28 +108,25 @@
if status:
instance.status = status
- if instance.enabled is True or enabled is True:
- if enabled:
- instance.capture_description.enabled = enabled
+ if enabled:
+ instance.capture_description.enabled = enabled
+
+ if not instance.capture_description:
+ instance.capture_description = CaptureDescription()
+ instance.capture_description.destination = Destination()
+ instance.capture_description.encoding = EncodingCaptureDescription.avro
+
if capture_interval_seconds:
instance.interval_in_seconds = capture_interval_seconds
if capture_size_limit_bytes:
instance.size_limit_in_bytes = capture_size_limit_bytes
if destination_name:
- instance.destination = destination_name
+ instance.capture_description.destination.name = destination_name
if storage_account_resource_id:
- instance.storage_account_resource_id = storage_account_resource_id
+ instance.capture_description.destination.storage_account_resource_id = storage_account_resource_id
if blob_container:
- instance.blob_container = blob_container
+ instance.capture_description.destination.blob_container = blob_container
if archive_name_format:
- instance.archive_name_format = archive_name_format
+ instance.capture_description.destination.archive_name_format = archive_name_format
return instance
-
-
-# pylint: disable=inconsistent-return-statements
-def empty_on_404(ex):
- from azure.mgmt.eventhub.models import ErrorResponseException
- if isinstance(ex, ErrorResponseException) and ex.response.status_code == 404:
- return None
- raise ex
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventhubs-0.2.3/azure_cli_eventhubs.egg-info/PKG-INFO new/azure-cli-eventhubs-0.3.3/azure_cli_eventhubs.egg-info/PKG-INFO
--- old/azure-cli-eventhubs-0.2.3/azure_cli_eventhubs.egg-info/PKG-INFO 2018-08-23 01:10:05.000000000 +0200
+++ new/azure-cli-eventhubs-0.3.3/azure_cli_eventhubs.egg-info/PKG-INFO 2019-01-25 20:44:02.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-eventhubs
-Version: 0.2.3
+Version: 0.3.3
Summary: Microsoft Azure Command-Line Tools Event Hubs Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -19,6 +19,26 @@
Release History
===============
+ 0.3.3
+ +++++
+ * Minor fixes
+
+ 0.3.2
+ +++++
+ * Minor fixes
+
+ 0.3.1
+ +++++
+ * eventhub namespace create/update: Added --enable-kafka flag to support Kafka.
+
+ 0.3.0
+ +++++
+ * Fix eventhub update command
+ * BREAKING CHANGE: 'list' commands errors for resource(s) NotFound(404) are now handled in the typical way instead of showing empty list
+
+ 0.2.4
+ +++++
+ * Minor fixes
0.2.3
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventhubs-0.2.3/azure_cli_eventhubs.egg-info/requires.txt new/azure-cli-eventhubs-0.3.3/azure_cli_eventhubs.egg-info/requires.txt
--- old/azure-cli-eventhubs-0.2.3/azure_cli_eventhubs.egg-info/requires.txt 2018-08-23 01:10:05.000000000 +0200
+++ new/azure-cli-eventhubs-0.3.3/azure_cli_eventhubs.egg-info/requires.txt 2019-01-25 20:44:02.000000000 +0100
@@ -1,3 +1,3 @@
azure-cli-core
six
-azure-mgmt-eventhub==2.1.0
+azure-mgmt-eventhub==2.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventhubs-0.2.3/setup.py new/azure-cli-eventhubs-0.3.3/setup.py
--- old/azure-cli-eventhubs-0.2.3/setup.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-eventhubs-0.3.3/setup.py 2019-01-25 20:43:40.000000000 +0100
@@ -13,7 +13,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "0.2.3"
+VERSION = "0.3.3"
# The full list of classifiers is available at
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
@@ -34,7 +34,7 @@
DEPENDENCIES = [
'azure-cli-core',
'six',
- 'azure-mgmt-eventhub==2.1.0',
+ 'azure-mgmt-eventhub==2.2.0',
]
with open('README.rst', 'r', encoding='utf-8') as f:
1
0
Hello community,
here is the log from the commit of package azure-cli-eventgrid for openSUSE:Factory checked in at 2019-05-22 10:59:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-eventgrid (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-eventgrid.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-eventgrid"
Wed May 22 10:59:55 2019 rev:5 rq:696833 version:0.2.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-eventgrid/azure-cli-eventgrid.changes 2018-10-15 10:48:08.811088490 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-eventgrid.new.5148/azure-cli-eventgrid.changes 2019-05-22 10:59:59.146769882 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 14:32:12 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.2.1
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-eventgrid-0.2.0.tar.gz
New:
----
azure-cli-eventgrid-0.2.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-eventgrid.spec ++++++
--- /var/tmp/diff_new_pack.Vbe9Tt/_old 2019-05-22 11:00:00.782767763 +0200
+++ /var/tmp/diff_new_pack.Vbe9Tt/_new 2019-05-22 11:00:00.822767711 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-eventgrid
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-eventgrid
-Version: 0.2.0
+Version: 0.2.1
Release: 0
Summary: Microsoft Azure CLI 'eventgrid' Command Module
License: MIT
@@ -27,15 +27,14 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-mgmt-eventgrid >= 0.4.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-mgmt-eventgrid >= 2.0.0
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-six
Conflicts: azure-cli < 2.0.0
@@ -56,6 +55,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-eventgrid-0.2.0.tar.gz -> azure-cli-eventgrid-0.2.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventgrid-0.2.0/HISTORY.rst new/azure-cli-eventgrid-0.2.1/HISTORY.rst
--- old/azure-cli-eventgrid-0.2.0/HISTORY.rst 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-eventgrid-0.2.1/HISTORY.rst 2019-01-25 20:43:40.000000000 +0100
@@ -3,6 +3,14 @@
Release History
===============
+0.2.1
++++++
+* `event-subscription create/update`: Added `--deadletter-endpoint` parameter.
+* 'event-subscription create/update`: Added storagequeue and hybridconnection as new values for the `--endpoint-type` parameter.
+* `event-subscription create`: Added `--max-delivery-attempts` and `--event-ttl` parameters to specify the retry policy for events.
+* `event-subscription create/update`: Added a warning message for manual handshake validation when Webhook as destination is used for an event subscription.
+* Added source-resource-id parameter for all event subscription related commands and mark all other source resource related parameters as deprecated.
+
0.2.0
+++++
* BREAKING CHANGE: 'show' commands log error message and fail with exit code of 3 upon a missing resource.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventgrid-0.2.0/PKG-INFO new/azure-cli-eventgrid-0.2.1/PKG-INFO
--- old/azure-cli-eventgrid-0.2.0/PKG-INFO 2018-07-14 01:41:43.000000000 +0200
+++ new/azure-cli-eventgrid-0.2.1/PKG-INFO 2019-01-25 20:44:06.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-eventgrid
-Version: 0.2.0
+Version: 0.2.1
Summary: Microsoft Azure Command-Line Tools EventGrid Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,14 @@
Release History
===============
+ 0.2.1
+ +++++
+ * `event-subscription create/update`: Added `--deadletter-endpoint` parameter.
+ * 'event-subscription create/update`: Added storagequeue and hybridconnection as new values for the `--endpoint-type` parameter.
+ * `event-subscription create`: Added `--max-delivery-attempts` and `--event-ttl` parameters to specify the retry policy for events.
+ * `event-subscription create/update`: Added a warning message for manual handshake validation when Webhook as destination is used for an event subscription.
+ * Added source-resource-id parameter for all event subscription related commands and mark all other source resource related parameters as deprecated.
+
0.2.0
+++++
* BREAKING CHANGE: 'show' commands log error message and fail with exit code of 3 upon a missing resource.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventgrid-0.2.0/azure/cli/command_modules/eventgrid/_help.py new/azure-cli-eventgrid-0.2.1/azure/cli/command_modules/eventgrid/_help.py
--- old/azure-cli-eventgrid-0.2.0/azure/cli/command_modules/eventgrid/_help.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-eventgrid-0.2.1/azure/cli/command_modules/eventgrid/_help.py 2019-01-25 20:43:40.000000000 +0100
@@ -53,7 +53,7 @@
- name: Show the details of a topic.
text: az eventgrid topic show -g rg1 -n topic1
- name: Show the details of a topic based on resource ID.
- text: az eventgrid topic show --ids /subscriptions/55f3dcd4-cac7-43b4-990b-a139d62a1eb2/resourceGroups/kalstest/providers/Microsoft.EventGrid/topics/topic1
+ text: az eventgrid topic show --ids /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/topics/topic1
"""
helps['eventgrid topic key'] = """
type: group
@@ -70,124 +70,234 @@
helps['eventgrid event-subscription'] = """
type: group
short-summary: Manage event subscriptions for an Event Grid topic or for an Azure resource.
+ long-summary: Manage event subscriptions for an Event Grid topic, Azure subscription, resource group or for any other Azure resource that supports event notifications.
"""
helps['eventgrid event-subscription create'] = """
type: command
short-summary: Create a new event subscription for an Event Grid topic or for an Azure resource.
+ parameters:
+ - name: --source-resource-id
+ short-summary: Fully qualified identifier of the Azure resource to which the event subscription needs to be created.
+ long-summary: |
+ Usage: --source-resource-id Azure-Resource-ID
+ For Azure subscription: --source-resource-id /subscriptions/{SubID}
+ For resource group: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1
+ For EventGrid topic: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1/providers/Microsoft.EventGrid/topics/t1
+ For storage account: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1/providers/Microsoft.Storage/storageaccounts/sa1
+ - name: --deadletter-endpoint
+ short-summary: The Azure resource ID of an Azure Storage blob container destination where EventGrid should deadletter undeliverable events for this event subscription.
+ long-summary: |
+ Example: --deadletter-endpoint /subscriptions/{SubID}/resourceGroups/rg1/providers/Microsoft.Storage/storageAccounts/sa1/blobServices/default/containers/containerName
+ - name: --endpoint-type
+ short-summary: The type of the destination endpoint.
examples:
- name: Create a new event subscription for an Event Grid topic, using default filters.
text: |
- az eventgrid event-subscription create -g rg1 --topic-name topic1 --name es1 \\
+ az eventgrid event-subscription create --name es1 \\
+ --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/topics/topic1 \\
--endpoint https://contoso.azurewebsites.net/api/f1?code=code
- - name: Create a new event subscription for a subscription, using default filters.
+ - name: Create a new event subscription for an Azure subscription subscription, using default filters.
text: |
az eventgrid event-subscription create --name es2 \\
+ --source-resource-id /subscriptions/{SubID} \\
--endpoint https://contoso.azurewebsites.net/api/f1?code=code
- name: Create a new event subscription for a resource group, using default filters.
text: |
- az eventgrid event-subscription create -g rg1 --name es3 \\
+ az eventgrid event-subscription create --name es3 \\
+ --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG} \\
--endpoint https://contoso.azurewebsites.net/api/f1?code=code
- name: Create a new event subscription for a storage account, using default filters.
text: |
- az eventgrid event-subscription create --resource-id "/subscriptions/55f3dcd4-cac7-43b4-990b-a139d62a1eb2/resourceGroups/kalstest/providers/Microsoft.Storage/storageaccounts/kalsegblob" --name es3 \\
+ az eventgrid event-subscription create --name es3 \\
+ --source-resource-id "/subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.Storage/storageaccounts/s1" \\
--endpoint https://contoso.azurewebsites.net/api/f1?code=code
- - name: Create a new event subscription for a subscription, with a filter specifying a subject prefix.
+ - name: Create a new event subscription for an Azure subscription, with a filter specifying a subject prefix.
text: |
az eventgrid event-subscription create --name es4 \\
+ --source-resource-id /subscriptions/{SubID} \\
--endpoint https://contoso.azurewebsites.net/api/f1?code=code \\
--subject-begins-with mysubject_prefix
- name: Create a new event subscription for a resource group, with a filter specifying a subject suffix.
text: |
- az eventgrid event-subscription create -g rg2 --name es5 \\
+ az eventgrid event-subscription create --name es5 \\
+ --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG} \\
--endpoint https://contoso.azurewebsites.net/api/f1?code=code \\
--subject-ends-with mysubject_suffix
- - name: Create a new event subscription for a subscription, using default filters, and an EventHub as a destination.
+ - name: Create a new event subscription for an Azure subscription, using default filters, and an EventHub as a destination.
text: |
- az eventgrid event-subscription create --name es2 --endpoint-type eventhub \\
- --endpoint /subscriptions/55f3dcd4-cac7-43b4-990b-a139d62a1eb2/resourceGroups/TestRG/providers/Microsoft.EventHub/namespaces/ContosoNamespace/eventhubs/EH1
+ az eventgrid event-subscription create --name es2 \\
+ --source-resource-id /subscriptions/{SubID} \\
+ --endpoint-type eventhub \\
+ --endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.EventHub/namespaces/n1/eventhubs/EH1
+ - name: Create a new event subscription for an Azure subscription, using default filters, and an Azure Storage queue as a destination.
+ text: |
+ az eventgrid event-subscription create --name es2 \\
+ --source-resource-id /subscriptions/{SubID} \\
+ --endpoint-type storagequeue \\
+ --endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.Storage/storageAccounts/sa1/queueservices/default/queues/q1
+ - name: Create a new event subscription for a storage account, with a deadletter destination and custom retry policy of maximum 10 delivery attempts and an Event TTL of 2 hours (whichever happens earlier).
+ text: |
+ az eventgrid event-subscription create --name es2 \\
+ --source-resource-id "/subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.Storage/storageaccounts/s1" \\
+ --endpoint https://contoso.azurewebsites.net/api/f1?code=code \\
+ --deadletter-endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.Storage/storageAccounts/s2/blobServices/default/containers/blobcontainer1 \\
+ --max-delivery-attempts 10 --event-ttl 120
"""
helps['eventgrid event-subscription update'] = """
type: command
short-summary: Update an event subscription.
+ parameters:
+ - name: --source-resource-id
+ short-summary: Fully qualified identifier of the Azure resource whose event subscription needs to be updated.
+ long-summary: |
+ Usage: --source-resource-id Azure-Resource-ID
+ For Azure subscription: --source-resource-id /subscriptions/{SubID}
+ For resource group: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1
+ For EventGrid topic: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1/providers/Microsoft.EventGrid/topics/t1
+ For storage account: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1/providers/Microsoft.Storage/storageaccounts/sa1
+ - name: --endpoint-type
+ short-summary: The type of the destination endpoint.
examples:
- name: Update an event subscription for an Event Grid topic to specify a new endpoint.
text: |
- az eventgrid event-subscription update -g rg1 --topic-name topic1 --name es1 \\
+ az eventgrid event-subscription update --name es1 \\
+ --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/topics/topic1 \\
--endpoint https://contoso.azurewebsites.net/api/f1?code=code
- - name: Update an event subscription for a subscription to specify a new subject-ends-with filter.
+ - name: Update an event subscription for an Azure subscription to specify a new subject-ends-with filter.
text: |
- az eventgrid event-subscription update --name es2 --subject-ends-with .jpg
+ az eventgrid event-subscription update --name es2 \\
+ --source-resource-id /subscriptions/{SubID} \\
+ --subject-ends-with .jpg
- name: Update an event subscription for a resource group to specify a new endpoint and a new subject-ends-with filter.
text: |
- az eventgrid event-subscription update -g rg1 --name es3 --subject-ends-with .png \\
+ az eventgrid event-subscription update --name es3 \\
+ --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG} \\
+ --subject-ends-with .png \\
--endpoint https://contoso.azurewebsites.net/api/f1?code=code
- name: Update an event subscription for a storage account to specify a new list of included event types.
text: |
- az eventgrid event-subscription update --resource-id "/subscriptions/55f3dcd4-cac7-43b4-990b-a139d62a1eb2/resourceGroups/kalstest/providers/microsoft.storage/storageaccounts/kalsegblob" --name es3 \\
+ az eventgrid event-subscription update --name es3 \\
+ --source-resource-id "/subscriptions/{SubID}/resourceGroups/{RG}/providers/microsoft.storage/storageaccounts/kalsegblob" \\
--included-event-types Microsoft.Storage.BlobCreated Microsoft.Storage.BlobDeleted
+ - name: Update an event subscription for a storage account, to include a deadletter destination.
+ text: |
+ az eventgrid event-subscription update --name es2 \\
+ --source-resource-id "/subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.Storage/storageaccounts/kalsegblob" \\
+ --deadletter-endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.Storage/storageAccounts/sa1/blobServices/default/containers/blobcontainer1
"""
helps['eventgrid event-subscription delete'] = """
type: command
short-summary: Delete an event subscription.
+ parameters:
+ - name: --source-resource-id
+ short-summary: Fully qualified identifier of the Azure resource whose event subscription needs to be deleted.
+ long-summary: |
+ Usage: --source-resource-id Azure-Resource-ID
+ For Azure subscription: --source-resource-id /subscriptions/{SubID}
+ For resource group: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1
+ For EventGrid topic: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1/providers/Microsoft.EventGrid/topics/t1
+ For storage account: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1/providers/Microsoft.Storage/storageaccounts/sa1
examples:
- name: Delete an event subscription for an Event Grid topic.
text: |
- az eventgrid event-subscription delete -g rg1 --topic-name topic1 --name es1
- - name: Delete an event subscription for a subscription.
+ az eventgrid event-subscription delete --name es1 \\
+ --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/topics/topic1
+ - name: Delete an event subscription for an Azure subscription.
text: |
- az eventgrid event-subscription delete --name es2
+ az eventgrid event-subscription delete --name es2 \\
+ --source-resource-id /subscriptions/{SubID}
- name: Delete an event subscription for a resource group.
text: |
- az eventgrid event-subscription delete -g rg1 --name es3
+ az eventgrid event-subscription delete --name es3 \\
+ --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}
- name: Delete an event subscription for a storage account.
text: |
- az eventgrid event-subscription delete --resource-id "/subscriptions/55f3dcd4-cac7-43b4-990b-a139d62a1eb2/resourceGroups/kalstest/providers/microsoft.storage/storageaccounts/kalsegblob" --name es3
+ az eventgrid event-subscription delete --name es3 \\
+ --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/microsoft.storage/storageaccounts/kalsegblob
"""
helps['eventgrid event-subscription list'] = """
type: command
short-summary: List event subscriptions.
+ long-summary: |
+ Event Grid supports both regional and global event subscriptions: Event subscriptions on regional resources (such as Storage accounts or Event Grid topics) are regional, while event subscriptions on global resources (such as an Azure subscription or resource group) are global.
+ Hence, you can list event subscriptions in a few different ways:
+ 1. To list by the resource ID of the resource whose event subscriptions you want to list, specify the --source-resource-id parameter. No other parameters must be specified.
+ 2. To list by a topic-type (e.g. storage accounts), specify the --topic-type parameter along with --location (e.g. "westus2") parameter. For global topic types (e.g. "Microsoft.Resources.Subscriptions"), specify the location value as "global".
+ 3. To list all event subscriptions in a region (across all topic types), specify only the --location parameter.
+ 4. For both #2 and #3 above, to filter only by a resource group, you can additionally specify the --resource-group parameter.
+ parameters:
+ - name: --topic-type-name
+ short-summary: Name of the topic-type whose event subscriptions need to be listed. When this is specified, you must also specify --location.
+ long-summary: |
+ Example 1: List all Storage event subscriptions in WestUS2
+ --resource-group TestRG --topic-type-name Microsoft.Storage.StorageAccounts --location westus2
+ Example 2: List all event subscriptions on Azure subscriptions
+ --topic-type-name Microsoft.Resources.Subscriptions --location global
+ - name: --source-resource-id
+ short-summary: Fully qualified identifier of the Azure resource whose event subscription needs to be listed.
+ long-summary: |
+ Usage: --source-resource-id Azure-Resource-ID
+ For Azure subscription: --source-resource-id /subscriptions/{SubID}
+ For resource group: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1
+ For EventGrid topic: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1/providers/Microsoft.EventGrid/topics/t1
+ For storage account: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1/providers/Microsoft.Storage/storageaccounts/sa1
examples:
- - name: List all event subscriptions for an Event Grid topic.
+ - name: List all event subscriptions created for an Event Grid topic.
text: |
- az eventgrid event-subscription list -g rg1 --topic-name topic1
- - name: List all event subscriptions for a storage account.
+ az eventgrid event-subscription list --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/topics/topic1
+ - name: List all event subscriptions created for a storage account.
text: |
- az eventgrid event-subscription list --resource-id /subscriptions/55f3dcd4-cac7-43b4-990b-a139d62a1eb2/resourceGroups/kalstest/providers/Microsoft.Storage/storageaccounts/kalsegblob
- - name: List all event subscriptions for a topic-type in a specific location (under the currently selected Azure subscription).
+ az eventgrid event-subscription list --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.Storage/storageaccounts/kalsegblob
+ - name: List all event subscriptions created for an Azure subscription.
text: |
- az eventgrid event-subscription list --topic-type Microsoft.Storage.StorageAccounts --location westus2
- - name: List all event subscriptions for a topic-type in a specific location under a specified resource group.
+ az eventgrid event-subscription list --source-resource-id /subscriptions/{SubID}
+ - name: List all event subscriptions created for a resource group.
text: |
- az eventgrid event-subscription list --topic-type Microsoft.Storage.StorageAccounts --location westus2 --resource-group kalstest
- - name: List all regional event subscriptions in a specific location (under the currently selected Azure subscription).
+ az eventgrid event-subscription list --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}
+ - name: List all Storage event subscriptions (under the currently selected Azure subscription) in westus2.
text: |
- az eventgrid event-subscription list --location westus2
- - name: List all event subscriptions in a specific location under a specified resource group.
+ az eventgrid event-subscription list --topic-type Microsoft.Storage.StorageAccounts --location westus2
+ - name: List all Storage event subscriptions (under the given resource group) in westus2.
text: |
- az eventgrid event-subscription list --location westus2 --resource-group kalstest
- - name: List all global event subscriptions (under the currently selected Azure subscription).
+ az eventgrid event-subscription list --topic-type Microsoft.Storage.StorageAccounts --location westus2 --resource-group {RG}
+ - name: List all regional or global event subscriptions (under the currently selected Azure subscription).
text: |
- az eventgrid event-subscription list
- - name: List all global event subscriptions under the currently selected resource group.
+ az eventgrid event-subscription list --location westus2
+ az eventgrid event-subscription list --location global
+ - name: List all regional or global event subscriptions under a specified resource group.
text: |
- az eventgrid event-subscription list --resource-group kalstest
+ az eventgrid event-subscription list --location westus2 --resource-group {RG}
+ az eventgrid event-subscription list --location global --resource-group {RG}
"""
helps['eventgrid event-subscription show'] = """
type: command
short-summary: Get the details of an event subscription.
+ parameters:
+ - name: --source-resource-id
+ short-summary: Fully qualified identifier of the Azure resource whose event subscription needs to be shown.
+ long-summary: |
+ Usage: --source-resource-id Azure-Resource-ID
+ For Azure subscription: --source-resource-id /subscriptions/{SubID}
+ For resource group: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1
+ For EventGrid topic: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1/providers/Microsoft.EventGrid/topics/t1
+ For storage account: --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1/providers/Microsoft.Storage/storageaccounts/sa1
examples:
- name: Show the details of an event subscription for an Event Grid topic.
text: |
- az eventgrid event-subscription show -g rg1 --topic-name topic1 --name es1
- - name: Show the details of an event subscription for a subscription.
+ az eventgrid event-subscription show --name es1 \\
+ --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1/providers/Microsoft.EventGrid/topics/topic1
+ - name: Show the details of an event subscription for an Azure subscription.
text: |
- az eventgrid event-subscription show --name es2
+ az eventgrid event-subscription show --name es2 \\
+ --source-resource-id /subscriptions/{SubID}
- name: Show the details of an event subscription for a resource group.
text: |
- az eventgrid event-subscription show -g rg1 --name es3
+ az eventgrid event-subscription show --name es3 \\
+ --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1
- name: Show the details of an event subscription for a storage account.
text: |
- az eventgrid event-subscription show --resource-id "/subscriptions/55f3dcd4-cac7-43b4-990b-a139d62a1eb2/resourceGroups/kalstest/providers/microsoft.storage/storageaccounts/kalsegblob" --name es3
+ az eventgrid event-subscription show --name es3 \\
+ --source-resource-id /subscriptions/{SubID}/resourceGroups/rg1/providers/microsoft.storage/storageaccounts/kalsegblob
"""
helps['eventgrid topic-type'] = """
type: group
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventgrid-0.2.0/azure/cli/command_modules/eventgrid/_params.py new/azure-cli-eventgrid-0.2.1/azure/cli/command_modules/eventgrid/_params.py
--- old/azure-cli-eventgrid-0.2.0/azure/cli/command_modules/eventgrid/_params.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-eventgrid-0.2.1/azure/cli/command_modules/eventgrid/_params.py 2019-01-25 20:43:40.000000000 +0100
@@ -18,7 +18,7 @@
)
included_event_types_type = CLIArgumentType(
- help="A space-separated list of event types. To subscribe to all event types, the string \"All\" should be specified.",
+ help="A space-separated list of event types. Example: Microsoft.Storage.BlobCreated Microsoft.Storage.BlobDeleted. To subscribe to all event types, the string \"All\" should be specified.",
nargs='+'
)
@@ -35,9 +35,10 @@
c.argument('tags', arg_type=tags_type)
c.argument('included_event_types', arg_type=included_event_types_type)
c.argument('labels', arg_type=labels_type)
- c.argument('endpoint_type', arg_type=get_enum_type(['webhook', 'eventhub'], default='webhook'))
- c.argument('resource_id', help="Fully qualified identifier of the Azure resource.")
- c.argument('endpoint', help="Endpoint where EventGrid should deliver events matching this event subscription. For webhook endpoint type, this should be the corresponding webhook URL. For eventhub endpoint type, this should be the Azure ResourceID of the event hub.")
+ c.argument('endpoint_type', arg_type=get_enum_type(['webhook', 'eventhub', 'storagequeue', 'hybridconnection'], default='webhook'))
+ c.argument('source_resource_id', help="Fully qualified identifier of the source Azure resource.")
+ c.argument('resource_id', deprecate_info=c.deprecate(redirect="--source-resource-id", expiration='2.1.0', hide=True), help="Fully qualified identifier of the Azure resource.")
+ c.argument('endpoint', help="Endpoint where EventGrid should deliver events matching this event subscription. For webhook endpoint type, this should be the corresponding webhook URL. For other endpoint types, this should be the Azure resource identifier of the endpoint.")
c.argument('event_subscription_name', help="Name of the event subscription.")
c.argument('subject_begins_with', help="An optional string to filter events for an event subscription based on a prefix. Wildcard characters are not supported.")
c.argument('subject_ends_with', help="An optional string to filter events for an event subscription based on a suffix. Wildcard characters are not supported.")
@@ -47,21 +48,27 @@
with self.argument_context('eventgrid topic') as c:
c.argument('topic_name', arg_type=name_type, help='Name of the topic', id_part='name', completer=get_resource_name_completion_list('Microsoft.EventGrid/topics'))
+ with self.argument_context('eventgrid topic key list') as c:
+ c.argument('topic_name', id_part=None)
+
with self.argument_context('eventgrid event-subscription') as c:
- c.argument('topic_name', help='Name of the Event Grid topic', options_list=['--topic-name'], completer=get_resource_name_completion_list('Microsoft.EventGrid/topics'))
+ c.argument('topic_name', deprecate_info=c.deprecate(redirect="--source-resource-id", expiration='2.1.0', hide=True), help='Name of Event Grid topic', options_list=['--topic-name'], completer=get_resource_name_completion_list('Microsoft.EventGrid/topics'))
c.argument('event_subscription_name', arg_type=name_type, help='Name of the event subscription')
+ c.argument('max_delivery_attempts', help="Maximum number of delivery attempts. Must be a number between 1 and 30.")
+ c.argument('event_ttl', help="Event time to live (in minutes). Must be a number between 1 and 1440.")
+ c.argument('deadletter_endpoint', help="The Azure resource ID of an Azure Storage blob container destination where EventGrid should deadletter undeliverable events for this event subscription.")
with self.argument_context('eventgrid event-subscription create') as c:
- c.argument('topic_name', help='Name of the Event Grid topic to which the event subscription needs to be created.', options_list=['--topic-name'], completer=get_resource_name_completion_list('Microsoft.EventGrid/topics'))
- c.argument('event_subscription_name', arg_type=name_type, help='Name of the new event subscription')
- c.argument('resource_id', help="Fully qualified identifier of the Azure resource to which the event subscription needs to be created.")
+ c.argument('resource_group_name', deprecate_info=c.deprecate(redirect="--source-resource-id", expiration='2.1.0', hide=True), arg_type=resource_group_name_type)
with self.argument_context('eventgrid event-subscription delete') as c:
- c.argument('topic_name', help='Name of the Event Grid topic whose event subscription needs to be deleted.', options_list=['--topic-name'], completer=get_resource_name_completion_list('Microsoft.EventGrid/topics'))
- c.argument('event_subscription_name', arg_type=name_type, help='Name of the event subscription')
- c.argument('resource_id', help="Fully qualified identifier of the Azure resource whose event subscription needs to be deleted.")
+ c.argument('resource_group_name', deprecate_info=c.deprecate(redirect="--source-resource-id", expiration='2.1.0', hide=True), arg_type=resource_group_name_type)
+
+ with self.argument_context('eventgrid event-subscription update') as c:
+ c.argument('resource_group_name', deprecate_info=c.deprecate(redirect="--source-resource-id", expiration='2.1.0', hide=True), arg_type=resource_group_name_type)
with self.argument_context('eventgrid event-subscription show') as c:
+ c.argument('resource_group_name', deprecate_info=c.deprecate(redirect="--source-resource-id", expiration='2.1.0', hide=True), arg_type=resource_group_name_type)
c.argument('include_full_endpoint_url', arg_type=get_three_state_flag(), options_list=['--include-full-endpoint-url'], help="Specify to indicate whether the full endpoint URL should be returned. True if flag present.", )
with self.argument_context('eventgrid topic-type') as c:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventgrid-0.2.0/azure/cli/command_modules/eventgrid/commands.py new/azure-cli-eventgrid-0.2.1/azure/cli/command_modules/eventgrid/commands.py
--- old/azure-cli-eventgrid-0.2.0/azure/cli/command_modules/eventgrid/commands.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-eventgrid-0.2.1/azure/cli/command_modules/eventgrid/commands.py 2019-01-25 20:43:40.000000000 +0100
@@ -21,12 +21,12 @@
)
with self.command_group('eventgrid topic', topics_mgmt_util, client_factory=topics_factory) as g:
- g.command('create', 'create_or_update')
g.show_command('show', 'get')
g.command('key list', 'list_shared_access_keys')
g.command('key regenerate', 'regenerate_key')
g.command('delete', 'delete')
g.custom_command('list', 'cli_topic_list')
+ g.custom_command('create', 'cli_topic_create_or_update')
g.generic_update_command('update',
getter_name='get',
setter_name='update',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventgrid-0.2.0/azure/cli/command_modules/eventgrid/custom.py new/azure-cli-eventgrid-0.2.1/azure/cli/command_modules/eventgrid/custom.py
--- old/azure-cli-eventgrid-0.2.0/azure/cli/command_modules/eventgrid/custom.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-eventgrid-0.2.1/azure/cli/command_modules/eventgrid/custom.py 2019-01-25 20:43:40.000000000 +0100
@@ -3,6 +3,7 @@
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
+import re
from six.moves.urllib.parse import quote # pylint: disable=import-error
from knack.log import get_logger
from knack.util import CLIError
@@ -13,7 +14,11 @@
EventSubscription,
EventSubscriptionUpdateParameters,
WebHookEventSubscriptionDestination,
+ RetryPolicy,
EventHubEventSubscriptionDestination,
+ StorageQueueEventSubscriptionDestination,
+ HybridConnectionEventSubscriptionDestination,
+ StorageBlobDeadLetterDestination,
EventSubscriptionFilter)
logger = get_logger(__name__)
@@ -25,6 +30,9 @@
EVENTGRID_TOPICS = "topics"
WEBHOOK_DESTINATION = "webhook"
EVENTHUB_DESTINATION = "eventhub"
+STORAGEQUEUE_DESTINATION = "storagequeue"
+HYBRIDCONNECTION_DESTINATION = "hybridconnection"
+GLOBAL = "global"
def cli_topic_list(
@@ -36,12 +44,30 @@
return client.list_by_subscription()
-def cli_eventgrid_event_subscription_create(
+def cli_topic_create_or_update(
+ client,
+ resource_group_name,
+ topic_name,
+ location,
+ tags=None):
+ async_topic_create = client.create_or_update(
+ resource_group_name,
+ topic_name,
+ location,
+ tags)
+
+ created_topic = async_topic_create.result()
+
+ return created_topic
+
+
+def cli_eventgrid_event_subscription_create( # pylint: disable=too-many-locals
cmd,
client,
event_subscription_name,
endpoint,
resource_id=None,
+ source_resource_id=None,
resource_group_name=None,
topic_name=None,
endpoint_type=WEBHOOK_DESTINATION,
@@ -49,27 +75,68 @@
subject_begins_with=None,
subject_ends_with=None,
is_subject_case_sensitive=False,
+ max_delivery_attempts=30,
+ event_ttl=1440,
+ deadletter_endpoint=None,
labels=None):
- scope = _get_scope_for_event_subscription(cmd.cli_ctx, resource_id, topic_name, resource_group_name)
+ scope = _get_scope_for_event_subscription(
+ cli_ctx=cmd.cli_ctx,
+ source_resource_id=source_resource_id,
+ resource_id=resource_id,
+ topic_name=topic_name,
+ resource_group_name=resource_group_name)
+
+ # Construct RetryPolicy based on max_delivery_attempts and event_ttl
+ max_delivery_attempts = int(max_delivery_attempts)
+ event_ttl = int(event_ttl)
+ _validate_retry_policy(max_delivery_attempts, event_ttl)
+ retry_policy = RetryPolicy(max_delivery_attempts=max_delivery_attempts, event_time_to_live_in_minutes=event_ttl)
- if endpoint_type.lower() == WEBHOOK_DESTINATION.lower():
- destination = WebHookEventSubscriptionDestination(endpoint)
- elif endpoint_type.lower() == EVENTHUB_DESTINATION.lower():
- destination = EventHubEventSubscriptionDestination(endpoint)
+ destination = _get_endpoint_destination(endpoint_type, endpoint)
event_subscription_filter = EventSubscriptionFilter(
- subject_begins_with,
- subject_ends_with,
- included_event_types,
- is_subject_case_sensitive)
- event_subscription_info = EventSubscription(destination, event_subscription_filter, labels)
+ subject_begins_with=subject_begins_with,
+ subject_ends_with=subject_ends_with,
+ included_event_types=included_event_types,
+ is_subject_case_sensitive=is_subject_case_sensitive)
+
+ deadletter_destination = None
+ if deadletter_endpoint is not None:
+ deadletter_destination = _get_deadletter_destination(deadletter_endpoint)
+
+ event_subscription_info = EventSubscription(
+ destination=destination,
+ filter=event_subscription_filter,
+ labels=labels,
+ retry_policy=retry_policy,
+ dead_letter_destination=deadletter_destination)
+
+ _warn_if_manual_handshake_needed(endpoint_type, endpoint)
- async_event_subscription_create = client.create_or_update(
+ return client.create_or_update(
scope,
event_subscription_name,
- event_subscription_info)
- created_event_subscription = async_event_subscription_create.result()
- return created_event_subscription
+ event_subscription_info).result()
+
+
+def cli_eventgrid_event_subscription_delete(
+ cmd,
+ client,
+ event_subscription_name,
+ resource_id=None,
+ source_resource_id=None,
+ resource_group_name=None,
+ topic_name=None):
+ scope = _get_scope_for_event_subscription(
+ cli_ctx=cmd.cli_ctx,
+ source_resource_id=source_resource_id,
+ resource_id=resource_id,
+ topic_name=topic_name,
+ resource_group_name=resource_group_name)
+ async_event_subscription_delete = client.delete(
+ scope,
+ event_subscription_name)
+ return async_event_subscription_delete.result()
def event_subscription_setter(
@@ -77,10 +144,16 @@
client,
parameters,
event_subscription_name,
+ source_resource_id=None,
resource_id=None,
resource_group_name=None,
topic_name=None):
- scope = _get_scope_for_event_subscription(cmd.cli_ctx, resource_id, topic_name, resource_group_name)
+ scope = _get_scope_for_event_subscription(
+ cli_ctx=cmd.cli_ctx,
+ source_resource_id=source_resource_id,
+ resource_id=resource_id,
+ topic_name=topic_name,
+ resource_group_name=resource_group_name)
async_event_subscription_update = client.update(
scope,
@@ -94,11 +167,18 @@
cmd,
client,
event_subscription_name,
+ source_resource_id=None,
resource_id=None,
resource_group_name=None,
topic_name=None,
include_full_endpoint_url=False):
- scope = _get_scope_for_event_subscription(cmd.cli_ctx, resource_id, topic_name, resource_group_name)
+ scope = _get_scope_for_event_subscription(
+ cli_ctx=cmd.cli_ctx,
+ source_resource_id=source_resource_id,
+ resource_id=resource_id,
+ topic_name=topic_name,
+ resource_group_name=resource_group_name)
+
retrieved_event_subscription = client.get(scope, event_subscription_name)
destination = retrieved_event_subscription.destination
if include_full_endpoint_url and isinstance(destination, WebHookEventSubscriptionDestination):
@@ -108,44 +188,39 @@
return retrieved_event_subscription
-def cli_eventgrid_event_subscription_delete(
- cmd,
- client,
- event_subscription_name,
- resource_id=None,
- resource_group_name=None,
- topic_name=None):
- scope = _get_scope_for_event_subscription(cmd.cli_ctx, resource_id, topic_name, resource_group_name)
- return client.delete(scope, event_subscription_name)
-
-
def cli_event_subscription_list( # pylint: disable=too-many-return-statements
client,
resource_id=None,
- resource_group_name=None,
+ source_resource_id=None,
topic_name=None,
+ resource_group_name=None,
location=None,
topic_type_name=None):
- if resource_id:
- # Resource ID is specified, we need to list only for the particular resource.
- if resource_group_name is not None or topic_name is not None:
- raise CLIError('Since ResourceId is specified, topic-name and resource-group-name should not be specified.')
-
- id_parts = parse_resource_id(resource_id)
- rg_name = id_parts['resource_group']
- resource_name = id_parts['name']
- provider_namespace = id_parts['namespace']
- resource_type = id_parts['resource_type']
+ if source_resource_id is not None:
+ # If Source Resource ID is specified, we need to list event subscriptions for that particular resource.
+ # Since a full resource ID is specified, it should override all other defaults such as default location and RG
+ # No other parameters must be specified
+ if (topic_type_name is not None or resource_id is not None):
+ raise CLIError('usage error: Since --source-resource-id is specified, none of the other parameters must '
+ 'be specified.')
+
+ return _list_event_subscriptions_by_resource_id(client, source_resource_id)
+
+ if resource_id is not None:
+ # DEPRECATED
+ # If resource ID is specified, we need to list event subscriptions for that particular resource.
+ # Since a full resource ID is specified, it should override all other defaults such as default location and RG
+ # No other parameters must be specified
+ if topic_type_name is not None:
+ raise CLIError('usage error: Since --resource-id is specified, none of the other parameters must '
+ 'be specified.')
- return client.list_by_resource(
- rg_name,
- provider_namespace,
- resource_type,
- resource_name)
+ return _list_event_subscriptions_by_resource_id(client, resource_id)
if topic_name:
+ # DEPRECATED
if resource_group_name is None:
- raise CLIError('Since topic-name is specified, resource-group-name must also be specified.')
+ raise CLIError('Since --topic-name is specified, --resource-group must also be specified.')
return client.list_by_resource(
resource_group_name,
@@ -153,37 +228,37 @@
EVENTGRID_TOPICS,
topic_name)
- if topic_type_name:
- if location:
+ if location is None:
+ # Since resource-id was not specified, location must be specified: e.g. "westus2" or "global". If not error OUT.
+ raise CLIError('usage error: --source-resource-id ID | --location LOCATION'
+ ' [--resource-group RG] [--topic-type-name TOPIC_TYPE_NAME]')
+
+ if topic_type_name is None:
+ # No topic-type is specified: return event subscriptions across all topic types for this location.
+ if location.lower() == GLOBAL.lower():
if resource_group_name:
- return client.list_regional_by_resource_group_for_topic_type(
- resource_group_name,
- location,
- topic_type_name)
-
- return client.list_regional_by_subscription_for_topic_type(
- location,
- topic_type_name)
+ return client.list_global_by_resource_group(resource_group_name)
+ return client.list_global_by_subscription()
if resource_group_name:
- return client.list_global_by_resource_group_for_topic_type(
- resource_group_name,
- topic_type_name)
-
- return client.list_global_by_subscription_for_topic_type(topic_type_name)
+ return client.list_regional_by_resource_group(resource_group_name, location)
+ return client.list_regional_by_subscription(location)
- if location:
+ # Topic type name is specified
+ if location.lower() == GLOBAL.lower():
+ if not _is_topic_type_global_resource(topic_type_name):
+ raise CLIError('Invalid usage: Global cannot be specified for the location '
+ 'as the specified topic type is a regional topic type with '
+ 'regional event subscriptions. Specify a location value such '
+ 'as westus. Global can be used only for global topic types: '
+ 'Microsoft.Resources.Subscriptions and Microsoft.Resources.ResourceGroups.')
if resource_group_name:
- return client.list_regional_by_resource_group(
- resource_group_name,
- location)
-
- return client.list_regional_by_subscription(location)
+ return client.list_global_by_resource_group_for_topic_type(resource_group_name, topic_type_name)
+ return client.list_global_by_subscription_for_topic_type(topic_type_name)
if resource_group_name:
- return client.list_global_by_resource_group(resource_group_name)
-
- return client.list_global_by_subscription()
+ return client.list_regional_by_resource_group_for_topic_type(resource_group_name, location, topic_type_name)
+ return client.list_regional_by_subscription_for_topic_type(location, topic_type_name)
def _get_scope(
@@ -219,21 +294,42 @@
def _get_scope_for_event_subscription(
cli_ctx,
resource_id,
+ source_resource_id,
topic_name,
resource_group_name):
- if resource_id:
- # Resource ID is provided, use that as the scope for the event subscription.
+ if all([resource_id, source_resource_id]):
+ raise CLIError('usage error: specify either "--resource-id" or "--source-resource-id", not both.')
+
+ if all([resource_id, topic_name]):
+ raise CLIError('usage error: specify either "--topic-name" or "--resource-id", not both.')
+
+ if all([source_resource_id, topic_name]):
+ raise CLIError('usage error: specify either "--topic-name" or "--source-resource-id", not both.')
+
+ # A default resource Group Name could have been configured
+ # but if --resource-id or --source-resource-id is provided, it always overrides it.
+
+ if source_resource_id:
+ # Source Resource ID is provided, use that as the scope for the event subscription.
+ # This is the latest non-deprecated way of specifying the source resource.
+ scope = source_resource_id
+ elif resource_id:
+ # Deprecated
scope = resource_id
elif topic_name:
- # Topic name is provided, use the topic and resource group to build a scope for the user topic
+ # DEPRECATED: Topic name is provided, use the topic and resource group to build a scope for the user topic
if resource_group_name is None:
- raise CLIError("When topic name is specified, the resource group name must also be specified.")
+ raise CLIError("When --topic-name is specified, the --resource-group-name must also be specified.")
scope = _get_scope(cli_ctx, resource_group_name, EVENTGRID_NAMESPACE, EVENTGRID_TOPICS, topic_name)
elif resource_group_name:
- # Event subscription to a resource group.
+ # DEPRECATED: Event subscription to a resource group.
scope = _get_scope(cli_ctx, resource_group_name, RESOURCES_NAMESPACE, RESOURCE_GROUPS, resource_group_name)
else:
+ # DEPRECATED
+ logger.warning('This default option uses Azure subscription as the source resource.'
+ ' This is deprecated and will be removed in a future release.'
+ ' Use `--source-resource-id /subscriptions/{subid}` instead.')
scope = _get_scope(cli_ctx, None, RESOURCES_NAMESPACE, SUBSCRIPTIONS, get_subscription_id(cli_ctx))
return scope
@@ -243,12 +339,17 @@
cmd,
client,
event_subscription_name,
+ source_resource_id=None,
resource_id=None,
resource_group_name=None,
topic_name=None):
- scope = _get_scope_for_event_subscription(cmd.cli_ctx, resource_id, topic_name, resource_group_name)
- retrieved_event_subscription = client.get(scope, event_subscription_name)
- return retrieved_event_subscription
+ scope = _get_scope_for_event_subscription(
+ cli_ctx=cmd.cli_ctx,
+ source_resource_id=source_resource_id,
+ resource_id=resource_id,
+ topic_name=topic_name,
+ resource_group_name=resource_group_name)
+ return client.get(scope, event_subscription_name)
def update_event_subscription(
@@ -258,16 +359,23 @@
subject_begins_with=None,
subject_ends_with=None,
included_event_types=None,
- labels=None):
+ labels=None,
+ deadletter_endpoint=None):
event_subscription_destination = None
+ deadletter_destination = None
event_subscription_labels = instance.labels
event_subscription_filter = instance.filter
+ retry_policy = instance.retry_policy
+
+ if endpoint_type.lower() != WEBHOOK_DESTINATION.lower() and endpoint is None:
+ raise CLIError('Invalid usage: Since --endpoint-type is specified, a valid endpoint must also be specified.')
+
if endpoint is not None:
- if endpoint_type.lower() == WEBHOOK_DESTINATION.lower():
- event_subscription_destination = WebHookEventSubscriptionDestination(endpoint)
- elif endpoint_type.lower() == EVENTHUB_DESTINATION.lower():
- event_subscription_destination = EventHubEventSubscriptionDestination(endpoint)
+ event_subscription_destination = _get_endpoint_destination(endpoint_type, endpoint)
+
+ if deadletter_endpoint is not None:
+ deadletter_destination = _get_deadletter_destination(deadletter_endpoint)
if subject_begins_with is not None:
event_subscription_filter.subject_begins_with = subject_begins_with
@@ -284,7 +392,154 @@
params = EventSubscriptionUpdateParameters(
destination=event_subscription_destination,
filter=event_subscription_filter,
- labels=event_subscription_labels
+ labels=event_subscription_labels,
+ retry_policy=retry_policy,
+ dead_letter_destination=deadletter_destination
)
return params
+
+
+def _get_endpoint_destination(endpoint_type, endpoint):
+ if endpoint_type.lower() == WEBHOOK_DESTINATION.lower():
+ destination = WebHookEventSubscriptionDestination(endpoint_url=endpoint)
+ elif endpoint_type.lower() == EVENTHUB_DESTINATION.lower():
+ destination = EventHubEventSubscriptionDestination(resource_id=endpoint)
+ elif endpoint_type.lower() == HYBRIDCONNECTION_DESTINATION.lower():
+ destination = HybridConnectionEventSubscriptionDestination(resource_id=endpoint)
+ elif endpoint_type.lower() == STORAGEQUEUE_DESTINATION.lower():
+ destination = _get_storage_queue_destination(endpoint)
+
+ return destination
+
+
+def _get_storage_queue_destination(endpoint):
+ # Supplied endpoint would be in the following format:
+ # /subscriptions/.../storageAccounts/sa1/queueServices/default/queues/{queueName}))
+ # and we need to break it up into:
+ # /subscriptions/.../storageAccounts/sa1 and queueName
+ queue_items = re.split(
+ "/queueServices/default/queues/", endpoint, flags=re.IGNORECASE)
+
+ if len(queue_items) != 2 or queue_items[0] is None or queue_items[1] is None:
+ raise CLIError('Argument Error: Expected format of --endpoint for storage queue is:' +
+ '/subscriptions/id/resourceGroups/rg/providers/Microsoft.Storage/' +
+ 'storageAccounts/sa1/queueServices/default/queues/queueName')
+
+ return StorageQueueEventSubscriptionDestination(resource_id=queue_items[0], queue_name=queue_items[1])
+
+
+def _get_deadletter_destination(deadletter_endpoint):
+ blob_items = re.split(
+ "/blobServices/default/containers/", deadletter_endpoint, flags=re.IGNORECASE)
+
+ if len(blob_items) != 2 or blob_items[0] is None or blob_items[1] is None:
+ raise CLIError('Argument Error: Expected format of --deadletter-endpoint is:' +
+ '/subscriptions/id/resourceGroups/rg/providers/Microsoft.Storage/' +
+ 'storageAccounts/sa1/blobServices/default/containers/containerName')
+
+ return StorageBlobDeadLetterDestination(resource_id=blob_items[0], blob_container_name=blob_items[1])
+
+
+def _validate_retry_policy(max_delivery_attempts, event_ttl):
+ if max_delivery_attempts < 1 or max_delivery_attempts > 30:
+ raise CLIError('--max-delivery-attempts should be a number between 1 and 30.')
+
+ if event_ttl < 1 or event_ttl > 1440:
+ raise CLIError('--event-ttl should be a number between 1 and 1440.')
+
+
+def _warn_if_manual_handshake_needed(endpoint_type, endpoint):
+ # If the endpoint belongs to a service that we know implements the subscription validation
+ # handshake, there's no need to show this message, hence we check for those services
+ # before showing this message. This list includes Azure Automation, EventGrid Trigger based
+ # Azure functions, and Azure Logic Apps.
+ if endpoint_type.lower() == WEBHOOK_DESTINATION.lower() and \
+ "azure-automation" not in endpoint.lower() and \
+ "eventgridextension" not in endpoint.lower() and \
+ "logic.azure" not in endpoint.lower():
+
+ logger.warning('If the provided endpoint does not support subscription validation '
+ 'handshake, navigate to the validation URL that you receive in the '
+ 'subscription validation event, in order to complete the event '
+ 'subscription creation or update. For more details, '
+ 'please visit http://aka.ms/esvalidation')
+
+
+def _list_event_subscriptions_by_resource_id(client, resource_id):
+ # parse_resource_id doesn't handle resource_ids for Azure subscriptions and RGs
+ # so, first try to look for those two patterns.
+ if resource_id is not None:
+ id_parts = list(filter(None, resource_id.split('/')))
+ if len(id_parts) < 5:
+ # Azure subscriptions or Resource group
+ if id_parts[0].lower() != "subscriptions":
+ raise CLIError('The specified value for resource-id is not in the'
+ ' expected format. It should start with /subscriptions.')
+
+ subscription_id = id_parts[1]
+ _validate_subscription_id_matches_default_subscription_id(
+ default_subscription_id=client.config.subscription_id,
+ provided_subscription_id=subscription_id)
+
+ if len(id_parts) == 2:
+ return client.list_global_by_subscription_for_topic_type("Microsoft.Resources.Subscriptions")
+
+ if len(id_parts) == 4 and id_parts[2].lower() == "resourcegroups":
+ resource_group_name = id_parts[3]
+ if resource_group_name is None:
+ raise CLIError('The specified value for resource-id is not'
+ ' in the expected format. A valid value for'
+ ' resource group must be provided.')
+ return client.list_global_by_resource_group_for_topic_type(
+ resource_group_name,
+ "Microsoft.Resources.ResourceGroups")
+
+ id_parts = parse_resource_id(resource_id)
+ subscription_id = id_parts.get('subscription')
+ _validate_subscription_id_matches_default_subscription_id(
+ default_subscription_id=client.config.subscription_id,
+ provided_subscription_id=subscription_id)
+
+ rg_name = id_parts.get('resource_group')
+ resource_name = id_parts.get('name')
+ namespace = id_parts.get('namespace')
+ resource_type = id_parts.get('type')
+
+ if (subscription_id is None or rg_name is None or resource_name is None or
+ namespace is None or resource_type is None):
+ raise CLIError('The specified value for resource-id is not'
+ ' in the expected format.')
+
+ # Invoke the standard list_by_resource
+ return client.list_by_resource(
+ rg_name,
+ namespace,
+ resource_type,
+ resource_name)
+
+
+def _is_topic_type_global_resource(topic_type_name):
+ # TODO: Add here if any other global topic types get added in the future.
+ TOPIC_TYPE_AZURE_SUBSCRIPTIONS = "Microsoft.Resources.Subscriptions"
+ TOPIC_TYPE_AZURE_RESOURCE_GROUP = "Microsoft.Resources.ResourceGroups"
+ TOPIC_TYPE_MAPS_ACCOUNTS = "Microsoft.Maps.Accounts"
+
+ if (topic_type_name.lower() == TOPIC_TYPE_AZURE_SUBSCRIPTIONS.lower() or
+ topic_type_name.lower() == TOPIC_TYPE_MAPS_ACCOUNTS or
+ topic_type_name.lower() == TOPIC_TYPE_AZURE_RESOURCE_GROUP.lower()):
+ return True
+
+ return False
+
+
+def _validate_subscription_id_matches_default_subscription_id(
+ default_subscription_id,
+ provided_subscription_id):
+ # The CLI/SDK infrastructure doesn't support overriding the subscription ID.
+ # Hence, we validate that the provided subscription ID is the same as the default
+ # configured subscription.
+ if provided_subscription_id.lower() != default_subscription_id.lower():
+ raise CLIError('The subscription ID in the specified resource-id'
+ ' does not match the default subscription ID. To set the default subscription ID,'
+ ' use az account set ID_OR_NAME, or use the global argument --subscription ')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventgrid-0.2.0/azure_cli_eventgrid.egg-info/PKG-INFO new/azure-cli-eventgrid-0.2.1/azure_cli_eventgrid.egg-info/PKG-INFO
--- old/azure-cli-eventgrid-0.2.0/azure_cli_eventgrid.egg-info/PKG-INFO 2018-07-14 01:41:43.000000000 +0200
+++ new/azure-cli-eventgrid-0.2.1/azure_cli_eventgrid.egg-info/PKG-INFO 2019-01-25 20:44:06.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-eventgrid
-Version: 0.2.0
+Version: 0.2.1
Summary: Microsoft Azure Command-Line Tools EventGrid Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,14 @@
Release History
===============
+ 0.2.1
+ +++++
+ * `event-subscription create/update`: Added `--deadletter-endpoint` parameter.
+ * 'event-subscription create/update`: Added storagequeue and hybridconnection as new values for the `--endpoint-type` parameter.
+ * `event-subscription create`: Added `--max-delivery-attempts` and `--event-ttl` parameters to specify the retry policy for events.
+ * `event-subscription create/update`: Added a warning message for manual handshake validation when Webhook as destination is used for an event subscription.
+ * Added source-resource-id parameter for all event subscription related commands and mark all other source resource related parameters as deprecated.
+
0.2.0
+++++
* BREAKING CHANGE: 'show' commands log error message and fail with exit code of 3 upon a missing resource.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventgrid-0.2.0/azure_cli_eventgrid.egg-info/requires.txt new/azure-cli-eventgrid-0.2.1/azure_cli_eventgrid.egg-info/requires.txt
--- old/azure-cli-eventgrid-0.2.0/azure_cli_eventgrid.egg-info/requires.txt 2018-07-14 01:41:43.000000000 +0200
+++ new/azure-cli-eventgrid-0.2.1/azure_cli_eventgrid.egg-info/requires.txt 2019-01-25 20:44:06.000000000 +0100
@@ -1,3 +1,3 @@
azure-cli-core
six
-azure-mgmt-eventgrid==0.4.0
+azure-mgmt-eventgrid==2.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-eventgrid-0.2.0/setup.py new/azure-cli-eventgrid-0.2.1/setup.py
--- old/azure-cli-eventgrid-0.2.0/setup.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-eventgrid-0.2.1/setup.py 2019-01-25 20:43:40.000000000 +0100
@@ -13,7 +13,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "0.2.0"
+VERSION = "0.2.1"
# The full list of classifiers is available at
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
@@ -33,7 +33,7 @@
DEPENDENCIES = [
'azure-cli-core',
'six',
- 'azure-mgmt-eventgrid==0.4.0',
+ 'azure-mgmt-eventgrid==2.0.0',
]
with open('README.rst', 'r', encoding='utf-8') as f:
1
0
Hello community,
here is the log from the commit of package azure-cli-dms for openSUSE:Factory checked in at 2019-05-22 10:59:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-dms (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-dms.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-dms"
Wed May 22 10:59:51 2019 rev:2 rq:696832 version:0.1.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-dms/azure-cli-dms.changes 2018-10-15 10:49:22.187010172 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-dms.new.5148/azure-cli-dms.changes 2019-05-22 10:59:54.526775865 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 14:28:51 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.1.2
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-dms-0.1.0.tar.gz
New:
----
azure-cli-dms-0.1.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-dms.spec ++++++
--- /var/tmp/diff_new_pack.YncwNR/_old 2019-05-22 10:59:56.122773798 +0200
+++ /var/tmp/diff_new_pack.YncwNR/_new 2019-05-22 10:59:56.150773762 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-dms
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,11 +12,12 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
+
Name: azure-cli-dms
-Version: 0.1.0
+Version: 0.1.2
Release: 0
Summary: Microsoft Azure CLI 'Database Migration Service' Command Module
License: MIT
@@ -24,17 +25,16 @@
Url: https://github.com/Azure/azure-cli
Source: https://files.pythonhosted.org/packages/source/a/azure-cli-dms/azure-cli-dm…
Source1: LICENSE.txt
-BuildRequires: python3-devel
-BuildRequires: python3-setuptools
-BuildRequires: unzip
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
+BuildRequires: python3-setuptools
Requires: azure-cli-command-modules-nspkg
+Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-nspkg
Requires: python3-azure-mgmt-datamigration >= 0.1.0
-Requires: azure-cli-core
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-pyOpenSSL
Conflicts: azure-cli < 2.0.0
@@ -55,6 +55,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
@@ -68,4 +69,5 @@
%license LICENSE.txt
%{python3_sitelib}/azure/cli/command_modules/dms
%{python3_sitelib}/azure_cli_dms-*.egg-info
+
%changelog
++++++ azure-cli-dms-0.1.0.tar.gz -> azure-cli-dms-0.1.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dms-0.1.0/HISTORY.rst new/azure-cli-dms-0.1.2/HISTORY.rst
--- old/azure-cli-dms-0.1.0/HISTORY.rst 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-dms-0.1.2/HISTORY.rst 2019-01-25 20:43:40.000000000 +0100
@@ -2,6 +2,13 @@
Release History
===============
+0.1.2
++++++
+* Minor fixes.
+
+0.1.1
+++++++
+* Minor fixes.
0.1.0
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dms-0.1.0/PKG-INFO new/azure-cli-dms-0.1.2/PKG-INFO
--- old/azure-cli-dms-0.1.0/PKG-INFO 2018-07-14 01:42:00.000000000 +0200
+++ new/azure-cli-dms-0.1.2/PKG-INFO 2019-01-25 20:44:22.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-dms
-Version: 0.1.0
+Version: 0.1.2
Summary: Microsoft Azure Command-Line Tools for the Data Migration Service (DMS) Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -19,6 +19,13 @@
Release History
===============
+ 0.1.2
+ +++++
+ * Minor fixes.
+
+ 0.1.1
+ ++++++
+ * Minor fixes.
0.1.0
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dms-0.1.0/azure/cli/command_modules/dms/_help.py new/azure-cli-dms-0.1.2/azure/cli/command_modules/dms/_help.py
--- old/azure-cli-dms-0.1.0/azure/cli/command_modules/dms/_help.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-dms-0.1.2/azure/cli/command_modules/dms/_help.py 2019-01-25 20:43:40.000000000 +0100
@@ -44,7 +44,7 @@
examples:
- name: Create an instance of DMS.
text: >
- az dms create -l westus -n mydms -g myresourcegroup --sku-name Basic_2vCores --subnet /subscriptions/{vnet subscription id}/resourceGroups/{vnet resource group}/providers/Microsoft.Network/virtualNetworks/{vnet name}/subnets/{subnet name} --tags tagName1=tagValue1 tagWithNoValue
+ az dms create -l westus -n mydms -g myresourcegroup --sku-name Basic_2vCores --subnet /subscriptions/{vnetSubscriptionId}/resourceGroups/{vnetResourceGroup}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName} --tags tagName1=tagValue1 tagWithNoValue
"""
helps['dms delete'] = """
@@ -185,10 +185,10 @@
examples:
- name: Create and start a Task which performs no validation checks.
text: >
- az dms project task create --database-options-json C:\CLI Files\databaseOptions.json -n mytask --project-name myproject -g myresourcegroup --service-name mydms --source-connection-json '{'dataSource': 'myserver', 'authentication': 'SqlAuthentication', 'encryptConnection': 'true', 'trustServerCertificate': 'true'}' --target-connection-json C:\CLI Files\targetConnection.json
+ az dms project task create --database-options-json "C:\CLI Files\databaseOptions.json" -n mytask --project-name myproject -g myresourcegroup --service-name mydms --source-connection-json "{'dataSource': 'myserver', 'authentication': 'SqlAuthentication', 'encryptConnection': 'true', 'trustServerCertificate': 'true'}" --target-connection-json "C:\CLI Files\targetConnection.json"
- name: Create and start a Task which performs all validation checks.
text: >
- az dms project task create --database-options-json C:\CLI Files\databaseOptions.json -n mytask --project-name myproject -g myresourcegroup --service-name mydms --source-connection-json C:\CLI Files\sourceConnection.json --target-connection-json C:\CLI Files\targetConnection.json --enable-data-integrity-validation=True --enable-query-analysis-validation --enable-schema-validation
+ az dms project task create --database-options-json "C:\CLI Files\databaseOptions.json" -n mytask --project-name myproject -g myresourcegroup --service-name mydms --source-connection-json "C:\CLI Files\sourceConnection.json" --target-connection-json "C:\CLI Files\targetConnection.json" --enable-data-integrity-validation --enable-query-analysis-validation --enable-schema-validation
- name: The format of the database options JSON object.
text: >
[
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dms-0.1.0/azure_cli_dms.egg-info/PKG-INFO new/azure-cli-dms-0.1.2/azure_cli_dms.egg-info/PKG-INFO
--- old/azure-cli-dms-0.1.0/azure_cli_dms.egg-info/PKG-INFO 2018-07-14 01:42:00.000000000 +0200
+++ new/azure-cli-dms-0.1.2/azure_cli_dms.egg-info/PKG-INFO 2019-01-25 20:44:22.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-dms
-Version: 0.1.0
+Version: 0.1.2
Summary: Microsoft Azure Command-Line Tools for the Data Migration Service (DMS) Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -19,6 +19,13 @@
Release History
===============
+ 0.1.2
+ +++++
+ * Minor fixes.
+
+ 0.1.1
+ ++++++
+ * Minor fixes.
0.1.0
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dms-0.1.0/setup.py new/azure-cli-dms-0.1.2/setup.py
--- old/azure-cli-dms-0.1.0/setup.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-dms-0.1.2/setup.py 2019-01-25 20:43:40.000000000 +0100
@@ -14,7 +14,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "0.1.0"
+VERSION = "0.1.2"
# The full list of classifiers is available at
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
CLASSIFIERS = [
1
0
Hello community,
here is the log from the commit of package azure-cli-dls for openSUSE:Factory checked in at 2019-05-22 10:59:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-dls (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-dls.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-dls"
Wed May 22 10:59:48 2019 rev:5 rq:696831 version:0.1.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-dls/azure-cli-dls.changes 2018-10-15 10:48:18.455078194 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-dls.new.5148/azure-cli-dls.changes 2019-05-22 10:59:50.698780823 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 14:26:51 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.1.8
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-dls-0.1.1.tar.gz
New:
----
azure-cli-dls-0.1.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-dls.spec ++++++
--- /var/tmp/diff_new_pack.H3vvWb/_old 2019-05-22 10:59:51.770779434 +0200
+++ /var/tmp/diff_new_pack.H3vvWb/_new 2019-05-22 10:59:51.798779398 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-dls
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-dls
-Version: 0.1.1
+Version: 0.1.8
Release: 0
Summary: Microsoft Azure CLI 'data lake store' Command Module
License: MIT
@@ -27,16 +27,15 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-datalake-store >= 0.0.27
-Requires: python3-azure-mgmt-datalake-store >= 0.2.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-datalake-store >= 0.0.39
+Requires: python3-azure-mgmt-datalake-store >= 0.5.0
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -56,6 +55,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-dls-0.1.1.tar.gz -> azure-cli-dls-0.1.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dls-0.1.1/HISTORY.rst new/azure-cli-dls-0.1.8/HISTORY.rst
--- old/azure-cli-dls-0.1.1/HISTORY.rst 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-dls-0.1.8/HISTORY.rst 2019-02-12 03:05:13.000000000 +0100
@@ -2,6 +2,34 @@
Release History
===============
+0.1.8
++++++
+* Minor fixes.
+
+0.1.7
+++++++
+* Minor fixes.
+
+0.1.6
++++++
+* Update ADLS version(0.0.39).
+
+0.1.5
++++++
+* Update ADLS version(0.0.38).
+
+0.1.4
++++++
+* Update ADLS version(0.0.34). API version change to 2018-05-01
+
+0.1.3
++++++
+* Update ADLS version to latest(0.0.31)
+* Added commands for virtual network rules.
+
+0.1.2
++++++
+* Update ADLS version to latest(0.0.29)
0.1.1
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dls-0.1.1/PKG-INFO new/azure-cli-dls-0.1.8/PKG-INFO
--- old/azure-cli-dls-0.1.1/PKG-INFO 2018-08-23 01:09:11.000000000 +0200
+++ new/azure-cli-dls-0.1.8/PKG-INFO 2019-02-12 03:05:57.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-dls
-Version: 0.1.1
+Version: 0.1.8
Summary: Microsoft Azure Command-Line Tools Data Lake Store Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -19,6 +19,34 @@
Release History
===============
+ 0.1.8
+ +++++
+ * Minor fixes.
+
+ 0.1.7
+ ++++++
+ * Minor fixes.
+
+ 0.1.6
+ +++++
+ * Update ADLS version(0.0.39).
+
+ 0.1.5
+ +++++
+ * Update ADLS version(0.0.38).
+
+ 0.1.4
+ +++++
+ * Update ADLS version(0.0.34). API version change to 2018-05-01
+
+ 0.1.3
+ +++++
+ * Update ADLS version to latest(0.0.31)
+ * Added commands for virtual network rules.
+
+ 0.1.2
+ +++++
+ * Update ADLS version to latest(0.0.29)
0.1.1
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dls-0.1.1/azure/cli/command_modules/dls/_client_factory.py new/azure-cli-dls-0.1.8/azure/cli/command_modules/dls/_client_factory.py
--- old/azure-cli-dls-0.1.1/azure/cli/command_modules/dls/_client_factory.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-dls-0.1.8/azure/cli/command_modules/dls/_client_factory.py 2019-02-12 03:05:13.000000000 +0100
@@ -7,7 +7,7 @@
def cf_dls_account(cli_ctx, _):
from azure.cli.core.commands.client_factory import get_mgmt_service_client
from azure.mgmt.datalake.store import DataLakeStoreAccountManagementClient
- return get_mgmt_service_client(cli_ctx, DataLakeStoreAccountManagementClient).account
+ return get_mgmt_service_client(cli_ctx, DataLakeStoreAccountManagementClient).accounts
def cf_dls_account_firewall(cli_ctx, _):
@@ -16,6 +16,12 @@
return get_mgmt_service_client(cli_ctx, DataLakeStoreAccountManagementClient).firewall_rules
+def cf_dls_account_virtual_network(cli_ctx, _):
+ from azure.cli.core.commands.client_factory import get_mgmt_service_client
+ from azure.mgmt.datalake.store import DataLakeStoreAccountManagementClient
+ return get_mgmt_service_client(cli_ctx, DataLakeStoreAccountManagementClient).virtual_network_rules
+
+
def cf_dls_account_trusted_provider(cli_ctx, _):
from azure.cli.core.commands.client_factory import get_mgmt_service_client
from azure.mgmt.datalake.store import DataLakeStoreAccountManagementClient
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dls-0.1.1/azure/cli/command_modules/dls/_help.py new/azure-cli-dls-0.1.8/azure/cli/command_modules/dls/_help.py
--- old/azure-cli-dls-0.1.1/azure/cli/command_modules/dls/_help.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-dls-0.1.8/azure/cli/command_modules/dls/_help.py 2019-02-12 03:05:13.000000000 +0100
@@ -5,301 +5,382 @@
# --------------------------------------------------------------------------------------------
from knack.help_files import helps
-
+# pylint: disable=line-too-long, too-many-lines
helps['dls'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Store accounts and filesystems.
+type: group
+short-summary: (PREVIEW) Manage Data Lake Store accounts and filesystems.
"""
helps['dls account'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Store accounts.
+type: group
+short-summary: (PREVIEW) Manage Data Lake Store accounts.
"""
helps['dls account create'] = """
- type: command
- short-summary: Creates a Data Lake Store account.
- parameters:
- - name: --default-group
- type: string
- short-summary: 'Name of the default group to give permissions to for freshly created files and folders in the Data Lake Store account.'
- - name: --key-vault-id
- type: string
- short-summary: 'Key vault for the user-assigned encryption type.'
- - name: --key-name
- type: string
- short-summary: 'Key name for the user-assigned encryption type.'
- - name: --key-version
- type: string
- short-summary: 'Key version for the user-assigned encryption type.'
+type: command
+short-summary: Creates a Data Lake Store account.
+parameters:
+ - name: --default-group
+ type: string
+ short-summary: 'Name of the default group to give permissions to for freshly created files and folders in the Data Lake Store account.'
+ - name: --key-vault-id
+ type: string
+ short-summary: 'Key vault for the user-assigned encryption type.'
+ - name: --key-name
+ type: string
+ short-summary: 'Key name for the user-assigned encryption type.'
+ - name: --key-version
+ type: string
+ short-summary: 'Key version for the user-assigned encryption type.'
"""
-helps['dls account update'] = """
- type: command
- short-summary: Updates a Data Lake Store account.
+helps['dls account delete'] = """
+type: command
+short-summary: Delete a Data Lake Store account.
"""
-helps['dls account show'] = """
- type: command
- short-summary: Get the details of a Data Lake Store account.
+helps['dls account enable-key-vault'] = """
+type: command
+short-summary: Enable the use of Azure Key Vault for encryption of a Data Lake Store account.
+"""
+
+helps['dls account firewall'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Store account firewall rules.
+"""
+
+helps['dls account firewall create'] = """
+type: command
+short-summary: Creates a firewall rule in a Data Lake Store account.
+parameters:
+ - name: --end-ip-address
+ type: string
+ short-summary: 'The end of the valid ip range for the firewall rule.'
+ - name: --start-ip-address
+ type: string
+ short-summary: 'The start of the valid ip range for the firewall rule.'
+ - name: --firewall-rule-name
+ type: string
+ short-summary: 'The name of the firewall rule.'
+"""
+
+helps['dls account firewall delete'] = """
+type: command
+short-summary: Deletes a firewall rule in a Data Lake Store account.
+"""
+
+helps['dls account firewall list'] = """
+type: command
+short-summary: Lists firewall rules in a Data Lake Store account.
+"""
+
+helps['dls account firewall show'] = """
+type: command
+short-summary: Get the details of a firewall rule in a Data Lake Store account.
+"""
+
+helps['dls account firewall update'] = """
+type: command
+short-summary: Updates a firewall rule in a Data Lake Store account.
"""
helps['dls account list'] = """
- type: command
- short-summary: Lists available Data Lake Store accounts.
+type: command
+short-summary: Lists available Data Lake Store accounts.
+examples:
+ - name: Lists available Data Lake Store accounts. (autogenerated)
+ text: az dls account list --resource-group MyResourceGroup
+ crafted: true
"""
-helps['dls account enable-key-vault'] = """
- type: command
- short-summary: Enable the use of Azure Key Vault for encryption of a Data Lake Store account.
+helps['dls account network-rule'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Store account virtual network rules.
"""
-helps['dls account delete'] = """
- type: command
- short-summary: Delete a Data Lake Store account.
+helps['dls account network-rule create'] = """
+type: command
+short-summary: Creates a virtual network rule in a Data Lake Store account.
+parameters:
+ - name: --subnet
+ type: string
+ short-summary: 'The subnet name or id for the virtual network rule.'
+ - name: --vnet-name
+ type: string
+ short-summary: 'The name of the virtual network rule.'
"""
-helps['dls account trusted-provider'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Store account trusted identity providers.
+helps['dls account network-rule delete'] = """
+type: command
+short-summary: Deletes a virtual network rule in a Data Lake Store account.
"""
-helps['dls account firewall'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Store account firewall rules.
+helps['dls account network-rule list'] = """
+type: command
+short-summary: Lists virtual network rules in a Data Lake Store account.
"""
-helps['dls account firewall create'] = """
- type: command
- short-summary: Creates a firewall rule in a Data Lake Store account.
- parameters:
- - name: --end-ip-address
- type: string
- short-summary: 'The end of the valid ip range for the firewall rule.'
- - name: --start-ip-address
- type: string
- short-summary: 'The start of the valid ip range for the firewall rule.'
- - name: --firewall-rule-name
- type: string
- short-summary: 'The name of the firewall rule.'
+helps['dls account network-rule show'] = """
+type: command
+short-summary: Get the details of a virtual network rule in a Data Lake Store account.
"""
-helps['dls account firewall update'] = """
- type: command
- short-summary: Updates a firewall rule in a Data Lake Store account.
+helps['dls account network-rule update'] = """
+type: command
+short-summary: Updates a virtual network rule in a Data Lake Store account.
"""
-helps['dls account firewall show'] = """
- type: command
- short-summary: Get the details of a firewall rule in a Data Lake Store account.
+helps['dls account show'] = """
+type: command
+short-summary: Get the details of a Data Lake Store account.
"""
-helps['dls account firewall list'] = """
- type: command
- short-summary: Lists firewall rules in a Data Lake Store account.
+helps['dls account trusted-provider'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Store account trusted identity providers.
"""
-helps['dls account firewall delete'] = """
- type: command
- short-summary: Deletes a firewall rule in a Data Lake Store account.
+helps['dls account update'] = """
+type: command
+short-summary: Updates a Data Lake Store account.
"""
helps['dls fs'] = """
- type: group
- short-summary: (PREVIEW) Manage a Data Lake Store filesystem.
+type: group
+short-summary: (PREVIEW) Manage a Data Lake Store filesystem.
"""
-helps['dls fs create'] = """
- type: command
- short-summary: Creates a file or folder in a Data Lake Store account.
- parameters:
- - name: --content
- type: string
- short-summary: 'Content for the file to contain upon creation.'
+helps['dls fs access'] = """
+type: group
+short-summary: Manage Data Lake Store filesystem access and permissions.
"""
-helps['dls fs show'] = """
- type: command
- short-summary: Get file or folder information in a Data Lake Store account.
+helps['dls fs access remove-all'] = """
+type: command
+short-summary: Remove the access control list for a file or folder.
"""
-helps['dls fs list'] = """
- type: command
- short-summary: List the files and folders in a Data Lake Store account.
+helps['dls fs access remove-entry'] = """
+type: command
+short-summary: Remove entries for the access control list of a file or folder.
"""
-helps['dls fs append'] = """
- type: command
- short-summary: Append content to a file in a Data Lake Store account.
- parameters:
- - name: --content
- type: string
- short-summary: 'Content to be appended to the file.'
+helps['dls fs access set'] = """
+type: command
+short-summary: Replace the existing access control list for a file or folder.
"""
-helps['dls fs delete'] = """
- type: command
- short-summary: Delete a file or folder in a Data Lake Store account.
+helps['dls fs access set-entry'] = """
+type: command
+short-summary: Update the access control list for a file or folder.
"""
-helps['dls fs upload'] = """
- type: command
- short-summary: Upload a file or folder to a Data Lake Store account.
- parameters:
- - name: --source-path
- type: string
- short-summary: The path to the file or folder to upload.
- - name: --destination-path
- type: string
- short-summary: The full path in the Data Lake Store filesystem to upload the file or folder to.
- - name: --thread-count
- type: int
- short-summary: 'Parallelism of the upload. Default: The number of cores in the local machine.'
- - name: --chunk-size
- type: int
- short-summary: Size of a chunk, in bytes.
- long-summary: Large files are split into chunks. Files smaller than this size will always be transferred in a single thread.
- - name: --buffer-size
- type: int
- short-summary: Size of the transfer buffer, in bytes.
- long-summary: A buffer cannot be bigger than a chunk and cannot be smaller than a block.
- - name: --block-size
- type: int
- short-summary: Size of a block, in bytes.
- long-summary: Within each chunk, a smaller block is written for each API call. A block cannot be bigger than a chunk and must be bigger than a buffer.
-
+helps['dls fs access set-owner'] = """
+type: command
+short-summary: Set the owner information for a file or folder in a Data Lake Store account.
+parameters:
+ - name: --owner
+ type: string
+ short-summary: The user Azure Active Directory object ID or user principal name to set as the owner.
+ - name: --group
+ type: string
+ short-summary: The group Azure Active Directory object ID or user principal name to set as the owning group.
"""
-helps['dls fs download'] = """
- type: command
- short-summary: Download a file or folder from a Data Lake Store account to the local machine.
- parameters:
- - name: --source-path
- type: string
- short-summary: The full path in the Data Lake Store filesystem to download the file or folder from.
- - name: --destination-path
- type: string
- short-summary: The local path where the file or folder will be downloaded to.
- - name: --thread-count
- type: int
- short-summary: 'Parallelism of the download. Default: The number of cores in the local machine.'
- - name: --chunk-size
- type: int
- short-summary: Size of a chunk, in bytes.
- long-summary: Large files are split into chunks. Files smaller than this size will always be transferred in a single thread.
- - name: --buffer-size
- type: int
- short-summary: Size of the transfer buffer, in bytes.
- long-summary: A buffer cannot be bigger than a chunk and cannot be smaller than a block.
- - name: --block-size
- type: int
- short-summary: Size of a block, in bytes.
- long-summary: Within each chunk, a smaller block is written for each API call. A block cannot be bigger than a chunk and must be bigger than a buffer.
+helps['dls fs access set-permission'] = """
+type: command
+short-summary: Set the permissions for a file or folder in a Data Lake Store account.
+parameters:
+ - name: --permission
+ type: int
+ short-summary: The octal representation of the permissions for user, group and mask.
+example:
+ - name: Set full permissions for a user, read-execute permissions for a group, and execute permissions for all.
+ text: az fs access set-permission --path /path/to/file.txt --permission 751
+examples:
+ - name: Set the permissions for a file or folder in a Data Lake Store account. (autogenerated)
+ text: az dls fs access set-permission --account {account} --path {path} --permission 777
+ crafted: true
"""
-helps['dls fs test'] = """
- type: command
- short-summary: Test for the existence of a file or folder in a Data Lake Store account.
+helps['dls fs access show'] = """
+type: command
+short-summary: Display the access control list (ACL).
+examples:
+ - name: Display the access control list (ACL). (autogenerated)
+ text: az dls fs access show --account {account} --path {path}
+ crafted: true
"""
-helps['dls fs preview'] = """
- type: command
- short-summary: Preview the content of a file in a Data Lake Store account.
- parameters:
- - name: --length
- type: long
- short-summary: The amount of data to preview in bytes.
- long-summary: If not specified, attempts to preview the full file. If the file is > 1MB `--force` must be specified.
- - name: --offset
- type: long
- short-summary: The position in bytes to start the preview from.
+helps['dls fs append'] = """
+type: command
+short-summary: Append content to a file in a Data Lake Store account.
+parameters:
+ - name: --content
+ type: string
+ short-summary: 'Content to be appended to the file.'
"""
-helps['dls fs join'] = """
- type: command
- short-summary: Join files in a Data Lake Store account into one file.
- parameters:
- - name: --source-paths
- type: list
- short-summary: The space-separated list of files in the Data Lake Store account to join.
- - name: --destination-path
- type: string
- short-summary: The destination path in the Data Lake Store account.
+helps['dls fs create'] = """
+type: command
+short-summary: Creates a file or folder in a Data Lake Store account.
+parameters:
+ - name: --content
+ type: string
+ short-summary: 'Content for the file to contain upon creation.'
+examples:
+ - name: Creates a file or folder in a Data Lake Store account. (autogenerated)
+ text: az dls fs create --account {account} --folder --path {path}
+ crafted: true
"""
-helps['dls fs move'] = """
- type: command
- short-summary: Move a file or folder in a Data Lake Store account.
- parameters:
- - name: --source-path
- type: list
- short-summary: The file or folder to move.
- - name: --destination-path
- type: string
- short-summary: The destination path in the Data Lake Store account.
+helps['dls fs delete'] = """
+type: command
+short-summary: Delete a file or folder in a Data Lake Store account.
+examples:
+ - name: Delete a file or folder in a Data Lake Store account. (autogenerated)
+ text: az dls fs delete --account {account} --path {path}
+ crafted: true
"""
-helps['dls fs set-expiry'] = """
- type: command
- short-summary: Set the expiration time for a file.
+helps['dls fs download'] = """
+type: command
+short-summary: Download a file or folder from a Data Lake Store account to the local machine.
+parameters:
+ - name: --source-path
+ type: string
+ short-summary: The full path in the Data Lake Store filesystem to download the file or folder from.
+ - name: --destination-path
+ type: string
+ short-summary: The local path where the file or folder will be downloaded to.
+ - name: --thread-count
+ type: int
+ short-summary: 'Parallelism of the download. Default: The number of cores in the local machine.'
+ - name: --chunk-size
+ type: int
+ short-summary: Size of a chunk, in bytes.
+ long-summary: Large files are split into chunks. Files smaller than this size will always be transferred in a single thread.
+ - name: --buffer-size
+ type: int
+ short-summary: Size of the transfer buffer, in bytes.
+ long-summary: A buffer cannot be bigger than a chunk and cannot be smaller than a block.
+ - name: --block-size
+ type: int
+ short-summary: Size of a block, in bytes.
+ long-summary: Within each chunk, a smaller block is written for each API call. A block cannot be bigger than a chunk and must be bigger than a buffer.
+examples:
+ - name: Download a file or folder from a Data Lake Store account to the local machine. (autogenerated)
+ text: az dls fs download --account {account} --destination-path {destination-path} --source-path {source-path}
+ crafted: true
"""
-helps['dls fs remove-expiry'] = """
- type: command
- short-summary: Remove the expiration time for a file.
+helps['dls fs join'] = """
+type: command
+short-summary: Join files in a Data Lake Store account into one file.
+parameters:
+ - name: --source-paths
+ type: list
+ short-summary: The space-separated list of files in the Data Lake Store account to join.
+ - name: --destination-path
+ type: string
+ short-summary: The destination path in the Data Lake Store account.
"""
-helps['dls fs access'] = """
- type: group
- short-summary: Manage Data Lake Store filesystem access and permissions.
+helps['dls fs list'] = """
+type: command
+short-summary: List the files and folders in a Data Lake Store account.
+examples:
+ - name: List the files and folders in a Data Lake Store account. (autogenerated)
+ text: az dls fs list --account {account} --path {path}
+ crafted: true
"""
-helps['dls fs access show'] = """
- type: command
- short-summary: Display the access control list (ACL).
+helps['dls fs move'] = """
+type: command
+short-summary: Move a file or folder in a Data Lake Store account.
+parameters:
+ - name: --source-path
+ type: list
+ short-summary: The file or folder to move.
+ - name: --destination-path
+ type: string
+ short-summary: The destination path in the Data Lake Store account.
+examples:
+ - name: Move a file or folder in a Data Lake Store account. (autogenerated)
+ text: az dls fs move --account {account} --destination-path {destination-path} --source-path {source-path}
+ crafted: true
"""
-helps['dls fs access set-owner'] = """
- type: command
- short-summary: Set the owner information for a file or folder in a Data Lake Store account.
- parameters:
- - name: --owner
- type: string
- short-summary: The user Azure Active Directory object ID or user principal name to set as the owner.
- - name: --group
- type: string
- short-summary: The group Azure Active Directory object ID or user principal name to set as the owning group.
+helps['dls fs preview'] = """
+type: command
+short-summary: Preview the content of a file in a Data Lake Store account.
+parameters:
+ - name: --length
+ type: long
+ short-summary: The amount of data to preview in bytes.
+ long-summary: If not specified, attempts to preview the full file. If the file is > 1MB `--force` must be specified.
+ - name: --offset
+ type: long
+ short-summary: The position in bytes to start the preview from.
"""
-helps['dls fs access set-permission'] = """
- type: command
- short-summary: Set the permissions for a file or folder in a Data Lake Store account.
- parameters:
- - name: --permission
- type: int
- short-summary: The octal representation of the permissions for user, group and mask.
- example:
- - name: Set full permissions for a user, read-execute permissions for a group, and execute permissions for all.
- text: az fs access set-permission --path /path/to/file.txt --permission 751
+helps['dls fs remove-expiry'] = """
+type: command
+short-summary: Remove the expiration time for a file.
"""
-helps['dls fs access set-entry'] = """
- type: command
- short-summary: Update the access control list for a file or folder.
+helps['dls fs set-expiry'] = """
+type: command
+short-summary: Set the expiration time for a file.
"""
-helps['dls fs access set'] = """
- type: command
- short-summary: Replace the existing access control list for a file or folder.
+helps['dls fs show'] = """
+type: command
+short-summary: Get file or folder information in a Data Lake Store account.
+examples:
+ - name: Get file or folder information in a Data Lake Store account. (autogenerated)
+ text: az dls fs show --account {account} --path {path}
+ crafted: true
"""
-helps['dls fs access remove-entry'] = """
- type: command
- short-summary: Remove entries for the access control list of a file or folder.
+helps['dls fs test'] = """
+type: command
+short-summary: Test for the existence of a file or folder in a Data Lake Store account.
+examples:
+ - name: Test for the existence of a file or folder in a Data Lake Store account. (autogenerated)
+ text: az dls fs test --account {account} --path {path}
+ crafted: true
"""
-helps['dls fs access remove-all'] = """
- type: command
- short-summary: Remove the access control list for a file or folder.
+helps['dls fs upload'] = """
+type: command
+short-summary: Upload a file or folder to a Data Lake Store account.
+parameters:
+ - name: --source-path
+ type: string
+ short-summary: The path to the file or folder to upload.
+ - name: --destination-path
+ type: string
+ short-summary: The full path in the Data Lake Store filesystem to upload the file or folder to.
+ - name: --thread-count
+ type: int
+ short-summary: 'Parallelism of the upload. Default: The number of cores in the local machine.'
+ - name: --chunk-size
+ type: int
+ short-summary: Size of a chunk, in bytes.
+ long-summary: Large files are split into chunks. Files smaller than this size will always be transferred in a single thread.
+ - name: --buffer-size
+ type: int
+ short-summary: Size of the transfer buffer, in bytes.
+ long-summary: A buffer cannot be bigger than a chunk and cannot be smaller than a block.
+ - name: --block-size
+ type: int
+ short-summary: Size of a block, in bytes.
+ long-summary: Within each chunk, a smaller block is written for each API call. A block cannot be bigger than a chunk and must be bigger than a buffer.
+
+examples:
+ - name: Upload a file or folder to a Data Lake Store account. (autogenerated)
+ text: az dls fs upload --account {account} --destination-path {destination-path} --overwrite --source-path {source-path}
+ crafted: true
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dls-0.1.1/azure/cli/command_modules/dls/_params.py new/azure-cli-dls-0.1.8/azure/cli/command_modules/dls/_params.py
--- old/azure-cli-dls-0.1.1/azure/cli/command_modules/dls/_params.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-dls-0.1.8/azure/cli/command_modules/dls/_params.py 2019-02-12 03:05:13.000000000 +0100
@@ -20,6 +20,9 @@
# pylint: disable=line-too-long, too-many-statements
def load_arguments(self, _):
+ from ._validators import (
+ validate_subnet
+ )
# ARGUMENT DEFINITIONS
datalake_store_name_type = CLIArgumentType(help='Name of the Data Lake Store account.', options_list=['--account_name'], completer=get_resource_name_completion_list('Microsoft.DataLakeStore/accounts'), id_part='name')
@@ -56,6 +59,39 @@
with self.argument_context('dls account list') as c:
c.argument('resource_group_name', resource_group_name_type, validator=None)
+ #####
+ # virtual network rule
+ #####
+ with self.argument_context('dls account network-rule') as c:
+ c.argument('account_name', datalake_store_name_type, options_list=['--account-name'], id_part=None)
+ c.argument('resource_group_name', resource_group_name_type, id_part='resource_group')
+
+ c.argument('virtual_network_rule_name',
+ options_list=['--name', '-n'],
+ help='The virtual network rule name',
+ id_part='name')
+
+ c.argument('subnet',
+ options_list=['--subnet'],
+ help='Name or ID of the subnet that allows access to DLS. '
+ 'If subnet name is provided, --name must be provided.')
+
+ with self.argument_context('dls account network-rule create') as c:
+ c.extra('vnet_name',
+ help='The virtual network rule name',
+ validator=validate_subnet)
+
+ with self.argument_context('dls account network-rule update') as c:
+ c.argument('subnet_id',
+ options_list=['--subnet'],
+ help='Name or ID of the subnet that allows access to DLS. '
+ 'If subnet name is provided, --name must be provided.')
+
+ c.extra('vnet_name', help='The virtual network rule name')
+
+ with self.argument_context('dls account network-rule list') as c:
+ c.argument('virtual_network_rule_name', id_part=None)
+
# filesystem
with self.argument_context('dls fs') as c:
c.argument('path', help='The path in the specified Data Lake Store account where the action should take place. In the format \'/folder/file.txt\', where the first \'/\' after the DNS indicates the root of the file system.')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dls-0.1.1/azure/cli/command_modules/dls/_validators.py new/azure-cli-dls-0.1.8/azure/cli/command_modules/dls/_validators.py
--- old/azure-cli-dls-0.1.1/azure/cli/command_modules/dls/_validators.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-dls-0.1.8/azure/cli/command_modules/dls/_validators.py 2019-02-12 03:05:13.000000000 +0100
@@ -3,12 +3,10 @@
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
-from msrestazure.tools import parse_resource_id
from knack.util import CLIError
from azure.cli.core.commands.client_factory import get_mgmt_service_client
-from azure.mgmt.datalake.store import DataLakeStoreAccountManagementClient
# Helpers
@@ -19,6 +17,7 @@
:return: resource group name or None
:rtype: str
"""
+ from msrestazure.tools import parse_resource_id
for acct in client.list():
id_comps = parse_resource_id(acct.id)
if id_comps['name'] == account_name:
@@ -30,11 +29,37 @@
# COMMAND NAMESPACE VALIDATORS
def validate_resource_group_name(cmd, ns):
+ from azure.mgmt.datalake.store import DataLakeStoreAccountManagementClient
if not ns.resource_group_name:
try:
account_name = ns.name
except AttributeError:
account_name = ns.account_name
- client = get_mgmt_service_client(cmd.cli_ctx, DataLakeStoreAccountManagementClient).account
+ client = get_mgmt_service_client(cmd.cli_ctx, DataLakeStoreAccountManagementClient).accounts
group_name = _get_resource_group_from_account_name(client, account_name)
ns.resource_group_name = group_name
+
+
+# Validates if a subnet id or name have been given by the user. If subnet id is given, vnet-name should not be provided.
+def validate_subnet(cmd, namespace):
+ from msrestazure.tools import resource_id, is_valid_resource_id
+ from azure.cli.core.commands.client_factory import get_subscription_id
+
+ subnet = namespace.subnet
+ subnet_is_id = is_valid_resource_id(subnet)
+ vnet = namespace.vnet_name
+
+ if (subnet_is_id and not vnet) or (not subnet and not vnet):
+ pass
+ elif subnet and not subnet_is_id and vnet:
+ namespace.subnet = resource_id(
+ subscription=get_subscription_id(cmd.cli_ctx),
+ resource_group=namespace.resource_group_name,
+ namespace='Microsoft.Network',
+ type='virtualNetworks',
+ name=vnet,
+ child_type_1='subnets',
+ child_name_1=subnet)
+ else:
+ raise CLIError('incorrect usage: [--subnet ID | --subnet NAME --vnet-name NAME]')
+ delattr(namespace, 'vnet_name')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dls-0.1.1/azure/cli/command_modules/dls/commands.py new/azure-cli-dls-0.1.8/azure/cli/command_modules/dls/commands.py
--- old/azure-cli-dls-0.1.1/azure/cli/command_modules/dls/commands.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-dls-0.1.8/azure/cli/command_modules/dls/commands.py 2019-02-12 03:05:13.000000000 +0100
@@ -8,17 +8,21 @@
from azure.cli.command_modules.dls._client_factory import (
cf_dls_account,
cf_dls_account_firewall,
+ cf_dls_account_virtual_network,
cf_dls_account_trusted_provider)
+# pylint: disable=too-many-statements
def load_command_table(self, _):
-
+ from ._validators import (
+ validate_subnet
+ )
adls_format_path = 'azure.mgmt.datalake.store.operations.{}#{}.{{}}'
dls_custom = CliCommandType(operations_tmpl='azure.cli.command_modules.dls.custom#{}')
dls_account_sdk = CliCommandType(
- operations_tmpl=adls_format_path.format('account_operations', 'AccountOperations'),
+ operations_tmpl=adls_format_path.format('accounts_operations', 'AccountsOperations'),
client_factory=cf_dls_account
)
@@ -27,6 +31,11 @@
client_factory=cf_dls_account
)
+ dls_virtual_network_sdk = CliCommandType(
+ operations_tmpl=adls_format_path.format('virtual_network_rules_operations', 'VirtualNetworkRulesOperations'),
+ client_factory=cf_dls_account
+ )
+
dls_provider_sdk = CliCommandType(
operations_tmpl=adls_format_path.format('trusted_id_providers_operations', 'TrustedIdProvidersOperations'),
client_factory=cf_dls_account_trusted_provider
@@ -48,6 +57,16 @@
g.command('list', 'list_by_account')
g.show_command('show', 'get')
g.command('delete', 'delete')
+
+ # account virtual network rule operations
+ with self.command_group('dls account network-rule',
+ dls_virtual_network_sdk,
+ client_factory=cf_dls_account_virtual_network) as g:
+ g.custom_command('create', 'add_adls_virtual_network_rule', validator=validate_subnet)
+ g.generic_update_command('update')
+ g.command('list', 'list_by_account')
+ g.show_command('show', 'get')
+ g.command('delete', 'delete')
# account trusted id provider operations
with self.command_group('dls account trusted-provider', dls_provider_sdk) as g:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dls-0.1.1/azure/cli/command_modules/dls/custom.py new/azure-cli-dls-0.1.8/azure/cli/command_modules/dls/custom.py
--- old/azure-cli-dls-0.1.1/azure/cli/command_modules/dls/custom.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-dls-0.1.8/azure/cli/command_modules/dls/custom.py 2019-02-12 03:05:13.000000000 +0100
@@ -7,9 +7,8 @@
from knack.util import CLIError
from azure.mgmt.datalake.store.models import (
- DataLakeStoreAccountUpdateParameters,
- FirewallRule,
- DataLakeStoreAccount,
+ UpdateDataLakeStoreAccountParameters,
+ CreateDataLakeStoreAccountParameters,
EncryptionConfigType,
EncryptionIdentity,
EncryptionConfig,
@@ -51,10 +50,11 @@
key_version=None, disable_encryption=False, tier=None):
location = location or _get_resource_group_location(cmd.cli_ctx, resource_group_name)
- create_params = DataLakeStoreAccount(location,
- tags=tags,
- default_group=default_group,
- new_tier=tier)
+ create_params = CreateDataLakeStoreAccountParameters(
+ location=location,
+ tags=tags,
+ default_group=default_group,
+ new_tier=tier)
if not disable_encryption:
identity = EncryptionIdentity()
@@ -63,7 +63,10 @@
if not key_name or not key_vault_id or not key_version:
# pylint: disable=line-too-long
raise CLIError('For user managed encryption, --key_vault_id, --key_name and --key_version are required parameters and must be supplied.')
- config.key_vault_meta_info = KeyVaultMetaInfo(key_vault_id, key_name, key_version)
+ config.key_vault_meta_info = KeyVaultMetaInfo(
+ key_vault_resource_id=key_vault_id,
+ encryption_key_name=key_name,
+ encryption_key_version=key_version)
else:
if key_name or key_vault_id or key_version:
# pylint: disable=line-too-long
@@ -81,7 +84,7 @@
def update_adls_account(client, account_name, resource_group_name, tags=None, default_group=None, firewall_state=None,
allow_azure_ips=None, trusted_id_provider_state=None, tier=None, key_version=None):
- update_params = DataLakeStoreAccountUpdateParameters(
+ update_params = UpdateDataLakeStoreAccountParameters(
tags=tags,
default_group=default_group,
firewall_state=firewall_state,
@@ -92,7 +95,7 @@
# this will fail if the encryption is not user managed, as service managed key rotation is not supported.
if key_version:
update_params.encryption_config = UpdateEncryptionConfig(
- UpdateKeyVaultMetaInfo(key_version))
+ key_vault_meta_info=UpdateKeyVaultMetaInfo(encryption_key_version=key_version))
return client.update(resource_group_name, account_name, update_params).result()
# endregion
@@ -105,11 +108,24 @@
start_ip_address,
end_ip_address,
resource_group_name):
- create_params = FirewallRule(start_ip_address, end_ip_address)
return client.create_or_update(resource_group_name,
account_name,
firewall_rule_name,
- create_params)
+ start_ip_address,
+ end_ip_address)
+# endregion
+
+
+# region virtual network
+def add_adls_virtual_network_rule(client,
+ account_name,
+ virtual_network_rule_name,
+ subnet,
+ resource_group_name):
+ return client.create_or_update(resource_group_name,
+ account_name,
+ virtual_network_rule_name,
+ subnet)
# endregion
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dls-0.1.1/azure_cli_dls.egg-info/PKG-INFO new/azure-cli-dls-0.1.8/azure_cli_dls.egg-info/PKG-INFO
--- old/azure-cli-dls-0.1.1/azure_cli_dls.egg-info/PKG-INFO 2018-08-23 01:09:11.000000000 +0200
+++ new/azure-cli-dls-0.1.8/azure_cli_dls.egg-info/PKG-INFO 2019-02-12 03:05:57.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-dls
-Version: 0.1.1
+Version: 0.1.8
Summary: Microsoft Azure Command-Line Tools Data Lake Store Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -19,6 +19,34 @@
Release History
===============
+ 0.1.8
+ +++++
+ * Minor fixes.
+
+ 0.1.7
+ ++++++
+ * Minor fixes.
+
+ 0.1.6
+ +++++
+ * Update ADLS version(0.0.39).
+
+ 0.1.5
+ +++++
+ * Update ADLS version(0.0.38).
+
+ 0.1.4
+ +++++
+ * Update ADLS version(0.0.34). API version change to 2018-05-01
+
+ 0.1.3
+ +++++
+ * Update ADLS version to latest(0.0.31)
+ * Added commands for virtual network rules.
+
+ 0.1.2
+ +++++
+ * Update ADLS version to latest(0.0.29)
0.1.1
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dls-0.1.1/azure_cli_dls.egg-info/requires.txt new/azure-cli-dls-0.1.8/azure_cli_dls.egg-info/requires.txt
--- old/azure-cli-dls-0.1.1/azure_cli_dls.egg-info/requires.txt 2018-08-23 01:09:11.000000000 +0200
+++ new/azure-cli-dls-0.1.8/azure_cli_dls.egg-info/requires.txt 2019-02-12 03:05:57.000000000 +0100
@@ -1,3 +1,3 @@
-azure-mgmt-datalake-store==0.2.0
-azure-datalake-store==0.0.27
+azure-mgmt-datalake-store==0.5.0
+azure-datalake-store==0.0.39
azure-cli-core
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dls-0.1.1/setup.py new/azure-cli-dls-0.1.8/setup.py
--- old/azure-cli-dls-0.1.1/setup.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-dls-0.1.8/setup.py 2019-02-12 03:05:13.000000000 +0100
@@ -16,7 +16,7 @@
cmdclass = {}
-VERSION = "0.1.1"
+VERSION = "0.1.8"
# The full list of classifiers is available at
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
CLASSIFIERS = [
@@ -34,8 +34,8 @@
]
DEPENDENCIES = [
- 'azure-mgmt-datalake-store==0.2.0',
- 'azure-datalake-store==0.0.27',
+ 'azure-mgmt-datalake-store==0.5.0',
+ 'azure-datalake-store==0.0.39',
'azure-cli-core',
]
1
0
Hello community,
here is the log from the commit of package azure-cli-dla for openSUSE:Factory checked in at 2019-05-22 10:59:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-dla (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-dla.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-dla"
Wed May 22 10:59:44 2019 rev:5 rq:696830 version:0.2.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-dla/azure-cli-dla.changes 2018-10-15 10:44:58.323292063 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-dla.new.5148/azure-cli-dla.changes 2019-05-22 10:59:47.506784957 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 14:17:48 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.2.4
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-dla-0.2.2.tar.gz
New:
----
azure-cli-dla-0.2.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-dla.spec ++++++
--- /var/tmp/diff_new_pack.UuSopZ/_old 2019-05-22 10:59:48.806783273 +0200
+++ /var/tmp/diff_new_pack.UuSopZ/_new 2019-05-22 10:59:48.810783268 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-dla
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-dla
-Version: 0.2.2
+Version: 0.2.4
Release: 0
Summary: Microsoft Azure CLI 'data lake analytics' Command Module
License: MIT
@@ -27,16 +27,15 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
Requires: python3-azure-mgmt-datalake-analytics >= 0.2.0
-Requires: python3-azure-mgmt-datalake-store >= 0.2.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-mgmt-datalake-store >= 0.5.0
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -56,6 +55,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-dla-0.2.2.tar.gz -> azure-cli-dla-0.2.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dla-0.2.2/HISTORY.rst new/azure-cli-dla-0.2.4/HISTORY.rst
--- old/azure-cli-dla-0.2.2/HISTORY.rst 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-dla-0.2.4/HISTORY.rst 2019-02-12 03:05:13.000000000 +0100
@@ -2,13 +2,20 @@
Release History
===============
+0.2.4
++++++
+* Minor fixes.
+
+0.2.3
+++++++
+* Minor fixes.
0.2.2
-+++++
+++++++
* Minor fixes
0.2.1
-+++++
+++++++
* Minor fixes
0.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dla-0.2.2/PKG-INFO new/azure-cli-dla-0.2.4/PKG-INFO
--- old/azure-cli-dla-0.2.2/PKG-INFO 2018-08-23 01:09:21.000000000 +0200
+++ new/azure-cli-dla-0.2.4/PKG-INFO 2019-02-12 03:05:42.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-dla
-Version: 0.2.2
+Version: 0.2.4
Summary: Microsoft Azure Command-Line Tools Data Lake Analytics Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -19,13 +19,20 @@
Release History
===============
+ 0.2.4
+ +++++
+ * Minor fixes.
+
+ 0.2.3
+ ++++++
+ * Minor fixes.
0.2.2
- +++++
+ ++++++
* Minor fixes
0.2.1
- +++++
+ ++++++
* Minor fixes
0.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dla-0.2.2/azure/cli/command_modules/dla/_help.py new/azure-cli-dla-0.2.4/azure/cli/command_modules/dla/_help.py
--- old/azure-cli-dla-0.2.2/azure/cli/command_modules/dla/_help.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-dla-0.2.4/azure/cli/command_modules/dla/_help.py 2019-02-12 03:05:13.000000000 +0100
@@ -5,432 +5,431 @@
# --------------------------------------------------------------------------------------------
from knack.help_files import helps
-
+# pylint: disable=line-too-long, too-many-lines
helps['dla'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics accounts, jobs, and catalogs.
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics accounts, jobs, and catalogs.
"""
-helps['dla job'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics jobs.
+helps['dla account'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics accounts.
"""
-helps['dla job submit'] = """
- type: command
- short-summary: Submit a job to a Data Lake Analytics account.
- parameters:
- - name: --job-name
- type: string
- short-summary: Name for the submitted job.
- - name: --script
- type: string
- short-summary: Script to submit. This may be '@{file}' to load from a file.
- - name: --runtime-version
- short-summary: The runtime version to use.
- long-summary: This parameter is used for explicitly overwriting the default runtime. It should only be done if you know what you are doing.
- - name: --degree-of-parallelism
- short-summary: The degree of parallelism for the job.
- long-summary: Higher values equate to more parallelism and will usually yield faster running jobs, at the cost of more AUs.
- - name: --priority
- short-summary: The priority of the job.
- long-summary: Lower values increase the priority, with the lowest value being 1. This determines the order jobs are run in.
-
+helps['dla account blob-storage'] = """
+type: group
+short-summary: (PREVIEW) Manage links between Data Lake Analytics accounts and Azure Storage.
"""
-helps['dla job cancel'] = """
- type: command
- short-summary: Cancel a Data Lake Analytics job.
+helps['dla account blob-storage add'] = """
+type: command
+short-summary: Links an Azure Storage account to the specified Data Lake Analytics account.
"""
-helps['dla job show'] = """
- type: command
- short-summary: Get information for a Data Lake Analytics job.
+helps['dla account blob-storage update'] = """
+type: command
+short-summary: Updates an Azure Storage account linked to the specified Data Lake Analytics account.
"""
-helps['dla job wait'] = """
- type: command
- short-summary: Wait for a Data Lake Analytics job to finish.
- long-summary: This command exits when the job completes.
- parameters:
- - name: --job-id
- type: string
- short-summary: 'Job ID to poll for completion.'
+helps['dla account compute-policy'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics account compute policies.
"""
-helps['dla job list'] = """
- type: command
- short-summary: List Data Lake Analytics jobs.
+helps['dla account compute-policy create'] = """
+type: command
+short-summary: Create a compute policy in the Data Lake Analytics account.
+parameters:
+ - name: --max-dop-per-job
+ type: int
+ short-summary: The maximum degree of parallelism allowed per job for this policy. At least one of `--min-priority-per-job` and `--max-dop-per-job` must be specified.
+ - name: --min-priority-per-job
+ type: int
+ short-summary: The minimum priority allowed per job for this policy. At least one of `--min-priority-per-job` and `--max-dop-per-job` must be specified.
+ - name: --compute-policy-name
+ type: string
+ short-summary: The name of the compute policy to create.
+ - name: --object-id
+ type: string
+ short-summary: The Azure Active Directory object ID of the user, group, or service principal to apply the policy to.
+ - name: --object-type
+ type: string
+ short-summary: The Azure Active Directory object type associated with the supplied object ID.
"""
-helps['dla catalog'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics catalogs.
+helps['dla account compute-policy delete'] = """
+type: command
+short-summary: Delete a compute policy in a Data Lake Analytics account.
"""
-helps['dla catalog database'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics catalog databases.
+helps['dla account compute-policy list'] = """
+type: command
+short-summary: List compute policies in the a Lake Analytics account.
"""
-helps['dla catalog assembly'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics catalog assemblies.
+helps['dla account compute-policy show'] = """
+type: command
+short-summary: Retrieve a compute policy in a Data Lake Analytics account.
"""
-helps['dla catalog external-data-source'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics catalog external data sources.
+helps['dla account compute-policy update'] = """
+type: command
+short-summary: Update a compute policy in the Data Lake Analytics account.
+parameters:
+ - name: --max-dop-per-job
+ type: int
+ short-summary: The maximum degree of parallelism allowed per job for this policy. At least one of `--min-priority-per-job` and `--max-dop-per-job` must be specified.
+ - name: --min-priority-per-job
+ type: int
+ short-summary: The minimum priority allowed per job for this policy. At least one of `--min-priority-per-job` and `--max-dop-per-job` must be specified.
+ - name: --compute-policy-name
+ type: string
+ short-summary: The name of the compute policy to update.
"""
-helps['dla catalog procedure'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics catalog stored procedures.
+helps['dla account create'] = """
+type: command
+short-summary: Create a Data Lake Analytics account.
+parameters:
+ - name: --default-data-lake-store
+ type: string
+ short-summary: The default Data Lake Store account to associate with the created account.
+ - name: --max-degree-of-parallelism
+ type: int
+ short-summary: The maximum degree of parallelism for this account.
+ - name: --max-job-count
+ type: int
+ short-summary: The maximum number of concurrent jobs for this account.
+ - name: --query-store-retention
+ type: int
+ short-summary: The number of days to retain job metadata.
"""
-helps['dla catalog schema'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics catalog schemas.
+helps['dla account data-lake-store'] = """
+type: group
+short-summary: (PREVIEW) Manage links between Data Lake Analytics and Data Lake Store accounts.
"""
-helps['dla catalog table'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics catalog tables.
+helps['dla account delete'] = """
+type: command
+short-summary: Delete a Data Lake Analytics account.
"""
-helps['dla catalog table list'] = """
- type: command
- short-summary: List tables in a database or schema.
- parameters:
- - name: --database-name
- type: string
- short-summary: The name of the database.
- - name: --schema-name
- type: string
- short-summary: The schema assocated with the tables to list.
+helps['dla account firewall'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics account firewall rules.
"""
-helps['dla catalog table-partition'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics catalog table partitions.
+helps['dla account firewall create'] = """
+type: command
+short-summary: Create a firewall rule in a Data Lake Analytics account.
+parameters:
+ - name: --end-ip-address
+ type: string
+ short-summary: The end of the valid IP range for the firewall rule.
+ - name: --start-ip-address
+ type: string
+ short-summary: The start of the valid IP range for the firewall rule.
+ - name: --firewall-rule-name
+ type: string
+ short-summary: The name of the firewall rule.
"""
-helps['dla catalog table-stats'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics catalog table statistics.
+helps['dla account firewall delete'] = """
+type: command
+short-summary: Delete a firewall rule in a Data Lake Analytics account.
"""
-helps['dla catalog table-stats list'] = """
- type: command
- short-summary: List table statistics in a database, table, or schema.
- parameters:
- - name: --database-name
- type: string
- short-summary: The name of the database.
- - name: --schema-name
- type: string
- short-summary: The schema associated with the tables to list.
- - name: --table-name
- type: string
- short-summary: The table to list statistics for. `--schema-name` must also be specified.
+helps['dla account firewall list'] = """
+type: command
+short-summary: List firewall rules in a Data Lake Analytics account.
"""
-helps['dla catalog table-type'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics catalog table types.
+helps['dla account firewall show'] = """
+type: command
+short-summary: Retrieve a firewall rule in a Data Lake Analytics account.
"""
-helps['dla catalog tvf'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics catalog table valued functions.
+helps['dla account firewall update'] = """
+type: command
+short-summary: Update a firewall rule in a Data Lake Analytics account.
"""
-helps['dla catalog tvf list'] = """
- type: command
- short-summary: List table valued functions in a database or schema.
- parameters:
- - name: --database-name
- type: string
- short-summary: The name of the database.
- - name: --schema-name
- type: string
- short-summary: The name of the schema assocated with table valued functions to list.
+helps['dla account list'] = """
+type: command
+short-summary: List available Data Lake Analytics accounts.
"""
-helps['dla catalog view'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics catalog views.
+helps['dla account show'] = """
+type: command
+short-summary: Get the details of a Data Lake Analytics account.
"""
-helps['dla catalog view list'] = """
- type: command
- short-summary: List views in a database or schema.
- parameters:
- - name: --database-name
- type: string
- short-summary: The name of the database.
- - name: --schema-name
- type: string
- short-summary: The name of the schema associated with the views to list.
+helps['dla account update'] = """
+type: command
+short-summary: Update a Data Lake Analytics account.
+parameters:
+ - name: --max-degree-of-parallelism
+ type: int
+ short-summary: The maximum degree of parallelism for this account.
+ - name: --max-job-count
+ type: int
+ short-summary: The maximum number of concurrent jobs for this account.
+ - name: --query-store-retention
+ type: int
+ short-summary: The number of days to retain job metadata.
+ - name: --firewall-state
+ type: string
+ short-summary: Enable or disable existing firewall rules.
+ - name: --allow-azure-ips
+ type: string
+ short-summary: Allow or block IPs originating from Azure through the firewall.
"""
-helps['dla catalog credential'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics catalog credentials.
+helps['dla catalog'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics catalogs.
"""
-helps['dla catalog credential create'] = """
- type: command
- short-summary: Create a new catalog credential for use with an external data source.
- parameters:
- - name: --credential-name
- type: string
- short-summary: The name of the credential.
- - name: --database-name
- type: string
- short-summary: The name of the database in which to create the credential.
- - name: --user-name
- type: string
- short-summary: The user name that will be used when authenticating with this credential.
+helps['dla catalog assembly'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics catalog assemblies.
"""
-helps['dla catalog credential update'] = """
- type: command
- short-summary: Update a catalog credential for use with an external data source.
- parameters:
- - name: --credential-name
- type: string
- short-summary: The name of the credential to update.
- - name: --database-name
- type: string
- short-summary: The name of the database in which the credential exists.
- - name: --user-name
- type: string
- short-summary: The user name associated with the credential that will have its password updated.
+helps['dla catalog credential'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics catalog credentials.
"""
-helps['dla catalog credential show'] = """
- type: command
- short-summary: Retrieve a catalog credential.
+helps['dla catalog credential create'] = """
+type: command
+short-summary: Create a new catalog credential for use with an external data source.
+parameters:
+ - name: --credential-name
+ type: string
+ short-summary: The name of the credential.
+ - name: --database-name
+ type: string
+ short-summary: The name of the database in which to create the credential.
+ - name: --user-name
+ type: string
+ short-summary: The user name that will be used when authenticating with this credential.
"""
-helps['dla catalog credential list'] = """
- type: command
- short-summary: List catalog credentials.
+helps['dla catalog credential delete'] = """
+type: command
+short-summary: Delete a catalog credential.
"""
-helps['dla catalog credential delete'] = """
- type: command
- short-summary: Delete a catalog credential.
+helps['dla catalog credential list'] = """
+type: command
+short-summary: List catalog credentials.
"""
-helps['dla catalog package'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics catalog packages.
+helps['dla catalog credential show'] = """
+type: command
+short-summary: Retrieve a catalog credential.
"""
-helps['dla account'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics accounts.
+helps['dla catalog credential update'] = """
+type: command
+short-summary: Update a catalog credential for use with an external data source.
+parameters:
+ - name: --credential-name
+ type: string
+ short-summary: The name of the credential to update.
+ - name: --database-name
+ type: string
+ short-summary: The name of the database in which the credential exists.
+ - name: --user-name
+ type: string
+ short-summary: The user name associated with the credential that will have its password updated.
"""
-helps['dla account create'] = """
- type: command
- short-summary: Create a Data Lake Analytics account.
- parameters:
- - name: --default-data-lake-store
- type: string
- short-summary: The default Data Lake Store account to associate with the created account.
- - name: --max-degree-of-parallelism
- type: int
- short-summary: The maximum degree of parallelism for this account.
- - name: --max-job-count
- type: int
- short-summary: The maximum number of concurrent jobs for this account.
- - name: --query-store-retention
- type: int
- short-summary: The number of days to retain job metadata.
+helps['dla catalog database'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics catalog databases.
"""
-helps['dla account update'] = """
- type: command
- short-summary: Update a Data Lake Analytics account.
- parameters:
- - name: --max-degree-of-parallelism
- type: int
- short-summary: The maximum degree of parallelism for this account.
- - name: --max-job-count
- type: int
- short-summary: The maximum number of concurrent jobs for this account.
- - name: --query-store-retention
- type: int
- short-summary: The number of days to retain job metadata.
- - name: --firewall-state
- type: string
- short-summary: Enable or disable existing firewall rules.
- - name: --allow-azure-ips
- type: string
- short-summary: Allow or block IPs originating from Azure through the firewall.
+helps['dla catalog external-data-source'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics catalog external data sources.
"""
-helps['dla account show'] = """
- type: command
- short-summary: Get the details of a Data Lake Analytics account.
+helps['dla catalog package'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics catalog packages.
"""
-helps['dla account list'] = """
- type: command
- short-summary: List available Data Lake Analytics accounts.
+helps['dla catalog procedure'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics catalog stored procedures.
"""
-helps['dla account delete'] = """
- type: command
- short-summary: Delete a Data Lake Analytics account.
+helps['dla catalog schema'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics catalog schemas.
"""
-helps['dla account blob-storage'] = """
- type: group
- short-summary: (PREVIEW) Manage links between Data Lake Analytics accounts and Azure Storage.
+helps['dla catalog table'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics catalog tables.
"""
-helps['dla account blob-storage add'] = """
- type: command
- short-summary: Links an Azure Storage account to the specified Data Lake Analytics account.
+helps['dla catalog table list'] = """
+type: command
+short-summary: List tables in a database or schema.
+parameters:
+ - name: --database-name
+ type: string
+ short-summary: The name of the database.
+ - name: --schema-name
+ type: string
+ short-summary: The schema assocated with the tables to list.
"""
-helps['dla account blob-storage update'] = """
- type: command
- short-summary: Updates an Azure Storage account linked to the specified Data Lake Analytics account.
+helps['dla catalog table-partition'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics catalog table partitions.
"""
-helps['dla account data-lake-store'] = """
- type: group
- short-summary: (PREVIEW) Manage links between Data Lake Analytics and Data Lake Store accounts.
+helps['dla catalog table-stats'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics catalog table statistics.
"""
-helps['dla account firewall'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics account firewall rules.
+helps['dla catalog table-stats list'] = """
+type: command
+short-summary: List table statistics in a database, table, or schema.
+parameters:
+ - name: --database-name
+ type: string
+ short-summary: The name of the database.
+ - name: --schema-name
+ type: string
+ short-summary: The schema associated with the tables to list.
+ - name: --table-name
+ type: string
+ short-summary: The table to list statistics for. `--schema-name` must also be specified.
"""
-helps['dla account firewall create'] = """
- type: command
- short-summary: Create a firewall rule in a Data Lake Analytics account.
- parameters:
- - name: --end-ip-address
- type: string
- short-summary: The end of the valid IP range for the firewall rule.
- - name: --start-ip-address
- type: string
- short-summary: The start of the valid IP range for the firewall rule.
- - name: --firewall-rule-name
- type: string
- short-summary: The name of the firewall rule.
+helps['dla catalog table-type'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics catalog table types.
"""
-helps['dla account firewall update'] = """
- type: command
- short-summary: Update a firewall rule in a Data Lake Analytics account.
+helps['dla catalog tvf'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics catalog table valued functions.
"""
-helps['dla account firewall show'] = """
- type: command
- short-summary: Retrieve a firewall rule in a Data Lake Analytics account.
+helps['dla catalog tvf list'] = """
+type: command
+short-summary: List table valued functions in a database or schema.
+parameters:
+ - name: --database-name
+ type: string
+ short-summary: The name of the database.
+ - name: --schema-name
+ type: string
+ short-summary: The name of the schema assocated with table valued functions to list.
"""
-helps['dla account firewall list'] = """
- type: command
- short-summary: List firewall rules in a Data Lake Analytics account.
+helps['dla catalog view'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics catalog views.
"""
-helps['dla account firewall delete'] = """
- type: command
- short-summary: Delete a firewall rule in a Data Lake Analytics account.
+helps['dla catalog view list'] = """
+type: command
+short-summary: List views in a database or schema.
+parameters:
+ - name: --database-name
+ type: string
+ short-summary: The name of the database.
+ - name: --schema-name
+ type: string
+ short-summary: The name of the schema associated with the views to list.
"""
-helps['dla account compute-policy'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics account compute policies.
+helps['dla job'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics jobs.
"""
-helps['dla account compute-policy create'] = """
- type: command
- short-summary: Create a compute policy in the Data Lake Analytics account.
- parameters:
- - name: --max-dop-per-job
- type: int
- short-summary: The maximum degree of parallelism allowed per job for this policy. At least one of `--min-priority-per-job` and `--max-dop-per-job` must be specified.
- - name: --min-priority-per-job
- type: int
- short-summary: The minimum priority allowed per job for this policy. At least one of `--min-priority-per-job` and `--max-dop-per-job` must be specified.
- - name: --compute-policy-name
- type: string
- short-summary: The name of the compute policy to create.
- - name: --object-id
- type: string
- short-summary: The Azure Active Directory object ID of the user, group, or service principal to apply the policy to.
- - name: --object-type
- type: string
- short-summary: The Azure Active Directory object type associated with the supplied object ID.
+helps['dla job cancel'] = """
+type: command
+short-summary: Cancel a Data Lake Analytics job.
"""
-helps['dla account compute-policy update'] = """
- type: command
- short-summary: Update a compute policy in the Data Lake Analytics account.
- parameters:
- - name: --max-dop-per-job
- type: int
- short-summary: The maximum degree of parallelism allowed per job for this policy. At least one of `--min-priority-per-job` and `--max-dop-per-job` must be specified.
- - name: --min-priority-per-job
- type: int
- short-summary: The minimum priority allowed per job for this policy. At least one of `--min-priority-per-job` and `--max-dop-per-job` must be specified.
- - name: --compute-policy-name
- type: string
- short-summary: The name of the compute policy to update.
+helps['dla job list'] = """
+type: command
+short-summary: List Data Lake Analytics jobs.
"""
-helps['dla account compute-policy show'] = """
- type: command
- short-summary: Retrieve a compute policy in a Data Lake Analytics account.
+helps['dla job pipeline'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics job pipelines.
"""
-helps['dla account compute-policy list'] = """
- type: command
- short-summary: List compute policies in the a Lake Analytics account.
+helps['dla job pipeline list'] = """
+type: command
+short-summary: List job pipelines in a Data Lake Analytics account.
"""
-helps['dla account compute-policy delete'] = """
- type: command
- short-summary: Delete a compute policy in a Data Lake Analytics account.
+helps['dla job pipeline show'] = """
+type: command
+short-summary: Retrieve a job pipeline in a Data Lake Analytics account.
"""
-helps['dla job pipeline'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics job pipelines.
+helps['dla job recurrence'] = """
+type: group
+short-summary: (PREVIEW) Manage Data Lake Analytics job recurrences.
"""
-helps['dla job pipeline show'] = """
- type: command
- short-summary: Retrieve a job pipeline in a Data Lake Analytics account.
+helps['dla job recurrence list'] = """
+type: command
+short-summary: List job recurrences in a Data Lake Analytics account.
"""
-helps['dla job pipeline list'] = """
- type: command
- short-summary: List job pipelines in a Data Lake Analytics account.
+helps['dla job recurrence show'] = """
+type: command
+short-summary: Retrieve a job recurrence in a Data Lake Analytics account.
"""
-helps['dla job recurrence'] = """
- type: group
- short-summary: (PREVIEW) Manage Data Lake Analytics job recurrences.
+helps['dla job show'] = """
+type: command
+short-summary: Get information for a Data Lake Analytics job.
"""
-helps['dla job recurrence show'] = """
- type: command
- short-summary: Retrieve a job recurrence in a Data Lake Analytics account.
+helps['dla job submit'] = """
+type: command
+short-summary: Submit a job to a Data Lake Analytics account.
+parameters:
+ - name: --job-name
+ type: string
+ short-summary: Name for the submitted job.
+ - name: --script
+ type: string
+ short-summary: Script to submit. This may be '@{file}' to load from a file.
+ - name: --runtime-version
+ short-summary: The runtime version to use.
+ long-summary: This parameter is used for explicitly overwriting the default runtime. It should only be done if you know what you are doing.
+ - name: --degree-of-parallelism
+ short-summary: The degree of parallelism for the job.
+ long-summary: Higher values equate to more parallelism and will usually yield faster running jobs, at the cost of more AUs.
+ - name: --priority
+ short-summary: The priority of the job.
+ long-summary: Lower values increase the priority, with the lowest value being 1. This determines the order jobs are run in.
"""
-helps['dla job recurrence list'] = """
- type: command
- short-summary: List job recurrences in a Data Lake Analytics account.
+helps['dla job wait'] = """
+type: command
+short-summary: Wait for a Data Lake Analytics job to finish.
+long-summary: This command exits when the job completes.
+parameters:
+ - name: --job-id
+ type: string
+ short-summary: 'Job ID to poll for completion.'
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dla-0.2.2/azure_cli_dla.egg-info/PKG-INFO new/azure-cli-dla-0.2.4/azure_cli_dla.egg-info/PKG-INFO
--- old/azure-cli-dla-0.2.2/azure_cli_dla.egg-info/PKG-INFO 2018-08-23 01:09:21.000000000 +0200
+++ new/azure-cli-dla-0.2.4/azure_cli_dla.egg-info/PKG-INFO 2019-02-12 03:05:42.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-dla
-Version: 0.2.2
+Version: 0.2.4
Summary: Microsoft Azure Command-Line Tools Data Lake Analytics Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -19,13 +19,20 @@
Release History
===============
+ 0.2.4
+ +++++
+ * Minor fixes.
+
+ 0.2.3
+ ++++++
+ * Minor fixes.
0.2.2
- +++++
+ ++++++
* Minor fixes
0.2.1
- +++++
+ ++++++
* Minor fixes
0.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dla-0.2.2/azure_cli_dla.egg-info/requires.txt new/azure-cli-dla-0.2.4/azure_cli_dla.egg-info/requires.txt
--- old/azure-cli-dla-0.2.2/azure_cli_dla.egg-info/requires.txt 2018-08-23 01:09:21.000000000 +0200
+++ new/azure-cli-dla-0.2.4/azure_cli_dla.egg-info/requires.txt 2019-02-12 03:05:42.000000000 +0100
@@ -1,3 +1,3 @@
-azure-mgmt-datalake-store==0.2.0
+azure-mgmt-datalake-store==0.5.0
azure-mgmt-datalake-analytics==0.2.0
azure-cli-core
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-dla-0.2.2/setup.py new/azure-cli-dla-0.2.4/setup.py
--- old/azure-cli-dla-0.2.2/setup.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-dla-0.2.4/setup.py 2019-02-12 03:05:13.000000000 +0100
@@ -16,7 +16,7 @@
cmdclass = {}
-VERSION = "0.2.2"
+VERSION = "0.2.4"
# The full list of classifiers is available at
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
CLASSIFIERS = [
@@ -34,7 +34,7 @@
]
DEPENDENCIES = [
- 'azure-mgmt-datalake-store==0.2.0',
+ 'azure-mgmt-datalake-store==0.5.0',
'azure-mgmt-datalake-analytics==0.2.0',
'azure-cli-core',
]
1
0
Hello community,
here is the log from the commit of package azure-cli-cosmosdb for openSUSE:Factory checked in at 2019-05-22 10:59:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-cosmosdb (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-cosmosdb.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-cosmosdb"
Wed May 22 10:59:40 2019 rev:5 rq:696829 version:0.2.7
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-cosmosdb/azure-cli-cosmosdb.changes 2018-10-15 10:45:04.063285923 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-cosmosdb.new.5148/azure-cli-cosmosdb.changes 2019-05-22 10:59:42.754791111 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 14:11:57 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.2.7
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-cosmosdb-0.2.1.tar.gz
New:
----
azure-cli-cosmosdb-0.2.7.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-cosmosdb.spec ++++++
--- /var/tmp/diff_new_pack.PVpspp/_old 2019-05-22 10:59:43.490790158 +0200
+++ /var/tmp/diff_new_pack.PVpspp/_new 2019-05-22 10:59:43.490790158 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-cosmosdb
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-cosmosdb
-Version: 0.2.1
+Version: 0.2.7
Release: 0
Summary: Microsoft Azure CLI 'cosmosdb' Command Module
License: MIT
@@ -27,15 +27,14 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-mgmt-cosmosdb >= 0.4.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-mgmt-cosmosdb >= 0.5.2
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-pydocumentdb >= 2.0.1
Conflicts: azure-cli < 2.0.0
@@ -56,6 +55,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-cosmosdb-0.2.1.tar.gz -> azure-cli-cosmosdb-0.2.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cosmosdb-0.2.1/HISTORY.rst new/azure-cli-cosmosdb-0.2.7/HISTORY.rst
--- old/azure-cli-cosmosdb-0.2.1/HISTORY.rst 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-cosmosdb-0.2.7/HISTORY.rst 2019-01-11 05:42:07.000000000 +0100
@@ -3,6 +3,30 @@
Release History
===============
+0.2.7
++++++
+* Added support for creating database with shared throughput
+
+0.2.6
++++++
+* Added support for updating account from multi-master to single-master
+
+0.2.5
++++++
+* Use latest azure-mgmt-cosmosdb pypi package (0.5.2)
+
+0.2.4
++++++
+* Minor fixes.
+
+0.2.3
++++++
+* Minor fixes.
+
+0.2.2
++++++
+* `cosmosdb create`: Add `--enable-multiple-write-locations` support.
+
0.2.1
+++++
* Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cosmosdb-0.2.1/PKG-INFO new/azure-cli-cosmosdb-0.2.7/PKG-INFO
--- old/azure-cli-cosmosdb-0.2.1/PKG-INFO 2018-08-23 01:09:45.000000000 +0200
+++ new/azure-cli-cosmosdb-0.2.7/PKG-INFO 2019-01-11 05:42:28.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-cosmosdb
-Version: 0.2.1
+Version: 0.2.7
Summary: Microsoft Azure Command-Line Tools Cosmos DB Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,30 @@
Release History
===============
+ 0.2.7
+ +++++
+ * Added support for creating database with shared throughput
+
+ 0.2.6
+ +++++
+ * Added support for updating account from multi-master to single-master
+
+ 0.2.5
+ +++++
+ * Use latest azure-mgmt-cosmosdb pypi package (0.5.2)
+
+ 0.2.4
+ +++++
+ * Minor fixes.
+
+ 0.2.3
+ +++++
+ * Minor fixes.
+
+ 0.2.2
+ +++++
+ * `cosmosdb create`: Add `--enable-multiple-write-locations` support.
+
0.2.1
+++++
* Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cosmosdb-0.2.1/azure/cli/command_modules/cosmosdb/_client_factory.py new/azure-cli-cosmosdb-0.2.7/azure/cli/command_modules/cosmosdb/_client_factory.py
--- old/azure-cli-cosmosdb-0.2.1/azure/cli/command_modules/cosmosdb/_client_factory.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-cosmosdb-0.2.7/azure/cli/command_modules/cosmosdb/_client_factory.py 2019-01-11 05:42:07.000000000 +0100
@@ -14,7 +14,7 @@
logger = get_logger(__name__)
-NO_CREDENTIALS_ERROR_MESSAGE = """
+MISSING_CREDENTIALS_ERROR_MESSAGE = """
No credentials specified to access Cosmos DB service. Please provide any of the following:
(1) resource group name and account name
(2) account name and key
@@ -54,8 +54,11 @@
database_account = cf_cosmosdb(cli_ctx).database_accounts.get(resource_group, name)
url_connection = database_account.document_endpoint
+ if name and not url_connection:
+ url_connection = 'https://{}.documents.azure.com:443'.format(name)
+
if not key and not url_connection:
- raise CLIError(NO_CREDENTIALS_ERROR_MESSAGE)
+ raise CLIError(MISSING_CREDENTIALS_ERROR_MESSAGE)
auth = {'masterKey': key}
client = document_client.DocumentClient(url_connection=url_connection, auth=auth)
except Exception as ex:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cosmosdb-0.2.1/azure/cli/command_modules/cosmosdb/_params.py new/azure-cli-cosmosdb-0.2.7/azure/cli/command_modules/cosmosdb/_params.py
--- old/azure-cli-cosmosdb-0.2.1/azure/cli/command_modules/cosmosdb/_params.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-cosmosdb-0.2.7/azure/cli/command_modules/cosmosdb/_params.py 2019-01-11 05:42:07.000000000 +0100
@@ -38,6 +38,7 @@
c.argument('capabilities', nargs='+', validator=validate_capabilities, help='set custom capabilities on the Cosmos DB database account.')
c.argument('enable_virtual_network', arg_type=get_three_state_flag(), help='Enables virtual network on the Cosmos DB database account')
c.argument('virtual_network_rules', nargs='+', validator=validate_virtual_network_rules, help='ACL\'s for virtual network')
+ c.argument('enable_multiple_write_locations', arg_type=get_three_state_flag(), help="Enable Multiple Write Locations")
with self.argument_context('cosmosdb regenerate-key') as c:
c.argument('key_kind', arg_type=get_enum_type(KeyKind))
@@ -47,7 +48,10 @@
with self.argument_context('cosmosdb collection') as c:
c.argument('collection_id', options_list=['--collection-name', '-c'], help='Collection Name')
- c.argument('throughput', type=int, help='Offer Throughput')
+ c.argument('throughput', type=int, help='Offer Throughput (RU/s)')
c.argument('partition_key_path', help='Partition Key Path, e.g., \'/properties/name\'')
c.argument('indexing_policy', type=shell_safe_json_parse, completer=FilesCompleter(), help='Indexing Policy, you can enter it as a string or as a file, e.g., --indexing-policy @policy-file.json)')
c.argument('default_ttl', type=int, help='Default TTL')
+
+ with self.argument_context('cosmosdb database') as c:
+ c.argument('throughput', type=int, help='Offer Throughput (RU/s)')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cosmosdb-0.2.1/azure/cli/command_modules/cosmosdb/custom.py new/azure-cli-cosmosdb-0.2.7/azure/cli/command_modules/cosmosdb/custom.py
--- old/azure-cli-cosmosdb-0.2.1/azure/cli/command_modules/cosmosdb/custom.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-cosmosdb-0.2.7/azure/cli/command_modules/cosmosdb/custom.py 2019-01-11 05:42:07.000000000 +0100
@@ -51,7 +51,8 @@
enable_automatic_failover=None,
capabilities=None,
enable_virtual_network=None,
- virtual_network_rules=None):
+ virtual_network_rules=None,
+ enable_multiple_write_locations=None):
"""Create a new Azure Cosmos DB database account."""
consistency_policy = None
if default_consistency_level is not None:
@@ -78,7 +79,8 @@
is_virtual_network_filter_enabled=enable_virtual_network,
enable_automatic_failover=enable_automatic_failover,
capabilities=capabilities,
- virtual_network_rules=virtual_network_rules)
+ virtual_network_rules=virtual_network_rules,
+ enable_multiple_write_locations=enable_multiple_write_locations)
async_docdb_create = client.create_or_update(resource_group_name, account_name, params)
docdb_account = async_docdb_create.result()
@@ -86,6 +88,7 @@
return docdb_account
+# pylint: disable=too-many-branches
def cli_cosmosdb_update(client,
resource_group_name,
account_name,
@@ -98,7 +101,8 @@
enable_automatic_failover=None,
capabilities=None,
enable_virtual_network=None,
- virtual_network_rules=None):
+ virtual_network_rules=None,
+ enable_multiple_write_locations=None):
"""Update an existing Azure Cosmos DB database account. """
existing = client.get(resource_group_name, account_name)
@@ -112,7 +116,8 @@
ip_range_filter is not None or \
enable_automatic_failover is not None or \
enable_virtual_network is not None or \
- virtual_network_rules is not None:
+ virtual_network_rules is not None or \
+ enable_multiple_write_locations is not None:
raise CLIError("Cannot set capabilities and update properties at the same time. {0}".format(locations))
else:
@@ -131,7 +136,8 @@
ip_range_filter is None and \
enable_automatic_failover is None and \
enable_virtual_network is None and \
- virtual_network_rules is None:
+ virtual_network_rules is None and \
+ enable_multiple_write_locations is None:
async_docdb_create = client.patch(resource_group_name, account_name, tags=tags, capabilities=capabilities)
docdb_account = async_docdb_create.result()
docdb_account = client.get(resource_group_name, account_name)
@@ -180,6 +186,14 @@
if tags is None:
tags = existing.tags
+ if enable_multiple_write_locations is None:
+ enable_multiple_write_locations = existing.enable_multiple_write_locations
+ elif enable_multiple_write_locations != existing.enable_multiple_write_locations and \
+ enable_multiple_write_locations:
+ raise CLIError("Cannot convert account from single master to multi master")
+ elif enable_multiple_write_locations != existing.enable_multiple_write_locations:
+ logger.warning("Updating the account from multi master to single master will take 24 hours to complete.")
+
params = DatabaseAccountCreateUpdateParameters(
location=existing.location,
locations=locations,
@@ -190,7 +204,8 @@
enable_automatic_failover=enable_automatic_failover,
capabilities=existing.capabilities,
is_virtual_network_filter_enabled=enable_virtual_network,
- virtual_network_rules=virtual_network_rules)
+ virtual_network_rules=virtual_network_rules,
+ enable_multiple_write_locations=enable_multiple_write_locations)
async_docdb_create = client.create_or_update(resource_group_name, account_name, params)
docdb_account = async_docdb_create.result()
@@ -241,9 +256,9 @@
return list(client.ReadDatabases())
-def cli_cosmosdb_database_create(client, database_id):
+def cli_cosmosdb_database_create(client, database_id, throughput=None):
"""Creates an Azure Cosmos DB database """
- return client.CreateDatabase({'id': database_id})
+ return client.CreateDatabase({'id': database_id}, {'offerThroughput': throughput})
def cli_cosmosdb_database_delete(client, database_id):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cosmosdb-0.2.1/azure_cli_cosmosdb.egg-info/PKG-INFO new/azure-cli-cosmosdb-0.2.7/azure_cli_cosmosdb.egg-info/PKG-INFO
--- old/azure-cli-cosmosdb-0.2.1/azure_cli_cosmosdb.egg-info/PKG-INFO 2018-08-23 01:09:45.000000000 +0200
+++ new/azure-cli-cosmosdb-0.2.7/azure_cli_cosmosdb.egg-info/PKG-INFO 2019-01-11 05:42:28.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-cosmosdb
-Version: 0.2.1
+Version: 0.2.7
Summary: Microsoft Azure Command-Line Tools Cosmos DB Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,30 @@
Release History
===============
+ 0.2.7
+ +++++
+ * Added support for creating database with shared throughput
+
+ 0.2.6
+ +++++
+ * Added support for updating account from multi-master to single-master
+
+ 0.2.5
+ +++++
+ * Use latest azure-mgmt-cosmosdb pypi package (0.5.2)
+
+ 0.2.4
+ +++++
+ * Minor fixes.
+
+ 0.2.3
+ +++++
+ * Minor fixes.
+
+ 0.2.2
+ +++++
+ * `cosmosdb create`: Add `--enable-multiple-write-locations` support.
+
0.2.1
+++++
* Minor fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cosmosdb-0.2.1/azure_cli_cosmosdb.egg-info/requires.txt new/azure-cli-cosmosdb-0.2.7/azure_cli_cosmosdb.egg-info/requires.txt
--- old/azure-cli-cosmosdb-0.2.1/azure_cli_cosmosdb.egg-info/requires.txt 2018-08-23 01:09:45.000000000 +0200
+++ new/azure-cli-cosmosdb-0.2.7/azure_cli_cosmosdb.egg-info/requires.txt 2019-01-11 05:42:28.000000000 +0100
@@ -1,3 +1,3 @@
-azure-mgmt-cosmosdb==0.4.0
+azure-mgmt-cosmosdb==0.5.2
azure-cli-core
pydocumentdb>=2.0.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cosmosdb-0.2.1/setup.py new/azure-cli-cosmosdb-0.2.7/setup.py
--- old/azure-cli-cosmosdb-0.2.1/setup.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-cosmosdb-0.2.7/setup.py 2019-01-11 05:42:07.000000000 +0100
@@ -16,7 +16,7 @@
cmdclass = {}
-VERSION = "0.2.1"
+VERSION = "0.2.7"
# The full list of classifiers is available at
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
CLASSIFIERS = [
@@ -34,7 +34,7 @@
DEPENDENCIES = [
- 'azure-mgmt-cosmosdb==0.4.0',
+ 'azure-mgmt-cosmosdb==0.5.2',
'azure-cli-core',
'pydocumentdb>=2.0.1'
]
1
0
Hello community,
here is the log from the commit of package azure-cli-container for openSUSE:Factory checked in at 2019-05-22 10:59:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-container (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-container.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-container"
Wed May 22 10:59:37 2019 rev:5 rq:696827 version:0.3.13
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-container/azure-cli-container.changes 2018-10-15 10:47:54.279104007 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-container.new.5148/azure-cli-container.changes 2019-05-22 10:59:38.942796048 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 14:05:22 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.3.13
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-container-0.3.3.tar.gz
New:
----
azure-cli-container-0.3.13.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-container.spec ++++++
--- /var/tmp/diff_new_pack.1wznXV/_old 2019-05-22 10:59:39.622795167 +0200
+++ /var/tmp/diff_new_pack.1wznXV/_new 2019-05-22 10:59:39.622795167 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-container
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-container
-Version: 0.3.3
+Version: 0.3.13
Release: 0
Summary: Microsoft Azure CLI 'container' Command Module
License: MIT
@@ -27,18 +27,18 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-PyYAML >= 3.13
-Requires: python3-azure-mgmt-containerinstance >= 1.0.0
+Requires: python3-PyYAML >= 4.2b1
+Requires: python3-azure-mgmt-authorization >= 0.50.0
+Requires: python3-azure-mgmt-containerinstance >= 1.4.0
Requires: python3-azure-mgmt-loganalytics >= 0.2.0
-Requires: python3-azure-mgmt-resource >= 2.0.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-mgmt-network >= 2.4.0
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-colorama
Requires: python3-websocket-client
Conflicts: azure-cli < 2.0.0
@@ -60,6 +60,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-container-0.3.3.tar.gz -> azure-cli-container-0.3.13.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-container-0.3.3/HISTORY.rst new/azure-cli-container-0.3.13/HISTORY.rst
--- old/azure-cli-container-0.3.3/HISTORY.rst 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-container-0.3.13/HISTORY.rst 2019-01-25 20:43:40.000000000 +0100
@@ -3,6 +3,55 @@
Release History
===============
+0.3.13
+++++++
+* Adding 'az container start' command
+* Allow using decimal values for CPU during container creation
+
+0.3.12
+++++++
+* Updating dependencies
+
+0.3.11
+++++++
+* Updating dependencies
+
+0.3.10
+++++++
+* Minor fixes
+
+0.3.9
++++++
+* Minor fixes
+
+0.3.8
++++++
+* Show identity when exporting a container group to yaml
+
+0.3.7
++++++
+* Make 'Private' a valid type to pass to '--ip-address'
+* Allow using only subnet ID to setup a virtual network for the container group
+* Allow using vnet name or resource id to enable using vnets from different resource groups
+
+0.3.6
++++++
+* Add '--assign-identity' for adding a MSI identity to a container group
+* Add '--scope' to create a role assignment for the system assigned MSI identity
+* Show warning when creating a container group with an image without a long running process
+* Fix table output issues for 'list' and 'show' commands
+
+0.3.5
++++++
+* Minor changes
+
+0.3.4
++++++
+* Added ability to restart and stop a running container group
+* Add '--network-profile' for passing in a network profile
+* Add '--subnet', '--vnet_name', to allow creating container groups in a VNET
+* Update the table output to show the status of the container group
+
0.3.3
+++++
* Add '--secure-environment-variables' for passing secure environment variables to a container
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-container-0.3.3/PKG-INFO new/azure-cli-container-0.3.13/PKG-INFO
--- old/azure-cli-container-0.3.3/PKG-INFO 2018-08-09 08:36:01.000000000 +0200
+++ new/azure-cli-container-0.3.13/PKG-INFO 2019-01-25 20:43:55.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-container
-Version: 0.3.3
+Version: 0.3.13
Summary: Microsoft Azure Command-Line Tools container Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -305,6 +305,55 @@
Release History
===============
+ 0.3.13
+ ++++++
+ * Adding 'az container start' command
+ * Allow using decimal values for CPU during container creation
+
+ 0.3.12
+ ++++++
+ * Updating dependencies
+
+ 0.3.11
+ ++++++
+ * Updating dependencies
+
+ 0.3.10
+ ++++++
+ * Minor fixes
+
+ 0.3.9
+ +++++
+ * Minor fixes
+
+ 0.3.8
+ +++++
+ * Show identity when exporting a container group to yaml
+
+ 0.3.7
+ +++++
+ * Make 'Private' a valid type to pass to '--ip-address'
+ * Allow using only subnet ID to setup a virtual network for the container group
+ * Allow using vnet name or resource id to enable using vnets from different resource groups
+
+ 0.3.6
+ +++++
+ * Add '--assign-identity' for adding a MSI identity to a container group
+ * Add '--scope' to create a role assignment for the system assigned MSI identity
+ * Show warning when creating a container group with an image without a long running process
+ * Fix table output issues for 'list' and 'show' commands
+
+ 0.3.5
+ +++++
+ * Minor changes
+
+ 0.3.4
+ +++++
+ * Added ability to restart and stop a running container group
+ * Add '--network-profile' for passing in a network profile
+ * Add '--subnet', '--vnet_name', to allow creating container groups in a VNET
+ * Update the table output to show the status of the container group
+
0.3.3
+++++
* Add '--secure-environment-variables' for passing secure environment variables to a container
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-container-0.3.3/azure/cli/command_modules/container/_client_factory.py new/azure-cli-container-0.3.13/azure/cli/command_modules/container/_client_factory.py
--- old/azure-cli-container-0.3.3/azure/cli/command_modules/container/_client_factory.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-container-0.3.13/azure/cli/command_modules/container/_client_factory.py 2019-01-25 20:43:40.000000000 +0100
@@ -32,3 +32,22 @@
from azure.mgmt.resource import ResourceManagementClient
from azure.cli.core.commands.client_factory import get_mgmt_service_client
return get_mgmt_service_client(cli_ctx, ResourceManagementClient)
+
+
+def get_auth_management_client(cli_ctx, scope=None, **_):
+ import re
+ from azure.cli.core.profiles import ResourceType
+ from azure.cli.core.commands.client_factory import get_mgmt_service_client
+
+ subscription_id = None
+ if scope:
+ matched = re.match('/subscriptions/(?P<subscription>[^/]*)/', scope)
+ if matched:
+ subscription_id = matched.groupdict()['subscription']
+ return get_mgmt_service_client(cli_ctx, ResourceType.MGMT_AUTHORIZATION, subscription_id=subscription_id)
+
+
+def cf_network(cli_ctx):
+ from azure.mgmt.network import NetworkManagementClient
+ from azure.cli.core.commands.client_factory import get_mgmt_service_client
+ return get_mgmt_service_client(cli_ctx, NetworkManagementClient, api_version="2018-08-01")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-container-0.3.3/azure/cli/command_modules/container/_format.py new/azure-cli-container-0.3.13/azure/cli/command_modules/container/_format.py
--- old/azure-cli-container-0.3.3/azure/cli/command_modules/container/_format.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-container-0.3.13/azure/cli/command_modules/container/_format.py 2019-01-25 20:43:40.000000000 +0100
@@ -38,19 +38,40 @@
def _format_ip_address(container_group):
"""Format IP address. """
ip_address = container_group.get('ipAddress')
- if ip_address is not None:
- ports = ','.join(str(p['port']) for p in ip_address['ports'])
+ if ip_address:
+ ports = ip_address['ports'] or []
+
+ if ip_address['type'] == 'Private':
+ for container in container_group.get('containers'):
+ ports += container.get('ports')
+
+ ports = ','.join(str(p['port']) for p in ports)
return '{0}:{1}'.format(ip_address.get('ip'), ports)
return None
+def _format_status(container_group):
+ if container_group['instanceView'] and container_group['instanceView']['state']:
+ return container_group['instanceView']['state']
+
+ return container_group['provisioningState']
+
+
+def _format_network(container_group):
+ ip_address = container_group.get('ipAddress')
+ if ip_address:
+ return ip_address['type']
+ return None
+
+
def transform_container_group(result):
"""Transform a container group to table output. """
return OrderedDict([('Name', result['name']),
('ResourceGroup', result['resourceGroup']),
- ('ProvisioningState', result.get('provisioningState')),
+ ('Status', _format_status(result)),
('Image', _get_images(result)),
('IP:ports', _format_ip_address(result)),
+ ('Network', _format_network(result)),
('CPU/Memory', _format_cpu_memory(result)),
('OsType', result.get('osType')),
('Location', result['location'])])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-container-0.3.3/azure/cli/command_modules/container/_help.py new/azure-cli-container-0.3.13/azure/cli/command_modules/container/_help.py
--- old/azure-cli-container-0.3.3/azure/cli/command_modules/container/_help.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-container-0.3.13/azure/cli/command_modules/container/_help.py 2019-01-25 20:43:40.000000000 +0100
@@ -20,9 +20,6 @@
text: az container create -g MyResourceGroup --name myapp --image myimage:latest --cpu 1 --memory 1
- name: Create a container in a container group that runs Windows, with 2 cores and 3.5Gb of memory.
text: az container create -g MyResourceGroup --name mywinapp --image winappimage:latest --os-type Windows --cpu 2 --memory 3.5
- - name: Create a container in a container group with public IP address and ports.
- text: az container create -g MyResourceGroup --name myapp --image myimage:latest --ip-address public --ports 80 443
- - name: Create a container in a container group with public IP address and UDP port.
text: az container create -g MyResourceGroup --name myapp --image myimage:latest --ip-address public --ports 8081 --protocol UDP
- name: Create a container in a container group with public IP address, ports and DNS name label.
text: az container create -g MyResourceGroup --name myapp --image myimage:latest --ports 80 443 --dns-name-label contoso
@@ -31,11 +28,9 @@
- name: Create a container in a container group that runs a command and stop the container afterwards.
text: az container create -g MyResourceGroup --name myapp --image myimage:latest --command-line "echo hello" --restart-policy Never
- name: Create a container in a container group with environment variables.
- text: az container create -g MyResourceGroup --name myapp --image myimage:latest -e key1=value1 key2=value2
+ text: az container create -g MyResourceGroup --name myapp --image myimage:latest --environment-variables key1=value1 key2=value2
- name: Create a container in a container group using container image from Azure Container Registry.
text: az container create -g MyResourceGroup --name myapp --image myAcrRegistry.azurecr.io/myimage:latest --registry-password password
- - name: Create a container in a container group using container image from another private container image registry.
- text: az container create -g MyResourceGroup --name myapp --image myimage:latest --cpu 1 --memory 1.5 --registry-login-server myregistry.com --registry-username username --registry-password password
- name: Create a container in a container group that mounts an Azure File share as volume.
text: az container create -g MyResourceGroup --name myapp --image myimage:latest --command-line "cat /mnt/azfile/myfile" --azure-file-volume-share-name myshare --azure-file-volume-account-name mystorageaccount --azure-file-volume-account-key mystoragekey --azure-file-volume-mount-path /mnt/azfile
- name: Create a container in a container group that mounts a git repo as volume.
@@ -44,8 +39,15 @@
text: az container create -g MyResourceGroup -f containerGroup.yaml
- name: Create a container group using Log Analytics from a workspace name.
text: az container create -g MyResourceGroup --name myapp --log-analytics-workspace myworkspace
- - name: Create a container group using Log Analytics from a workspace id and key.
- text: az container create -g MyResourceGroup --name myapp --log-analytics-workspace workspaceid --log-analytics-workspace-key workspacekey
+ - name: Create a container group with a system assigned identity.
+ text: az container create -g MyResourceGroup --name myapp --image myimage:latest --assign-identity
+ - name: Create a container group with a system assigned identity. The group will have a 'Contributor' role with access to a storage account.
+ text: az container create -g MyResourceGroup --name myapp --image myimage:latest --assign-identity --scope /subscriptions/99999999-1bf0-4dda-aec3-cb9272f09590/MyResourceGroup/myRG/providers/Microsoft.Storage/storageAccounts/storage1
+ - name: Create a container group with a user assigned identity.
+ text: az container create -g MyResourceGroup --name myapp --image myimage:latest --assign-identity /subscriptions/mySubscrpitionId/resourcegroups/myRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myID
+ - name: Create a container group with both system and user assigned identity.
+ text: az container create -g MyResourceGroup --name myapp --image myimage:latest --assign-identity [system] /subscriptions/mySubscrpitionId/resourcegroups/myRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myID
+ min_profile: latest
"""
helps['container delete'] = """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-container-0.3.3/azure/cli/command_modules/container/_params.py new/azure-cli-container-0.3.13/azure/cli/command_modules/container/_params.py
--- old/azure-cli-container-0.3.3/azure/cli/command_modules/container/_params.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-container-0.3.13/azure/cli/command_modules/container/_params.py 2019-01-25 20:43:40.000000000 +0100
@@ -11,11 +11,12 @@
from azure.cli.core.commands.validators import get_default_location_from_resource_group
from azure.mgmt.containerinstance.models import (
ContainerGroupRestartPolicy, OperatingSystemTypes, ContainerNetworkProtocol)
-from ._validators import validate_volume_mount_path, validate_secrets, validate_gitrepo_directory
+from ._validators import (validate_volume_mount_path, validate_secrets, validate_subnet, validate_msi,
+ validate_gitrepo_directory, validate_network_profile, validate_image)
# pylint: disable=line-too-long
-IP_ADDRESS_TYPES = ['Public']
+IP_ADDRESS_TYPES = ['Public', 'Private']
def _environment_variables_type(value):
@@ -46,19 +47,25 @@
nargs='+'
)
+network_profile_type = CLIArgumentType(
+ validator=validate_network_profile,
+ help="The network profile name or id."
+)
+
# pylint: disable=too-many-statements
def load_arguments(self, _):
with self.argument_context('container') as c:
c.argument('resource_group_name', arg_type=resource_group_name_type)
+ c.argument('container_group_name', options_list=['--name', '-n'], help="The name of the container group.")
c.argument('name', options_list=['--name', '-n'], help="The name of the container group", id_part='name')
c.argument('location', arg_type=get_location_type(self.cli_ctx))
with self.argument_context('container create') as c:
c.argument('location', arg_type=get_location_type(self.cli_ctx), validator=get_default_location_from_resource_group)
- c.argument('image', help='The container image name')
- c.argument('cpu', type=int, help='The required number of CPU cores of the containers')
- c.argument('memory', type=float, help='The required memory of the containers in GB')
+ c.argument('image', validator=validate_image, help='The container image name')
+ c.argument('cpu', type=float, help='The required number of CPU cores of the containers, accurate to one decimal place')
+ c.argument('memory', type=float, help='The required memory of the containers in GB, accurate to one decimal place')
c.argument('os_type', arg_type=get_enum_type(OperatingSystemTypes), help='The OS type of the containers')
c.argument('ip_address', arg_type=get_enum_type(IP_ADDRESS_TYPES), help='The IP address type of the container group')
c.argument('ports', type=int, nargs='+', default=[80], help='The ports to open')
@@ -72,6 +79,20 @@
c.argument('secrets_mount_path', validator=validate_volume_mount_path, help="The path within the container where the secrets volume should be mounted. Must not contain colon ':'.")
c.argument('file', options_list=['--file', '-f'], help="The path to the input file.")
+ with self.argument_context('container create', arg_group='Managed Service Identity') as c:
+ c.argument('assign_identity', nargs='*', validator=validate_msi, help="Space-separated list of assigned identities. Assigned identities are either user assigned identities (resource IDs) and / or the system assigned identity ('[system]'). See examples for more info.")
+ c.argument('identity_scope', options_list=['--scope'], help="Scope that the system assigned identity can access")
+ c.argument('identity_role', options_list=['--role'], help="Role name or id the system assigned identity will have")
+
+ with self.argument_context('container create', arg_group='Network') as c:
+ c.argument('network_profile', network_profile_type)
+ c.argument('vnet', help='The name of the VNET when creating a new one or referencing an existing one. Can also reference an existing vnet by ID. This allows using vnets from other resource groups.')
+ c.argument('vnet_name', help='The name of the VNET when creating a new one or referencing an existing one.',
+ deprecate_info=c.deprecate(redirect="--vnet", hide="0.3.5"))
+ c.argument('vnet_address_prefix', help='The IP address prefix to use when creating a new VNET in CIDR format.')
+ c.argument('subnet', options_list=['--subnet'], validator=validate_subnet, help='The name of the subnet when creating a new VNET or referencing an existing one. Can also reference an existing subnet by ID.')
+ c.argument('subnet_address_prefix', help='The subnet IP address prefix to use when creating a new VNET in CIDR format.')
+
with self.argument_context('container create', arg_group='Image Registry') as c:
c.argument('registry_login_server', help='The container image registry login server')
c.argument('registry_username', help='The username to log in container image registry server')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-container-0.3.3/azure/cli/command_modules/container/_validators.py new/azure-cli-container-0.3.13/azure/cli/command_modules/container/_validators.py
--- old/azure-cli-container-0.3.3/azure/cli/command_modules/container/_validators.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-container-0.3.13/azure/cli/command_modules/container/_validators.py 2019-01-25 20:43:40.000000000 +0100
@@ -5,6 +5,11 @@
from base64 import b64encode
from knack.util import CLIError
+from knack.log import get_logger
+
+logger = get_logger(__name__)
+
+short_running_images = ['alpine', 'busybox', 'ubuntu', 'node', 'golang', 'centos', 'python', 'php']
def validate_volume_mount_path(ns):
@@ -35,3 +40,57 @@
def validate_gitrepo_directory(ns):
if ns.gitrepo_dir and '..' in ns.gitrepo_dir:
raise CLIError("The git repo directory cannot contain '..'")
+
+
+def validate_image(ns):
+ if ns.image and ns.image.split(':')[0] in short_running_images and not ns.command_line:
+ logger.warning('Image "%s" has no long running process. The "--command-line" argument must be used to start a '
+ 'long running process inside the container for the container group to stay running. '
+ 'Ex: "tail -f /dev/null" '
+ 'For more imformation visit https://aka.ms/aci/troubleshoot',
+ ns.image)
+
+
+def validate_msi(namespace):
+ MSI_LOCAL_ID = '[system]'
+ if namespace.assign_identity is not None:
+ identities = namespace.assign_identity or []
+ if not namespace.identity_scope and getattr(namespace.identity_role, 'is_default', None) is None:
+ raise CLIError("usage error: '--role {}' is not applicable as the '--scope' is not provided".format(
+ namespace.identity_role))
+
+ if namespace.identity_scope:
+ if identities and MSI_LOCAL_ID not in identities:
+ raise CLIError("usage error: '--scope'/'--role' is only applicable when assign system identity")
+
+ elif namespace.identity_scope or getattr(namespace.identity_role, 'is_default', None) is None:
+ raise CLIError('usage error: --assign-identity [--scope SCOPE] [--role ROLE]')
+
+
+def validate_subnet(ns):
+ from msrestazure.tools import is_valid_resource_id
+
+ # vnet_name is depricated, using for backwards compatability
+ if ns.vnet_name and not ns.vnet:
+ ns.vnet = ns.vnet_name
+
+ if not is_valid_resource_id(ns.subnet) and ((ns.vnet and not ns.subnet) or (ns.subnet and not ns.vnet)):
+ raise CLIError('usage error: --vnet NAME --subnet NAME | --vnet ID --subnet NAME | --subnet ID')
+
+
+def validate_network_profile(cmd, ns):
+ from azure.cli.core.commands.client_factory import get_subscription_id
+ from msrestazure.tools import is_valid_resource_id, resource_id
+
+ if ns.network_profile and ns.ip_address:
+ raise CLIError('Can not use "--network-profile" with IP address type "Public".')
+ elif ns.network_profile and ns.dns_name_label:
+ raise CLIError('Can not use "--network-profile" with "--dns-name-label".')
+ elif ns.network_profile:
+ if not is_valid_resource_id(ns.network_profile):
+ ns.network_profile = resource_id(
+ subscription=get_subscription_id(cmd.cli_ctx),
+ resource_group=ns.resource_group_name,
+ namespace='Microsoft.Network', type='networkProfiles',
+ name=ns.network_profile
+ )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-container-0.3.3/azure/cli/command_modules/container/commands.py new/azure-cli-container-0.3.13/azure/cli/command_modules/container/commands.py
--- old/azure-cli-container-0.3.3/azure/cli/command_modules/container/commands.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-container-0.3.13/azure/cli/command_modules/container/commands.py 2019-01-25 20:43:40.000000000 +0100
@@ -3,10 +3,17 @@
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
+from azure.cli.core.commands import CliCommandType
from ._client_factory import cf_container_groups, cf_container
from ._format import transform_container_group_list, transform_container_group
+container_group_sdk = CliCommandType(
+ operations_tmpl='azure.mgmt.containerinstance.operations.container_groups_operations#ContainerGroupsOperations.{}',
+ client_factory=cf_container_groups
+)
+
+
def load_command_table(self, _):
with self.command_group('container', client_factory=cf_container_groups) as g:
g.custom_command('list', 'list_containers', table_transformer=transform_container_group_list)
@@ -18,3 +25,8 @@
g.custom_command('exec', 'container_exec')
g.custom_command('export', 'container_export')
g.custom_command('attach', 'attach_to_container')
+
+ with self.command_group('container', container_group_sdk) as g:
+ g.command('restart', 'restart')
+ g.command('stop', 'stop')
+ g.command('start', 'start')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-container-0.3.3/azure/cli/command_modules/container/custom.py new/azure-cli-container-0.3.13/azure/cli/command_modules/container/custom.py
--- old/azure-cli-container-0.3.3/azure/cli/command_modules/container/custom.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-container-0.3.13/azure/cli/command_modules/container/custom.py 2019-01-25 20:43:40.000000000 +0100
@@ -3,7 +3,7 @@
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
-# pylint: disable=too-few-public-methods,too-many-arguments,no-self-use,too-many-locals,line-too-long,unused-argument
+# pylint: disable=too-few-public-methods,no-self-use,too-many-locals,line-too-long,unused-argument
import errno
try:
@@ -32,10 +32,10 @@
from azure.mgmt.containerinstance.models import (AzureFileVolume, Container, ContainerGroup, ContainerGroupNetworkProtocol,
ContainerPort, ImageRegistryCredential, IpAddress, Port, ResourceRequests,
ResourceRequirements, Volume, VolumeMount, ContainerExecRequestTerminalSize,
- GitRepoVolume, LogAnalytics, ContainerGroupDiagnostics)
+ GitRepoVolume, LogAnalytics, ContainerGroupDiagnostics, ContainerGroupNetworkProfile,
+ ContainerGroupIpAddressType, ResourceIdentityType, ContainerGroupIdentity)
from azure.cli.core.util import sdk_no_wait
-from msrestazure.tools import parse_resource_id
-from ._client_factory import cf_container_groups, cf_container, cf_log_analytics, cf_resource
+from ._client_factory import (cf_container_groups, cf_container, cf_log_analytics, cf_resource, cf_network)
logger = get_logger(__name__)
WINDOWS_NAME = 'Windows'
@@ -44,6 +44,7 @@
AZURE_FILE_VOLUME_NAME = 'azurefile'
SECRETS_VOLUME_NAME = 'secrets'
GITREPO_VOLUME_NAME = 'gitrepo'
+MSI_LOCAL_ID = '[system]'
def list_containers(client, resource_group_name=None):
@@ -63,6 +64,7 @@
return client.delete(resource_group_name, name)
+# pylint: disable=too-many-statements
def create_container(cmd,
resource_group_name,
name=None,
@@ -88,6 +90,12 @@
azure_file_volume_mount_path=None,
log_analytics_workspace=None,
log_analytics_workspace_key=None,
+ vnet=None,
+ vnet_name=None,
+ vnet_address_prefix='10.0.0.0/16',
+ subnet=None,
+ subnet_address_prefix='10.0.0.0/24',
+ network_profile=None,
gitrepo_url=None,
gitrepo_dir='.',
gitrepo_revision=None,
@@ -95,9 +103,11 @@
secrets=None,
secrets_mount_path=None,
file=None,
+ assign_identity=None,
+ identity_scope=None,
+ identity_role='Contributor',
no_wait=False):
"""Create a container group. """
-
if file:
return _create_update_from_file(cmd.cli_ctx, resource_group_name, name, location, file, no_wait)
@@ -164,14 +174,26 @@
volumes.append(gitrepo_volume)
mounts.append(gitrepo_volume_mount)
- cgroup_ip_address = _create_ip_address(ip_address, ports, protocol, dns_name_label)
-
# Concatenate secure and standard environment variables
if environment_variables and secure_environment_variables:
environment_variables = environment_variables + secure_environment_variables
else:
environment_variables = environment_variables or secure_environment_variables
+ identity = None
+ if assign_identity is not None:
+ identity = _build_identities_info(assign_identity)
+
+ # Set up VNET, subnet and network profile if needed
+ if subnet and not network_profile:
+ network_profile = _get_vnet_network_profile(cmd, location, resource_group_name, vnet, vnet_address_prefix, subnet, subnet_address_prefix)
+
+ cg_network_profile = None
+ if network_profile:
+ cg_network_profile = ContainerGroupNetworkProfile(id=network_profile)
+
+ cgroup_ip_address = _create_ip_address(ip_address, ports, protocol, dns_name_label, network_profile)
+
container = Container(name=name,
image=image,
resources=container_resource_requirements,
@@ -182,20 +204,154 @@
volume_mounts=mounts or None)
cgroup = ContainerGroup(location=location,
+ identity=identity,
containers=[container],
os_type=os_type,
restart_policy=restart_policy,
ip_address=cgroup_ip_address,
image_registry_credentials=image_registry_credentials,
volumes=volumes or None,
+ network_profile=cg_network_profile,
diagnostics=diagnostics,
tags=tags)
container_group_client = cf_container_groups(cmd.cli_ctx)
- return sdk_no_wait(no_wait, container_group_client.create_or_update, resource_group_name, name, cgroup)
+
+ lro = sdk_no_wait(no_wait, container_group_client.create_or_update, resource_group_name,
+ name, cgroup)
+
+ if assign_identity is not None and identity_scope:
+ from azure.cli.core.commands.arm import assign_identity
+ cg = container_group_client.get(resource_group_name, name)
+ assign_identity(cmd.cli_ctx, lambda: cg, lambda cg: cg, identity_role, identity_scope)
+
+ return lro
+
+
+def _build_identities_info(identities):
+ identities = identities or []
+ identity_type = ResourceIdentityType.none
+ if not identities or MSI_LOCAL_ID in identities:
+ identity_type = ResourceIdentityType.system_assigned
+ external_identities = [x for x in identities if x != MSI_LOCAL_ID]
+ if external_identities and identity_type == ResourceIdentityType.system_assigned:
+ identity_type = ResourceIdentityType.system_assigned_user_assigned
+ elif external_identities:
+ identity_type = ResourceIdentityType.user_assigned
+ identity = ContainerGroupIdentity(type=identity_type)
+ if external_identities:
+ identity.user_assigned_identities = {e: {} for e in external_identities}
+ return identity
+
+
+def _get_resource(client, resource_group_name, *subresources):
+ from msrestazure.azure_exceptions import CloudError
+ try:
+ resource = client.get(resource_group_name, *subresources)
+ return resource
+ except CloudError as ex:
+ if ex.error.error == "NotFound" or ex.error.error == "ResourceNotFound":
+ return None
+ else:
+ raise
+
+
+def _get_vnet_network_profile(cmd, location, resource_group_name, vnet, vnet_address_prefix, subnet, subnet_address_prefix):
+ from azure.cli.core.profiles import ResourceType
+ from msrestazure.tools import parse_resource_id, is_valid_resource_id
+
+ aci_delegation_service_name = "Microsoft.ContainerInstance/containerGroups"
+ Delegation = cmd.get_models('Delegation', resource_type=ResourceType.MGMT_NETWORK)
+ aci_delegation = Delegation(
+ name=aci_delegation_service_name,
+ service_name=aci_delegation_service_name
+ )
+
+ ncf = cf_network(cmd.cli_ctx)
+
+ vnet_name = vnet
+ subnet_name = subnet
+ if is_valid_resource_id(subnet):
+ parsed_subnet_id = parse_resource_id(subnet)
+ subnet_name = parsed_subnet_id['resource_name']
+ vnet_name = parsed_subnet_id['name']
+ resource_group_name = parsed_subnet_id['resource_group']
+ elif is_valid_resource_id(vnet):
+ parsed_vnet_id = parse_resource_id(vnet)
+ vnet_name = parsed_vnet_id['resource_name']
+ resource_group_name = parsed_vnet_id['resource_group']
+
+ default_network_profile_name = "aci-network-profile-{}-{}".format(vnet_name, subnet_name)
+
+ subnet = _get_resource(ncf.subnets, resource_group_name, vnet_name, subnet_name)
+ # For an existing subnet, validate and add delegation if needed
+ if subnet:
+ logger.info('Using existing subnet "%s" in resource group "%s"', subnet.name, resource_group_name)
+ for sal in (subnet.service_association_links or []):
+ if sal.linked_resource_type != aci_delegation_service_name:
+ raise CLIError("Can not use subnet with existing service association links other than {}.".format(aci_delegation_service_name))
+
+ if not subnet.delegations:
+ logger.info('Adding ACI delegation to the existing subnet.')
+ subnet.delegations = [aci_delegation]
+ subnet = ncf.subnets.create_or_update(resource_group_name, vnet_name, subnet_name, subnet).result()
+ else:
+ for delegation in subnet.delegations:
+ if delegation.service_name != aci_delegation_service_name:
+ raise CLIError("Can not use subnet with existing delegations other than {}".format(aci_delegation_service_name))
+
+ network_profile = _get_resource(ncf.network_profiles, resource_group_name, default_network_profile_name)
+ if network_profile:
+ logger.info('Using existing network profile "%s"', default_network_profile_name)
+ return network_profile.id
+
+ # Create new subnet and Vnet if not exists
+ else:
+ Subnet, VirtualNetwork, AddressSpace = cmd.get_models('Subnet', 'VirtualNetwork',
+ 'AddressSpace', resource_type=ResourceType.MGMT_NETWORK)
+
+ vnet = _get_resource(ncf.virtual_networks, resource_group_name, vnet_name)
+ if not vnet:
+ logger.info('Creating new vnet "%s" in resource group "%s"', vnet_name, resource_group_name)
+ ncf.virtual_networks.create_or_update(resource_group_name,
+ vnet_name,
+ VirtualNetwork(name=vnet_name,
+ location=location,
+ address_space=AddressSpace(address_prefixes=[vnet_address_prefix])))
+ subnet = Subnet(
+ name=subnet_name,
+ location=location,
+ address_prefix=subnet_address_prefix,
+ delegations=[aci_delegation])
+
+ logger.info('Creating new subnet "%s" in resource group "%s"', subnet_name, resource_group_name)
+ subnet = ncf.subnets.create_or_update(resource_group_name, vnet_name, subnet_name, subnet).result()
+
+ NetworkProfile, ContainerNetworkInterfaceConfiguration, IPConfigurationProfile = cmd.get_models('NetworkProfile',
+ 'ContainerNetworkInterfaceConfiguration',
+ 'IPConfigurationProfile',
+ resource_type=ResourceType.MGMT_NETWORK)
+ # In all cases, create the network profile with aci NIC
+ network_profile = NetworkProfile(
+ name=default_network_profile_name,
+ location=location,
+ container_network_interface_configurations=[ContainerNetworkInterfaceConfiguration(
+ name="eth0",
+ ip_configurations=[IPConfigurationProfile(
+ name="ipconfigprofile",
+ subnet=subnet
+ )]
+ )]
+ )
+
+ logger.info('Creating network profile "%s" in resource group "%s"', default_network_profile_name, resource_group_name)
+ network_profile = ncf.network_profiles.create_or_update(resource_group_name, default_network_profile_name, network_profile).result()
+
+ return network_profile.id
def _get_diagnostics_from_workspace(cli_ctx, log_analytics_workspace):
+ from msrestazure.tools import parse_resource_id
log_analytics_client = cf_log_analytics(cli_ctx)
for workspace in log_analytics_client.list():
@@ -217,7 +373,6 @@
def _create_update_from_file(cli_ctx, resource_group_name, name, location, file, no_wait):
resource_client = cf_resource(cli_ctx)
container_group_client = cf_container_groups(cli_ctx)
-
cg_defintion = None
try:
@@ -370,10 +525,14 @@
# pylint: disable=inconsistent-return-statements
-def _create_ip_address(ip_address, ports, protocol, dns_name_label):
+def _create_ip_address(ip_address, ports, protocol, dns_name_label, network_profile):
"""Create IP address. """
if (ip_address and ip_address.lower() == 'public') or dns_name_label:
- return IpAddress(ports=[Port(protocol=protocol, port=p) for p in ports], dns_name_label=dns_name_label)
+ return IpAddress(ports=[Port(protocol=protocol, port=p) for p in ports],
+ dns_name_label=dns_name_label, type=ContainerGroupIpAddressType.public)
+ elif network_profile:
+ return IpAddress(ports=[Port(protocol=protocol, port=p) for p in ports],
+ type=ContainerGroupIpAddressType.private)
# pylint: disable=inconsistent-return-statements
@@ -402,7 +561,6 @@
def container_export(cmd, resource_group_name, name, file):
resource_client = cf_resource(cmd.cli_ctx)
container_group_client = cf_container_groups(cmd.cli_ctx)
-
resource = resource_client.resources.get(resource_group_name,
"Microsoft.ContainerInstance",
'',
@@ -410,17 +568,26 @@
name,
container_group_client.api_version,
False).__dict__
-
# Remove unwanted properites
resource['properties'].pop('instanceView', None)
resource.pop('sku', None)
resource.pop('id', None)
resource.pop('plan', None)
- resource.pop('identity', None)
resource.pop('kind', None)
resource.pop('managed_by', None)
resource['properties'].pop('provisioningState', None)
+ # Correctly export the identity
+ if 'identity' in resource and resource['identity'].type != ResourceIdentityType.none:
+ resource['identity'] = resource['identity'].__dict__
+ identity_entry = {'type': resource['identity']['type'].value}
+ if resource['identity']['user_assigned_identities']:
+ identity_entry['user_assigned_identities'] = {k: {} for k in resource['identity']['user_assigned_identities']}
+ resource['identity'] = identity_entry
+ else:
+ resource.pop('identity', None)
+
+ # Remove container instance views
for i in range(len(resource['properties']['containers'])):
resource['properties']['containers'][i]['properties'].pop('instanceView', None)
@@ -651,3 +818,8 @@
if lines > 0:
# Use stdout.write to support Python 2
sys.stdout.write('\033[{}A\033[K\033[J'.format(lines))
+
+
+def _gen_guid():
+ import uuid
+ return uuid.uuid4()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-container-0.3.3/azure_cli_container.egg-info/PKG-INFO new/azure-cli-container-0.3.13/azure_cli_container.egg-info/PKG-INFO
--- old/azure-cli-container-0.3.3/azure_cli_container.egg-info/PKG-INFO 2018-08-09 08:36:01.000000000 +0200
+++ new/azure-cli-container-0.3.13/azure_cli_container.egg-info/PKG-INFO 2019-01-25 20:43:55.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-container
-Version: 0.3.3
+Version: 0.3.13
Summary: Microsoft Azure Command-Line Tools container Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -305,6 +305,55 @@
Release History
===============
+ 0.3.13
+ ++++++
+ * Adding 'az container start' command
+ * Allow using decimal values for CPU during container creation
+
+ 0.3.12
+ ++++++
+ * Updating dependencies
+
+ 0.3.11
+ ++++++
+ * Updating dependencies
+
+ 0.3.10
+ ++++++
+ * Minor fixes
+
+ 0.3.9
+ +++++
+ * Minor fixes
+
+ 0.3.8
+ +++++
+ * Show identity when exporting a container group to yaml
+
+ 0.3.7
+ +++++
+ * Make 'Private' a valid type to pass to '--ip-address'
+ * Allow using only subnet ID to setup a virtual network for the container group
+ * Allow using vnet name or resource id to enable using vnets from different resource groups
+
+ 0.3.6
+ +++++
+ * Add '--assign-identity' for adding a MSI identity to a container group
+ * Add '--scope' to create a role assignment for the system assigned MSI identity
+ * Show warning when creating a container group with an image without a long running process
+ * Fix table output issues for 'list' and 'show' commands
+
+ 0.3.5
+ +++++
+ * Minor changes
+
+ 0.3.4
+ +++++
+ * Added ability to restart and stop a running container group
+ * Add '--network-profile' for passing in a network profile
+ * Add '--subnet', '--vnet_name', to allow creating container groups in a VNET
+ * Update the table output to show the status of the container group
+
0.3.3
+++++
* Add '--secure-environment-variables' for passing secure environment variables to a container
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-container-0.3.3/azure_cli_container.egg-info/requires.txt new/azure-cli-container-0.3.13/azure_cli_container.egg-info/requires.txt
--- old/azure-cli-container-0.3.3/azure_cli_container.egg-info/requires.txt 2018-08-09 08:36:01.000000000 +0200
+++ new/azure-cli-container-0.3.13/azure_cli_container.egg-info/requires.txt 2019-01-25 20:43:55.000000000 +0100
@@ -1,7 +1,8 @@
-azure-mgmt-containerinstance==1.0.0
+azure-mgmt-containerinstance==1.4.0
azure-mgmt-loganalytics==0.2.0
-azure-mgmt-resource==2.0.0
+azure-mgmt-network==2.4.0
+azure-mgmt-authorization==0.50.0
azure-cli-core
-pyyaml>=3.13
+pyyaml>=4.2b1
colorama
websocket-client
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-container-0.3.3/setup.py new/azure-cli-container-0.3.13/setup.py
--- old/azure-cli-container-0.3.3/setup.py 2018-08-09 08:34:43.000000000 +0200
+++ new/azure-cli-container-0.3.13/setup.py 2019-01-25 20:43:40.000000000 +0100
@@ -14,7 +14,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "0.3.3"
+VERSION = "0.3.13"
CLASSIFIERS = [
'Development Status :: 4 - Beta',
@@ -31,11 +31,12 @@
]
DEPENDENCIES = [
- 'azure-mgmt-containerinstance==1.0.0',
+ 'azure-mgmt-containerinstance==1.4.0',
'azure-mgmt-loganalytics==0.2.0',
- 'azure-mgmt-resource==2.0.0',
+ 'azure-mgmt-network==2.4.0',
+ 'azure-mgmt-authorization==0.50.0',
'azure-cli-core',
- 'pyyaml>=3.13',
+ 'pyyaml>=4.2b1',
'colorama',
'websocket-client'
]
1
0
Hello community,
here is the log from the commit of package azure-cli-consumption for openSUSE:Factory checked in at 2019-05-22 10:59:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-consumption (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-consumption.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-consumption"
Wed May 22 10:59:30 2019 rev:5 rq:696826 version:0.4.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-consumption/azure-cli-consumption.changes 2018-10-15 10:47:13.803147239 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-consumption.new.5148/azure-cli-consumption.changes 2019-05-22 10:59:33.518803073 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 14:03:03 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.4.2
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-consumption-0.4.0.tar.gz
New:
----
azure-cli-consumption-0.4.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-consumption.spec ++++++
--- /var/tmp/diff_new_pack.mpm7X8/_old 2019-05-22 10:59:34.022802420 +0200
+++ /var/tmp/diff_new_pack.mpm7X8/_new 2019-05-22 10:59:34.022802420 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-consumption
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-consumption
-Version: 0.4.0
+Version: 0.4.2
Release: 0
Summary: Microsoft Azure CLI 'consumption' Command Module
License: MIT
@@ -27,15 +27,14 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
Requires: python3-azure-mgmt-consumption >= 2.0.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -55,6 +54,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-consumption-0.4.0.tar.gz -> azure-cli-consumption-0.4.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-consumption-0.4.0/HISTORY.rst new/azure-cli-consumption-0.4.2/HISTORY.rst
--- old/azure-cli-consumption-0.4.0/HISTORY.rst 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-consumption-0.4.2/HISTORY.rst 2019-01-11 05:42:07.000000000 +0100
@@ -3,6 +3,14 @@
Release History
===============
+0.4.2
++++++
+* Bug fixes.
+
+0.4.1
++++++
+* Fixed bugs for budget API to show notifications.
+
0.4.0
+++++
* BREAKING CHANGE: 'show' commands log error message and fail with exit code of 3 upon a missing resource.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-consumption-0.4.0/PKG-INFO new/azure-cli-consumption-0.4.2/PKG-INFO
--- old/azure-cli-consumption-0.4.0/PKG-INFO 2018-07-14 01:41:58.000000000 +0200
+++ new/azure-cli-consumption-0.4.2/PKG-INFO 2019-01-11 05:42:39.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-consumption
-Version: 0.4.0
+Version: 0.4.2
Summary: Microsoft Azure Command-Line Tools Consumption Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,14 @@
Release History
===============
+ 0.4.2
+ +++++
+ * Bug fixes.
+
+ 0.4.1
+ +++++
+ * Fixed bugs for budget API to show notifications.
+
0.4.0
+++++
* BREAKING CHANGE: 'show' commands log error message and fail with exit code of 3 upon a missing resource.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-consumption-0.4.0/azure/cli/command_modules/consumption/_transformers.py new/azure-cli-consumption-0.4.2/azure/cli/command_modules/consumption/_transformers.py
--- old/azure-cli-consumption-0.4.0/azure/cli/command_modules/consumption/_transformers.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-consumption-0.4.2/azure/cli/command_modules/consumption/_transformers.py 2019-01-11 05:42:07.000000000 +0100
@@ -78,6 +78,10 @@
result.amount = str(result.amount)
if result.current_spend:
result.current_spend.amount = str(result.current_spend.amount)
+ if result.notifications:
+ for key in result.notifications:
+ value = result.notifications[key]
+ value.threshold = str(value.threshold)
return result
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-consumption-0.4.0/azure/cli/command_modules/consumption/custom.py new/azure-cli-consumption-0.4.2/azure/cli/command_modules/consumption/custom.py
--- old/azure-cli-consumption-0.4.0/azure/cli/command_modules/consumption/custom.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-consumption-0.4.2/azure/cli/command_modules/consumption/custom.py 2019-01-11 05:42:07.000000000 +0100
@@ -108,7 +108,7 @@
filters = client.models.Filters(resource_groups=resource_groups, resources=resources, meters=meters)
parameters = client.models.Budget(category=category, amount=amount, time_grain=time_grain, time_period=time_period, filters=filters, notifications=None)
if resource_group_name:
- return client.create_or_update(resource_group_name, budget_name, parameters)
+ return client.create_or_update_by_resource_group_name(resource_group_name, budget_name, parameters)
return client.create_or_update(budget_name, parameters)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-consumption-0.4.0/azure_cli_consumption.egg-info/PKG-INFO new/azure-cli-consumption-0.4.2/azure_cli_consumption.egg-info/PKG-INFO
--- old/azure-cli-consumption-0.4.0/azure_cli_consumption.egg-info/PKG-INFO 2018-07-14 01:41:58.000000000 +0200
+++ new/azure-cli-consumption-0.4.2/azure_cli_consumption.egg-info/PKG-INFO 2019-01-11 05:42:39.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-consumption
-Version: 0.4.0
+Version: 0.4.2
Summary: Microsoft Azure Command-Line Tools Consumption Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,14 @@
Release History
===============
+ 0.4.2
+ +++++
+ * Bug fixes.
+
+ 0.4.1
+ +++++
+ * Fixed bugs for budget API to show notifications.
+
0.4.0
+++++
* BREAKING CHANGE: 'show' commands log error message and fail with exit code of 3 upon a missing resource.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-consumption-0.4.0/setup.py new/azure-cli-consumption-0.4.2/setup.py
--- old/azure-cli-consumption-0.4.0/setup.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-consumption-0.4.2/setup.py 2019-01-11 05:42:07.000000000 +0100
@@ -16,7 +16,7 @@
cmdclass = {}
-VERSION = "0.4.0"
+VERSION = "0.4.2"
# The full list of classifiers is available at
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
CLASSIFIERS = [
1
0
Hello community,
here is the log from the commit of package azure-cli-configure for openSUSE:Factory checked in at 2019-05-22 10:59:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-configure (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-configure.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-configure"
Wed May 22 10:59:26 2019 rev:5 rq:696825 version:2.0.20
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-configure/azure-cli-configure.changes 2018-10-15 10:47:20.215140389 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-configure.new.5148/azure-cli-configure.changes 2019-05-22 10:59:27.526810833 +0200
@@ -1,0 +2,15 @@
+Tue Apr 16 13:59:28 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.0.20
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+
+-------------------------------------------------------------------
Old:
----
azure-cli-configure-2.0.18.tar.gz
New:
----
azure-cli-configure-2.0.20.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-configure.spec ++++++
--- /var/tmp/diff_new_pack.Njg8CO/_old 2019-05-22 10:59:27.934810304 +0200
+++ /var/tmp/diff_new_pack.Njg8CO/_new 2019-05-22 10:59:27.934810304 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-configure
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-configure
-Version: 2.0.18
+Version: 2.0.20
Release: 0
Summary: Microsoft Azure CLI 'configure' Command Module
License: MIT
@@ -27,14 +27,13 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -54,6 +53,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-configure-2.0.18.tar.gz -> azure-cli-configure-2.0.20.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-configure-2.0.18/HISTORY.rst new/azure-cli-configure-2.0.20/HISTORY.rst
--- old/azure-cli-configure-2.0.18/HISTORY.rst 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-configure-2.0.20/HISTORY.rst 2019-01-11 05:42:07.000000000 +0100
@@ -2,6 +2,13 @@
Release History
===============
+2.0.20
+++++++
+* Add 'none' as a configurable output format.
+
+2.0.19
+++++++
+* Add YAML to output format options.
2.0.18
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-configure-2.0.18/PKG-INFO new/azure-cli-configure-2.0.20/PKG-INFO
--- old/azure-cli-configure-2.0.18/PKG-INFO 2018-07-14 01:41:49.000000000 +0200
+++ new/azure-cli-configure-2.0.20/PKG-INFO 2019-01-11 05:42:49.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-configure
-Version: 2.0.18
+Version: 2.0.20
Summary: Microsoft Azure Command-Line Tools Configure Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -17,6 +17,13 @@
Release History
===============
+ 2.0.20
+ ++++++
+ * Add 'none' as a configurable output format.
+
+ 2.0.19
+ ++++++
+ * Add YAML to output format options.
2.0.18
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-configure-2.0.18/azure/cli/command_modules/configure/_consts.py new/azure-cli-configure-2.0.20/azure/cli/command_modules/configure/_consts.py
--- old/azure-cli-configure-2.0.18/azure/cli/command_modules/configure/_consts.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-configure-2.0.20/azure/cli/command_modules/configure/_consts.py 2019-01-11 05:42:07.000000000 +0100
@@ -4,11 +4,13 @@
# --------------------------------------------------------------------------------------------
OUTPUT_LIST = [
- {'name': 'json', 'desc': 'JSON formatted output that most closely matches API responses'},
+ {'name': 'json', 'desc': 'JSON formatted output that most closely matches API responses.'},
{'name': 'jsonc',
- 'desc': 'Colored JSON formatted output that most closely matches API responses'},
- {'name': 'table', 'desc': 'Human-readable output format'},
- {'name': 'tsv', 'desc': 'Tab- and Newline-delimited, great for GREP, AWK, etc.'}
+ 'desc': 'Colored JSON formatted output that most closely matches API responses.'},
+ {'name': 'table', 'desc': 'Human-readable output format.'},
+ {'name': 'tsv', 'desc': 'Tab- and Newline-delimited. Great for GREP, AWK, etc.'},
+ {'name': 'yaml', 'desc': 'YAML formatted output. An alternative to JSON. Great for configuration files.'},
+ {'name': 'none', 'desc': 'No output, except for errors and warnings.'}
]
LOGIN_METHOD_LIST = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-configure-2.0.18/azure_cli_configure.egg-info/PKG-INFO new/azure-cli-configure-2.0.20/azure_cli_configure.egg-info/PKG-INFO
--- old/azure-cli-configure-2.0.18/azure_cli_configure.egg-info/PKG-INFO 2018-07-14 01:41:49.000000000 +0200
+++ new/azure-cli-configure-2.0.20/azure_cli_configure.egg-info/PKG-INFO 2019-01-11 05:42:49.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-configure
-Version: 2.0.18
+Version: 2.0.20
Summary: Microsoft Azure Command-Line Tools Configure Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -17,6 +17,13 @@
Release History
===============
+ 2.0.20
+ ++++++
+ * Add 'none' as a configurable output format.
+
+ 2.0.19
+ ++++++
+ * Add YAML to output format options.
2.0.18
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-configure-2.0.18/setup.py new/azure-cli-configure-2.0.20/setup.py
--- old/azure-cli-configure-2.0.18/setup.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-configure-2.0.20/setup.py 2019-01-11 05:42:07.000000000 +0100
@@ -15,7 +15,7 @@
cmdclass = {}
-VERSION = "2.0.18"
+VERSION = "2.0.20"
CLASSIFIERS = [
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
1
0
Hello community,
here is the log from the commit of package azure-cli-component for openSUSE:Factory checked in at 2019-05-22 10:59:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-component (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-component.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-component"
Wed May 22 10:59:21 2019 rev:2 rq:696824 version:2.0.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-component/azure-cli-component.changes 2017-11-10 14:53:06.433388059 +0100
+++ /work/SRC/openSUSE:Factory/.azure-cli-component.new.5148/azure-cli-component.changes 2019-05-22 10:59:25.118813951 +0200
@@ -1,0 +2,15 @@
+Wed Apr 17 07:14:06 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.0.8
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+
+-------------------------------------------------------------------
Old:
----
azure-cli-component-2.0.7.tar.gz
New:
----
azure-cli-component-2.0.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-component.spec ++++++
--- /var/tmp/diff_new_pack.4I63aO/_old 2019-05-22 10:59:25.786813086 +0200
+++ /var/tmp/diff_new_pack.4I63aO/_new 2019-05-22 10:59:25.790813081 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-component
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,11 +12,12 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
+
Name: azure-cli-component
-Version: 2.0.7
+Version: 2.0.8
Release: 0
Summary: Microsoft Azure CLI 'component' Command Module
License: MIT
@@ -24,16 +25,15 @@
Url: https://github.com/Azure/azure-cli
Source: https://files.pythonhosted.org/packages/source/a/azure-cli-component/azure-…
Source1: LICENSE.txt
-BuildRequires: python3-devel
-BuildRequires: python3-setuptools
-BuildRequires: unzip
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
+BuildRequires: python3-setuptools
Requires: azure-cli-command-modules-nspkg
-Requires: azure-cli-nspkg
-Requires: python3-azure-nspkg
Requires: azure-cli-core
+Requires: azure-cli-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Requires: python3-pip
Conflicts: azure-cli < 2.0.0
@@ -54,6 +54,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
@@ -66,4 +67,5 @@
%doc LICENSE.txt README.rst
%{python3_sitelib}/azure/cli/command_modules/component
%{python3_sitelib}/azure_cli_component-*.egg-info
+
%changelog
++++++ azure-cli-component-2.0.7.tar.gz -> azure-cli-component-2.0.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-component-2.0.7/HISTORY.rst new/azure-cli-component-2.0.8/HISTORY.rst
--- old/azure-cli-component-2.0.7/HISTORY.rst 2017-08-11 19:00:20.000000000 +0200
+++ new/azure-cli-component-2.0.8/HISTORY.rst 2017-10-24 04:27:32.000000000 +0200
@@ -3,6 +3,10 @@
Release History
===============
+2.0.8
++++++
+* minor fixes
+
2.0.7 (2017-08-11)
++++++++++++++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-component-2.0.7/PKG-INFO new/azure-cli-component-2.0.8/PKG-INFO
--- old/azure-cli-component-2.0.7/PKG-INFO 2017-08-11 19:00:20.000000000 +0200
+++ new/azure-cli-component-2.0.8/PKG-INFO 2017-10-24 04:27:45.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-component
-Version: 2.0.7
+Version: 2.0.8
Summary: Microsoft Azure Command-Line Tools Component Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,10 @@
Release History
===============
+ 2.0.8
+ +++++
+ * minor fixes
+
2.0.7 (2017-08-11)
++++++++++++++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-component-2.0.7/azure/cli/command_modules/component/custom.py new/azure-cli-component-2.0.8/azure/cli/command_modules/component/custom.py
--- old/azure-cli-component-2.0.7/azure/cli/command_modules/component/custom.py 2017-08-11 18:59:25.000000000 +0200
+++ new/azure-cli-component-2.0.8/azure/cli/command_modules/component/custom.py 2017-10-24 04:27:32.000000000 +0200
@@ -9,6 +9,7 @@
from azure.cli.core.util import CLIError
from azure.cli.core._config import az_config
import azure.cli.core.azlogging as azlogging
+from azure.cli.core.prompting import prompt_y_n, NoTTYException
logger = azlogging.get_az_logger(__name__)
@@ -18,19 +19,18 @@
def _deprecate_warning():
logger.warning("The 'component' commands will be deprecated in the future.")
-
-
-def _verify_not_dev():
- from azure.cli.core import __version__ as core_version
- dev_version = core_version.endswith('+dev')
- if dev_version:
- raise CLIError('This operation is not available in the developer version of the CLI.')
+ logger.warning("az component and subcommands may not work unless the CLI is installed with pip.")
+ try:
+ ans = prompt_y_n("Are you sure you want to continue?", default='n')
+ if not ans:
+ raise CLIError('Operation cancelled.')
+ except NoTTYException:
+ pass
def list_components():
""" List the installed components """
_deprecate_warning()
- _verify_not_dev()
import pip
return sorted([{'name': dist.key.replace(COMPONENT_PREFIX, ''), 'version': dist.version}
for dist in pip.get_installed_distributions(local_only=True)
@@ -59,7 +59,6 @@
def list_available_components():
""" List publicly available components that can be installed """
_deprecate_warning()
- _verify_not_dev()
import pip
available_components = []
installed_component_names = [dist.key.replace(COMPONENT_PREFIX, '') for dist in
@@ -81,7 +80,6 @@
def remove(component_name):
""" Remove a component """
_deprecate_warning()
- _verify_not_dev()
if component_name in ['nspkg', 'core']:
raise CLIError("This component cannot be removed, it is required for the CLI to function.")
import pip
@@ -174,7 +172,6 @@
allow_third_party=False):
""" Update the CLI and all installed components """
_deprecate_warning()
- _verify_not_dev()
import pip
# Update the CLI itself
package_list = [CLI_PACKAGE_NAME]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-component-2.0.7/azure_cli_component.egg-info/PKG-INFO new/azure-cli-component-2.0.8/azure_cli_component.egg-info/PKG-INFO
--- old/azure-cli-component-2.0.7/azure_cli_component.egg-info/PKG-INFO 2017-08-11 19:00:20.000000000 +0200
+++ new/azure-cli-component-2.0.8/azure_cli_component.egg-info/PKG-INFO 2017-10-24 04:27:45.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-component
-Version: 2.0.7
+Version: 2.0.8
Summary: Microsoft Azure Command-Line Tools Component Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,10 @@
Release History
===============
+ 2.0.8
+ +++++
+ * minor fixes
+
2.0.7 (2017-08-11)
++++++++++++++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-component-2.0.7/azure_cli_component.egg-info/requires.txt new/azure-cli-component-2.0.8/azure_cli_component.egg-info/requires.txt
--- old/azure-cli-component-2.0.7/azure_cli_component.egg-info/requires.txt 2017-08-11 19:00:20.000000000 +0200
+++ new/azure-cli-component-2.0.8/azure_cli_component.egg-info/requires.txt 2017-10-24 04:27:45.000000000 +0200
@@ -1,3 +1,2 @@
azure-cli-core
pip
-azure-cli-command-modules-nspkg>=2.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-component-2.0.7/setup.py new/azure-cli-component-2.0.8/setup.py
--- old/azure-cli-component-2.0.7/setup.py 2017-08-11 19:00:20.000000000 +0200
+++ new/azure-cli-component-2.0.8/setup.py 2017-10-24 04:27:32.000000000 +0200
@@ -14,7 +14,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "2.0.7"
+VERSION = "2.0.8"
CLASSIFIERS = [
'Development Status :: 5 - Production/Stable',
1
0
Hello community,
here is the log from the commit of package azure-cli-command-modules-nspkg for openSUSE:Factory checked in at 2019-05-22 10:59:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-command-modules-nspkg (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-command-modules-nspkg.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-command-modules-nspkg"
Wed May 22 10:59:17 2019 rev:2 rq:696823 version:2.0.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-command-modules-nspkg/azure-cli-command-modules-nspkg.changes 2017-11-10 14:53:03.877480492 +0100
+++ /work/SRC/openSUSE:Factory/.azure-cli-command-modules-nspkg.new.5148/azure-cli-command-modules-nspkg.changes 2019-05-22 10:59:20.502819929 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 13:25:36 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.0.2
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-command-modules-nspkg-2.0.1.tar.gz
New:
----
azure-cli-command-modules-nspkg-2.0.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-command-modules-nspkg.spec ++++++
--- /var/tmp/diff_new_pack.Ta9wMd/_old 2019-05-22 10:59:21.866818163 +0200
+++ /var/tmp/diff_new_pack.Ta9wMd/_new 2019-05-22 10:59:21.898818122 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-command-modules-nspkg
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,11 +12,12 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
+
Name: azure-cli-command-modules-nspkg
-Version: 2.0.1
+Version: 2.0.2
Release: 0
Summary: Microsoft Azure CLI Command modules Namespace Package
License: MIT
@@ -24,13 +25,12 @@
Url: https://github.com/Azure/azure-cli
Source: https://files.pythonhosted.org/packages/source/a/azure-cli-command-modules-…
Source1: LICENSE.txt
-BuildRequires: python3-devel
+BuildRequires: azure-cli-nspkg >= 3.0.0
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
-BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-Requires: azure-cli-nspkg
-Requires: python3-azure-nspkg
+Requires: azure-cli-nspkg >= 3.0.0
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -53,10 +53,12 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
%files
%defattr(-,root,root,-)
%doc LICENSE.txt README.rst
%{python3_sitelib}/azure/cli/command_modules
%{python3_sitelib}/azure_cli_command_modules_nspkg-*.egg-info
+
%changelog
++++++ azure-cli-command-modules-nspkg-2.0.1.tar.gz -> azure-cli-command-modules-nspkg-2.0.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-command-modules-nspkg-2.0.1/HISTORY.rst new/azure-cli-command-modules-nspkg-2.0.2/HISTORY.rst
--- old/azure-cli-command-modules-nspkg-2.0.1/HISTORY.rst 2017-07-07 18:19:51.000000000 +0200
+++ new/azure-cli-command-modules-nspkg-2.0.2/HISTORY.rst 2018-07-14 01:41:34.000000000 +0200
@@ -2,8 +2,13 @@
Release History
===============
-2.0.1 (2017-07-07)
-++++++++++++++++++
+
+2.0.2
+++++++
+* Minor fixes.
+
+2.0.1
++++++
* minor fixes
2.0.0 (2017-04-28)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-command-modules-nspkg-2.0.1/PKG-INFO new/azure-cli-command-modules-nspkg-2.0.2/PKG-INFO
--- old/azure-cli-command-modules-nspkg-2.0.1/PKG-INFO 2017-07-07 18:19:51.000000000 +0200
+++ new/azure-cli-command-modules-nspkg-2.0.2/PKG-INFO 2018-07-14 01:41:41.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-command-modules-nspkg
-Version: 2.0.1
+Version: 2.0.2
Summary: Microsoft Azure CLI Command Modules Namespace Package
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,8 +20,13 @@
Release History
===============
- 2.0.1 (2017-07-07)
- ++++++++++++++++++
+
+ 2.0.2
+ ++++++
+ * Minor fixes.
+
+ 2.0.1
+ +++++
* minor fixes
2.0.0 (2017-04-28)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-command-modules-nspkg-2.0.1/azure_cli_command_modules_nspkg.egg-info/PKG-INFO new/azure-cli-command-modules-nspkg-2.0.2/azure_cli_command_modules_nspkg.egg-info/PKG-INFO
--- old/azure-cli-command-modules-nspkg-2.0.1/azure_cli_command_modules_nspkg.egg-info/PKG-INFO 2017-07-07 18:19:51.000000000 +0200
+++ new/azure-cli-command-modules-nspkg-2.0.2/azure_cli_command_modules_nspkg.egg-info/PKG-INFO 2018-07-14 01:41:41.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-command-modules-nspkg
-Version: 2.0.1
+Version: 2.0.2
Summary: Microsoft Azure CLI Command Modules Namespace Package
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -20,8 +20,13 @@
Release History
===============
- 2.0.1 (2017-07-07)
- ++++++++++++++++++
+
+ 2.0.2
+ ++++++
+ * Minor fixes.
+
+ 2.0.1
+ +++++
* minor fixes
2.0.0 (2017-04-28)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-command-modules-nspkg-2.0.1/setup.py new/azure-cli-command-modules-nspkg-2.0.2/setup.py
--- old/azure-cli-command-modules-nspkg-2.0.1/setup.py 2017-07-07 18:19:51.000000000 +0200
+++ new/azure-cli-command-modules-nspkg-2.0.2/setup.py 2018-07-14 01:41:34.000000000 +0200
@@ -8,7 +8,7 @@
from codecs import open
from setuptools import setup
-VERSION = "2.0.1"
+VERSION = "2.0.2"
CLASSIFIERS = [
'Development Status :: 5 - Production/Stable',
1
0
Hello community,
here is the log from the commit of package azure-cli-cognitiveservices for openSUSE:Factory checked in at 2019-05-22 10:59:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-cognitiveservices (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-cognitiveservices.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-cognitiveservices"
Wed May 22 10:59:11 2019 rev:5 rq:696822 version:0.2.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-cognitiveservices/azure-cli-cognitiveservices.changes 2018-10-15 10:47:14.599146389 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-cognitiveservices.new.5148/azure-cli-cognitiveservices.changes 2019-05-22 10:59:17.230824167 +0200
@@ -1,0 +2,16 @@
+Tue Apr 16 13:21:31 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.2.4
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+- Update Requires from setup.py
+
+-------------------------------------------------------------------
Old:
----
azure-cli-cognitiveservices-0.2.1.tar.gz
New:
----
azure-cli-cognitiveservices-0.2.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-cognitiveservices.spec ++++++
--- /var/tmp/diff_new_pack.mJsf1I/_old 2019-05-22 10:59:18.618822369 +0200
+++ /var/tmp/diff_new_pack.mJsf1I/_new 2019-05-22 10:59:18.658822317 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-cognitiveservices
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-cognitiveservices
-Version: 0.2.1
+Version: 0.2.4
Release: 0
Summary: Microsoft Azure CLI 'cognitiveservices' Command Module
License: MIT
@@ -27,15 +27,14 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-mgmt-cognitiveservices >= 1.0.0
-Requires: python3-azure-nspkg
+Requires: python3-azure-mgmt-cognitiveservices >= 3.0.0
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -55,6 +54,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-cognitiveservices-0.2.1.tar.gz -> azure-cli-cognitiveservices-0.2.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cognitiveservices-0.2.1/HISTORY.rst new/azure-cli-cognitiveservices-0.2.4/HISTORY.rst
--- old/azure-cli-cognitiveservices-0.2.1/HISTORY.rst 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-cognitiveservices-0.2.4/HISTORY.rst 2018-11-15 19:56:29.000000000 +0100
@@ -3,6 +3,22 @@
Release History
===============
+0.2.4
++++++
+* Minor fixes
+
+0.2.3
++++++
+* Add completer for `--sku`, `--kind`, `--location` arguments
+
+0.2.2
++++++
+* Add new command `az cognitiveservices account list-usage`
+* Add new command `az cognitiveservices account list-kinds`
+* Add new command `az cognitiveservices account list`
+* Deprecate `az cognitiveservices list`
+* --name is now optional for `az cognitiveservices account list-skus`
+
0.2.1
+++++
* Add new parameter --api-properties, which is required for creating some of the services.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cognitiveservices-0.2.1/PKG-INFO new/azure-cli-cognitiveservices-0.2.4/PKG-INFO
--- old/azure-cli-cognitiveservices-0.2.1/PKG-INFO 2018-08-23 01:09:51.000000000 +0200
+++ new/azure-cli-cognitiveservices-0.2.4/PKG-INFO 2018-11-15 19:56:47.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-cognitiveservices
-Version: 0.2.1
+Version: 0.2.4
Summary: Microsoft Azure Command-Line Tools Cognitive Services Command Module
Home-page: https://github.com/azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,22 @@
Release History
===============
+ 0.2.4
+ +++++
+ * Minor fixes
+
+ 0.2.3
+ +++++
+ * Add completer for `--sku`, `--kind`, `--location` arguments
+
+ 0.2.2
+ +++++
+ * Add new command `az cognitiveservices account list-usage`
+ * Add new command `az cognitiveservices account list-kinds`
+ * Add new command `az cognitiveservices account list`
+ * Deprecate `az cognitiveservices list`
+ * --name is now optional for `az cognitiveservices account list-skus`
+
0.2.1
+++++
* Add new parameter --api-properties, which is required for creating some of the services.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cognitiveservices-0.2.1/azure/cli/command_modules/cognitiveservices/__init__.py new/azure-cli-cognitiveservices-0.2.4/azure/cli/command_modules/cognitiveservices/__init__.py
--- old/azure-cli-cognitiveservices-0.2.1/azure/cli/command_modules/cognitiveservices/__init__.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-cognitiveservices-0.2.4/azure/cli/command_modules/cognitiveservices/__init__.py 2018-11-15 19:56:29.000000000 +0100
@@ -7,7 +7,7 @@
import azure.cli.command_modules.cognitiveservices._help # pylint: disable=unused-import
-from azure.cli.command_modules.cognitiveservices._client_factory import cf_cognitive_service_accounts
+from azure.cli.command_modules.cognitiveservices._client_factory import cf_accounts
class CognitiveServicesCommandsLoader(AzCommandsLoader):
@@ -16,7 +16,7 @@
from azure.cli.core.commands import CliCommandType
custom_type = CliCommandType(
operations_tmpl='azure.cli.command_modules.cognitiveservices.custom#{}',
- client_factory=cf_cognitive_service_accounts)
+ client_factory=cf_accounts)
super(CognitiveServicesCommandsLoader, self).__init__(cli_ctx=cli_ctx,
custom_command_type=custom_type,
min_profile='2017-03-10-profile')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cognitiveservices-0.2.1/azure/cli/command_modules/cognitiveservices/_client_factory.py new/azure-cli-cognitiveservices-0.2.4/azure/cli/command_modules/cognitiveservices/_client_factory.py
--- old/azure-cli-cognitiveservices-0.2.1/azure/cli/command_modules/cognitiveservices/_client_factory.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-cognitiveservices-0.2.4/azure/cli/command_modules/cognitiveservices/_client_factory.py 2018-11-15 19:56:29.000000000 +0100
@@ -7,12 +7,12 @@
def get_cognitiveservices_management_client(cli_ctx, *_):
from azure.cli.core.commands.client_factory import get_mgmt_service_client
from azure.mgmt.cognitiveservices import CognitiveServicesManagementClient
- return get_mgmt_service_client(cli_ctx, CognitiveServicesManagementClient, location='notused')
-
-
-def cf_cognitive_service_accounts(cli_ctx, *_):
- return get_cognitiveservices_management_client(cli_ctx).cognitive_services_accounts
+ return get_mgmt_service_client(cli_ctx, CognitiveServicesManagementClient)
def cf_accounts(cli_ctx, *_):
return get_cognitiveservices_management_client(cli_ctx).accounts
+
+
+def cf_resource_skus(cli_ctx, *_):
+ return get_cognitiveservices_management_client(cli_ctx).resource_skus
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cognitiveservices-0.2.1/azure/cli/command_modules/cognitiveservices/_help.py new/azure-cli-cognitiveservices-0.2.4/azure/cli/command_modules/cognitiveservices/_help.py
--- old/azure-cli-cognitiveservices-0.2.1/azure/cli/command_modules/cognitiveservices/_help.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-cognitiveservices-0.2.4/azure/cli/command_modules/cognitiveservices/_help.py 2018-11-15 19:56:29.000000000 +0100
@@ -10,24 +10,37 @@
helps['cognitiveservices'] = """
type: group
short-summary: Manage Azure Cognitive Services accounts.
+ long-summary: This article lists the Azure CLI commands for Azure Cognitive Services account and subscription management only. Refer to the documentation at https://docs.microsoft.com/azure/cognitive-services/ for individual services to learn how to use the APIs and supported SDKs.
"""
helps['cognitiveservices list'] = """
type: command
- short-summary: List available Azure Cognitive Services accounts.
+ short-summary: Manage Azure Cognitive Services accounts.
+ long-summary: This article lists the Azure CLI commands for Azure Cognitive Services account and subscription management only. Refer to the documentation at https://docs.microsoft.com/azure/cognitive-services/ for individual services to learn how to use the APIs and supported SDKs.
examples:
- name: List all the Cognitive Services accounts in a resource group.
text: az cognitiveservices list -g MyResourceGroup
"""
+helps['cognitiveservices account list'] = """
+ type: command
+ short-summary: Manage Azure Cognitive Services accounts.
+ long-summary: This article lists the Azure CLI commands for Azure Cognitive Services account and subscription management only. Refer to the documentation at https://docs.microsoft.com/azure/cognitive-services/ for individual services to learn how to use the APIs and supported SDKs.
+ examples:
+ - name: List all the Cognitive Services accounts in a resource group.
+ text: az cognitiveservices account list -g MyResourceGroup
+"""
+
helps['cognitiveservices account'] = """
type: group
short-summary: Manage Azure Cognitive Services accounts.
+ long-summary: This article lists the Azure CLI commands for Azure Cognitive Services account and subscription management only. Refer to the documentation at https://docs.microsoft.com/azure/cognitive-services/ for individual services to learn how to use the APIs and supported SDKs.
"""
helps['cognitiveservices account delete'] = """
type: command
- short-summary: Delete an Azure Cognitive Services account.
+ short-summary: Manage Azure Cognitive Services accounts.
+ long-summary: This article lists the Azure CLI commands for Azure Cognitive Services account and subscription management only. Refer to the documentation at https://docs.microsoft.com/azure/cognitive-services/ for individual services to learn how to use the APIs and supported SDKs.
examples:
- name: Delete account.
text: az cognitiveservices account delete --name myresource-luis -g cognitive-services-resource-group
@@ -35,7 +48,15 @@
helps['cognitiveservices account create'] = """
type: command
- short-summary: Create an Azure Cognitive Services account.
+ short-summary: Manage Azure Cognitive Services accounts.
+ long-summary: This article lists the Azure CLI commands for Azure Cognitive Services account and subscription management only. Refer to the documentation at https://docs.microsoft.com/azure/cognitive-services/ for individual services to learn how to use the APIs and supported SDKs.
+ parameters:
+ - name: --kind
+ populator-commands:
+ - az cognitiveservices account list-kinds
+ - name: --sku
+ populator-commands:
+ - az cognitiveservices account list-skus
examples:
- name: Create an S0 face API Cognitive Services account in West Europe without confirmation required.
text: az cognitiveservices account create -n myresource -g myResourceGroup --kind Face --sku S0 -l WestEurope --yes
@@ -43,7 +64,8 @@
helps['cognitiveservices account show'] = """
type: command
- short-summary: Get the details of an Azure Cognitive Services account.
+ short-summary: Manage Azure Cognitive Services accounts.
+ long-summary: This article lists the Azure CLI commands for Azure Cognitive Services account and subscription management only. Refer to the documentation at https://docs.microsoft.com/azure/cognitive-services/ for individual services to learn how to use the APIs and supported SDKs.
examples:
- name: Show account information.
text: az cognitiveservices account show --name myresource --resource-group cognitive-services-resource-group
@@ -51,7 +73,12 @@
helps['cognitiveservices account update'] = """
type: command
- short-summary: Update the properties of an Azure Cognitive Services account.
+ short-summary: Manage Azure Cognitive Services accounts.
+ long-summary: This article lists the Azure CLI commands for Azure Cognitive Services account and subscription management only. Refer to the documentation at https://docs.microsoft.com/azure/cognitive-services/ for individual services to learn how to use the APIs and supported SDKs.
+ parameters:
+ - name: --sku
+ populator-commands:
+ - az cognitiveservices account list-skus
examples:
- name: Update sku and tags.
text: az cognitiveservices account update --name myresource -g cognitive-services-resource-group --sku S0 --tags external-app=chatbot-HR azure-web-app-bot=HR-external azure-app-service=HR-external-app-service
@@ -59,21 +86,35 @@
helps['cognitiveservices account list-skus'] = """
type: command
- short-summary: List the SKUs avaiable for an Azure Cognitive Services account.
+ short-summary: Manage Azure Cognitive Services accounts.
+ long-summary: This article lists the Azure CLI commands for Azure Cognitive Services account and subscription management only. Refer to the documentation at https://docs.microsoft.com/azure/cognitive-services/ for individual services to learn how to use the APIs and supported SDKs.
+ parameters:
+ - name: --name -n
+ long-summary: |
+ --kind and --location will be ignored when --name is specified.
+ --resource-group is required when when --name is specified.
+ - name: --resource-group -g
+ long-summary: |
+ --resource-group is used when when --name is specified. In other cases it will be ignored.
+ - name: --kind
+ populator-commands:
+ - az cognitiveservices account list-kinds
examples:
- name: Show SKUs.
- text: az cognitiveservices account list-skus --name myresource -g cognitive-services-resource-group
+ text: az cognitiveservices account list-skus --kind Face --location westus
"""
helps['cognitiveservices account keys'] = """
type: group
- short-summary: Manage the keys of an Azure Cognitive Services account.
+ short-summary: Manage Azure Cognitive Services accounts.
+ long-summary: This article lists the Azure CLI commands for Azure Cognitive Services account and subscription management only. Refer to the documentation at https://docs.microsoft.com/azure/cognitive-services/ for individual services to learn how to use the APIs and supported SDKs.
"""
helps['cognitiveservices account keys regenerate'] = """
type: command
- short-summary: Regenerate the keys of an Azure Cognitive Services account.
+ short-summary: Manage Azure Cognitive Services accounts.
+ long-summary: This article lists the Azure CLI commands for Azure Cognitive Services account and subscription management only. Refer to the documentation at https://docs.microsoft.com/azure/cognitive-services/ for individual services to learn how to use the APIs and supported SDKs.
examples:
- name: Get new keys for resource.
text: az cognitiveservices account keys regenerate --name myresource -g cognitive-services-resource-group --key-name key1
@@ -81,7 +122,8 @@
helps['cognitiveservices account keys list'] = """
type: command
- short-summary: List the keys of an Azure Cognitive Services account.
+ short-summary: Manage Azure Cognitive Services accounts.
+ long-summary: This article lists the Azure CLI commands for Azure Cognitive Services account and subscription management only. Refer to the documentation at https://docs.microsoft.com/azure/cognitive-services/ for individual services to learn how to use the APIs and supported SDKs.
examples:
- name: Get current resource keys.
text: az cognitiveservices account keys list --name myresource -g cognitive-services-resource-group
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cognitiveservices-0.2.1/azure/cli/command_modules/cognitiveservices/_params.py new/azure-cli-cognitiveservices-0.2.4/azure/cli/command_modules/cognitiveservices/_params.py
--- old/azure-cli-cognitiveservices-0.2.1/azure/cli/command_modules/cognitiveservices/_params.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-cognitiveservices-0.2.4/azure/cli/command_modules/cognitiveservices/_params.py 2018-11-15 19:56:29.000000000 +0100
@@ -10,10 +10,14 @@
from azure.cli.core.commands.parameters import (
tags_type,
resource_group_name_type,
- get_resource_name_completion_list)
+ get_resource_name_completion_list,
+ get_location_type)
from azure.cli.core.util import (shell_safe_json_parse, CLIError)
from azure.cli.core.commands.validators import validate_tag
+from azure.cli.core.decorators import Completer
+
+from azure.cli.command_modules.cognitiveservices._client_factory import cf_resource_skus
logger = get_logger(__name__)
name_arg_type = CLIArgumentType(options_list=['--name', '-n'], metavar='NAME')
@@ -69,13 +73,58 @@
)
+def _sku_filter(cmd, namespace):
+ """
+ Get a list of ResourceSku and filter by existing conditions: 'kind', 'location' and 'sku_name'
+ """
+ kind = getattr(namespace, 'kind', None)
+ location = getattr(namespace, 'location', None)
+ sku_name = getattr(namespace, 'sku_name', None)
+
+ def _filter_sku(_sku):
+ if sku_name is not None:
+ if _sku.name != sku_name:
+ return False
+ if kind is not None:
+ if _sku.kind != kind:
+ return False
+ if location is not None:
+ if location.lower() not in [x.lower() for x in _sku.locations]:
+ return False
+ return True
+
+ return [x for x in cf_resource_skus(cmd.cli_ctx).list() if _filter_sku(x)]
+
+
+@Completer
+def sku_name_completer(cmd, prefix, namespace, **kwargs): # pylint: disable=unused-argument
+ names = set([x.name for x in _sku_filter(cmd, namespace)])
+ return sorted(list(names))
+
+
+@Completer
+def kind_completer(cmd, prefix, namespace, **kwargs): # pylint: disable=unused-argument
+ kinds = set([x.kind for x in _sku_filter(cmd, namespace)])
+ return sorted(list(kinds))
+
+
+@Completer
+def location_completer(cmd, prefix, namespace, **kwargs): # pylint: disable=unused-argument
+ names = set([location for x in _sku_filter(cmd, namespace) for location in x.locations])
+ return [x.lower() for x in sorted(list(names))]
+
+
def load_arguments(self, _):
with self.argument_context('cognitiveservices') as c:
c.argument('account_name', arg_type=name_arg_type, help='cognitive service account name',
completer=get_resource_name_completion_list('Microsoft.CognitiveServices/accounts'))
+ c.argument('location', arg_type=get_location_type(self.cli_ctx),
+ completer=location_completer)
c.argument('resource_group_name', arg_type=resource_group_name_type)
- c.argument('sku_name', options_list=['--sku'], help='the Sku of cognitive services account')
- c.argument('kind', help='the API name of cognitive services account')
+ c.argument('sku_name', options_list=['--sku'], help='the Sku of cognitive services account',
+ completer=sku_name_completer)
+ c.argument('kind', help='the API name of cognitive services account',
+ completer=kind_completer)
c.argument('tags', tags_type)
c.argument('key_name', required=True, help='Key name to generate', choices=['key1', 'key2'])
c.argument('api_properties', api_properties_type)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cognitiveservices-0.2.1/azure/cli/command_modules/cognitiveservices/commands.py new/azure-cli-cognitiveservices-0.2.4/azure/cli/command_modules/cognitiveservices/commands.py
--- old/azure-cli-cognitiveservices-0.2.1/azure/cli/command_modules/cognitiveservices/commands.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-cognitiveservices-0.2.4/azure/cli/command_modules/cognitiveservices/commands.py 2018-11-15 19:56:29.000000000 +0100
@@ -4,15 +4,13 @@
# --------------------------------------------------------------------------------------------
from azure.cli.core.commands import CliCommandType
-from azure.cli.command_modules.cognitiveservices._client_factory import (
- cf_cognitive_service_accounts,
- cf_accounts)
+from azure.cli.command_modules.cognitiveservices._client_factory import cf_accounts, cf_resource_skus
def load_command_table(self, _):
mgmt_type = CliCommandType(
- operations_tmpl='azure.mgmt.cognitiveservices.operations.cognitive_services_accounts_operations#CognitiveServicesAccountsOperations.{}', # pylint: disable=line-too-long
- client_factory=cf_cognitive_service_accounts
+ operations_tmpl='azure.mgmt.cognitiveservices.operations.accounts_operations#AccountsOperations.{}',
+ client_factory=cf_accounts
)
with self.command_group('cognitiveservices account', mgmt_type) as g:
@@ -20,11 +18,16 @@
g.command('delete', 'delete')
g.show_command('show', 'get_properties')
g.custom_command('update', 'update')
- g.command('list-skus', 'list_skus')
+ g.custom_command('list', 'list_resources')
+ g.custom_command('list-skus', 'list_skus')
+ g.custom_command('list-usage', 'list_usages')
+ g.custom_command('list-kinds', 'list_kinds', client_factory=cf_resource_skus)
with self.command_group('cognitiveservices account keys', mgmt_type) as g:
g.command('regenerate', 'regenerate_key')
g.command('list', 'list_keys')
+ # deprecating this
with self.command_group('cognitiveservices') as g:
- g.custom_command('list', 'list_resources', client_factory=cf_accounts)
+ g.custom_command('list', 'list_resources',
+ deprecate_info=g.deprecate(redirect='az cognitiveservices account list', hide=True))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cognitiveservices-0.2.1/azure/cli/command_modules/cognitiveservices/custom.py new/azure-cli-cognitiveservices-0.2.4/azure/cli/command_modules/cognitiveservices/custom.py
--- old/azure-cli-cognitiveservices-0.2.1/azure/cli/command_modules/cognitiveservices/custom.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-cognitiveservices-0.2.4/azure/cli/command_modules/cognitiveservices/custom.py 2018-11-15 19:56:29.000000000 +0100
@@ -7,6 +7,7 @@
from knack.util import CLIError
from knack.log import get_logger
+from azure.cli.command_modules.cognitiveservices._client_factory import cf_accounts, cf_resource_skus
from azure.mgmt.cognitiveservices.models import CognitiveServicesAccountCreateParameters, Sku
logger = get_logger(__name__)
@@ -18,6 +19,49 @@
return client.list()
+def list_usages(client, resource_group_name, account_name):
+ """
+ List usages for Azure Cognitive Services account.
+ """
+ return client.get_usages(resource_group_name, account_name).value
+
+
+def list_kinds(client):
+ """
+ List all valid kinds for Azure Cognitive Services account.
+
+ :param client: the ResourceSkusOperations
+ :return: a list
+ """
+ # The client should be ResourceSkusOperations, and list() should return a list of SKUs for all regions.
+ # The sku will have "kind" and we use that to extract full list of kinds.
+ kinds = set([x.kind for x in client.list()])
+ return sorted(list(kinds))
+
+
+def list_skus(cmd, kind=None, location=None, resource_group_name=None, account_name=None):
+ if resource_group_name is not None or account_name is not None:
+ logger.warning(
+ 'list-skus with an existing account has been deprecated and will be removed in a future release.')
+ if resource_group_name is None:
+ # account_name must not be None
+ raise CLIError('--resource-group is required when --name is specified.')
+ # keep the original behavior to avoid breaking changes
+ return cf_accounts(cmd.cli_ctx).list_skus(resource_group_name, account_name)
+
+ # in other cases, use kind and location to filter SKUs
+ def _filter_sku(_sku):
+ if kind is not None:
+ if _sku.kind != kind:
+ return False
+ if location is not None:
+ if location.lower() not in [x.lower() for x in _sku.locations]:
+ return False
+ return True
+
+ return [x for x in cf_resource_skus(cmd.cli_ctx).list() if _filter_sku(x)]
+
+
def create(
client, resource_group_name, account_name, sku_name, kind, location, tags=None, api_properties=None, yes=None):
@@ -42,16 +86,17 @@
option = prompt_y_n(hint)
if not option:
raise CLIError('Operation cancelled.')
- sku = Sku(sku_name)
+ sku = Sku(name=sku_name)
if api_properties is None:
properties = {}
else:
properties = {"apiProperties": api_properties}
- params = CognitiveServicesAccountCreateParameters(sku, kind, location, properties, tags)
+ params = CognitiveServicesAccountCreateParameters(sku=sku, kind=kind, location=location,
+ properties=properties, tags=tags)
return client.create(resource_group_name, account_name, params)
def update(client, resource_group_name, account_name, sku_name=None, tags=None):
- sku = Sku(sku_name)
+ sku = Sku(name=sku_name)
return client.update(resource_group_name, account_name, sku, tags)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cognitiveservices-0.2.1/azure_cli_cognitiveservices.egg-info/PKG-INFO new/azure-cli-cognitiveservices-0.2.4/azure_cli_cognitiveservices.egg-info/PKG-INFO
--- old/azure-cli-cognitiveservices-0.2.1/azure_cli_cognitiveservices.egg-info/PKG-INFO 2018-08-23 01:09:51.000000000 +0200
+++ new/azure-cli-cognitiveservices-0.2.4/azure_cli_cognitiveservices.egg-info/PKG-INFO 2018-11-15 19:56:47.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-cognitiveservices
-Version: 0.2.1
+Version: 0.2.4
Summary: Microsoft Azure Command-Line Tools Cognitive Services Command Module
Home-page: https://github.com/azure/azure-cli
Author: Microsoft Corporation
@@ -20,6 +20,22 @@
Release History
===============
+ 0.2.4
+ +++++
+ * Minor fixes
+
+ 0.2.3
+ +++++
+ * Add completer for `--sku`, `--kind`, `--location` arguments
+
+ 0.2.2
+ +++++
+ * Add new command `az cognitiveservices account list-usage`
+ * Add new command `az cognitiveservices account list-kinds`
+ * Add new command `az cognitiveservices account list`
+ * Deprecate `az cognitiveservices list`
+ * --name is now optional for `az cognitiveservices account list-skus`
+
0.2.1
+++++
* Add new parameter --api-properties, which is required for creating some of the services.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cognitiveservices-0.2.1/azure_cli_cognitiveservices.egg-info/requires.txt new/azure-cli-cognitiveservices-0.2.4/azure_cli_cognitiveservices.egg-info/requires.txt
--- old/azure-cli-cognitiveservices-0.2.1/azure_cli_cognitiveservices.egg-info/requires.txt 2018-08-23 01:09:51.000000000 +0200
+++ new/azure-cli-cognitiveservices-0.2.4/azure_cli_cognitiveservices.egg-info/requires.txt 2018-11-15 19:56:47.000000000 +0100
@@ -1,2 +1,2 @@
-azure-mgmt-cognitiveservices==1.0.0
+azure-mgmt-cognitiveservices==3.0.0
azure-cli-core
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cognitiveservices-0.2.1/setup.py new/azure-cli-cognitiveservices-0.2.4/setup.py
--- old/azure-cli-cognitiveservices-0.2.1/setup.py 2018-08-23 01:07:57.000000000 +0200
+++ new/azure-cli-cognitiveservices-0.2.4/setup.py 2018-11-15 19:56:29.000000000 +0100
@@ -13,7 +13,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "0.2.1"
+VERSION = "0.2.4"
# The full list of classifiers is available at
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
CLASSIFIERS = [
@@ -30,7 +30,7 @@
]
DEPENDENCIES = [
- 'azure-mgmt-cognitiveservices==1.0.0',
+ 'azure-mgmt-cognitiveservices==3.0.0',
'azure-cli-core',
]
1
0
Hello community,
here is the log from the commit of package azure-cli-cloud for openSUSE:Factory checked in at 2019-05-22 10:59:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-cloud (Old)
and /work/SRC/openSUSE:Factory/.azure-cli-cloud.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-cli-cloud"
Wed May 22 10:59:07 2019 rev:5 rq:696821 version:2.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-cloud/azure-cli-cloud.changes 2018-10-15 10:48:31.259064525 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-cloud.new.5148/azure-cli-cloud.changes 2019-05-22 10:59:10.938832316 +0200
@@ -1,0 +2,15 @@
+Wed Apr 17 07:12:18 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.1.1
+ + For detailed information about changes see the
+ HISTORY.txt file provided with this package
+- Bump minimum version for Python Azure SDK namespace
+ packages to 3.0.0 in BuildRequires and Requires
+- Remove python3-devel package from BuildRequires
+- Remove unzip package from BuildRequires
+- Run fdupes to hardlink duplicate files
+ + Add fdupes to BuildRequires
+ + Add %fdupes invocation to %install
+
+-------------------------------------------------------------------
Old:
----
azure-cli-cloud-2.1.0.tar.gz
New:
----
azure-cli-cloud-2.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-cli-cloud.spec ++++++
--- /var/tmp/diff_new_pack.N3HQhE/_old 2019-05-22 10:59:12.266830596 +0200
+++ /var/tmp/diff_new_pack.N3HQhE/_new 2019-05-22 10:59:12.302830549 +0200
@@ -1,7 +1,7 @@
#
# spec file for package azure-cli-cloud
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: azure-cli-cloud
-Version: 2.1.0
+Version: 2.1.1
Release: 0
Summary: Microsoft Azure CLI 'cloud' Command Module
License: MIT
@@ -27,14 +27,13 @@
Source1: LICENSE.txt
BuildRequires: azure-cli-command-modules-nspkg
BuildRequires: azure-cli-nspkg
-BuildRequires: python3-azure-nspkg
-BuildRequires: python3-devel
+BuildRequires: fdupes
+BuildRequires: python3-azure-nspkg >= 3.0.0
BuildRequires: python3-setuptools
-BuildRequires: unzip
Requires: azure-cli-command-modules-nspkg
Requires: azure-cli-core
Requires: azure-cli-nspkg
-Requires: python3-azure-nspkg
+Requires: python3-azure-nspkg >= 3.0.0
Conflicts: azure-cli < 2.0.0
BuildArch: noarch
@@ -54,6 +53,7 @@
%install
python3 setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitelib}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__init__.*
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/command_modules/__pycache__
rm -rf %{buildroot}%{python3_sitelib}/azure/cli/__init__.*
++++++ azure-cli-cloud-2.1.0.tar.gz -> azure-cli-cloud-2.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cloud-2.1.0/HISTORY.rst new/azure-cli-cloud-2.1.1/HISTORY.rst
--- old/azure-cli-cloud-2.1.0/HISTORY.rst 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-cloud-2.1.1/HISTORY.rst 2019-03-22 18:35:22.000000000 +0100
@@ -2,6 +2,9 @@
Release History
===============
+2.1.1
++++++
+* `az cloud set`: support cloud name case insensitive
2.1.0
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cloud-2.1.0/PKG-INFO new/azure-cli-cloud-2.1.1/PKG-INFO
--- old/azure-cli-cloud-2.1.0/PKG-INFO 2018-07-14 01:41:54.000000000 +0200
+++ new/azure-cli-cloud-2.1.1/PKG-INFO 2019-03-22 18:35:41.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-cloud
-Version: 2.1.0
+Version: 2.1.1
Summary: Microsoft Azure Command-Line Tools Cloud Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -16,6 +16,9 @@
Release History
===============
+ 2.1.1
+ +++++
+ * `az cloud set`: support cloud name case insensitive
2.1.0
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cloud-2.1.0/azure/cli/command_modules/cloud/custom.py new/azure-cli-cloud-2.1.1/azure/cli/command_modules/cloud/custom.py
--- old/azure-cli-cloud-2.1.0/azure/cli/command_modules/cloud/custom.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-cloud-2.1.1/azure/cli/command_modules/cloud/custom.py 2019-03-22 18:35:22.000000000 +0100
@@ -11,6 +11,7 @@
get_cloud,
remove_cloud,
add_cloud,
+ _get_cloud_name,
switch_active_cloud,
update_cloud,
get_active_cloud_name,
@@ -134,6 +135,7 @@
def set_cloud(cmd, cloud_name, profile=None):
try:
+ cloud_name = _get_cloud_name(cmd.cli_ctx, cloud_name)
switch_active_cloud(cmd.cli_ctx, cloud_name)
if profile:
modify_cloud(cmd, cloud_name=cloud_name, profile=profile)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cloud-2.1.0/azure_cli_cloud.egg-info/PKG-INFO new/azure-cli-cloud-2.1.1/azure_cli_cloud.egg-info/PKG-INFO
--- old/azure-cli-cloud-2.1.0/azure_cli_cloud.egg-info/PKG-INFO 2018-07-14 01:41:54.000000000 +0200
+++ new/azure-cli-cloud-2.1.1/azure_cli_cloud.egg-info/PKG-INFO 2019-03-22 18:35:41.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: azure-cli-cloud
-Version: 2.1.0
+Version: 2.1.1
Summary: Microsoft Azure Command-Line Tools Cloud Command Module
Home-page: https://github.com/Azure/azure-cli
Author: Microsoft Corporation
@@ -16,6 +16,9 @@
Release History
===============
+ 2.1.1
+ +++++
+ * `az cloud set`: support cloud name case insensitive
2.1.0
+++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-cli-cloud-2.1.0/setup.py new/azure-cli-cloud-2.1.1/setup.py
--- old/azure-cli-cloud-2.1.0/setup.py 2018-07-14 01:41:34.000000000 +0200
+++ new/azure-cli-cloud-2.1.1/setup.py 2019-03-22 18:35:22.000000000 +0100
@@ -14,7 +14,7 @@
logger.warn("Wheel is not available, disabling bdist_wheel hook")
cmdclass = {}
-VERSION = "2.1.0"
+VERSION = "2.1.1"
CLASSIFIERS = [
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
1
0