openSUSE Commits
Threads by month
- ----- 2024 -----
- 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 2018
- 1 participants
- 1987 discussions
Hello community,
here is the log from the commit of package vocal for openSUSE:Factory checked in at 2018-05-01 23:29:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vocal (Old)
and /work/SRC/openSUSE:Factory/.vocal.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vocal"
Tue May 1 23:29:21 2018 rev:5 rq:602626 version:2.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/vocal/vocal.changes 2018-02-06 16:49:13.319877896 +0100
+++ /work/SRC/openSUSE:Factory/.vocal.new/vocal.changes 2018-05-01 23:29:24.287922356 +0200
@@ -1,0 +2,17 @@
+Mon Apr 30 19:25:01 UTC 2018 - badshah400(a)gmail.com
+
+- Update to version 2.2.0:
+ * Fixed the infamous "freeze on launch" bug which prevented some
+ users from accessing their library.
+ * Added a New Episode view to see all the unplayed episodes in
+ your library at once.
+ * Fixed an annoyance where Vocal would sometimes re-download an
+ episode that had already been downloaded.
+ * Performance and stability improvements with checking for new
+ episodes.
+ * Improved performance of the iTunes podcast directory
+ (specifically related to the loading of hi res images).
+ * Improved logging and debugging support.
+ * Many other small performance and stability enhancements.
+
+-------------------------------------------------------------------
Old:
----
2.1.6.tar.gz
New:
----
2.2.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ vocal.spec ++++++
--- /var/tmp/diff_new_pack.EQfTrk/_old 2018-05-01 23:29:24.871901121 +0200
+++ /var/tmp/diff_new_pack.EQfTrk/_new 2018-05-01 23:29:24.871901121 +0200
@@ -17,10 +17,10 @@
Name: vocal
-Version: 2.1.6
+Version: 2.2.0
Release: 0
Summary: A podcast client for the desktop
-License: GPL-3.0
+License: GPL-3.0-only
Group: Productivity/Multimedia/Other
Url: https://launchpad.net/vocal
Source: https://github.com/needle-and-thread/vocal/archive/%{version}.tar.gz
++++++ 2.1.6.tar.gz -> 2.2.0.tar.gz ++++++
++++ 6950 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-wptools for openSUSE:Factory checked in at 2018-05-01 23:28:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-wptools (Old)
and /work/SRC/openSUSE:Factory/.python-wptools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-wptools"
Tue May 1 23:28:39 2018 rev:6 rq:602625 version:0.4.12
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-wptools/python-wptools.changes 2018-01-28 20:33:35.110436159 +0100
+++ /work/SRC/openSUSE:Factory/.python-wptools.new/python-wptools.changes 2018-05-01 23:28:41.193489374 +0200
@@ -1,0 +2,9 @@
+Mon Apr 30 19:10:36 UTC 2018 - badshah400(a)gmail.com
+
+- Update to version 0.4.12 [list of changes cumulated from version
+ 0.4.9]:
+ * Respect silence (gh#siznax/wptools#118).
+ * Added more general infobox parsing alternative.
+ * Improved infobox parsing.
+
+-------------------------------------------------------------------
Old:
----
wptools-0.4.8.tar.gz
New:
----
wptools-0.4.12.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-wptools.spec ++++++
--- /var/tmp/diff_new_pack.fwUcM2/_old 2018-05-01 23:28:45.109346986 +0200
+++ /var/tmp/diff_new_pack.fwUcM2/_new 2018-05-01 23:28:45.113346840 +0200
@@ -19,7 +19,7 @@
%define pyname wptools
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-wptools
-Version: 0.4.8
+Version: 0.4.12
Release: 0
Summary: Wikipedia tools (for Humans)
License: MIT
++++++ python-wptools-avoid-reading-readme.patch ++++++
--- /var/tmp/diff_new_pack.fwUcM2/_old 2018-05-01 23:28:45.141345822 +0200
+++ /var/tmp/diff_new_pack.fwUcM2/_new 2018-05-01 23:28:45.145345677 +0200
@@ -1,7 +1,7 @@
-Index: wptools-0.4.6/setup.py
+Index: wptools-0.4.12/setup.py
===================================================================
---- wptools-0.4.6.orig/setup.py
-+++ wptools-0.4.6/setup.py
+--- wptools-0.4.12.orig/setup.py
++++ wptools-0.4.12/setup.py
@@ -2,8 +2,6 @@
from setuptools import setup, find_packages
@@ -13,7 +13,7 @@
@@ -12,7 +10,16 @@ setup(
name='wptools',
- version='0.4.8',
+ version='0.4.12',
description='Wikipedia tools (for Humans)',
- long_description=readme + '\n\n' + history,
+ long_description=
++++++ wptools-0.4.8.tar.gz -> wptools-0.4.12.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wptools-0.4.8/HISTORY.rst new/wptools-0.4.12/HISTORY.rst
--- old/wptools-0.4.8/HISTORY.rst 2018-01-19 22:27:38.000000000 +0100
+++ new/wptools-0.4.12/HISTORY.rst 2018-04-30 00:33:58.000000000 +0200
@@ -3,9 +3,11 @@
Release History
---------------
-0.4.8 (2018-01-19)
-++++++++++++++++++
+0.4.12 (2018-04-29)
++++++++++++++++++++
+* Always respect silent flag (#118)
+* Improved infobox parsing (#91, #109)
* Added image (license, assessment) metadata (#104, #105)
* Fixed Wikidata pageid, image bugs (#101, #102)
* Added support for category continuations, subcategories (#99)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wptools-0.4.8/PKG-INFO new/wptools-0.4.12/PKG-INFO
--- old/wptools-0.4.8/PKG-INFO 2018-01-19 22:32:57.000000000 +0100
+++ new/wptools-0.4.12/PKG-INFO 2018-04-30 00:38:59.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: wptools
-Version: 0.4.8
+Version: 0.4.12
Summary: Wikipedia tools (for Humans)
Home-page: https://github.com/siznax/wptools/
Author: Steve @siznax
@@ -51,42 +51,161 @@
>>> import wptools
+ Get a page object:
+
.. code-block:: python
>>> page = wptools.page('Gandhi')
+ Get `API:Query`_ data:
+
+ .. _`API:Query`: https://www.mediawiki.org/wiki/API:Query
+
+ .. code-block:: python
+
+ >>> page.get_query()
+ en.wikipedia.org (query) Gandhi
+ en.wikipedia.org (imageinfo) File:Portrait Gandhi.jpg
+ Mahatma Gandhi (en) data
+ {
+ aliases: <list(10)> M K Gandhi, Mohandas Gandhi, Bapu, Gandhi, M...
+ assessments: <dict(10)> Pakistan, Alternative Views, South Afric...
+ description: <str(67)> pre-eminent leader of Indian nationalism ...
+ extext: <str(3077)> Mahātmā **Mohandas Karamchand Gandhi** ( ; H...
+ extract: <str(3372)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b...
+ image: <list(2)> {u'size': 2951123, 'kind': 'query-pageimage', u...
+ label: Mahatma Gandhi
+ length: 262,790
+ links: <list(500)> 10 Janpath, 14th Dalai Lama, 1915 Singapore M...
+ modified: <dict(1)> page
+ pageid: 19379
+ random: Salt
+ redirected: <list(1)> {u'to': u'Mahatma Gandhi', u'from': u'Gandhi'}
+ redirects: <list(53)> {u'ns': 0, u'pageid': 55342, u'title': u'M...
+ requests: <list(2)> query, imageinfo
+ title: Mahatma Gandhi
+ url: https://en.wikipedia.org/wiki/Mahatma_Gandhi
+ url_raw: https://en.wikipedia.org/wiki/Mahatma_Gandhi?action=raw
+ watchers: 1,811
+ wikibase: Q1001
+ wikidata_url: https://www.wikidata.org/wiki/Q1001
+ }
+
+
+ Get `API:Parse`_ data:
+
+ .. _`API:Parse`: https://www.mediawiki.org/wiki/API:Parse
+
+ .. code-block:: python
+
+ >>> page.get_parse()
+ en.wikipedia.org (parse) Gandhi
+ en.wikipedia.org (imageinfo) File:MKGandhi.jpg
+ Mahatma Gandhi (en) data
+ {
+ image: <list(1)> {u'size': 2951123, 'kind': 'parse-image', u'des...
+ infobox: <dict(25)> known_for, other_names, image, signature, bi...
+ iwlinks: <list(10)> https://biblio.wiki/wiki/Mohandas_K._Gandhi,...
+ pageid: 19379
+ parsetree: <str(331808)> <root><template><title>Redirect</title>...
+ requests: <list(2)> parse, imageinfo
+ title: Mahatma Gandhi
+ wikibase: Q1001
+ wikidata_url: https://www.wikidata.org/wiki/Q1001
+ wikitext: <str(261349)> {{Redirect|Gandhi}}{{pp-move-indef}}{{pp...
+ }
+
+
+ Get Wikidata_:
+
+ .. _Wikidata: https://www.wikidata.org/w/api.php
+
+ .. code-block:: python
+
+ >>> page = wptools.page(wikibase='Q1001')
+ >>> page.get_wikidata()
+ www.wikidata.org (wikidata) Q1001
+ www.wikidata.org (labels) Q1280678|P535|P434|Q1860|P3762|Q668|P12...
+ www.wikidata.org (labels) P119|Q1930187|P691|P18|P19|P1066|P509|P...
+ www.wikidata.org (labels) Q6512732|Q1568|P972|Q84|P1430|P31|Q2140...
+ www.wikidata.org (labels) P1576|Q4964182|P1368|P140|Q22336956|P12...
+ en.wikipedia.org (imageinfo) File:Portrait Gandhi.jpg
+ Mahatma Gandhi (en) data
+ {
+ aliases: <list(10)> M K Gandhi, Mohandas Gandhi, Bapu, Gandhi, M...
+ claims: <dict(113)> P646, P535, P906, P434, P648, P3762, P1711, ...
+ description: <str(67)> pre-eminent leader of Indian nationalism ...
+ image: <list(1)> {u'size': 2951123, 'kind': 'wikidata-image', u'...
+ label: Mahatma Gandhi
+ labels: <dict(171)> Q1280678, P535, Q131149, P434, Q1860, P3762,...
+ modified: <dict(1)> wikidata
+ requests: <list(6)> wikidata, labels, labels, labels, labels, im...
+ title: Mahatma_Gandhi
+ what: human
+ wikibase: Q1001
+ wikidata: <dict(112)> Geni.com profile ID (P2600), National Libr...
+ wikidata_pageid: 1330
+ wikidata_url: https://www.wikidata.org/wiki/Q1001
+ }
+
+
+ Get RESTBase_ data:
+
+ .. _RESTBase: https://www.mediawiki.org/wiki/RESTBase
+
+ .. code-block:: python
+
+ >>> page.get_restbase('/page/summary/')
+ en.wikipedia.org (restbase) /page/summary/Gandhi
+ Mahatma Gandhi (en) data
+ {
+ description: <str(67)> pre-eminent leader of Indian nationalism ...
+ exhtml: <str(1168)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b>...
+ exrest: <str(931)> Mahātmā Mohandas Karamchand Gandhi (; Hindust...
+ image: <list(2)> {'kind': 'restbase-original', u'width': 2024, '...
+ pageid: 19379
+ requests: <list(1)> restbase
+ title: Mahatma_Gandhi
+ url: https://en.wikipedia.org/wiki/Gandhi
+ url_raw: https://en.wikipedia.org/wiki/Gandhi?action=raw
+ }
+
+
+ Get all the things (at once):
+
.. code-block:: python
>>> page.get()
en.wikipedia.org (query) Gandhi
en.wikipedia.org (parse) 19379
www.wikidata.org (wikidata) Q1001
- www.wikidata.org (labels) Q1280678|P535|Q18338317|P434|Q1860|P376...
- www.wikidata.org (labels) P18|P19|P1066|P509|P345|Q16382|P1006|P3...
- www.wikidata.org (labels) Q2140674|Q1282294|Q21200566|P409|Q26490...
- www.wikidata.org (labels) P3417|P4431|P2949|P69|Q129286|Q9441|P42...
+ www.wikidata.org (labels) Q1280678|P535|P434|Q1860|P3762|Q668|P12...
+ www.wikidata.org (labels) P119|Q1930187|P691|P18|P19|P1066|P509|P...
+ www.wikidata.org (labels) Q6512732|Q1568|P972|Q84|P1430|P31|Q2140...
+ www.wikidata.org (labels) P1576|Q4964182|P1368|P140|Q22336956|P12...
en.wikipedia.org (restbase) /page/summary/Mahatma_Gandhi
- en.wikipedia.org (imageinfo) File:Portrait Gandhi.jpg|File:MKGandhi.jpg
+ en.wikipedia.org (imageinfo) File:MKGandhi.jpg|File:Portrait Gandhi.jpg
Mahatma Gandhi (en) data
{
aliases: <list(10)> M K Gandhi, Mohandas Gandhi, Bapu, Gandhi, M...
- claims: <dict(106)> P646, P535, P906, P434, P648, P3762, P1273, ...
+ assessments: <dict(10)> Pakistan, Alternative Views, South Afric...
+ claims: <dict(113)> P646, P535, P906, P434, P648, P3762, P1711, ...
description: <str(67)> pre-eminent leader of Indian nationalism ...
- exhtml: <str(1144)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b>...
- exrest: <str(907)> Mahātmā Mohandas Karamchand Gandhi (; Hindust...
- extext: <str(2999)> Mahātmā **Mohandas Karamchand Gandhi** ( ; H...
- extract: <str(3292)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b...
- image: <list(6)> {'kind': 'query-pageimage', u'descriptionshortu...
+ exhtml: <str(1168)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b>...
+ exrest: <str(931)> Mahātmā Mohandas Karamchand Gandhi (; Hindust...
+ extext: <str(3077)> Mahātmā **Mohandas Karamchand Gandhi** ( ; H...
+ extract: <str(3372)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b...
+ image: <list(6)> {u'size': 2951123, 'kind': 'query-pageimage', u...
infobox: <dict(25)> known_for, other_names, image, signature, bi...
iwlinks: <list(10)> https://biblio.wiki/wiki/Mohandas_K._Gandhi,...
label: Mahatma Gandhi
- labels: <dict(163)> Q1280678, P535, Q18338317, Q131149, P434, Q1...
- length: 262,058
+ labels: <dict(171)> Q1280678, P535, Q131149, P434, Q1860, P3762,...
+ length: 262,790
links: <list(500)> 10 Janpath, 14th Dalai Lama, 1915 Singapore M...
modified: <dict(2)> wikidata, page
pageid: 19379
- parsetree: <str(330951)> <root><template><title>Redirect</title>...
+ parsetree: <str(331808)> <root><template><title>Redirect</title>...
random: Salt
redirected: <list(1)> {u'to': u'Mahatma Gandhi', u'from': u'Gandhi'}
redirects: <list(53)> {u'ns': 0, u'pageid': 55342, u'title': u'M...
@@ -94,15 +213,18 @@
title: Mahatma_Gandhi
url: https://en.wikipedia.org/wiki/Mahatma_Gandhi
url_raw: https://en.wikipedia.org/wiki/Mahatma_Gandhi?action=raw
- watchers: 1,770
+ watchers: 1,811
what: human
wikibase: Q1001
- wikidata: <dict(105)> Geni.com profile ID (P2600), National Libr...
+ wikidata: <dict(112)> Geni.com profile ID (P2600), National Libr...
+ wikidata_pageid: 1330
wikidata_url: https://www.wikidata.org/wiki/Q1001
- wikitext: <str(260607)> {{Redirect|Gandhi}}{{pp-move-indef}}{{pp...
+ wikitext: <str(261349)> {{Redirect|Gandhi}}{{pp-move-indef}}{{pp...
}
+ Get more (expensive) data:
+
.. code-block:: python
>>> page.get_more()
@@ -110,10 +232,44 @@
Mahatma Gandhi (en) data
{
categories: <list(68)> Category:1869 births, Category:1948 death...
- contributors: 2,608
- files: <list(52)> File:Aum Om red.svg, File:Commons-logo.svg, Fi...
- languages: <list(167)> {u'lang': u'af', u'title': u'Mahatma Gand...
- views: 24,565
+ contributors: 2,606
+ files: <list(53)> File:Aum Om red.svg, File:Commons-logo.svg, Fi...
+ languages: <list(168)> {u'lang': u'af', u'title': u'Mahatma Gand...
+ pageid: 19379
+ redirected: <list(1)> {u'to': u'Mahatma Gandhi', u'from': u'Gandhi'}
+ requests: <list(1)> querymore
+ title: Mahatma Gandhi
+ views: 19,242
+ }
+
+
+ Get data in `another language`_:
+
+ .. _`another language`: https://github.com/siznax/wptools/wiki/Language-Codes
+
+ .. code-block:: python
+
+ >>> page = wptools.page(lang='zh')
+ zh.wikipedia.org (random) 🍰
+ 哈莉特·塔布曼 (zh) data
+ {
+ pageid: 211070
+ title: 哈莉特·塔布曼
+ }
+
+
+ Get data from `another wiki`_:
+
+ .. _`another wiki`: https://meta.wikimedia.org/wiki/List_of_Wikipedias
+
+ .. code-block:: python
+
+ >>> page = wptools.page(wiki='en.wikiquote.org')
+ en.wikiquote.org (random) 🍪
+ Malala_Yousafzai (en)
+ {
+ pageid: 146817
+ title: Malala_Yousafzai
}
@@ -139,9 +295,11 @@
Release History
---------------
- 0.4.8 (2018-01-19)
- ++++++++++++++++++
+ 0.4.12 (2018-04-29)
+ +++++++++++++++++++
+ * Always respect silent flag (#118)
+ * Improved infobox parsing (#91, #109)
* Added image (license, assessment) metadata (#104, #105)
* Fixed Wikidata pageid, image bugs (#101, #102)
* Added support for category continuations, subcategories (#99)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wptools-0.4.8/README.rst new/wptools-0.4.12/README.rst
--- old/wptools-0.4.8/README.rst 2017-12-13 23:35:18.000000000 +0100
+++ new/wptools-0.4.12/README.rst 2018-02-07 00:55:30.000000000 +0100
@@ -42,42 +42,161 @@
>>> import wptools
+Get a page object:
+
.. code-block:: python
>>> page = wptools.page('Gandhi')
+Get `API:Query`_ data:
+
+.. _`API:Query`: https://www.mediawiki.org/wiki/API:Query
+
+.. code-block:: python
+
+ >>> page.get_query()
+ en.wikipedia.org (query) Gandhi
+ en.wikipedia.org (imageinfo) File:Portrait Gandhi.jpg
+ Mahatma Gandhi (en) data
+ {
+ aliases: <list(10)> M K Gandhi, Mohandas Gandhi, Bapu, Gandhi, M...
+ assessments: <dict(10)> Pakistan, Alternative Views, South Afric...
+ description: <str(67)> pre-eminent leader of Indian nationalism ...
+ extext: <str(3077)> Mahātmā **Mohandas Karamchand Gandhi** ( ; H...
+ extract: <str(3372)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b...
+ image: <list(2)> {u'size': 2951123, 'kind': 'query-pageimage', u...
+ label: Mahatma Gandhi
+ length: 262,790
+ links: <list(500)> 10 Janpath, 14th Dalai Lama, 1915 Singapore M...
+ modified: <dict(1)> page
+ pageid: 19379
+ random: Salt
+ redirected: <list(1)> {u'to': u'Mahatma Gandhi', u'from': u'Gandhi'}
+ redirects: <list(53)> {u'ns': 0, u'pageid': 55342, u'title': u'M...
+ requests: <list(2)> query, imageinfo
+ title: Mahatma Gandhi
+ url: https://en.wikipedia.org/wiki/Mahatma_Gandhi
+ url_raw: https://en.wikipedia.org/wiki/Mahatma_Gandhi?action=raw
+ watchers: 1,811
+ wikibase: Q1001
+ wikidata_url: https://www.wikidata.org/wiki/Q1001
+ }
+
+
+Get `API:Parse`_ data:
+
+.. _`API:Parse`: https://www.mediawiki.org/wiki/API:Parse
+
+.. code-block:: python
+
+ >>> page.get_parse()
+ en.wikipedia.org (parse) Gandhi
+ en.wikipedia.org (imageinfo) File:MKGandhi.jpg
+ Mahatma Gandhi (en) data
+ {
+ image: <list(1)> {u'size': 2951123, 'kind': 'parse-image', u'des...
+ infobox: <dict(25)> known_for, other_names, image, signature, bi...
+ iwlinks: <list(10)> https://biblio.wiki/wiki/Mohandas_K._Gandhi,...
+ pageid: 19379
+ parsetree: <str(331808)> <root><template><title>Redirect</title>...
+ requests: <list(2)> parse, imageinfo
+ title: Mahatma Gandhi
+ wikibase: Q1001
+ wikidata_url: https://www.wikidata.org/wiki/Q1001
+ wikitext: <str(261349)> {{Redirect|Gandhi}}{{pp-move-indef}}{{pp...
+ }
+
+
+Get Wikidata_:
+
+.. _Wikidata: https://www.wikidata.org/w/api.php
+
+.. code-block:: python
+
+ >>> page = wptools.page(wikibase='Q1001')
+ >>> page.get_wikidata()
+ www.wikidata.org (wikidata) Q1001
+ www.wikidata.org (labels) Q1280678|P535|P434|Q1860|P3762|Q668|P12...
+ www.wikidata.org (labels) P119|Q1930187|P691|P18|P19|P1066|P509|P...
+ www.wikidata.org (labels) Q6512732|Q1568|P972|Q84|P1430|P31|Q2140...
+ www.wikidata.org (labels) P1576|Q4964182|P1368|P140|Q22336956|P12...
+ en.wikipedia.org (imageinfo) File:Portrait Gandhi.jpg
+ Mahatma Gandhi (en) data
+ {
+ aliases: <list(10)> M K Gandhi, Mohandas Gandhi, Bapu, Gandhi, M...
+ claims: <dict(113)> P646, P535, P906, P434, P648, P3762, P1711, ...
+ description: <str(67)> pre-eminent leader of Indian nationalism ...
+ image: <list(1)> {u'size': 2951123, 'kind': 'wikidata-image', u'...
+ label: Mahatma Gandhi
+ labels: <dict(171)> Q1280678, P535, Q131149, P434, Q1860, P3762,...
+ modified: <dict(1)> wikidata
+ requests: <list(6)> wikidata, labels, labels, labels, labels, im...
+ title: Mahatma_Gandhi
+ what: human
+ wikibase: Q1001
+ wikidata: <dict(112)> Geni.com profile ID (P2600), National Libr...
+ wikidata_pageid: 1330
+ wikidata_url: https://www.wikidata.org/wiki/Q1001
+ }
+
+
+Get RESTBase_ data:
+
+.. _RESTBase: https://www.mediawiki.org/wiki/RESTBase
+
+.. code-block:: python
+
+ >>> page.get_restbase('/page/summary/')
+ en.wikipedia.org (restbase) /page/summary/Gandhi
+ Mahatma Gandhi (en) data
+ {
+ description: <str(67)> pre-eminent leader of Indian nationalism ...
+ exhtml: <str(1168)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b>...
+ exrest: <str(931)> Mahātmā Mohandas Karamchand Gandhi (; Hindust...
+ image: <list(2)> {'kind': 'restbase-original', u'width': 2024, '...
+ pageid: 19379
+ requests: <list(1)> restbase
+ title: Mahatma_Gandhi
+ url: https://en.wikipedia.org/wiki/Gandhi
+ url_raw: https://en.wikipedia.org/wiki/Gandhi?action=raw
+ }
+
+
+Get all the things (at once):
+
.. code-block:: python
>>> page.get()
en.wikipedia.org (query) Gandhi
en.wikipedia.org (parse) 19379
www.wikidata.org (wikidata) Q1001
- www.wikidata.org (labels) Q1280678|P535|Q18338317|P434|Q1860|P376...
- www.wikidata.org (labels) P18|P19|P1066|P509|P345|Q16382|P1006|P3...
- www.wikidata.org (labels) Q2140674|Q1282294|Q21200566|P409|Q26490...
- www.wikidata.org (labels) P3417|P4431|P2949|P69|Q129286|Q9441|P42...
+ www.wikidata.org (labels) Q1280678|P535|P434|Q1860|P3762|Q668|P12...
+ www.wikidata.org (labels) P119|Q1930187|P691|P18|P19|P1066|P509|P...
+ www.wikidata.org (labels) Q6512732|Q1568|P972|Q84|P1430|P31|Q2140...
+ www.wikidata.org (labels) P1576|Q4964182|P1368|P140|Q22336956|P12...
en.wikipedia.org (restbase) /page/summary/Mahatma_Gandhi
- en.wikipedia.org (imageinfo) File:Portrait Gandhi.jpg|File:MKGandhi.jpg
+ en.wikipedia.org (imageinfo) File:MKGandhi.jpg|File:Portrait Gandhi.jpg
Mahatma Gandhi (en) data
{
aliases: <list(10)> M K Gandhi, Mohandas Gandhi, Bapu, Gandhi, M...
- claims: <dict(106)> P646, P535, P906, P434, P648, P3762, P1273, ...
+ assessments: <dict(10)> Pakistan, Alternative Views, South Afric...
+ claims: <dict(113)> P646, P535, P906, P434, P648, P3762, P1711, ...
description: <str(67)> pre-eminent leader of Indian nationalism ...
- exhtml: <str(1144)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b>...
- exrest: <str(907)> Mahātmā Mohandas Karamchand Gandhi (; Hindust...
- extext: <str(2999)> Mahātmā **Mohandas Karamchand Gandhi** ( ; H...
- extract: <str(3292)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b...
- image: <list(6)> {'kind': 'query-pageimage', u'descriptionshortu...
+ exhtml: <str(1168)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b>...
+ exrest: <str(931)> Mahātmā Mohandas Karamchand Gandhi (; Hindust...
+ extext: <str(3077)> Mahātmā **Mohandas Karamchand Gandhi** ( ; H...
+ extract: <str(3372)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b...
+ image: <list(6)> {u'size': 2951123, 'kind': 'query-pageimage', u...
infobox: <dict(25)> known_for, other_names, image, signature, bi...
iwlinks: <list(10)> https://biblio.wiki/wiki/Mohandas_K._Gandhi,...
label: Mahatma Gandhi
- labels: <dict(163)> Q1280678, P535, Q18338317, Q131149, P434, Q1...
- length: 262,058
+ labels: <dict(171)> Q1280678, P535, Q131149, P434, Q1860, P3762,...
+ length: 262,790
links: <list(500)> 10 Janpath, 14th Dalai Lama, 1915 Singapore M...
modified: <dict(2)> wikidata, page
pageid: 19379
- parsetree: <str(330951)> <root><template><title>Redirect</title>...
+ parsetree: <str(331808)> <root><template><title>Redirect</title>...
random: Salt
redirected: <list(1)> {u'to': u'Mahatma Gandhi', u'from': u'Gandhi'}
redirects: <list(53)> {u'ns': 0, u'pageid': 55342, u'title': u'M...
@@ -85,15 +204,18 @@
title: Mahatma_Gandhi
url: https://en.wikipedia.org/wiki/Mahatma_Gandhi
url_raw: https://en.wikipedia.org/wiki/Mahatma_Gandhi?action=raw
- watchers: 1,770
+ watchers: 1,811
what: human
wikibase: Q1001
- wikidata: <dict(105)> Geni.com profile ID (P2600), National Libr...
+ wikidata: <dict(112)> Geni.com profile ID (P2600), National Libr...
+ wikidata_pageid: 1330
wikidata_url: https://www.wikidata.org/wiki/Q1001
- wikitext: <str(260607)> {{Redirect|Gandhi}}{{pp-move-indef}}{{pp...
+ wikitext: <str(261349)> {{Redirect|Gandhi}}{{pp-move-indef}}{{pp...
}
+Get more (expensive) data:
+
.. code-block:: python
>>> page.get_more()
@@ -101,10 +223,44 @@
Mahatma Gandhi (en) data
{
categories: <list(68)> Category:1869 births, Category:1948 death...
- contributors: 2,608
- files: <list(52)> File:Aum Om red.svg, File:Commons-logo.svg, Fi...
- languages: <list(167)> {u'lang': u'af', u'title': u'Mahatma Gand...
- views: 24,565
+ contributors: 2,606
+ files: <list(53)> File:Aum Om red.svg, File:Commons-logo.svg, Fi...
+ languages: <list(168)> {u'lang': u'af', u'title': u'Mahatma Gand...
+ pageid: 19379
+ redirected: <list(1)> {u'to': u'Mahatma Gandhi', u'from': u'Gandhi'}
+ requests: <list(1)> querymore
+ title: Mahatma Gandhi
+ views: 19,242
+ }
+
+
+Get data in `another language`_:
+
+.. _`another language`: https://github.com/siznax/wptools/wiki/Language-Codes
+
+.. code-block:: python
+
+ >>> page = wptools.page(lang='zh')
+ zh.wikipedia.org (random) 🍰
+ 哈莉特·塔布曼 (zh) data
+ {
+ pageid: 211070
+ title: 哈莉特·塔布曼
+ }
+
+
+Get data from `another wiki`_:
+
+.. _`another wiki`: https://meta.wikimedia.org/wiki/List_of_Wikipedias
+
+.. code-block:: python
+
+ >>> page = wptools.page(wiki='en.wikiquote.org')
+ en.wikiquote.org (random) 🍪
+ Malala_Yousafzai (en)
+ {
+ pageid: 146817
+ title: Malala_Yousafzai
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wptools-0.4.8/setup.py new/wptools-0.4.12/setup.py
--- old/wptools-0.4.8/setup.py 2018-01-19 22:28:53.000000000 +0100
+++ new/wptools-0.4.12/setup.py 2018-04-30 00:34:14.000000000 +0200
@@ -10,7 +10,7 @@
setup(
name='wptools',
- version='0.4.8',
+ version='0.4.12',
description='Wikipedia tools (for Humans)',
long_description=readme + '\n\n' + history,
url='https://github.com/siznax/wptools/',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wptools-0.4.8/wptools/__init__.py new/wptools-0.4.12/wptools/__init__.py
--- old/wptools-0.4.8/wptools/__init__.py 2018-01-19 22:29:05.000000000 +0100
+++ new/wptools-0.4.12/wptools/__init__.py 2018-04-30 00:34:32.000000000 +0200
@@ -18,7 +18,7 @@
__contact__ = "https://github.com/siznax/wptools"
__license__ = "MIT"
__title__ = "wptools"
-__version__ = "0.4.8"
+__version__ = "0.4.12"
from . import core
from . import query
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wptools-0.4.8/wptools/core.py new/wptools-0.4.12/wptools/core.py
--- old/wptools-0.4.8/wptools/core.py 2018-01-12 20:54:36.000000000 +0100
+++ new/wptools-0.4.12/wptools/core.py 2018-04-10 04:16:35.000000000 +0200
@@ -104,7 +104,7 @@
self._set_data(action)
- if show:
+ if show and not self.flags.get('silent'):
self.show()
def _load_response(self, action):
@@ -122,7 +122,7 @@
except ValueError:
raise ValueError(_query)
- if data.get('warnings'):
+ if data.get('warnings') and not self.flags.get('silent'):
utils.stderr("API warning: %s" % data.get('warnings'))
if data.get('error'):
@@ -193,7 +193,7 @@
"""
Pretty-print instance data
"""
- if self.flags.get('silent') or not self.data:
+ if not self.data:
return
ptitle = self.params.get('title')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wptools-0.4.8/wptools/page.py new/wptools-0.4.12/wptools/page.py
--- old/wptools-0.4.8/wptools/page.py 2018-01-19 18:53:17.000000000 +0100
+++ new/wptools-0.4.12/wptools/page.py 2018-04-10 04:12:09.000000000 +0200
@@ -297,6 +297,10 @@
"""
self.data['pageid'] = page.get('pageid')
+ assessments = page.get('pageassessments')
+ if assessments:
+ self.data['assessments'] = assessments
+
extract = page.get('extract')
if extract:
self.data['extract'] = extract
@@ -345,6 +349,9 @@
terms = page.get('terms')
if terms:
+ if terms.get('alias'):
+ self.data['aliases'] = terms['alias']
+
if terms.get('description'):
self.data['description'] = next(iter(terms['description']),
None)
@@ -471,7 +478,7 @@
self.get_restbase('/page/summary/', False, proxy, timeout)
- if show:
+ if show and not self.flags.get('silent'):
self.show()
else:
@@ -492,7 +499,7 @@
self.get_restbase('/page/summary/', False, proxy, timeout)
- if show:
+ if show and not self.flags.get('silent'):
self.show()
return self
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wptools-0.4.8/wptools/query.py new/wptools-0.4.12/wptools/query.py
--- old/wptools-0.4.8/wptools/query.py 2018-01-19 18:53:17.000000000 +0100
+++ new/wptools-0.4.12/wptools/query.py 2018-02-07 00:15:11.000000000 +0100
@@ -69,7 +69,8 @@
"&pithumbsize=240"
"&pllimit=500"
"&ppprop=disambiguation|wikibase_item"
- "&prop=extracts|info|links|pageimages|pageprops|pageterms|redirects"
+ "&prop=extracts|info|links|pageassessments|pageimages|pageprops"
+ "|pageterms|redirects"
"&redirects"
"&rdlimit=500"
"&rnlimit=1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wptools-0.4.8/wptools/utils.py new/wptools-0.4.12/wptools/utils.py
--- old/wptools-0.4.8/wptools/utils.py 2017-12-16 00:43:13.000000000 +0100
+++ new/wptools-0.4.12/wptools/utils.py 2018-03-06 00:01:12.000000000 +0100
@@ -21,12 +21,31 @@
def get_infobox(ptree, boxterm="box"):
"""
- returns infobox <type 'dict'> from get_parse:parsetreee
+ Returns parse tree template with title containing <boxterm> as dict:
+
+ <box> = {<name>: <value>, ...}
+
+ If simple transform fails, attempts more general assembly:
+
+ <box> = {'boxes': [{<title>: <parts>}, ...],
+ 'count': <len(boxes)>}
"""
+ boxes = []
for item in lxml.etree.fromstring(ptree).xpath("//template"):
+
title = item.find('title').text
if title and boxterm in title:
- return template_to_dict(item)
+
+ box = template_to_dict(item)
+ if box:
+ return box
+
+ alt = template_to_dict_alt(item, title)
+ if alt:
+ boxes.append(alt)
+
+ if boxes:
+ return {'boxes': boxes, 'count': len(boxes)}
def get_links(rlinks):
@@ -96,26 +115,42 @@
print(msg, file=sys.stderr)
-def template_to_dict(tree):
+def template_to_dict(tree, debug=0, find=False):
"""
- returns wikitext template as dict (one deep)
+ returns wikitext template as dict
+
+ debug = 1
+ prints minimal debug info to stdout
+ debug > 1
+ compares _iter() versus _find() results
+ find = True
+ sets values from _find() algorithm (default _iter())
"""
- # https://en.wikipedia.org/wiki/Abraham_Lincoln?action=raw§ion=0
+ # you can compare (most) raw Infobox wikitext like this:
+ # https://en.wikipedia.org/wiki/TITLE?action=raw§ion=0
obj = defaultdict(str)
errors = []
for item in tree:
try:
name = item.findtext('name').strip()
- tmpl = item.find('value').find('template')
- if tmpl is not None:
- value = template_to_text(tmpl)
- else:
- value = text_with_children(item.find('value'))
+
+ if debug:
+ template_to_dict_debug(name, item, debug)
+
+ find_val = template_to_dict_find(item, debug) # DEPRECATED
+ iter_val = template_to_dict_iter(item, debug)
+
+ value = iter_val
+ if find:
+ value = find_val
+
if name and value:
obj[name] = value.strip()
+
except AttributeError:
+
if isinstance(item, lxml.etree.ElementBase):
name = item.tag.strip()
text = item.text.strip()
@@ -123,18 +158,169 @@
obj['infobox'] = text
else:
obj[name] = text
+
except:
errors.append(lxml.etree.tostring(item))
+
if errors:
obj['errors'] = errors
+
return dict(obj)
-def text_with_children(node):
+def template_to_dict_alt(tree, title):
"""
- return text content with children (#62), sub-elements (#66)
- https://stackoverflow.com/questions/4624062/get-all-text-inside-a-tag-in-lx…
+ Returns parse tree template as {<title>: <parts>}
+ This is a more general parse tree infobox template parser.
"""
+ box = []
+ part = []
+
+ for item in tree.iter():
+
+ if item.tag == 'part':
+ if part:
+ box.append(part)
+ part = []
+
+ if item.tag == 'name' or item.tag == 'value':
+ for attr in item.keys():
+ part.append({attr: item.get(attr)})
+
+ if item.text:
+ part.append(item.text.strip())
+
+ if item.tail:
+ part.append(item.tail.strip())
+
+ if part:
+ box.append(part)
+
+ return {title.strip(): box}
+
+
+def template_to_dict_debug(name, item, debug):
+ """
+ Print debug statements to compare algorithms
+ """
+ if debug == 1:
+ print("\n%s = " % name)
+ elif debug > 1:
+ print("\n%s" % name)
+ print("=" * 64)
+ print(lxml.etree.tostring(item))
+ print()
+
+
+def template_to_dict_find(item, debug=0):
+ """
+ DEPRECATED: Returns infobox parsetree value using etree.find()
+
+ Older template_to_dict() algorithm, uses etree.xpath() to "lookup"
+ or find specific elements, but fails to include tail text in the
+ order it is found, and does not _exclude_ <ext> tags (references,
+ etc.). Compare to template_to_dict_iter().
+ """
+ if debug > 1:
+ print("template_to_dict_find:")
+
+ tmpl = item.find('value').find('template')
+
+ if tmpl is not None:
+ value = template_to_text(tmpl, debug)
+ else:
+ value = text_with_children(item.find('value'), debug)
+
+ if debug:
+ print(" find: %s" % value)
+
+ return value
+
+
+def template_to_dict_iter(item, debug=0):
+ """
+ Returns infobox parsetree value using etree.iter()
+
+ Preferred template_to_dict() algorithm, uses etree.iter() to
+ iterate over elements, accumulating tail text in order, but not
+ preserving `<ext>` tags (references, etc.). The advantage is that
+ it picks up MORE templates and links that may be mixed in with
+ `<ext>` tags, and keeps the result focused on the data. Compare to
+ template_to_dict_find().
+ """
+ valarr = []
+ found_template = False
+
+ if debug > 1:
+ print("template_to_dict_iter:")
+
+ for elm in item.iter():
+
+ if debug > 1:
+ template_to_dict_iter_debug(elm)
+
+ if elm.tag == 'value' and not found_template:
+ valarr.append(elm.text.strip())
+
+ if elm.tag == 'template':
+ found_template = True
+ valarr.append(template_to_text(elm, debug).strip())
+
+ if elm.tail:
+ valarr.append(elm.tail.strip())
+
+ value = " ".join([x for x in valarr if x])
+
+ if debug:
+ print(" iter: %s" % value)
+
+ return value
+
+
+def template_to_dict_iter_debug(elm):
+ """
+ Print expanded element on stdout for debugging
+ """
+ if elm.text is not None:
+ print(" <%s>%s</%s>" % (elm.tag, elm.text, elm.tag), end='')
+ if elm.tail is not None:
+ print(elm.tail)
+ else:
+ print()
+ else:
+ if elm.tail is not None:
+ print(" <%s>%s" % (elm.tag, elm.tail))
+ else:
+ print(" <%s>" % elm.tag)
+
+
+def template_to_text(tmpl, debug=0):
+ """
+ convert parse tree template to text
+ """
+ tarr = []
+ for item in tmpl.itertext():
+ tarr.append(item)
+
+ text = "{{%s}}" % "|".join(tarr).strip()
+
+ if debug > 1:
+ print("+ template_to_text:")
+ print(" %s" % text)
+
+ return text
+
+
+def text_with_children(node, debug=0):
+ """
+ DEPRECATED: return text content with children (#62), sub-elements (#66)
+
+ Only used by deprecated template_to_dict_find(), and suffers from
+ copypasta code smell.
+ """
+
+ # https://stackoverflow.com/questions/4624062/get-all-text-inside-a-tag-in-lx…
+
if sys.version.startswith('3'): # py3 needs encoding=str
parts = ([node.text] +
list(chain(
@@ -147,17 +333,14 @@
*([tostring(c, with_tail=False),
c.tail] for c in node.getchildren())))
+ [node.tail])
- return ''.join(filter(lambda x: x or isinstance(x, str), parts))
+ value = ''.join(filter(lambda x: x or isinstance(x, str), parts)).strip()
-def template_to_text(tmpl):
- """
- convert parse tree template to text
- """
- text = []
- for item in tmpl.itertext():
- text.append(item)
- return "{{%s}}" % "|".join(text)
+ if debug > 1:
+ print("+ text_with_children:")
+ print(" %s" % value)
+
+ return value
def wikidata_url(wikibase):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wptools-0.4.8/wptools.egg-info/PKG-INFO new/wptools-0.4.12/wptools.egg-info/PKG-INFO
--- old/wptools-0.4.8/wptools.egg-info/PKG-INFO 2018-01-19 22:32:57.000000000 +0100
+++ new/wptools-0.4.12/wptools.egg-info/PKG-INFO 2018-04-30 00:38:59.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: wptools
-Version: 0.4.8
+Version: 0.4.12
Summary: Wikipedia tools (for Humans)
Home-page: https://github.com/siznax/wptools/
Author: Steve @siznax
@@ -51,42 +51,161 @@
>>> import wptools
+ Get a page object:
+
.. code-block:: python
>>> page = wptools.page('Gandhi')
+ Get `API:Query`_ data:
+
+ .. _`API:Query`: https://www.mediawiki.org/wiki/API:Query
+
+ .. code-block:: python
+
+ >>> page.get_query()
+ en.wikipedia.org (query) Gandhi
+ en.wikipedia.org (imageinfo) File:Portrait Gandhi.jpg
+ Mahatma Gandhi (en) data
+ {
+ aliases: <list(10)> M K Gandhi, Mohandas Gandhi, Bapu, Gandhi, M...
+ assessments: <dict(10)> Pakistan, Alternative Views, South Afric...
+ description: <str(67)> pre-eminent leader of Indian nationalism ...
+ extext: <str(3077)> Mahātmā **Mohandas Karamchand Gandhi** ( ; H...
+ extract: <str(3372)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b...
+ image: <list(2)> {u'size': 2951123, 'kind': 'query-pageimage', u...
+ label: Mahatma Gandhi
+ length: 262,790
+ links: <list(500)> 10 Janpath, 14th Dalai Lama, 1915 Singapore M...
+ modified: <dict(1)> page
+ pageid: 19379
+ random: Salt
+ redirected: <list(1)> {u'to': u'Mahatma Gandhi', u'from': u'Gandhi'}
+ redirects: <list(53)> {u'ns': 0, u'pageid': 55342, u'title': u'M...
+ requests: <list(2)> query, imageinfo
+ title: Mahatma Gandhi
+ url: https://en.wikipedia.org/wiki/Mahatma_Gandhi
+ url_raw: https://en.wikipedia.org/wiki/Mahatma_Gandhi?action=raw
+ watchers: 1,811
+ wikibase: Q1001
+ wikidata_url: https://www.wikidata.org/wiki/Q1001
+ }
+
+
+ Get `API:Parse`_ data:
+
+ .. _`API:Parse`: https://www.mediawiki.org/wiki/API:Parse
+
+ .. code-block:: python
+
+ >>> page.get_parse()
+ en.wikipedia.org (parse) Gandhi
+ en.wikipedia.org (imageinfo) File:MKGandhi.jpg
+ Mahatma Gandhi (en) data
+ {
+ image: <list(1)> {u'size': 2951123, 'kind': 'parse-image', u'des...
+ infobox: <dict(25)> known_for, other_names, image, signature, bi...
+ iwlinks: <list(10)> https://biblio.wiki/wiki/Mohandas_K._Gandhi,...
+ pageid: 19379
+ parsetree: <str(331808)> <root><template><title>Redirect</title>...
+ requests: <list(2)> parse, imageinfo
+ title: Mahatma Gandhi
+ wikibase: Q1001
+ wikidata_url: https://www.wikidata.org/wiki/Q1001
+ wikitext: <str(261349)> {{Redirect|Gandhi}}{{pp-move-indef}}{{pp...
+ }
+
+
+ Get Wikidata_:
+
+ .. _Wikidata: https://www.wikidata.org/w/api.php
+
+ .. code-block:: python
+
+ >>> page = wptools.page(wikibase='Q1001')
+ >>> page.get_wikidata()
+ www.wikidata.org (wikidata) Q1001
+ www.wikidata.org (labels) Q1280678|P535|P434|Q1860|P3762|Q668|P12...
+ www.wikidata.org (labels) P119|Q1930187|P691|P18|P19|P1066|P509|P...
+ www.wikidata.org (labels) Q6512732|Q1568|P972|Q84|P1430|P31|Q2140...
+ www.wikidata.org (labels) P1576|Q4964182|P1368|P140|Q22336956|P12...
+ en.wikipedia.org (imageinfo) File:Portrait Gandhi.jpg
+ Mahatma Gandhi (en) data
+ {
+ aliases: <list(10)> M K Gandhi, Mohandas Gandhi, Bapu, Gandhi, M...
+ claims: <dict(113)> P646, P535, P906, P434, P648, P3762, P1711, ...
+ description: <str(67)> pre-eminent leader of Indian nationalism ...
+ image: <list(1)> {u'size': 2951123, 'kind': 'wikidata-image', u'...
+ label: Mahatma Gandhi
+ labels: <dict(171)> Q1280678, P535, Q131149, P434, Q1860, P3762,...
+ modified: <dict(1)> wikidata
+ requests: <list(6)> wikidata, labels, labels, labels, labels, im...
+ title: Mahatma_Gandhi
+ what: human
+ wikibase: Q1001
+ wikidata: <dict(112)> Geni.com profile ID (P2600), National Libr...
+ wikidata_pageid: 1330
+ wikidata_url: https://www.wikidata.org/wiki/Q1001
+ }
+
+
+ Get RESTBase_ data:
+
+ .. _RESTBase: https://www.mediawiki.org/wiki/RESTBase
+
+ .. code-block:: python
+
+ >>> page.get_restbase('/page/summary/')
+ en.wikipedia.org (restbase) /page/summary/Gandhi
+ Mahatma Gandhi (en) data
+ {
+ description: <str(67)> pre-eminent leader of Indian nationalism ...
+ exhtml: <str(1168)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b>...
+ exrest: <str(931)> Mahātmā Mohandas Karamchand Gandhi (; Hindust...
+ image: <list(2)> {'kind': 'restbase-original', u'width': 2024, '...
+ pageid: 19379
+ requests: <list(1)> restbase
+ title: Mahatma_Gandhi
+ url: https://en.wikipedia.org/wiki/Gandhi
+ url_raw: https://en.wikipedia.org/wiki/Gandhi?action=raw
+ }
+
+
+ Get all the things (at once):
+
.. code-block:: python
>>> page.get()
en.wikipedia.org (query) Gandhi
en.wikipedia.org (parse) 19379
www.wikidata.org (wikidata) Q1001
- www.wikidata.org (labels) Q1280678|P535|Q18338317|P434|Q1860|P376...
- www.wikidata.org (labels) P18|P19|P1066|P509|P345|Q16382|P1006|P3...
- www.wikidata.org (labels) Q2140674|Q1282294|Q21200566|P409|Q26490...
- www.wikidata.org (labels) P3417|P4431|P2949|P69|Q129286|Q9441|P42...
+ www.wikidata.org (labels) Q1280678|P535|P434|Q1860|P3762|Q668|P12...
+ www.wikidata.org (labels) P119|Q1930187|P691|P18|P19|P1066|P509|P...
+ www.wikidata.org (labels) Q6512732|Q1568|P972|Q84|P1430|P31|Q2140...
+ www.wikidata.org (labels) P1576|Q4964182|P1368|P140|Q22336956|P12...
en.wikipedia.org (restbase) /page/summary/Mahatma_Gandhi
- en.wikipedia.org (imageinfo) File:Portrait Gandhi.jpg|File:MKGandhi.jpg
+ en.wikipedia.org (imageinfo) File:MKGandhi.jpg|File:Portrait Gandhi.jpg
Mahatma Gandhi (en) data
{
aliases: <list(10)> M K Gandhi, Mohandas Gandhi, Bapu, Gandhi, M...
- claims: <dict(106)> P646, P535, P906, P434, P648, P3762, P1273, ...
+ assessments: <dict(10)> Pakistan, Alternative Views, South Afric...
+ claims: <dict(113)> P646, P535, P906, P434, P648, P3762, P1711, ...
description: <str(67)> pre-eminent leader of Indian nationalism ...
- exhtml: <str(1144)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b>...
- exrest: <str(907)> Mahātmā Mohandas Karamchand Gandhi (; Hindust...
- extext: <str(2999)> Mahātmā **Mohandas Karamchand Gandhi** ( ; H...
- extract: <str(3292)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b...
- image: <list(6)> {'kind': 'query-pageimage', u'descriptionshortu...
+ exhtml: <str(1168)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b>...
+ exrest: <str(931)> Mahātmā Mohandas Karamchand Gandhi (; Hindust...
+ extext: <str(3077)> Mahātmā **Mohandas Karamchand Gandhi** ( ; H...
+ extract: <str(3372)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b...
+ image: <list(6)> {u'size': 2951123, 'kind': 'query-pageimage', u...
infobox: <dict(25)> known_for, other_names, image, signature, bi...
iwlinks: <list(10)> https://biblio.wiki/wiki/Mohandas_K._Gandhi,...
label: Mahatma Gandhi
- labels: <dict(163)> Q1280678, P535, Q18338317, Q131149, P434, Q1...
- length: 262,058
+ labels: <dict(171)> Q1280678, P535, Q131149, P434, Q1860, P3762,...
+ length: 262,790
links: <list(500)> 10 Janpath, 14th Dalai Lama, 1915 Singapore M...
modified: <dict(2)> wikidata, page
pageid: 19379
- parsetree: <str(330951)> <root><template><title>Redirect</title>...
+ parsetree: <str(331808)> <root><template><title>Redirect</title>...
random: Salt
redirected: <list(1)> {u'to': u'Mahatma Gandhi', u'from': u'Gandhi'}
redirects: <list(53)> {u'ns': 0, u'pageid': 55342, u'title': u'M...
@@ -94,15 +213,18 @@
title: Mahatma_Gandhi
url: https://en.wikipedia.org/wiki/Mahatma_Gandhi
url_raw: https://en.wikipedia.org/wiki/Mahatma_Gandhi?action=raw
- watchers: 1,770
+ watchers: 1,811
what: human
wikibase: Q1001
- wikidata: <dict(105)> Geni.com profile ID (P2600), National Libr...
+ wikidata: <dict(112)> Geni.com profile ID (P2600), National Libr...
+ wikidata_pageid: 1330
wikidata_url: https://www.wikidata.org/wiki/Q1001
- wikitext: <str(260607)> {{Redirect|Gandhi}}{{pp-move-indef}}{{pp...
+ wikitext: <str(261349)> {{Redirect|Gandhi}}{{pp-move-indef}}{{pp...
}
+ Get more (expensive) data:
+
.. code-block:: python
>>> page.get_more()
@@ -110,10 +232,44 @@
Mahatma Gandhi (en) data
{
categories: <list(68)> Category:1869 births, Category:1948 death...
- contributors: 2,608
- files: <list(52)> File:Aum Om red.svg, File:Commons-logo.svg, Fi...
- languages: <list(167)> {u'lang': u'af', u'title': u'Mahatma Gand...
- views: 24,565
+ contributors: 2,606
+ files: <list(53)> File:Aum Om red.svg, File:Commons-logo.svg, Fi...
+ languages: <list(168)> {u'lang': u'af', u'title': u'Mahatma Gand...
+ pageid: 19379
+ redirected: <list(1)> {u'to': u'Mahatma Gandhi', u'from': u'Gandhi'}
+ requests: <list(1)> querymore
+ title: Mahatma Gandhi
+ views: 19,242
+ }
+
+
+ Get data in `another language`_:
+
+ .. _`another language`: https://github.com/siznax/wptools/wiki/Language-Codes
+
+ .. code-block:: python
+
+ >>> page = wptools.page(lang='zh')
+ zh.wikipedia.org (random) 🍰
+ 哈莉特·塔布曼 (zh) data
+ {
+ pageid: 211070
+ title: 哈莉特·塔布曼
+ }
+
+
+ Get data from `another wiki`_:
+
+ .. _`another wiki`: https://meta.wikimedia.org/wiki/List_of_Wikipedias
+
+ .. code-block:: python
+
+ >>> page = wptools.page(wiki='en.wikiquote.org')
+ en.wikiquote.org (random) 🍪
+ Malala_Yousafzai (en)
+ {
+ pageid: 146817
+ title: Malala_Yousafzai
}
@@ -139,9 +295,11 @@
Release History
---------------
- 0.4.8 (2018-01-19)
- ++++++++++++++++++
+ 0.4.12 (2018-04-29)
+ +++++++++++++++++++
+ * Always respect silent flag (#118)
+ * Improved infobox parsing (#91, #109)
* Added image (license, assessment) metadata (#104, #105)
* Fixed Wikidata pageid, image bugs (#101, #102)
* Added support for category continuations, subcategories (#99)
1
0
Hello community,
here is the log from the commit of package python-limnoria for openSUSE:Factory checked in at 2018-05-01 23:27:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-limnoria (Old)
and /work/SRC/openSUSE:Factory/.python-limnoria.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-limnoria"
Tue May 1 23:27:57 2018 rev:2 rq:602624 version:2018.04.21
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-limnoria/python-limnoria.changes 2018-04-20 17:31:17.110589531 +0200
+++ /work/SRC/openSUSE:Factory/.python-limnoria.new/python-limnoria.changes 2018-05-01 23:27:59.690998459 +0200
@@ -1,0 +2,7 @@
+Mon Apr 30 18:58:58 UTC 2018 - badshah400(a)gmail.com
+
+- Update to version 2018-04-21:
+ * Do not break UTF-8 characters in long words. Closes
+ gh#ProgVal/Limnoria#1333.
+
+-------------------------------------------------------------------
Old:
----
master-2018-01-28.tar.gz
New:
----
master-2018-04-21.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-limnoria.spec ++++++
--- /var/tmp/diff_new_pack.2GQ0fA/_old 2018-05-01 23:28:00.478969808 +0200
+++ /var/tmp/diff_new_pack.2GQ0fA/_new 2018-05-01 23:28:00.482969663 +0200
@@ -18,9 +18,9 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define appname limnoria
-%define srcver 2018-01-28
+%define srcver 2018-04-21
Name: python-limnoria
-Version: 2018.01.28
+Version: 2018.04.21
Release: 0
Summary: A modified version of Supybot (an IRC bot and framework)
License: BSD-3-Clause
@@ -40,13 +40,13 @@
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-SQLAlchemy
Requires: python-PySocks
+Requires: python-SQLAlchemy
Requires: python-chardet
Requires: python-ecdsa
Requires: python-feedparser
-Requires: python-python-gnupg
Requires: python-python-dateutil
+Requires: python-python-gnupg
Requires: python-pytz
Provides: Supybot = %{version}
Obsoletes: Supybot < 1.0
++++++ master-2018-01-28.tar.gz -> master-2018-04-21.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/plugins/Config/plugin.py new/Limnoria-master-2018-04-21/plugins/Config/plugin.py
--- old/Limnoria-master-2018-01-28/plugins/Config/plugin.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/plugins/Config/plugin.py 2018-04-14 22:31:30.000000000 +0200
@@ -65,9 +65,15 @@
def getCapability(name):
capability = 'owner' # Default to requiring the owner capability.
+ if not name.startswith('supybot') and not name.startswith('users'):
+ name = 'supybot.' + name
parts = registry.split(name)
+ group = getattr(conf, parts.pop(0))
while parts:
- part = parts.pop()
+ part = parts.pop(0)
+ group = group.get(part)
+ if not getattr(group, '_opSettable', True):
+ return 'owner'
if ircutils.isChannel(part):
# If a registry value has a channel in it, it requires a
# 'channel,op' capability, or so we assume. We'll see if we're
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/plugins/Config/test.py new/Limnoria-master-2018-04-21/plugins/Config/test.py
--- old/Limnoria-master-2018-01-28/plugins/Config/test.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/plugins/Config/test.py 2018-04-14 22:31:30.000000000 +0200
@@ -28,13 +28,23 @@
# POSSIBILITY OF SUCH DAMAGE.
###
-from supybot.test import *
+import random
+from supybot.test import *
import supybot.conf as conf
+_letters = 'abcdefghijklmnopqrstuvwxyz'
+def random_string():
+ return ''.join(random.choice(_letters) for _ in range(16))
+
class ConfigTestCase(ChannelPluginTestCase):
# We add utilities so there's something in supybot.plugins.
- plugins = ('Config', 'Utilities')
+ plugins = ('Config', 'User', 'Utilities')
+
+ prefix1 = 'somethingElse!user(a)host1.tld'
+ prefix2 = 'EvensomethingElse!user(a)host2.tld'
+ prefix3 = 'Completely!Different(a)host3.tld__no_testcap__'
+
def testGet(self):
self.assertNotRegexp('config get supybot.reply', r'registry\.Group')
self.assertResponse('config supybot.protocols.irc.throttleTime', '0.0')
@@ -110,5 +120,52 @@
conf.supybot.commands.allowShell.setValue(True)
conf.supybot.directories.plugins.setValue(old_plugins_dirs)
+ def testOpEditable(self):
+ var_name = 'testOpEditable' + random_string()
+ conf.registerChannelValue(conf.supybot.plugins.Config, var_name,
+ registry.Integer(0, 'help'))
+ self.assertNotError('register bar passwd', frm=self.prefix3,
+ private=True)
+ self.assertRegexp('whoami', 'bar', frm=self.prefix3)
+ ircdb.users.getUser('bar').addCapability(self.channel + ',op')
+
+ self.assertRegexp('config plugins.Config.%s 1' % var_name,
+ '^Completely: Error: ',
+ frm=self.prefix3)
+ self.assertResponse('config plugins.Config.%s' % var_name,
+ 'Global: 0; #test: 0')
+
+ self.assertNotRegexp('config channel plugins.Config.%s 1' % var_name,
+ '^Completely: Error: ',
+ frm=self.prefix3)
+ self.assertResponse('config plugins.Config.%s' % var_name,
+ 'Global: 0; #test: 1')
+
+ def testOpNonEditable(self):
+ var_name = 'testOpNonEditable' + random_string()
+ conf.registerChannelValue(conf.supybot.plugins.Config, var_name,
+ registry.Integer(0, 'help'), opSettable=False)
+ self.assertNotError('register bar passwd', frm=self.prefix3,
+ private=True)
+ self.assertRegexp('whoami', 'bar', frm=self.prefix3)
+ ircdb.users.getUser('bar').addCapability(self.channel + ',op')
+
+ self.assertRegexp('config plugins.Config.%s 1' % var_name,
+ '^Completely: Error: ',
+ frm=self.prefix3)
+ self.assertResponse('config plugins.Config.%s' % var_name,
+ 'Global: 0; #test: 0')
+
+ self.assertRegexp('config channel plugins.Config.%s 1' % var_name,
+ '^Completely: Error: ',
+ frm=self.prefix3)
+ self.assertResponse('config plugins.Config.%s' % var_name,
+ 'Global: 0; #test: 0')
+
+ self.assertNotRegexp('config channel plugins.Config.%s 1' % var_name,
+ '^Completely: Error: ')
+ self.assertResponse('config plugins.Config.%s' % var_name,
+ 'Global: 0; #test: 1')
+
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/plugins/Games/test.py new/Limnoria-master-2018-04-21/plugins/Games/test.py
--- old/Limnoria-master-2018-01-28/plugins/Games/test.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/plugins/Games/test.py 2018-04-14 22:31:30.000000000 +0200
@@ -36,7 +36,7 @@
self.irc.feedMsg(ircmsgs.op(self.channel, self.irc.nick))
sawKick = False
for i in range(100):
- m = self.getMsg('roulette', frm='someoneElse')
+ m = self.getMsg('roulette', frm='someoneElse!foo@bar')
if m.command == 'PRIVMSG':
self.failUnless(self._nonKickRe.search(m.args[1]),
'Got a msg without bang|click|spin: %r' % m)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/plugins/RSS/plugin.py new/Limnoria-master-2018-04-21/plugins/RSS/plugin.py
--- old/Limnoria-master-2018-01-28/plugins/RSS/plugin.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/plugins/RSS/plugin.py 2018-04-14 22:31:30.000000000 +0200
@@ -403,12 +403,15 @@
all = __builtins__['all']
any = __builtins__['any']
+ title = getattr(entry, 'title', '')
+ description = getattr(entry, 'description', '')
+
if whitelist:
- if all(kw not in entry.title and kw not in entry.description
+ if all(kw not in title and kw not in description
for kw in whitelist):
return False
if blacklist:
- if any(kw in entry.title or kw in entry.description
+ if any(kw in title or kw in description
for kw in blacklist):
return False
return True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/plugins/Services/plugin.py new/Limnoria-master-2018-04-21/plugins/Services/plugin.py
--- old/Limnoria-master-2018-01-28/plugins/Services/plugin.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/plugins/Services/plugin.py 2018-04-14 22:31:30.000000000 +0200
@@ -239,7 +239,7 @@
elif chanserv and ircutils.strEqual(msg.nick, chanserv):
self.doChanservNotice(irc, msg)
- _chanRe = re.compile('\x02(.*?)\x02')
+ _chanRe = re.compile('\x02(#.*?)\x02')
def doChanservNotice(self, irc, msg):
if self.disabled(irc):
return
@@ -250,9 +250,13 @@
on = 'on %s' % irc.network
if m is not None:
channel = m.group(1)
- if 'all bans' in s or 'unbanned from' in s:
- # All bans removed (freenode)
- # You have been unbanned from (oftc)
+ if 'all bans' in s or 'unbanned from' in s or \
+ ('unbanned %s' % irc.nick.lower()) in \
+ ircutils.stripFormatting(s):
+ # All bans removed (old freenode?)
+ # You have been unbanned from (oftc, anope)
+ # "Unbanned \x02someuser\x02 from \x02#channel\x02 (\x02N\x02
+ # ban(s) removed)" (atheme 7.x)
irc.sendMsg(networkGroup.channels.join(channel))
elif 'isn\'t registered' in s:
self.log.warning('Received "%s isn\'t registered" from ChanServ %s',
@@ -345,7 +349,8 @@
'NickServ %s. Check email at %s and send the '
'auth command to NickServ.', on, email)
else:
- self.log.info('Received notice from NickServ %s: %q.', on, s)
+ self.log.info('Received notice from NickServ %s: %q.', on,
+ ircutils.stripFormatting(msg.args[1]))
def checkPrivileges(self, irc, channel):
if self.disabled(irc):
@@ -404,7 +409,7 @@
chanserv = self.registryValue('ChanServ')
if chanserv:
msg = ircmsgs.privmsg(chanserv,
- ' '.join([command, channel, irc.nick]))
+ ' '.join([command, channel]))
irc.sendMsg(msg)
else:
if log:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/plugins/Web/config.py new/Limnoria-master-2018-04-21/plugins/Web/config.py
--- old/Limnoria-master-2018-01-28/plugins/Web/config.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/plugins/Web/config.py 2018-04-14 22:31:30.000000000 +0200
@@ -55,10 +55,16 @@
conf.registerChannelValue(Web, 'snarferShowDomain',
registry.Boolean(True, _("""Determines whether domain names should be
displayed by the title snarfer.""")))
+conf.registerChannelValue(Web, 'snarfMultipleUrls',
+ registry.Boolean(False, _("""Determines whether the title snarfer will
+ query all URLs in a message, or only the first one.""")))
conf.registerChannelValue(Web, 'snarferShowTargetDomain',
registry.Boolean(False, _("""Determines whether the domain name displayed
by the snarfer will be the original one (posted on IRC) or the target one
(got after following redirects, if any).""")))
+conf.registerChannelValue(Web, 'snarferPrefix',
+ registry.String(_('Title: '), _("""Determines the string used at before
+ a web page's title.""")))
conf.registerChannelValue(Web, 'nonSnarfingRegexp',
registry.Regexp(None, _("""Determines what URLs matching the given regexp
will not be snarfed. Give the empty string if you have no URLs that you'd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/plugins/Web/plugin.py new/Limnoria-master-2018-04-21/plugins/Web/plugin.py
--- old/Limnoria-master-2018-01-28/plugins/Web/plugin.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/plugins/Web/plugin.py 2018-04-14 22:31:30.000000000 +0200
@@ -30,6 +30,7 @@
import re
import sys
+import string
import socket
import supybot.conf as conf
@@ -198,10 +199,14 @@
domain = utils.web.getDomain(target
if self.registryValue('snarferShowTargetDomain', channel)
else url)
- s = format(_('Title: %s'), title)
+ prefix = self.registryValue('snarferPrefix', channel)
+ s = prefix + title
if self.registryValue('snarferShowDomain', channel):
s += format(_(' (at %s)'), domain)
irc.reply(s, prefixNick=False)
+ if self.registryValue('snarfMultipleUrls', channel):
+ # FIXME: hack
+ msg.tag('repliedTo', False)
titleSnarfer = urlSnarfer(titleSnarfer)
titleSnarfer.__doc__ = utils.web._httpUrlRe
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/plugins/Web/test.py new/Limnoria-master-2018-04-21/plugins/Web/test.py
--- old/Limnoria-master-2018-01-28/plugins/Web/test.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/plugins/Web/test.py 2018-04-14 22:31:30.000000000 +0200
@@ -83,16 +83,32 @@
finally:
conf.supybot.plugins.Web.titleSnarfer.setValue(False)
+ def testMultipleTitleSnarfer(self):
+ try:
+ conf.supybot.plugins.Web.titleSnarfer.setValue(True)
+ conf.supybot.plugins.Web.snarfMultipleUrls.setValue(True)
+ self.feedMsg(
+ 'https://microsoft.com/ https://google.com/')
+ m1 = self.getMsg(' ')
+ m2 = self.getMsg(' ')
+ self.assertTrue(('Microsoft' in m1.args[1]) ^
+ ('Microsoft' in m2.args[1]))
+ self.assertTrue(('Google' in m1.args[1]) ^
+ ('Google' in m2.args[1]))
+ finally:
+ conf.supybot.plugins.Web.titleSnarfer.setValue(False)
+ conf.supybot.plugins.Web.snarfMultipleUrls.setValue(False)
+
def testNonSnarfing(self):
snarf = conf.supybot.plugins.Web.nonSnarfingRegexp()
title = conf.supybot.plugins.Web.titleSnarfer()
try:
- conf.supybot.plugins.Web.nonSnarfingRegexp.set('m/sf/')
+ conf.supybot.plugins.Web.nonSnarfingRegexp.set('m/fr/')
try:
conf.supybot.plugins.Web.titleSnarfer.setValue(True)
- self.assertSnarfNoResponse('http://sf.net/', 2)
- self.assertSnarfRegexp('http://www.sourceforge.net/',
- r'Sourceforge\.net')
+ self.assertSnarfNoResponse('https://www.google.fr/', 2)
+ self.assertSnarfRegexp('https://www.google.com/',
+ r'Google')
finally:
conf.supybot.plugins.Web.titleSnarfer.setValue(title)
finally:
@@ -116,10 +132,10 @@
conf.supybot.plugins.Web.checkIgnored.setValue(False)
(oldprefix, self.prefix) = (self.prefix, 'foo!bar@baz')
try:
- self.assertSnarfRegexp('https://google.com/', 'Google')
+ self.assertSnarfRegexp('https://google.it/', 'Google')
self.assertNotError('admin ignore add %s' % self.prefix)
- self.assertSnarfRegexp('https://www.google.com/', 'Google')
- self.assertNoResponse('title http://www.google.com/')
+ self.assertSnarfRegexp('https://www.google.it/', 'Google')
+ self.assertNoResponse('title http://www.google.it/')
finally:
conf.supybot.plugins.Web.titleSnarfer.setValue(False)
conf.supybot.plugins.Web.checkIgnored.setValue(True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/scripts/supybot-wizard new/Limnoria-master-2018-04-21/scripts/supybot-wizard
--- old/Limnoria-master-2018-01-28/scripts/supybot-wizard 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/scripts/supybot-wizard 2018-04-14 22:31:30.000000000 +0200
@@ -184,6 +184,14 @@
'run directly in the HOME directory. '
'You should not do this unless you want it to '
'create multiple files in your HOME directory.')
+ parser.add_option('', '--allow-bin', action='store_true',
+ dest='allowBin',
+ help='Determines whether the wizard will be allowed to '
+ 'run directly in a directory for binaries (eg. '
+ '/usr/bin, /usr/local/bin, or ~/.local/bin). '
+ 'You should not do this unless you want it to '
+ 'create multiple non-binary files in directory '
+ 'that should only contain binaries.')
parser.add_option('', '--no-network', action='store_false',
dest='network',
help='Determines whether the wizard will be allowed to '
@@ -195,6 +203,8 @@
if os.name == 'posix':
if (os.getcwd() == os.path.expanduser('~')) and not options.allowHome:
error('Please, don\'t run this in your HOME directory.')
+ if (os.path.split(os.getcwd())[-1] == 'bin') and not options.allowBin:
+ error('Please, don\'t run this in a "bin" directory.')
if os.path.isfile(os.path.join('scripts', 'supybot-wizard')) or \
os.path.isfile(os.path.join('..', 'scripts', 'supybot-wizard')):
print('')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/setup.py new/Limnoria-master-2018-04-21/setup.py
--- old/Limnoria-master-2018-01-28/setup.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/setup.py 2018-04-14 22:31:30.000000000 +0200
@@ -37,7 +37,6 @@
import datetime
import tempfile
import subprocess
-from math import ceil
warnings.filterwarnings('always', category=DeprecationWarning)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/src/callbacks.py new/Limnoria-master-2018-04-21/src/callbacks.py
--- old/Limnoria-master-2018-01-28/src/callbacks.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/src/callbacks.py 2018-04-14 22:31:30.000000000 +0200
@@ -383,36 +383,28 @@
return ' '.join(command)
def checkCommandCapability(msg, cb, commandName):
+ plugin = cb.name().lower()
if not isinstance(commandName, minisix.string_types):
+ assert commandName[0] == plugin, ('checkCommandCapability no longer '
+ 'accepts command names that do not start with the callback\'s '
+ 'name (%s): %s') % (plugin, commandName)
commandName = '.'.join(commandName)
- plugin = cb.name().lower()
- pluginCommand = '%s.%s' % (plugin, commandName)
def checkCapability(capability):
assert ircdb.isAntiCapability(capability)
if ircdb.checkCapability(msg.prefix, capability):
log.info('Preventing %s from calling %s because of %s.',
- msg.prefix, pluginCommand, capability)
+ msg.prefix, commandName, capability)
raise RuntimeError(capability)
try:
- antiPlugin = ircdb.makeAntiCapability(plugin)
antiCommand = ircdb.makeAntiCapability(commandName)
- antiPluginCommand = ircdb.makeAntiCapability(pluginCommand)
- checkCapability(antiPlugin)
checkCapability(antiCommand)
- checkCapability(antiPluginCommand)
- checkAtEnd = [commandName, pluginCommand]
+ checkAtEnd = [commandName]
default = conf.supybot.capabilities.default()
if ircutils.isChannel(msg.args[0]):
channel = msg.args[0]
checkCapability(ircdb.makeChannelCapability(channel, antiCommand))
- checkCapability(ircdb.makeChannelCapability(channel, antiPlugin))
- checkCapability(ircdb.makeChannelCapability(channel,
- antiPluginCommand))
- chanPlugin = ircdb.makeChannelCapability(channel, plugin)
chanCommand = ircdb.makeChannelCapability(channel, commandName)
- chanPluginCommand = ircdb.makeChannelCapability(channel,
- pluginCommand)
- checkAtEnd += [chanCommand, chanPlugin, chanPluginCommand]
+ checkAtEnd += [chanCommand]
default &= ircdb.channels.getChannel(channel).defaultAllow
return not (default or \
any(lambda x: ircdb.checkCapability(msg.prefix, x),
@@ -925,9 +917,8 @@
log.warning('Truncating to %s bytes from %s bytes.',
maximumLength, len(s))
s = s[:maximumLength]
- s_too_long = len(s.encode()) < allowedLength \
- if minisix.PY3 else len(s) < allowedLength
- if s_too_long or \
+ s_size = len(s.encode()) if minisix.PY3 else len(s)
+ if s_size <= allowedLength or \
not conf.get(conf.supybot.reply.mores, target):
# In case we're truncating, we add 20 to allowedLength,
# because our allowedLength is shortened for the
@@ -950,8 +941,7 @@
stripCtcp=stripCtcp)
sendMsg(m)
return m
- msgs = ircutils.wrap(s, allowedLength,
- break_long_words=True)
+ msgs = ircutils.wrap(s, allowedLength)
msgs.reverse()
instant = conf.get(conf.supybot.reply.mores.instant,target)
while instant > 1 and msgs:
@@ -1302,18 +1292,29 @@
else:
self.log.info('%s called on %s by %q.', formatCommand(command),
msg.args[0], msg.prefix)
- # XXX I'm being extra-special-careful here, but we need to refactor
- # this.
try:
- cap = checkCommandCapability(msg, self, command)
+ if len(command) == 1 or command[0] != self.canonicalName():
+ fullCommandName = [self.canonicalName()] + command
+ else:
+ fullCommandName = command
+ # Let "P" be the plugin and "X Y" the command name. The
+ # fullCommandName is "P X Y"
+
+ # check "Y"
+ cap = checkCommandCapability(msg, self, command[-1])
if cap:
irc.errorNoCapability(cap)
return
- for name in command:
- cap = checkCommandCapability(msg, self, name)
+
+ # check "P", "P.X", and "P.X.Y"
+ prefix = []
+ for name in fullCommandName:
+ prefix.append(name)
+ cap = checkCommandCapability(msg, self, prefix)
if cap:
irc.errorNoCapability(cap)
return
+
try:
self.callingCommand = command
self.callCommand(command, irc, msg, *args, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/src/conf.py new/Limnoria-master-2018-04-21/src/conf.py
--- old/Limnoria-master-2018-01-28/src/conf.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/src/conf.py 2018-04-14 22:31:30.000000000 +0200
@@ -86,9 +86,10 @@
value.channelValue = False
return group.register(name, value)
-def registerChannelValue(group, name, value):
+def registerChannelValue(group, name, value, opSettable=True):
value._supplyDefault = True
value.channelValue = True
+ value._opSettable = opSettable
g = group.register(name, value)
gname = g._name.lower()
for name in registry._cache.keys():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/src/ircutils.py new/Limnoria-master-2018-04-21/src/ircutils.py
--- old/Limnoria-master-2018-01-28/src/ircutils.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/src/ircutils.py 2018-04-14 22:31:30.000000000 +0200
@@ -254,9 +254,9 @@
if not args:
return []
modes = args[0]
- assert modes[0] in '+-', 'Invalid args: %r' % args
args = list(args[1:])
ret = []
+ last = '+'
for c in modes:
if c in '+-':
last = c
@@ -596,12 +596,9 @@
else:
self.ungetChar(c)
-def wrap(s, length, break_on_hyphens = False, break_long_words = False):
+def wrap(s, length, break_on_hyphens = False):
processed = []
- wrapper = textwrap.TextWrapper(width=length)
- wrapper.break_long_words = break_long_words
- wrapper.break_on_hyphens = break_on_hyphens
- chunks = wrapper.wrap(s)
+ chunks = utils.str.byteTextWrap(s, length)
context = None
for chunk in chunks:
if context is not None:
@@ -819,7 +816,7 @@
'm': localtime[4], 'min': localtime[4], 'minute': localtime[4],
's': localtime[5], 'sec': localtime[5], 'second': localtime[5],
'tz': time.strftime('%Z', localtime),
- 'version': 'Limnoria %s' % version,
+ 'version': version,
})
if irc:
vars.update({
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/src/utils/str.py new/Limnoria-master-2018-04-21/src/utils/str.py
--- old/Limnoria-master-2018-01-28/src/utils/str.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/src/utils/str.py 2018-04-14 22:31:30.000000000 +0200
@@ -34,6 +34,7 @@
"""
import re
+import sys
import time
import string
import textwrap
@@ -305,6 +306,46 @@
return '$' + unbraced
return _perlVarSubstituteRe.sub(replacer, text)
+def splitBytes(word, size):
+ # I'm going to hell for this function
+ for i in range(4): # a character takes at most 4 bytes in UTF-8
+ try:
+ if sys.version_info[0] >= 3:
+ word[size-i:].decode()
+ else:
+ word[size-i:].encode('utf8')
+ except UnicodeDecodeError:
+ continue
+ else:
+ return (word[0:size-i], word[size-i:])
+ assert False, (word, size)
+
+def byteTextWrap(text, size, break_on_hyphens=False):
+ """Similar to textwrap.wrap(), but considers the size of strings (in bytes)
+ instead of their length (in characters)."""
+ try:
+ words = textwrap.TextWrapper()._split_chunks(text)
+ except AttributeError: # Python 2
+ words = textwrap.TextWrapper()._split(text)
+ words.reverse() # use it as a stack
+ if sys.version_info[0] >= 3:
+ words = [w.encode() for w in words]
+ lines = [b'']
+ while words:
+ word = words.pop(-1)
+ if len(word) > size:
+ (before, after) = splitBytes(word, size)
+ words.append(after)
+ word = before
+ if len(lines[-1]) + len(word) <= size:
+ lines[-1] += word
+ else:
+ lines.append(word)
+ if sys.version_info[0] >= 3:
+ return [l.decode() for l in lines]
+ else:
+ return lines
+
def commaAndify(seq, comma=',', And=None):
"""Given a a sequence, returns an English clause for that sequence.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/src/world.py new/Limnoria-master-2018-04-21/src/world.py
--- old/Limnoria-master-2018-01-28/src/world.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/src/world.py 2018-04-14 22:31:30.000000000 +0200
@@ -99,6 +99,7 @@
ircs = [] # A list of all the IRCs.
def getIrc(network):
+ """Returns Irc object of the given network. <network> is string and not case-sensitive."""
network = network.lower()
for irc in ircs:
if irc.network.lower() == network:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Limnoria-master-2018-01-28/test/test_ircutils.py new/Limnoria-master-2018-04-21/test/test_ircutils.py
--- old/Limnoria-master-2018-01-28/test/test_ircutils.py 2018-01-25 14:09:19.000000000 +0100
+++ new/Limnoria-master-2018-04-21/test/test_ircutils.py 2018-04-14 22:31:30.000000000 +0200
@@ -168,6 +168,66 @@
s = ircutils.mircColor('[', 'blue') + ircutils.bold('09:21')
self.assertEqual(ircutils.stripFormatting(s), '[09:21')
+ def testWrap(self):
+ if sys.version_info[0] < 3:
+ pred = len
+ else:
+ pred = lambda s:len(s.encode())
+
+ s = ('foo bar baz qux ' * 100)[0:-1]
+
+ r = ircutils.wrap(s, 10)
+ self.assertTrue(max(map(pred, r)) <= 10)
+ self.assertEqual(''.join(r), s)
+
+ r = ircutils.wrap(s, 100)
+ self.assertTrue(max(map(pred, r)) <= 100)
+ self.assertEqual(''.join(r), s)
+
+ if sys.version_info[0] < 3:
+ uchr = unichr
+ u = lambda s: s.decode('utf8')
+ else:
+ uchr = chr
+ u = lambda x: x
+ s = (u('').join([uchr(0x1f527), uchr(0x1f527), uchr(0x1f527), u(' ')]) * 100)\
+ [0:-1]
+
+ r = ircutils.wrap(s, 20)
+ self.assertTrue(max(map(pred, r)) <= 20, (max(map(pred, r)), repr(r)))
+ self.assertEqual(''.join(r), s)
+
+ r = ircutils.wrap(s, 100)
+ self.assertTrue(max(map(pred, r)) <= 100)
+ self.assertEqual(''.join(r), s)
+
+ s = ('foobarbazqux ' * 100)[0:-1]
+
+ r = ircutils.wrap(s, 10)
+ self.assertTrue(max(map(pred, r)) <= 10)
+ self.assertEqual(''.join(r), s)
+
+ r = ircutils.wrap(s, 100)
+ self.assertTrue(max(map(pred, r)) <= 100)
+ self.assertEqual(''.join(r), s)
+
+ s = ('foobarbazqux' * 100)[0:-1]
+
+ r = ircutils.wrap(s, 10)
+ self.assertTrue(max(map(pred, r)) <= 10)
+ self.assertEqual(''.join(r), s)
+
+ r = ircutils.wrap(s, 100)
+ self.assertTrue(max(map(pred, r)) <= 100)
+ self.assertEqual(''.join(r), s)
+
+ s = uchr(233)*500
+ r = ircutils.wrap(s, 500)
+ self.assertTrue(max(map(pred, r)) <= 500)
+ r = ircutils.wrap(s, 139)
+ self.assertTrue(max(map(pred, r)) <= 139)
+
+
def testSafeArgument(self):
s = 'I have been running for 9 seconds'
bolds = ircutils.bold(s)
1
0
Hello community,
here is the log from the commit of package wine for openSUSE:Factory checked in at 2018-05-01 23:27:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/wine (Old)
and /work/SRC/openSUSE:Factory/.wine.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "wine"
Tue May 1 23:27:11 2018 rev:253 rq:602592 version:3.7
Changes:
--------
--- /work/SRC/openSUSE:Factory/wine/wine.changes 2018-04-16 12:50:03.714770779 +0200
+++ /work/SRC/openSUSE:Factory/.wine.new/wine.changes 2018-05-01 23:27:17.928516952 +0200
@@ -1,0 +2,12 @@
+Fri Apr 27 18:55:43 UTC 2018 - meissner(a)suse.com
+
+- Update to 3.7 development release
+ - MSI custom actions run in a separate process.
+ - Support for job files in the Task Scheduler.
+ - Improved viewport support in Direct 3D.
+ - Larger resolution version of the standard icons.
+ - Various bug fixes.
+- updated winetricks
+- updated staging to 3.7
+
+-------------------------------------------------------------------
Old:
----
wine-3.6.tar.xz
wine-3.6.tar.xz.sign
wine-d3d9-patches-3.5.tar.xz
wine-staging-3.6.tar.xz
New:
----
wine-3.7.tar.xz
wine-3.7.tar.xz.sign
wine-d3d9-patches-3.6.tar.xz
wine-staging-3.7.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ wine.spec ++++++
--- /var/tmp/diff_new_pack.AJehyi/_old 2018-05-01 23:27:19.216470123 +0200
+++ /var/tmp/diff_new_pack.AJehyi/_new 2018-05-01 23:27:19.216470123 +0200
@@ -101,8 +101,8 @@
BuildRequires: pkgconfig(xrender)
BuildRequires: pkgconfig(xxf86vm)
BuildRequires: pkgconfig(zlib)
-%define realver 3.6
-Version: 3.6
+%define realver 3.7
+Version: 3.7
Release: 0
Summary: An MS Windows Emulator
License: LGPL-2.1-or-later
@@ -140,7 +140,7 @@
ExclusiveArch: %{ix86} x86_64 ppc %arm aarch64
%if %{staging}
# upstream patch target version
-%define staging_version 3.6
+%define staging_version 3.7
Source100: wine-staging-%{staging_version}.tar.xz
BuildRequires: gtk3-devel
BuildRequires: libOSMesa-devel
@@ -148,7 +148,7 @@
%endif
%if %{nine}
# upstream patch target version
-%define nine_version 3.5
+%define nine_version 3.6
BuildRequires: Mesa-libd3d-devel
BuildRequires: dri2proto-devel
BuildRequires: libOSMesa-devel
++++++ _service ++++++
--- /var/tmp/diff_new_pack.AJehyi/_old 2018-05-01 23:27:19.280467796 +0200
+++ /var/tmp/diff_new_pack.AJehyi/_new 2018-05-01 23:27:19.284467650 +0200
@@ -3,7 +3,7 @@
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v(.*)</param>
<param name="url">https://github.com/wine-staging/wine-staging.git</param>
- <param name="revision">refs/tags/v3.6</param>
+ <param name="revision">refs/tags/v3.7</param>
<param name="match-tag">v*.*</param>
<param name="scm">git</param>
</service>
@@ -11,7 +11,7 @@
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">wined3d9(.*)</param>
<param name="url">https://github.com/sarnex/wine-d3d9-patches.git</param>
- <param name="revision">refs/tags/wine-d3d9-3.5</param>
+ <param name="revision">refs/tags/wine-d3d9-3.6</param>
<param name="scm">git</param>
</service>
<service name="recompress" mode="disabled">
++++++ wine-3.6.tar.xz -> wine-3.7.tar.xz ++++++
/work/SRC/openSUSE:Factory/wine/wine-3.6.tar.xz /work/SRC/openSUSE:Factory/.wine.new/wine-3.7.tar.xz differ: char 26, line 1
++++++ wine-d3d9-patches-3.5.tar.xz -> wine-d3d9-patches-3.6.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wine-d3d9-patches-3.5/d3d9-helper.patch new/wine-d3d9-patches-3.6/d3d9-helper.patch
--- old/wine-d3d9-patches-3.5/d3d9-helper.patch 2018-03-31 16:06:36.000000000 +0200
+++ new/wine-d3d9-patches-3.6/d3d9-helper.patch 2018-04-14 17:56:48.000000000 +0200
@@ -1,24 +1,24 @@
-From 763e579985e27ab80f276e93a3e2f609c3e02d83 Mon Sep 17 00:00:00 2001
+From 00aa62a47250f4a0655784eb1a22e7ee7816a3bc Mon Sep 17 00:00:00 2001
From: Nick Sarnie <commendsarnex(a)gmail.com>
-Date: Sat, 31 Mar 2018 10:05:28 -0400
+Date: Sat, 14 Apr 2018 11:53:44 -0400
Subject: [PATCH] D3D9 Helper
Signed-off-by: Nick Sarnie <commendsarnex(a)gmail.com>
---
- dlls/ntdll/loader.c | 205 ++++++++++++++++++++++++-----
- dlls/ntdll/loadorder.c | 298 ++++++++++++++++++++++++++++++++-----------
+ dlls/ntdll/loader.c | 205 ++++++++++++++++++++----
+ dlls/ntdll/loadorder.c | 298 ++++++++++++++++++++++++++---------
dlls/ntdll/ntdll_misc.h | 1 +
programs/winecfg/Makefile.in | 1 +
programs/winecfg/main.c | 12 +-
programs/winecfg/resource.h | 5 +
- programs/winecfg/staging.c | 93 ++++++++++++++
+ programs/winecfg/staging.c | 93 +++++++++++
programs/winecfg/winecfg.h | 1 +
programs/winecfg/winecfg.rc | 10 ++
9 files changed, 522 insertions(+), 104 deletions(-)
create mode 100644 programs/winecfg/staging.c
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
-index fe5ce9d1e4..ebb7aea4d0 100644
+index 1a3dd801a1..9276b5b17d 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -100,6 +100,7 @@ struct builtin_load_info
@@ -75,7 +75,7 @@
current_modref = prev;
if (status)
{
-@@ -1028,7 +1030,7 @@ static NTSTATUS fixup_imports( WINE_MODREF *wm, LPCWSTR load_path )
+@@ -1031,7 +1033,7 @@ static NTSTATUS fixup_imports( WINE_MODREF *wm, LPCWSTR load_path )
* Allocate a WINE_MODREF structure and add it to the process list
* The loader_section must be locked while calling this function.
*/
@@ -84,7 +84,7 @@
{
WINE_MODREF *wm;
const WCHAR *p;
-@@ -1042,7 +1044,7 @@ static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename )
+@@ -1045,7 +1047,7 @@ static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename )
wm->ldr.TlsIndex = -1;
wm->ldr.LoadCount = 1;
@@ -93,7 +93,7 @@
if ((p = strrchrW( wm->ldr.FullDllName.Buffer, '\\' ))) p++;
else p = wm->ldr.FullDllName.Buffer;
RtlInitUnicodeString( &wm->ldr.BaseDllName, p );
-@@ -1654,7 +1656,7 @@ static void load_builtin_callback( void *module, const char *filename )
+@@ -1657,7 +1659,7 @@ static void load_builtin_callback( void *module, const char *filename )
return;
}
@@ -102,7 +102,7 @@
RtlFreeHeap( GetProcessHeap(), 0, fullname );
if (!wm)
{
-@@ -1864,8 +1866,8 @@ static BOOL is_valid_binary( HMODULE module, const pe_image_info_t *info )
+@@ -1867,8 +1869,8 @@ static BOOL is_valid_binary( HMODULE module, const pe_image_info_t *info )
/******************************************************************************
* load_native_dll (internal)
*/
@@ -113,7 +113,7 @@
{
void *module;
HANDLE mapping;
-@@ -1908,7 +1910,7 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, HANDLE file,
+@@ -1911,7 +1913,7 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, HANDLE file,
/* create the MODREF */
@@ -122,7 +122,7 @@
{
if (module) NtUnmapViewOfSection( NtCurrentProcess(), module );
return STATUS_NO_MEMORY;
-@@ -1972,8 +1974,8 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, HANDLE file,
+@@ -1979,8 +1981,8 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, HANDLE file,
/***********************************************************************
* load_builtin_dll
*/
@@ -133,7 +133,7 @@
{
char error[256], dllname[MAX_PATH];
const WCHAR *name, *p;
-@@ -1993,6 +1995,7 @@ static NTSTATUS load_builtin_dll( LPCWSTR load_path, LPCWSTR path, HANDLE file,
+@@ -2000,6 +2002,7 @@ static NTSTATUS load_builtin_dll( LPCWSTR load_path, LPCWSTR path, HANDLE file,
*/
info.load_path = load_path;
info.filename = NULL;
@@ -141,7 +141,7 @@
info.status = STATUS_SUCCESS;
info.wm = NULL;
-@@ -2191,6 +2194,108 @@ done:
+@@ -2198,6 +2201,108 @@ done:
return status;
}
@@ -250,7 +250,7 @@
/***********************************************************************
* open_dll_file
-@@ -2237,7 +2342,7 @@ static HANDLE open_dll_file( UNICODE_STRING *nt_name, WINE_MODREF **pwm, struct
+@@ -2244,7 +2349,7 @@ static HANDLE open_dll_file( UNICODE_STRING *nt_name, WINE_MODREF **pwm, struct
*/
static NTSTATUS find_dll_file( const WCHAR *load_path, const WCHAR *libname,
WCHAR *filename, ULONG *size, WINE_MODREF **pwm,
@@ -259,7 +259,7 @@
{
UNICODE_STRING nt_name;
WCHAR *file_part, *ext, *dllname;
-@@ -2282,20 +2387,41 @@ static NTSTATUS find_dll_file( const WCHAR *load_path, const WCHAR *libname,
+@@ -2289,20 +2394,41 @@ static NTSTATUS find_dll_file( const WCHAR *load_path, const WCHAR *libname,
if (RtlDetermineDosPathNameType_U( libname ) == RELATIVE_PATH)
{
@@ -305,7 +305,7 @@
}
/* not found */
-@@ -2343,8 +2469,10 @@ overflow:
+@@ -2350,8 +2476,10 @@ overflow:
* Load a PE style module according to the load order.
* The loader_section must be locked while calling this function.
*/
@@ -317,7 +317,7 @@
enum loadorder loadorder;
WCHAR buffer[64];
WCHAR *filename;
-@@ -2361,7 +2489,7 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_
+@@ -2368,7 +2496,7 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_
size = sizeof(buffer);
for (;;)
{
@@ -326,7 +326,7 @@
if (nts == STATUS_SUCCESS) break;
if (filename != buffer) RtlFreeHeap( GetProcessHeap(), 0, filename );
if (nts != STATUS_BUFFER_TOO_SMALL) return nts;
-@@ -2381,6 +2509,25 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_
+@@ -2388,6 +2516,25 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_
}
main_exe = get_modref( NtCurrentTeb()->Peb->ImageBaseAddress );
@@ -352,7 +352,7 @@
loadorder = get_load_order( main_exe ? main_exe->ldr.BaseDllName.Buffer : NULL, filename );
if (handle && is_fake_dll( handle ))
-@@ -2403,22 +2550,22 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_
+@@ -2410,22 +2557,22 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_
if (!handle) nts = STATUS_DLL_NOT_FOUND;
else
{
@@ -380,7 +380,7 @@
if (nts == STATUS_SUCCESS && loadorder == LO_DEFAULT &&
(MODULE_InitDLL( *pwm, DLL_WINE_PREATTACH, NULL ) != STATUS_SUCCESS))
{
-@@ -2428,7 +2575,7 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_
+@@ -2435,7 +2582,7 @@ static NTSTATUS load_dll( LPCWSTR load_path, LPCWSTR libname, DWORD flags, WINE_
nts = STATUS_DLL_NOT_FOUND;
}
if (nts == STATUS_DLL_NOT_FOUND && loadorder != LO_BUILTIN)
@@ -389,7 +389,7 @@
break;
}
-@@ -2461,7 +2608,7 @@ NTSTATUS WINAPI DECLSPEC_HOTPATCH LdrLoadDll(LPCWSTR path_name, DWORD flags,
+@@ -2468,7 +2615,7 @@ NTSTATUS WINAPI DECLSPEC_HOTPATCH LdrLoadDll(LPCWSTR path_name, DWORD flags,
RtlEnterCriticalSection( &loader_section );
if (!path_name) path_name = NtCurrentTeb()->Peb->ProcessParameters->DllPath.Buffer;
@@ -398,7 +398,7 @@
if (nts == STATUS_SUCCESS && !(wm->ldr.Flags & LDR_DONT_RESOLVE_REFS))
{
-@@ -2500,7 +2647,7 @@ NTSTATUS WINAPI LdrGetDllHandle( LPCWSTR load_path, ULONG flags, const UNICODE_S
+@@ -2507,7 +2654,7 @@ NTSTATUS WINAPI LdrGetDllHandle( LPCWSTR load_path, ULONG flags, const UNICODE_S
size = sizeof(buffer);
for (;;)
{
@@ -407,7 +407,7 @@
if (handle) NtClose( handle );
if (filename != buffer) RtlFreeHeap( GetProcessHeap(), 0, filename );
if (status != STATUS_BUFFER_TOO_SMALL) break;
-@@ -3422,7 +3569,7 @@ void __wine_process_init(void)
+@@ -3429,7 +3576,7 @@ void __wine_process_init(void)
/* setup the load callback and create ntdll modref */
wine_dll_set_callback( load_builtin_callback );
@@ -1025,5 +1025,5 @@
/* @makedep: winecfg.ico */
--
-2.16.3
+2.17.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wine-d3d9-patches-3.5/staging-helper.patch new/wine-d3d9-patches-3.6/staging-helper.patch
--- old/wine-d3d9-patches-3.5/staging-helper.patch 2018-03-31 16:06:36.000000000 +0200
+++ new/wine-d3d9-patches-3.6/staging-helper.patch 2018-04-14 17:56:48.000000000 +0200
@@ -1,6 +1,6 @@
-From 390a5a66bb1fd749885fbea3d3b6ab2cd9ed69f6 Mon Sep 17 00:00:00 2001
+From e85e98ed34ed9009e7f380955da0e4a5d82e17ac Mon Sep 17 00:00:00 2001
From: Nick Sarnie <commendsarnex(a)gmail.com>
-Date: Sat, 31 Mar 2018 10:03:56 -0400
+Date: Sat, 14 Apr 2018 11:56:11 -0400
Subject: [PATCH] Staging Helper
Signed-off-by: Nick Sarnie <commendsarnex(a)gmail.com>
@@ -39,10 +39,10 @@
/* About tab */
#define IDC_ABT_OWNER 8432
diff --git a/programs/winecfg/staging.c b/programs/winecfg/staging.c
-index a96bdcaab4..7eec5e9608 100644
+index df9bf0f1ad..e010be1c73 100644
--- a/programs/winecfg/staging.c
+++ b/programs/winecfg/staging.c
-@@ -122,6 +122,23 @@ static void gtk3_set(BOOL status)
+@@ -121,6 +121,23 @@ static void gtk3_set(BOOL status)
#endif
}
@@ -66,7 +66,7 @@
static void load_staging_settings(HWND dialog)
{
CheckDlgButton(dialog, IDC_ENABLE_CSMT, csmt_get() ? BST_CHECKED : BST_UNCHECKED);
-@@ -129,6 +146,7 @@ static void load_staging_settings(HWND dialog)
+@@ -128,6 +145,7 @@ static void load_staging_settings(HWND dialog)
CheckDlgButton(dialog, IDC_ENABLE_EAX, eax_get() ? BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(dialog, IDC_ENABLE_HIDEWINE, hidewine_get() ? BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(dialog, IDC_ENABLE_GTK3, gtk3_get() ? BST_CHECKED : BST_UNCHECKED);
@@ -74,7 +74,7 @@
#ifndef HAVE_VAAPI
disable(IDC_ENABLE_VAAPI);
-@@ -136,6 +154,9 @@ static void load_staging_settings(HWND dialog)
+@@ -135,6 +153,9 @@ static void load_staging_settings(HWND dialog)
#ifndef HAVE_GTK3
disable(IDC_ENABLE_GTK3);
#endif
@@ -84,7 +84,7 @@
}
INT_PTR CALLBACK StagingDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
-@@ -163,6 +184,8 @@ INT_PTR CALLBACK StagingDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
+@@ -162,6 +183,8 @@ INT_PTR CALLBACK StagingDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
{
case IDC_ENABLE_CSMT:
csmt_set(IsDlgButtonChecked(hDlg, IDC_ENABLE_CSMT) == BST_CHECKED);
@@ -93,7 +93,7 @@
SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0);
return TRUE;
case IDC_ENABLE_VAAPI:
-@@ -181,6 +204,12 @@ INT_PTR CALLBACK StagingDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
+@@ -180,6 +203,12 @@ INT_PTR CALLBACK StagingDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
gtk3_set(IsDlgButtonChecked(hDlg, IDC_ENABLE_GTK3) == BST_CHECKED);
SendMessageW(GetParent(hDlg), PSM_CHANGED, 0, 0);
return TRUE;
@@ -107,7 +107,7 @@
break;
}
diff --git a/programs/winecfg/winecfg.rc b/programs/winecfg/winecfg.rc
-index 314e9858ea..596dc27447 100644
+index f838a04a4e..7003bded4a 100644
--- a/programs/winecfg/winecfg.rc
+++ b/programs/winecfg/winecfg.rc
@@ -320,6 +320,7 @@ BEGIN
@@ -119,5 +119,5 @@
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
--
-2.16.3
+2.17.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wine-d3d9-patches-3.5/wine-d3d9.patch new/wine-d3d9-patches-3.6/wine-d3d9.patch
--- old/wine-d3d9-patches-3.5/wine-d3d9.patch 2018-03-31 16:06:36.000000000 +0200
+++ new/wine-d3d9-patches-3.6/wine-d3d9.patch 2018-04-14 17:56:48.000000000 +0200
@@ -1,26 +1,26 @@
-From 6f18703feb2f89042a25fb09e7d07d48a8f9c125 Mon Sep 17 00:00:00 2001
+From 695c0020836ef99c924c5d33de81bf52c1fb617a Mon Sep 17 00:00:00 2001
From: Nick Sarnie <commendsarnex(a)gmail.com>
-Date: Sat, 31 Mar 2018 10:04:12 -0400
-Subject: [PATCH] Wine D3D9
+Date: Sat, 14 Apr 2018 11:53:04 -0400
+Subject: [PATCH 2/2] Wine D3D9
Signed-off-by: Nick Sarnie <commendsarnex(a)gmail.com>
---
configure.ac | 188 ++++
dlls/d3d9-nine/Makefile.in | 15 +
dlls/d3d9-nine/d3d9-nine.spec | 14 +
- dlls/d3d9-nine/d3d9_main.c | 173 ++++
- dlls/d3d9-nine/d3dadapter9.c | 898 +++++++++++++++++++
+ dlls/d3d9-nine/d3d9_main.c | 173 +++
+ dlls/d3d9-nine/d3dadapter9.c | 898 +++++++++++++++
dlls/d3d9-nine/d3dadapter9.h | 32 +
- dlls/d3d9-nine/device_wrap.c | 500 +++++++++++
+ dlls/d3d9-nine/device_wrap.c | 500 +++++++++
dlls/d3d9-nine/device_wrap.h | 26 +
- dlls/d3d9-nine/dri3.c | 1426 ++++++++++++++++++++++++++++++
+ dlls/d3d9-nine/dri3.c | 1426 +++++++++++++++++++++++
dlls/d3d9-nine/dri3.h | 91 ++
- dlls/d3d9-nine/present.c | 1748 +++++++++++++++++++++++++++++++++++++
+ dlls/d3d9-nine/present.c | 1748 +++++++++++++++++++++++++++++
dlls/d3d9-nine/present.h | 40 +
dlls/d3d9-nine/shader_validator.c | 88 ++
dlls/d3d9-nine/shader_validator.h | 29 +
dlls/d3d9-nine/version.rc | 26 +
- dlls/d3d9-nine/wndproc.c | 277 ++++++
+ dlls/d3d9-nine/wndproc.c | 277 +++++
dlls/d3d9-nine/wndproc.h | 41 +
17 files changed, 5612 insertions(+)
create mode 100644 dlls/d3d9-nine/Makefile.in
@@ -41,7 +41,7 @@
create mode 100644 dlls/d3d9-nine/wndproc.h
diff --git a/configure.ac b/configure.ac
-index 0a365d9c43..93c9d823fd 100644
+index 8e76cd6086..10c1a8c03e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -69,6 +69,14 @@ AC_ARG_WITH(openal, AS_HELP_STRING([--without-openal],[do not use OpenAL]),
@@ -5781,5 +5781,5 @@
+
+#endif
--
-2.16.3
+2.17.0
++++++ wine-staging-3.6.tar.xz -> wine-staging-3.7.tar.xz ++++++
/work/SRC/openSUSE:Factory/wine/wine-staging-3.6.tar.xz /work/SRC/openSUSE:Factory/.wine.new/wine-staging-3.7.tar.xz differ: char 26, line 1
++++++ winetricks ++++++
--- /var/tmp/diff_new_pack.AJehyi/_old 2018-05-01 23:27:19.492460088 +0200
+++ /var/tmp/diff_new_pack.AJehyi/_new 2018-05-01 23:27:19.496459942 +0200
@@ -5342,7 +5342,8 @@
# https://www.microsoft.com/en-us/download/details.aspx?id=24
# https://download.microsoft.com/download/d/3/0/d30e32d8-418a-469d-b600-f32ce…
# Mirror list: http://www.filewatcher.com/m/WindowsXP-KB936929-SP3-x86-ENU.exe.331805736-0…
- w_download_to winxpsp3 ftp://ftp.gnome.org/mirror/archive/ftp.sunet.se/pub/security/vendor/microso… 62e524a552db9f6fd22d469010ea4d7e28ee06fa615a1c34362129f808916654
+ # 2018/04/04: http://www.download.windowsupdate.com/msdownload/update/software/dflt/2008/…
+ w_download_to winxpsp3 ftp://ftp.emacinc.com/LegacyProducts/SBC/drivers/vdx/WINXP/WindowsXP-KB9369… 62e524a552db9f6fd22d469010ea4d7e28ee06fa615a1c34362129f808916654
w_try_cabextract -d "$W_TMP" -L -F "$filename" "$W_CACHE"/winxpsp3/WindowsXP-KB936929-SP3-x86-ENU.exe
}
@@ -5417,6 +5418,8 @@
w_try cp "$W_TMP/amd64_microsoft-windows-directshow-other_31bf3856ad364e35_6.1.7601.17514_none_6b778d68f75a1a54/amstream.dll" "$W_SYSTEM64_DLLS/amstream.dll"
fi
+ w_try_regsvr amstream.dll
+
w_override_dlls native,builtin amstream
}
@@ -12319,53 +12322,6 @@
#----------------------------------------------------------------
-w_metadata picasa39 apps \
- title="Picasa 3.9" \
- publisher="Google" \
- year="2014" \
- file1="picasa39-setup.exe" \
- installed_exe1="$W_PROGRAMS_X86_WIN/Google/Picasa3/Picasa3.exe"
-
-load_picasa39()
-{
- # 2016/01/02: 482c1a547d8d3aa25ee446d30ea986de63ef8c8d68b8d1109dd3d9b714e73e08
-
- w_download https://dl.google.com/picasa/picasa39-setup.exe 482c1a547d8d3aa25ee446d30ea986de63ef8c8d68b8d1109dd3d9b714e73e08
- if w_workaround_wine_bug 29434 "Picasa 3.9 fails to authenticate with Google"; then
- w_warn "Picasa 3.9 authentication to the Google account is currently broken under wine. See https://bugs.winehq.org/show_bug.cgi?id=29434 for more details."
- fi
- w_try_cd "$W_CACHE/$W_PACKAGE"
- w_ahk_do "
- SetTitleMatchMode, 2
- run picasa39-setup.exe
- WinWait, Picasa 3 Setup
- if ( w_opt_unattended > 0 ) {
- Sleep 1000
- ControlClick Button2 ;I Agree - License
- Sleep 1000
- WinWait, Picasa 3 Setup, Choose Install Location
- ControlClick Button2 ;Install
- Sleep 1000
- WinWait, Picasa 3 Setup, Picasa 3 has been installed on your computer
- Sleep 500
- ControlClick Button5 ; Desktop Icon
- Sleep 500
- ControlClick Button6 ; Quick Launch
- Sleep 500
- ControlClick Button7 ; Default search off
- Sleep 500
- ControlClick Button8 ; Usage statistics sent
- Sleep 500
- ControlClick Button4 ; Run Picasa
- Sleep 500
- ControlClick Button2 ; Finish
- }
- WinWaitClose
- "
-}
-
-#----------------------------------------------------------------
-
w_metadata protectionid apps \
title="Protection ID" \
publisher="CDKiLLER & TippeX" \
@@ -16753,40 +16709,6 @@
}
#----------------------------------------------------------------
-
-w_metadata plantsvszombies games \
- title="Plants vs. Zombies" \
- publisher="PopCap Games" \
- year="2009" \
- media="download" \
- file1="PlantsVsZombiesSetup.exe" \
- installed_file1="$W_PROGRAMS_X86_WIN/PopCap Games/Plants vs. Zombies/PlantsVsZombies.exe"
-
-load_plantsvszombies()
-{
- w_download "https://downloads.popcap.com/www/popcap_downloads/PlantsVsZombiesSetup.exe" 4b4bb4d19fb639e5698983e39d7ad061c7667bcec19056560532c7ad0d67d0e4
-
- w_try_cd "$W_CACHE/$W_PACKAGE"
- w_ahk_do "
- run PlantsVsZombiesSetup.exe
- winwait, Plants vs. Zombies Installer
- if ( w_opt_unattended > 0 ) {
- sleep 1000
- send {Enter}
- winwait, Plants vs. Zombies License Agreement
- ControlClick Button1
- }
- winwait, Plants vs. Zombies Installation Complete!
- if ( w_opt_unattended > 0 ) {
- sleep 1000
- send {Space}{Enter}
- ControlClick, x309 y278, Plants vs. Zombies Installation Complete!,,,, Pos
- }
- WinWaitClose
- "
-}
-
-#----------------------------------------------------------------
w_metadata popfs games \
title="Prince of Persia: The Forgotten Sands" \
1
0
Hello community,
here is the log from the commit of package quassel for openSUSE:Factory checked in at 2018-05-01 23:26:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/quassel (Old)
and /work/SRC/openSUSE:Factory/.quassel.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "quassel"
Tue May 1 23:26:29 2018 rev:38 rq:602577 version:0.12.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/quassel/quassel.changes 2018-04-27 16:08:02.909094093 +0200
+++ /work/SRC/openSUSE:Factory/.quassel.new/quassel.changes 2018-05-01 23:26:31.510204677 +0200
@@ -1,0 +2,6 @@
+Mon Apr 30 14:19:49 UTC 2018 - jengelh(a)inai.de
+
+- Trim bias and filler wording from descriptions.
+- Stop ignoring errors from useradd/groupadd.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ quassel.spec ++++++
--- /var/tmp/diff_new_pack.w79376/_old 2018-05-01 23:26:32.286176464 +0200
+++ /var/tmp/diff_new_pack.w79376/_new 2018-05-01 23:26:32.290176319 +0200
@@ -23,7 +23,7 @@
Name: quassel
Version: 0.12.5
Release: 0
-Summary: Modern, cross-platform, distributed IRC client
+Summary: Distributed IRC client
License: GPL-2.0-only OR GPL-3.0-only
Group: Productivity/Networking/IRC
URL: http://quassel-irc.org/
@@ -65,17 +65,13 @@
%{?systemd_requires}
%description
-Quassel IRC is a modern, cross-platform, distributed IRC client, meaning that
-one (or multiple) client(s) can attach to and detach from a central core --
-much like the popular combination of screen and a text-based IRC client such
-as WeeChat, but graphical. In addition to this uniqe feature, we aim to bring
-a pleasurable, comfortable chatting experience to all major platforms (including
-Linux®, Windows®, and MacOS X® as well as Qtopia-based cell phones and PDAs),
-making communication with your peers not only convenient, but also ubiquitous
-available.
+Quassel IRC is a distributed IRC client, meaning that one (or
+multiple) client(s) can attach to and detach from a central core --
+much like the combination of GNU Screen and a text-based IRC client
+such as WeeChat, but graphical.
%package mono
-Summary: Modern, cross-platform, distributed IRC client
+Summary: Standalone client for the Quassel IRC client
Group: Productivity/Networking/IRC
Requires: %{name}-base = %{version}
Requires: libqt5_sql_backend
@@ -85,55 +81,43 @@
Provides: %{name}_ui = %{version}
%description mono
-Quassel IRC is a modern, cross-platform, distributed IRC client, meaning that
-one (or multiple) client(s) can attach to and detach from a central core --
-much like the popular combination of screen and a text-based IRC client such
-as WeeChat, but graphical. In addition to this uniqe feature, we aim to bring
-a pleasurable, comfortable chatting experience to all major platforms (including
-Linux®, Windows®, and MacOS X® as well as Qtopia-based cell phones and PDAs),
-making communication with your peers not only convenient, but also ubiquitous
-available.
+Quassel IRC is a distributed IRC client, meaning that one (or
+multiple) client(s) can attach to and detach from a central core --
+much like the combination of GNU Screen and a text-based IRC client
+such as WeeChat, but graphical.
-This is the quassel standalone client
+This is the quassel standalone client.
%package client
-Summary: Modern, cross-platform, distributed IRC client
+Summary: KDE client for the Quassel IRC client
Group: Productivity/Networking/IRC
Requires: %{name}-base = %{version}
Provides: %{name}_ui = %{version}
%description client
-Quassel IRC is a modern, cross-platform, distributed IRC client, meaning that
-one (or multiple) client(s) can attach to and detach from a central core --
-much like the popular combination of screen and a text-based IRC client such
-as WeeChat, but graphical. In addition to this uniqe feature, we aim to bring
-a pleasurable, comfortable chatting experience to all major platforms (including
-Linux®, Windows®, and MacOS X® as well as Qtopia-based cell phones and PDAs),
-making communication with your peers not only convenient, but also ubiquitous
-available.
+Quassel IRC is a distributed IRC client, meaning that one (or
+multiple) client(s) can attach to and detach from a central core --
+much like the combination of GNU Screen and a text-based IRC client
+such as WeeChat, but graphical.
-This is the quassel KDE client only
+This is the quassel KDE client only.
%package client-qt5
-Summary: Modern, cross-platform, distributed IRC client
+Summary: Qt5 client for the Quassel IRC client
Group: Productivity/Networking/IRC
Requires: %{name}-base = %{version}
Provides: %{name}_ui = %{version}
%description client-qt5
-Quassel IRC is a modern, cross-platform, distributed IRC client, meaning that
-one (or multiple) client(s) can attach to and detach from a central core --
-much like the popular combination of screen and a text-based IRC client such
-as WeeChat, but graphical. In addition to this uniqe feature, we aim to bring
-a pleasurable, comfortable chatting experience to all major platforms (including
-Linux®, Windows®, and MacOS X® as well as Qtopia-based cell phones and PDAs),
-making communication with your peers not only convenient, but also ubiquitous
-available.
+Quassel IRC is a distributed IRC client, meaning that one (or
+multiple) client(s) can attach to and detach from a central core --
+much like the combination of GNU Screen and a text-based IRC client
+such as WeeChat, but graphical.
This is the quassel Qt5 client only
%package core
-Summary: Modern, cross-platform, distributed IRC client
+Summary: Core program for the Quassel IRC client
Group: Productivity/Networking/IRC
Requires: libqt5_sql_backend
Requires: logrotate
@@ -142,33 +126,25 @@
Recommends: libqt5-sql-sqlite
%description core
-Quassel IRC is a modern, cross-platform, distributed IRC client, meaning that
-one (or multiple) client(s) can attach to and detach from a central core --
-much like the popular combination of screen and a text-based IRC client such
-as WeeChat, but graphical. In addition to this uniqe feature, we aim to bring
-a pleasurable, comfortable chatting experience to all major platforms (including
-Linux®, Windows®, and MacOS X® as well as Qtopia-based cell phones and PDAs),
-making communication with your peers not only convenient, but also ubiquitous
-available.
+Quassel IRC is a distributed IRC client, meaning that one (or
+multiple) client(s) can attach to and detach from a central core --
+much like the combination of GNU Screen and a text-based IRC client
+such as WeeChat, but graphical.
-This is the core only
+This is the core only.
%package base
-Summary: Modern, cross-platform, distributed IRC client
+Summary: Base files for the Quassel IRC client
Group: Productivity/Networking/IRC
Requires: %{name}_ui = %{version}
%description base
-Quassel IRC is a modern, cross-platform, distributed IRC client, meaning that
-one (or multiple) client(s) can attach to and detach from a central core --
-much like the popular combination of screen and a text-based IRC client such
-as WeeChat, but graphical. In addition to this uniqe feature, we aim to bring
-a pleasurable, comfortable chatting experience to all major platforms (including
-Linux®, Windows®, and MacOS X® as well as Qtopia-based cell phones and PDAs),
-making communication with your peers not only convenient, but also ubiquitous
-available.
+Quassel IRC is a distributed IRC client, meaning that one (or
+multiple) client(s) can attach to and detach from a central core --
+much like the combination of GNU Screen and a text-based IRC client
+such as WeeChat, but graphical.
-This contains common parts shared by %{name} and %{name}-client
+This contains common parts shared by %{name} and %{name}-client.
%prep
%setup -q
@@ -197,7 +173,7 @@
touch %{buildroot}%{_sysconfdir}/alternatives/quasselclient
ln -sf %{_sysconfdir}/alternatives/quasselclient %{buildroot}%{_bindir}/quasselclient
-%fdupes %{buildroot}
+%fdupes %{buildroot}/%{_prefix}
install -d -m 755 %{buildroot}%{_localstatedir}/lib/%{name}core
install -d -m 755 %{buildroot}%{_sbindir}
mkdir -p %{buildroot}%{_unitdir}
@@ -210,9 +186,9 @@
install -D -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/%{name}
%pre core
-%{_bindir}/getent group %{name}core >/dev/null || %{_sbindir}/groupadd -r %{name}core || :
+%{_bindir}/getent group %{name}core >/dev/null || %{_sbindir}/groupadd -r %{name}core
%{_bindir}/getent passwd %{name}core >/dev/null || %{_sbindir}/useradd -r -d %{_localstatedir}/lib/%{name}core \
- -s /bin/false -c "%{name}core daemon" -g %{name}core %{name}core || :
+ -s /bin/false -c "%{name}core daemon" -g %{name}core %{name}core
%service_add_pre quasselcore.service
%post core
1
0
Hello community,
here is the log from the commit of package gf2x for openSUSE:Factory checked in at 2018-05-01 23:25:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gf2x (Old)
and /work/SRC/openSUSE:Factory/.gf2x.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gf2x"
Tue May 1 23:25:45 2018 rev:7 rq:602572 version:1.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/gf2x/gf2x.changes 2018-01-23 13:52:21.939362507 +0100
+++ /work/SRC/openSUSE:Factory/.gf2x.new/gf2x.changes 2018-05-01 23:25:47.867791420 +0200
@@ -1,0 +2,5 @@
+Mon Apr 30 14:37:35 UTC 2018 - jengelh(a)inai.de
+
+- Ensure neutrality of description.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gf2x.spec ++++++
--- /var/tmp/diff_new_pack.5bqww8/_old 2018-05-01 23:25:48.695761317 +0200
+++ /var/tmp/diff_new_pack.5bqww8/_new 2018-05-01 23:25:48.695761317 +0200
@@ -1,7 +1,7 @@
#
# spec file for package gf2x
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 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
@@ -21,7 +21,7 @@
Version: 1.2
Release: 0
Summary: Library for multiplication over the GF(2) field
-License: GPL-3.0+
+License: GPL-3.0-or-later
Group: Productivity/Scientific/Math
Url: https://gforge.inria.fr/projects/gf2x/
@@ -33,7 +33,7 @@
BuildRequires: libtool
%description
-gf2x is a library for fast multiplication of polynomials over the
+gf2x is a library for multiplication of polynomials over the
GF(2) binary field.
%package -n %lname
@@ -41,11 +41,11 @@
Group: System/Libraries
%description -n %lname
-gf2x is a library for fast multiplication of polynomials over the
+gf2x is a library for multiplication of polynomials over the
GF(2) binary field.
%package devel
-Summary: Development files for libgf2x
+Summary: Development headers for libgf2x
Group: Development/Libraries/C and C++
Requires: %lname = %version
@@ -53,7 +53,7 @@
gf2x is a library for fast multiplication of polynomials over the
GF(2) binary field.
-This package contains the headers for the gf2x library.
+This package contains the interface definitions for the gf2x library.
%prep
%setup -q
1
0
Hello community,
here is the log from the commit of package aubio for openSUSE:Factory checked in at 2018-05-01 23:24:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aubio (Old)
and /work/SRC/openSUSE:Factory/.aubio.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aubio"
Tue May 1 23:24:43 2018 rev:23 rq:599999 version:0.4.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/aubio/aubio.changes 2018-03-26 13:08:36.161398177 +0200
+++ /work/SRC/openSUSE:Factory/.aubio.new/aubio.changes 2018-05-01 23:24:48.273958037 +0200
@@ -1,0 +2,5 @@
+Sat Apr 21 12:55:33 UTC 2018 - jengelh(a)inai.de
+
+- Explicitly request ffmpeg 3.x for building
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aubio.spec ++++++
--- /var/tmp/diff_new_pack.SIShF7/_old 2018-05-01 23:24:49.089928372 +0200
+++ /var/tmp/diff_new_pack.SIShF7/_new 2018-05-01 23:24:49.093928227 +0200
@@ -24,6 +24,7 @@
BuildRequires: alsa-devel
BuildRequires: doxygen
%if 0%{?suse_version} > 1320 || (0%{?suse_version} == 1315 && 0%{?is_opensuse})
+BuildRequires: ffmpeg3-devel
BuildRequires: txt2man
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavformat)
1
0
Hello community,
here is the log from the commit of package libopenshot for openSUSE:Factory checked in at 2018-05-01 23:23:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libopenshot (Old)
and /work/SRC/openSUSE:Factory/.libopenshot.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libopenshot"
Tue May 1 23:23:59 2018 rev:2 rq:599870 version:0.1.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/libopenshot/libopenshot.changes 2018-03-18 21:44:27.166560738 +0100
+++ /work/SRC/openSUSE:Factory/.libopenshot.new/libopenshot.changes 2018-05-01 23:24:01.563656187 +0200
@@ -1,0 +2,5 @@
+Sat Apr 21 12:56:48 UTC 2018 - jengelh(a)inai.de
+
+- Explicitly request ffmpeg 3.x for building
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libopenshot.spec ++++++
--- /var/tmp/diff_new_pack.C5xkAe/_old 2018-05-01 23:24:02.471623178 +0200
+++ /var/tmp/diff_new_pack.C5xkAe/_new 2018-05-01 23:24:02.471623178 +0200
@@ -1,7 +1,7 @@
#
# spec file for package libopenshot
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 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
@@ -21,22 +21,25 @@
Version: 0.1.9
Release: 0
Summary: The core library for the OpenShot video editor
-License: LGPL-3.0+
+License: LGPL-3.0-or-later
Group: Productivity/Multimedia/Other
Url: http://openshot.org/
Source0: libopenshot-%{version}.tar.xz
+BuildRequires: ImageMagick-devel
BuildRequires: cmake
+BuildRequires: cppzmq-devel
+BuildRequires: ffmpeg3-devel
BuildRequires: gcc-c++
BuildRequires: libopenshot-audio-devel
-BuildRequires: cppzmq-devel
BuildRequires: pkgconfig
BuildRequires: swig
-BuildRequires: ImageMagick-devel
BuildRequires: pkgconfig(Qt5Core) >= 5.2.0
BuildRequires: pkgconfig(Qt5Gui)
BuildRequires: pkgconfig(Qt5Multimedia)
BuildRequires: pkgconfig(Qt5MultimediaWidgets)
BuildRequires: pkgconfig(Qt5Widgets)
+# currently broken at compile time
+#BuildRequires: pkgconfig(Magick++)
BuildRequires: pkgconfig(UnitTest++)
BuildRequires: pkgconfig(jsoncpp)
BuildRequires: pkgconfig(libavcodec)
@@ -46,8 +49,9 @@
BuildRequires: pkgconfig(libavresample)
BuildRequires: pkgconfig(libavutil)
BuildRequires: pkgconfig(libswscale)
-#BuildRequires: pkgconfig(libzmq)
BuildRequires: pkgconfig(python3)
+# currently broken at compile time
+#BuildRequires: ruby-devel
%description
A library for video editing, composition, animation, and playback,
1
0
Hello community,
here is the log from the commit of package audaspace for openSUSE:Factory checked in at 2018-05-01 23:23:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/audaspace (Old)
and /work/SRC/openSUSE:Factory/.audaspace.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "audaspace"
Tue May 1 23:23:11 2018 rev:12 rq:599679 version:1.3.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/audaspace/audaspace.changes 2017-10-24 22:24:42.844666218 +0200
+++ /work/SRC/openSUSE:Factory/.audaspace.new/audaspace.changes 2018-05-01 23:23:16.893280118 +0200
@@ -1,0 +2,5 @@
+Sat Apr 21 12:56:08 UTC 2018 - jengelh(a)inai.de
+
+- Explicitly request ffmpeg 3.x for building
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ audaspace.spec ++++++
--- /var/tmp/diff_new_pack.0b6lZc/_old 2018-05-01 23:23:17.669251908 +0200
+++ /var/tmp/diff_new_pack.0b6lZc/_new 2018-05-01 23:23:17.673251763 +0200
@@ -1,7 +1,7 @@
#
# spec file for package audaspace
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 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
@@ -38,6 +38,7 @@
BuildRequires: doxygen
BuildRequires: fdupes
%if 0%{?suse_version} > 1320 || 0%{is_opensuse} == 1
+BuildRequires: ffmpeg3-devel
BuildRequires: pkgconfig(fftw3)
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavformat)
1
0
Hello community,
here is the log from the commit of package libgroove for openSUSE:Factory checked in at 2018-05-01 23:22:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libgroove (Old)
and /work/SRC/openSUSE:Factory/.libgroove.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libgroove"
Tue May 1 23:22:26 2018 rev:2 rq:599614 version:4.3.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/libgroove/libgroove.changes 2017-11-03 16:27:51.361646639 +0100
+++ /work/SRC/openSUSE:Factory/.libgroove.new/libgroove.changes 2018-05-01 23:22:28.679032817 +0200
@@ -1,0 +2,5 @@
+Sat Apr 21 12:56:48 UTC 2018 - jengelh(a)inai.de
+
+- Explicitly request ffmpeg 3.x for building
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libgroove.spec ++++++
--- /var/tmp/diff_new_pack.CQJ8HU/_old 2018-05-01 23:22:30.146979455 +0200
+++ /var/tmp/diff_new_pack.CQJ8HU/_new 2018-05-01 23:22:30.150979310 +0200
@@ -1,7 +1,7 @@
#
# spec file for package libgroove
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 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
@@ -38,6 +38,7 @@
# PATCH-FIX-UPSTREAM libgroove-4.3.0-no_Werror0.patch -- borrowed from debian, fixes Factory build
Patch3: libgroove-4.3.0-no_Werror.patch
BuildRequires: cmake
+BuildRequires: ffmpeg3-devel
BuildRequires: libebur128-devel
BuildRequires: pkgconfig
BuildRequires: pkgconfig(libavcodec)
1
0