openSUSE Commits
Threads by month
- ----- 2024 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
April 2018
- 1 participants
- 1679 discussions
Hello community,
here is the log from the commit of package mint-themes for openSUSE:Factory checked in at 2018-04-30 22:57:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mint-themes (Old)
and /work/SRC/openSUSE:Factory/.mint-themes.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mint-themes"
Mon Apr 30 22:57:07 2018 rev:2 rq:602398 version:1.6.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/mint-themes/mint-themes.changes 2018-03-19 23:38:17.197551589 +0100
+++ /work/SRC/openSUSE:Factory/.mint-themes.new/mint-themes.changes 2018-04-30 22:59:09.267988694 +0200
@@ -1,0 +2,83 @@
+Sat Apr 28 20:12:30 UTC 2018 - sor.alexei(a)meowr.ru
+
+- Update to version 1.6.2:
+ * Remove an accidentally included directory from Mint-Y.
+ * Mint-Y: Add some theming for slick greeter.
+ * Mint-Y: Quiet a couple warnings in the gtk3 theme from unused
+ properties.
+ * Mint-X, Mint-Y: Add window-list-preview.
+ * Mint-Y-Cinnamon: Small cleanup for the window list preview.
+ * Mint-Y-Cinnamon: Clean up panel launcher placement.
+ * Mint-Y: Make a few improvements for mate-panel.
+ * Mint-Y-Cinnamon: Clean up a bunch of unused variables.
+ * Mint-Y-Gtk3: Improve the styling of the list box header in Mint
+ settings windows.
+ * Mint-Y-Gtk3: Improve the hover effect on listbox rows.
+ * Mint-Y-Gtk3: Fix the background color of the stacksidebar
+ listbox.
+ * Mint-Y-Gtk3: Fix the color of the sidebar in GtkFileChooser.
+ * Mint-Y-Gtk3: Make sure circular buttons are actually circular.
+ * Linux Mint: Add window-list-preview class.
+ * Mint-X-Gtk3: Start updating for gtk3.22
+ * Mint-X-Gtk3: Fix theming of wide paned vertical separators.
+ * [Mint-X/Cinnamon] Cleanup and fixes.
+ * Mint-X-Gtk3: Clean up the styling of cinnamon-apps a bit.
+ * Mint-X-Gtk3: Quiet the remaining warnings.
+ * Mint-X-Gtk3: Improve check and radio items a bit.
+ * Mint-X-Gtk3: Add some basic theming for GtkExpander.
+ * Mint-X-Gtk3: Clean up treeviews a bit.
+ * Mint-X-Gtk3: Fix a weird border on menus.
+ * Mint-X-Gtk3: Fix the style of popover menu items.
+ * Mint-X-Gtk3: Do some more small cleanups.
+ * Mint-X-Gtk3: Fix a double border on paned sidebars.
+ * Mint-X-Gtk3: Add theming for terminal and xed.
+ * Mint-X-Gtk3: Hide separator in file and font buttons.
+ * Mint-X-Gtk3: Fix styling of the appmenu button.
+ * Mint-X-Gtk3: Remove unused pix theming.
+ * Mint-X-Gtk3: Add styling for nemo rename entries.
+ * Mint-X-Gtk3: Improve some insensitive icon and label colours.
+ * Mint-X-Gtk3: Fix theming for GtkCalendar.
+ * Mint-X-Gtk3: Clean up some commented out garbage.
+ * Mint-X-Gtk3: Fix GtkAssistant styling.
+ * Mint-Y: Correct font to font-size in window list preview.
+ * Mint-X-Gtk3: Fix the styling for GtkColorChooser.
+ * Mint-X-Gtk3: Update some theming for content views.
+ * Remove unused style and unused images.
+ * Styling homogenisation.
+ * Mint-X-Gtk3: Add assets for header/titlebar window controls.
+ * Mint-X-Gtk3: Update theming for lightdm.
+ * Mint-X-Gtk3: Remove unused asset images.
+ * Mint-X-Gtk3: Update infobar styling.
+ * Mint-X-Gtk3: Fix toolbar padding.
+ * [Mint-X/Cinnamon] Cleanup and fixes.
+ * Mint-X-Gtk3: Fix some header/titlebar padding issues.
+ * Mint-X-Gtk3: Add support for GtkShortcutsWindow.
+ * Mint-Y-Gtk3: Fix oversized tabs in places like gnome terminal
+ notebooks.
+ * Mint-Y-Gtk3: Add back just a bit of padding to buttons in
+ terminal headers.
+ * Mint-Y-Gtk3: Fix disabled colors in dark header/toolbars.
+ * [Mint-X/Cinnamon] Fix modal dialogues button shifting when
+ buttons are focused.
+ * Mint-X-Gtk3: Fix a few random selectors.
+ * Mint-X-Gtk3: Add some catch all selectors for selected items.
+ * Mint-Y-Gtk3: Adapt to the changes in the nemo sidebar.
+ * Mint-Y-Gtk3: Couple of nemo improvements.
+ * Mint-Y-Gtk3: Use a dark sidebar in caja.
+ * Mint-Y-Gtk3: Update some xfce4 panel theming.
+ * Mint-Y: More Xfce4 panel fixes.
+ * Mint-Y: Add sticky/shade/menu icons.
+ * Mint-Y-Cinnamon: Use Noto Sans as the base font.
+ * Mint-X-Gtk3: Clean up a couple of errors and unused selectors.
+ * Mint-Y-Gtk3: Fix the Nemo sidebar separator.
+ * Cinnamon: Sound applet player buttons.
+ * Cinnamon: window-list modifications in LM theme.
+ * Mint-Y-Gtk3: Improve the styling of the linked entry in
+ mintinstall.
+ * Mint-X*: Improve assets and progress colours.
+ * Mint-X-Gtk3: Fix the colour of buttons inside of infobars.
+ * All-Gtk3: Add proper support for GtkTreeview dnd.
+ * Clean up unused styles.
+ * Some fixes.
+
+-------------------------------------------------------------------
Old:
----
mint-themes_1.6.1.tar.xz
New:
----
mint-themes_1.6.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mint-themes.spec ++++++
--- /var/tmp/diff_new_pack.vK5koS/_old 2018-04-30 22:59:10.187955124 +0200
+++ /var/tmp/diff_new_pack.vK5koS/_new 2018-04-30 22:59:10.191954979 +0200
@@ -18,7 +18,7 @@
%define _name mint
Name: mint-themes
-Version: 1.6.1
+Version: 1.6.2
Release: 0
Summary: Mint Themes
License: GPL-3.0-or-later
@@ -82,11 +82,7 @@
%fdupes %{buildroot}%{_datadir}/themes/
%files -n metatheme-%{_name}-common
-%if 0%{?suse_version} >= 1500
%license debian/copyright
-%else
-%doc debian/copyright
-%endif
%doc debian/changelog
%{_datadir}/themes/Mint*/
%exclude %{_datadir}/themes/Mint*/gtk-?.0/
++++++ mint-themes_1.6.1.tar.xz -> mint-themes_1.6.2.tar.xz ++++++
++++ 26482 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-numpydoc for openSUSE:Factory checked in at 2018-04-30 22:56:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-numpydoc (Old)
and /work/SRC/openSUSE:Factory/.python-numpydoc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-numpydoc"
Mon Apr 30 22:56:56 2018 rev:8 rq:602336 version:0.8.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-numpydoc/python-numpydoc.changes 2017-10-09 19:40:54.046888319 +0200
+++ /work/SRC/openSUSE:Factory/.python-numpydoc.new/python-numpydoc.changes 2018-04-30 22:59:06.932073930 +0200
@@ -1,0 +2,51 @@
+Sun Apr 29 04:11:15 UTC 2018 - arun(a)gmx.de
+
+- specfile:
+ * update copyright year
+ * require Jinja (from setup.py)
+ * always run tests
+
+- update to version 0.8.0:
+ * DOC: update URL to documentation in setup.py
+ * Use isdatadescriptor instead of isgetsetdescriptor
+ * Ensure reference renaming is parallel-safe (#136)
+ * Simplify and restructure README
+ * Automatically load autosummary (#143)
+ * FIX Handle case where description is empty in returns (#148)
+ * FIX handling of parameter names ending '_'
+ * Handle case where description is empty (#140)
+ * Correct deduplication logic
+ * Make sure case when class + method docstrings are combined is not
+ reprocessed
+ * Avoid reprocessing already numpydocced docstrings
+ * DOC Use .. deprecated for deprecation instead of .. note (#120)
+ * Add required arg to setup so that nose does not call it
+ * Cosmetic and efficiency improvements to replace_referneces (#132)
+ * Remove comment autosummary from _str_param_list
+ * Flake8
+ * Make version available to Python without dependencies; and to
+ Sphinx metadata
+ * Test use_blockquotes config
+ * Leading and trailing blank lines in parameter description should
+ not affect output
+ * Stricter comparison of whitespace in testing
+ * Corret search syntax
+ * Use definition lists rather than blockquotes
+ * Support from matplotlib import as alias for import matplotlib
+ * only recommend inline form
+ * add documentation on hyperlinks
+ * DOC: fix syntax error in deprecated of numpydoc_edit_link (#122)
+ * DOC Note on section ordering, and add missing sections
+ * DOC Fix link
+ * DOC: Restore working conf.py
+ * DOC: cross-link to github from documentation
+ * Add doc build requirements file for readthedocs
+ * Corrected rtd url
+ * Older versions of sphinx do not have imgmath
+ * DOC: pipe README.rst contents into "long_description", for PyPI
+ frontpage
+ * MAINT: update ReST formatting in README.
+ * Basic docs based on Numpy's HOW_TO_DOCUMENT.rst.txt
+ * Allow see also object ref to incorporate ~ prefix
+
+-------------------------------------------------------------------
Old:
----
numpydoc-0.7.0.tar.gz
New:
----
numpydoc-0.8.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-numpydoc.spec ++++++
--- /var/tmp/diff_new_pack.DgaZk2/_old 2018-04-30 22:59:07.396057000 +0200
+++ /var/tmp/diff_new_pack.DgaZk2/_new 2018-04-30 22:59:07.400056854 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-numpydoc
#
-# 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
@@ -16,28 +16,24 @@
#
-%bcond_without tests
-
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-numpydoc
-Version: 0.7.0
+Version: 0.8.0
Release: 0
Summary: Sphinx extension to support docstrings in Numpy format
License: BSD-3-Clause
Group: Development/Languages/Python
-Url: https://github.com/numpy/numpydoc
+URL: https://github.com/numpy/numpydoc
Source: https://files.pythonhosted.org/packages/source/n/numpydoc/numpydoc-%{versio…
+BuildRequires: %{python_module Sphinx >= 1.0.1}
BuildRequires: %{python_module devel >= 2.7.7}
+BuildRequires: %{python_module matplotlib}
+BuildRequires: %{python_module nose}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-%if %{with tests}
-BuildRequires: %{python_module Sphinx >= 1.0.1}
-BuildRequires: %{python_module matplotlib}
-BuildRequires: %{python_module nose}
-%endif
+Requires: python-Jinja2 >= 2.3
Requires: python-Sphinx >= 1.0.1
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
%python_subpackages
@@ -56,14 +52,12 @@
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
-%if %{with tests}
%check
%python_exec setup.py -q test
-%endif
%files %{python_files}
-%defattr(-,root,root,-)
-%doc LICENSE.txt README.rst
+%license LICENSE.txt
+%doc README.rst
%{python_sitelib}/numpydoc/
%{python_sitelib}/numpydoc-%{version}-py*.egg-info
++++++ numpydoc-0.7.0.tar.gz -> numpydoc-0.8.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numpydoc-0.7.0/LICENSE.txt new/numpydoc-0.8.0/LICENSE.txt
--- old/numpydoc-0.7.0/LICENSE.txt 2014-01-12 11:49:19.000000000 +0100
+++ new/numpydoc-0.8.0/LICENSE.txt 2018-03-30 06:00:21.000000000 +0200
@@ -1,11 +1,3 @@
--------------------------------------------------------------------------------
- The files
- - numpydoc.py
- - docscrape.py
- - docscrape_sphinx.py
- - phantom_import.py
- have the following license:
-
Copyright (C) 2008 Stefan van der Walt <stefan(a)mentat.za.net>, Pauli Virtanen <pav(a)iki.fi>
Redistribution and use in source and binary forms, with or without
@@ -30,65 +22,3 @@
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-
--------------------------------------------------------------------------------
- The files
- - compiler_unparse.py
- - comment_eater.py
- - traitsdoc.py
- have the following license:
-
-This software is OSI Certified Open Source Software.
-OSI Certified is a certification mark of the Open Source Initiative.
-
-Copyright (c) 2006, Enthought, Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of Enthought, Inc. nor the names of its contributors may
- be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
--------------------------------------------------------------------------------
- The file
- - plot_directive.py
- originates from Matplotlib (http://matplotlib.sf.net/) which has
- the following license:
-
-Copyright (c) 2002-2008 John D. Hunter; All Rights Reserved.
-
-1. This LICENSE AGREEMENT is between John D. Hunter (“JDH”), and the Individual or Organization (“Licensee”) accessing and otherwise using matplotlib software in source or binary form and its associated documentation.
-
-2. Subject to the terms and conditions of this License Agreement, JDH hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use matplotlib 0.98.3 alone or in any derivative version, provided, however, that JDH’s License Agreement and JDH’s notice of copyright, i.e., “Copyright (c) 2002-2008 John D. Hunter; All Rights Reserved” are retained in matplotlib 0.98.3 alone or in any derivative version prepared by Licensee.
-
-3. In the event Licensee prepares a derivative work that is based on or incorporates matplotlib 0.98.3 or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to matplotlib 0.98.3.
-
-4. JDH is making matplotlib 0.98.3 available to Licensee on an “AS IS” basis. JDH MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, JDH MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF MATPLOTLIB 0.98.3 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
-
-5. JDH SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF MATPLOTLIB 0.98.3 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING MATPLOTLIB 0.98.3, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
-
-6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.
-
-7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between JDH and Licensee. This License Agreement does not grant permission to use JDH trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.
-
-8. By copying, installing or otherwise using matplotlib 0.98.3, Licensee agrees to be bound by the terms and conditions of this License Agreement.
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numpydoc-0.7.0/PKG-INFO new/numpydoc-0.8.0/PKG-INFO
--- old/numpydoc-0.7.0/PKG-INFO 2017-06-20 11:53:10.000000000 +0200
+++ new/numpydoc-0.8.0/PKG-INFO 2018-03-31 01:49:05.000000000 +0200
@@ -1,12 +1,39 @@
Metadata-Version: 1.1
Name: numpydoc
-Version: 0.7.0
+Version: 0.8.0
Summary: Sphinx extension to support docstrings in Numpy format
-Home-page: https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt
+Home-page: https://numpydoc.readthedocs.io
Author: Pauli Virtanen and others
Author-email: pav(a)iki.fi
License: BSD
-Description: UNKNOWN
+Description-Content-Type: UNKNOWN
+Description: .. image:: https://travis-ci.org/numpy/numpydoc.png?branch=master
+ :target: https://travis-ci.org/numpy/numpydoc/
+
+ .. |docs| image:: https://readthedocs.org/projects/numpydoc/badge/?version=latest
+ :alt: Documentation Status
+ :scale: 100%
+ :target: https://numpydoc.readthedocs.io/en/latest/?badge=latest
+
+
+ =====================================
+ numpydoc -- Numpy's Sphinx extensions
+ =====================================
+
+ This package provides the ``numpydoc`` Sphinx extension for handling
+ docstrings formatted according to the `NumPy documentation format
+ <https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt>`__.
+ The extension also adds the code description directives
+ ``np:function``, ``np-c:function``, etc.
+
+ For usage information, please refer to the `documentation
+ <https://numpydoc.readthedocs.io/>`_.
+
+ The `numpydoc docstring guide
+ <https://numpydoc.readthedocs.io/en/latest/format.html>`_ explains how
+ to write docs formatted for this extension, and the `user guide
+ <https://numpydoc.readthedocs.io>`_ explains how to use it with Sphinx.
+
Keywords: sphinx numpy
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numpydoc-0.7.0/README.rst new/numpydoc-0.8.0/README.rst
--- old/numpydoc-0.7.0/README.rst 2015-04-07 22:56:26.000000000 +0200
+++ new/numpydoc-0.8.0/README.rst 2018-03-30 06:00:21.000000000 +0200
@@ -1,65 +1,26 @@
.. image:: https://travis-ci.org/numpy/numpydoc.png?branch=master
:target: https://travis-ci.org/numpy/numpydoc/
+.. |docs| image:: https://readthedocs.org/projects/numpydoc/badge/?version=latest
+ :alt: Documentation Status
+ :scale: 100%
+ :target: https://numpydoc.readthedocs.io/en/latest/?badge=latest
+
+
=====================================
numpydoc -- Numpy's Sphinx extensions
=====================================
-Numpy's documentation uses several custom extensions to Sphinx. These
-are shipped in this ``numpydoc`` package, in case you want to make use
-of them in third-party projects.
-
-The following extensions are available:
-
- - ``numpydoc``: support for the Numpy docstring format in Sphinx, and add
- the code description directives ``np:function``, ``np-c:function``, etc.
- that support the Numpy docstring syntax.
-
- - ``numpydoc.traitsdoc``: For gathering documentation about Traits attributes.
-
- - ``numpydoc.plot_directive``: Adaptation of Matplotlib's ``plot::``
- directive. Note that this implementation may still undergo severe
- changes or eventually be deprecated.
-
-See `A Guide to NumPy/SciPy Documentation <https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt>`_
-for how to write docs that use this extension.
-
-
-numpydoc
-========
-
-Numpydoc inserts a hook into Sphinx's autodoc that converts docstrings
-following the Numpy/Scipy format to a form palatable to Sphinx.
-
-Options
--------
-
-The following options can be set in conf.py:
-
-- numpydoc_use_plots: bool
-
- Whether to produce ``plot::`` directives for Examples sections that
- contain ``import matplotlib``.
-
-- numpydoc_show_class_members: bool
-
- Whether to show all members of a class in the Methods and Attributes
- sections automatically.
- ``True`` by default.
-
-- numpydoc_show_inherited_class_members: bool
-
- Whether to show all inherited members of a class in the Methods and Attributes
- sections automatically. If it's false, inherited members won't shown.
- ``True`` by default.
-
-- numpydoc_class_members_toctree: bool
-
- Whether to create a Sphinx table of contents for the lists of class
- methods and attributes. If a table of contents is made, Sphinx expects
- each entry to have a separate page.
- ``True`` by default.
-
-- numpydoc_edit_link: bool (DEPRECATED -- edit your HTML template instead)
-
- Whether to insert an edit link after docstrings.
+This package provides the ``numpydoc`` Sphinx extension for handling
+docstrings formatted according to the `NumPy documentation format
+<https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt>`__.
+The extension also adds the code description directives
+``np:function``, ``np-c:function``, etc.
+
+For usage information, please refer to the `documentation
+<https://numpydoc.readthedocs.io/>`_.
+
+The `numpydoc docstring guide
+<https://numpydoc.readthedocs.io/en/latest/format.html>`_ explains how
+to write docs formatted for this extension, and the `user guide
+<https://numpydoc.readthedocs.io>`_ explains how to use it with Sphinx.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numpydoc-0.7.0/numpydoc/__init__.py new/numpydoc-0.8.0/numpydoc/__init__.py
--- old/numpydoc-0.7.0/numpydoc/__init__.py 2017-06-20 11:32:51.000000000 +0200
+++ new/numpydoc-0.8.0/numpydoc/__init__.py 2018-03-31 01:45:04.000000000 +0200
@@ -1,5 +1,8 @@
from __future__ import division, absolute_import, print_function
-__version__ = '0.7.0'
+__version__ = '0.8.0'
-from .numpydoc import setup
+
+def setup(app, *args, **kwargs):
+ from .numpydoc import setup
+ return setup(app, *args, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numpydoc-0.7.0/numpydoc/docscrape.py new/numpydoc-0.8.0/numpydoc/docscrape.py
--- old/numpydoc-0.7.0/numpydoc/docscrape.py 2017-06-20 11:30:40.000000000 +0200
+++ new/numpydoc-0.8.0/numpydoc/docscrape.py 2018-03-31 01:39:19.000000000 +0200
@@ -13,6 +13,15 @@
import sys
+def strip_blank_lines(l):
+ "Remove leading and trailing blank lines from a list of lines"
+ while l and not l[0].strip():
+ del l[0]
+ while l and not l[-1].strip():
+ del l[-1]
+ return l
+
+
class Reader(object):
"""A line-based string reader.
@@ -98,6 +107,12 @@
class NumpyDocString(collections.Mapping):
+ """Parses a numpydoc string to an abstract representation
+
+ Instances define a mapping from section title to structured data.
+
+ """
+
sections = {
'Signature': '',
'Summary': [''],
@@ -136,7 +151,7 @@
def __setitem__(self, key, val):
if key not in self._parsed_data:
- warn("Unknown section %s" % key)
+ self._error_location("Unknown section %s" % key, error=False)
else:
self._parsed_data[key] = val
@@ -208,12 +223,14 @@
desc = r.read_to_next_unindented_line()
desc = dedent_lines(desc)
+ desc = strip_blank_lines(desc)
params.append((arg_name, arg_type, desc))
return params
- _name_rgx = re.compile(r"^\s*(:(?P<role>\w+):`(?P<name>[a-zA-Z0-9_.-]+)`|"
+ _name_rgx = re.compile(r"^\s*(:(?P<role>\w+):"
+ r"`(?P<name>(?:~\w+\.)?[a-zA-Z0-9_.-]+)`|"
r" (?P<name2>[a-zA-Z0-9_.-]+))\s*", re.X)
def _parse_see_also(self, content):
@@ -331,19 +348,8 @@
section = (s.capitalize() for s in section.split(' '))
section = ' '.join(section)
if self.get(section):
- if hasattr(self, '_obj'):
- # we know where the docs came from:
- try:
- filename = inspect.getsourcefile(self._obj)
- except TypeError:
- filename = None
- msg = ("The section %s appears twice in "
- "the docstring of %s in %s." %
- (section, self._obj, filename))
- raise ValueError(msg)
- else:
- msg = ("The section %s appears twice" % section)
- raise ValueError(msg)
+ self._error_location("The section %s appears twice"
+ % section)
if section in ('Parameters', 'Returns', 'Yields', 'Raises',
'Warns', 'Other Parameters', 'Attributes',
@@ -356,6 +362,20 @@
else:
self[section] = content
+ def _error_location(self, msg, error=True):
+ if hasattr(self, '_obj'):
+ # we know where the docs came from:
+ try:
+ filename = inspect.getsourcefile(self._obj)
+ except TypeError:
+ filename = None
+ msg = msg + (" in the docstring of %s in %s."
+ % (self._obj, filename))
+ if error:
+ raise ValueError(msg)
+ else:
+ warn(msg)
+
# string conversion routines
def _str_header(self, name, symbol='-'):
@@ -394,7 +414,8 @@
out += ['%s : %s' % (param, param_type)]
else:
out += [param]
- out += self._str_indent(desc)
+ if desc and ''.join(desc).strip():
+ out += self._str_indent(desc)
out += ['']
return out
@@ -592,7 +613,7 @@
return [name for name, func in inspect.getmembers(self._cls)
if (not name.startswith('_') and
(func is None or isinstance(func, property) or
- inspect.isgetsetdescriptor(func))
+ inspect.isdatadescriptor(func))
and self._is_show_member(name))]
def _is_show_member(self, name):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numpydoc-0.7.0/numpydoc/docscrape_sphinx.py new/numpydoc-0.8.0/numpydoc/docscrape_sphinx.py
--- old/numpydoc-0.7.0/numpydoc/docscrape_sphinx.py 2017-06-18 12:51:07.000000000 +0200
+++ new/numpydoc-0.8.0/numpydoc/docscrape_sphinx.py 2018-03-31 01:39:19.000000000 +0200
@@ -21,6 +21,9 @@
sixu = lambda s: unicode(s, 'unicode_escape')
+IMPORT_MATPLOTLIB_RE = r'\b(import +matplotlib|from +matplotlib +import)\b'
+
+
class SphinxDocString(NumpyDocString):
def __init__(self, docstring, config={}):
NumpyDocString.__init__(self, docstring, config=config)
@@ -28,6 +31,7 @@
def load_config(self, config):
self.use_plots = config.get('use_plots', False)
+ self.use_blockquotes = config.get('use_blockquotes', False)
self.class_members_toctree = config.get('class_members_toctree', True)
self.template = config.get('template', None)
if self.template is None:
@@ -63,37 +67,147 @@
return self['Extended Summary'] + ['']
def _str_returns(self, name='Returns'):
+ typed_fmt = '**%s** : %s'
+ untyped_fmt = '**%s**'
+
out = []
if self[name]:
out += self._str_field_list(name)
out += ['']
for param, param_type, desc in self[name]:
if param_type:
- out += self._str_indent(['**%s** : %s' % (param.strip(),
- param_type)])
+ out += self._str_indent([typed_fmt % (param.strip(),
+ param_type)])
else:
- out += self._str_indent([param.strip()])
- if desc:
+ out += self._str_indent([untyped_fmt % param.strip()])
+ if desc and self.use_blockquotes:
out += ['']
- out += self._str_indent(desc, 8)
+ elif not desc:
+ desc = ['..']
+ out += self._str_indent(desc, 8)
out += ['']
return out
- def _str_param_list(self, name):
+ def _process_param(self, param, desc, fake_autosummary):
+ """Determine how to display a parameter
+
+ Emulates autosummary behavior if fake_autosummary
+
+ Parameters
+ ----------
+ param : str
+ The name of the parameter
+ desc : list of str
+ The parameter description as given in the docstring. This is
+ ignored when autosummary logic applies.
+ fake_autosummary : bool
+ If True, autosummary-style behaviour will apply for params
+ that are attributes of the class and have a docstring.
+
+ Returns
+ -------
+ display_param : str
+ The marked up parameter name for display. This may include a link
+ to the corresponding attribute's own documentation.
+ desc : list of str
+ A list of description lines. This may be identical to the input
+ ``desc``, if ``autosum is None`` or ``param`` is not a class
+ attribute, or it will be a summary of the class attribute's
+ docstring.
+
+ Notes
+ -----
+ This does not have the autosummary functionality to display a method's
+ signature, and hence is not used to format methods. It may be
+ complicated to incorporate autosummary's signature mangling, as it
+ relies on Sphinx's plugin mechanism.
+ """
+ param = param.strip()
+ # XXX: If changing the following, please check the rendering when param
+ # ends with '_', e.g. 'word_'
+ # See https://github.com/numpy/numpydoc/pull/144
+ display_param = '**%s**' % param
+
+ if not fake_autosummary:
+ return display_param, desc
+
+ param_obj = getattr(self._obj, param, None)
+ if not (callable(param_obj)
+ or isinstance(param_obj, property)
+ or inspect.isgetsetdescriptor(param_obj)):
+ param_obj = None
+ obj_doc = pydoc.getdoc(param_obj)
+
+ if not (param_obj and obj_doc):
+ return display_param, desc
+
+ prefix = getattr(self, '_name', '')
+ if prefix:
+ autosum_prefix = '~%s.' % prefix
+ link_prefix = '%s.' % prefix
+ else:
+ autosum_prefix = ''
+ link_prefix = ''
+
+ # Referenced object has a docstring
+ display_param = ':obj:`%s <%s%s>`' % (param,
+ link_prefix,
+ param)
+ if obj_doc:
+ # Overwrite desc. Take summary logic of autosummary
+ desc = re.split('\n\s*\n', obj_doc.strip(), 1)[0]
+ # XXX: Should this have DOTALL?
+ # It does not in autosummary
+ m = re.search(r"^([A-Z].*?\.)(?:\s|$)",
+ ' '.join(desc.split()))
+ if m:
+ desc = m.group(1).strip()
+ else:
+ desc = desc.partition('\n')[0]
+ desc = desc.split('\n')
+ return display_param, desc
+
+ def _str_param_list(self, name, fake_autosummary=False):
+ """Generate RST for a listing of parameters or similar
+
+ Parameter names are displayed as bold text, and descriptions
+ are in blockquotes. Descriptions may therefore contain block
+ markup as well.
+
+ Parameters
+ ----------
+ name : str
+ Section name (e.g. Parameters)
+ fake_autosummary : bool
+ When True, the parameter names may correspond to attributes of the
+ object beign documented, usually ``property`` instances on a class.
+ In this case, names will be linked to fuller descriptions.
+
+ Returns
+ -------
+ rst : list of str
+ """
out = []
if self[name]:
out += self._str_field_list(name)
out += ['']
for param, param_type, desc in self[name]:
+ display_param, desc = self._process_param(param, desc,
+ fake_autosummary)
+
if param_type:
- out += self._str_indent(['**%s** : %s' % (param.strip(),
- param_type)])
+ out += self._str_indent(['%s : %s' % (display_param,
+ param_type)])
else:
- out += self._str_indent(['**%s**' % param.strip()])
- if desc:
+ out += self._str_indent([display_param])
+ if desc and self.use_blockquotes:
out += ['']
- out += self._str_indent(desc, 8)
+ elif not desc:
+ # empty definition
+ desc = ['..']
+ out += self._str_indent(desc, 8)
out += ['']
+
return out
@property
@@ -127,10 +241,10 @@
param_obj = getattr(self._obj, param, None)
if not (callable(param_obj)
or isinstance(param_obj, property)
- or inspect.isgetsetdescriptor(param_obj)):
+ or inspect.isdatadescriptor(param_obj)):
param_obj = None
- if param_obj and (pydoc.getdoc(param_obj) or not desc):
+ if param_obj and pydoc.getdoc(param_obj):
# Referenced object has a docstring
autosum += [" %s%s" % (prefix, param)]
else:
@@ -160,7 +274,6 @@
out = []
if self[name]:
out += self._str_header(name)
- out += ['']
content = textwrap.dedent("\n".join(self[name])).split("\n")
out += content
out += ['']
@@ -179,6 +292,7 @@
if self['Warnings']:
out = ['.. warning::', '']
out += self._str_indent(self['Warnings'])
+ out += ['']
return out
def _str_index(self):
@@ -195,6 +309,7 @@
out += [' single: %s' % (', '.join(references))]
else:
out += [' %s: %s' % (section, ','.join(references))]
+ out += ['']
return out
def _str_references(self):
@@ -222,7 +337,7 @@
def _str_examples(self):
examples_str = "\n".join(self['Examples'])
- if (self.use_plots and 'import matplotlib' in examples_str
+ if (self.use_plots and re.search(IMPORT_MATPLOTLIB_RE, examples_str)
and 'plot::' not in examples_str):
out = []
out += self._str_header('Examples')
@@ -250,7 +365,8 @@
'notes': self._str_section('Notes'),
'references': self._str_references(),
'examples': self._str_examples(),
- 'attributes': self._str_member_list('Attributes'),
+ 'attributes': self._str_param_list('Attributes',
+ fake_autosummary=True),
'methods': self._str_member_list('Methods'),
}
ns = dict((k, '\n'.join(v)) for k, v in ns.items())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numpydoc-0.7.0/numpydoc/numpydoc.py new/numpydoc-0.8.0/numpydoc/numpydoc.py
--- old/numpydoc-0.7.0/numpydoc/numpydoc.py 2017-06-20 11:30:40.000000000 +0200
+++ new/numpydoc-0.8.0/numpydoc/numpydoc.py 2018-03-30 06:00:21.000000000 +0200
@@ -21,14 +21,19 @@
import sys
import re
import pydoc
-import sphinx
import inspect
import collections
+import hashlib
+
+from docutils.nodes import citation, Text
+import sphinx
+from sphinx.addnodes import pending_xref, desc_content
if sphinx.__version__ < '1.0.1':
raise RuntimeError("Sphinx 1.0.1 or newer is required")
from .docscrape_sphinx import get_doc_object, SphinxDocString
+from . import __version__
if sys.version_info[0] >= 3:
sixu = lambda s: s
@@ -36,35 +41,77 @@
sixu = lambda s: unicode(s, 'unicode_escape')
-def rename_references(app, what, name, obj, options, lines,
- reference_offset=[0]):
- # replace reference numbers so that there are no duplicates
- references = []
+HASH_LEN = 12
+
+
+def rename_references(app, what, name, obj, options, lines):
+ # decorate reference numbers so that there are no duplicates
+ # these are later undecorated in the doctree, in relabel_references
+ references = set()
for line in lines:
line = line.strip()
m = re.match(sixu('^.. \\[(%s)\\]') % app.config.numpydoc_citation_re,
line, re.I)
if m:
- references.append(m.group(1))
+ references.add(m.group(1))
if references:
- for i, line in enumerate(lines):
- for r in references:
- if re.match(sixu('^\\d+$'), r):
- new_r = sixu("R%d") % (reference_offset[0] + int(r))
- else:
- new_r = sixu("%s%d") % (r, reference_offset[0])
+ # we use a hash to mangle the reference name to avoid invalid names
+ sha = hashlib.sha256()
+ sha.update(name.encode('utf8'))
+ prefix = 'R' + sha.hexdigest()[:HASH_LEN]
+
+ for r in references:
+ new_r = prefix + '-' + r
+ for i, line in enumerate(lines):
lines[i] = lines[i].replace(sixu('[%s]_') % r,
sixu('[%s]_') % new_r)
lines[i] = lines[i].replace(sixu('.. [%s]') % r,
sixu('.. [%s]') % new_r)
- reference_offset[0] += len(references)
+
+def _ascend(node, cls):
+ while node and not isinstance(node, cls):
+ node = node.parent
+ return node
+
+
+def relabel_references(app, doc):
+ # Change 'hash-ref' to 'ref' in label text
+ for citation_node in doc.traverse(citation):
+ if _ascend(citation_node, desc_content) is None:
+ # no desc node in ancestry -> not in a docstring
+ # XXX: should we also somehow check it's in a References section?
+ continue
+ label_node = citation_node[0]
+ prefix, _, new_label = label_node[0].astext().partition('-')
+ assert len(prefix) == HASH_LEN + 1
+ new_text = Text(new_label)
+ label_node.replace(label_node[0], new_text)
+
+ for id in citation_node['backrefs']:
+ ref = doc.ids[id]
+ ref_text = ref[0]
+
+ # Sphinx has created pending_xref nodes with [reftext] text.
+ def matching_pending_xref(node):
+ return (isinstance(node, pending_xref) and
+ node[0].astext() == '[%s]' % ref_text)
+
+ for xref_node in ref.parent.traverse(matching_pending_xref):
+ xref_node.replace(xref_node[0], Text('[%s]' % new_text))
+ ref.replace(ref_text, new_text.copy())
+
+
+DEDUPLICATION_TAG = ' !! processed by numpydoc !!'
def mangle_docstrings(app, what, name, obj, options, lines):
+ if DEDUPLICATION_TAG in lines:
+ return
cfg = {'use_plots': app.config.numpydoc_use_plots,
+ 'use_blockquotes': app.config.numpydoc_use_blockquotes,
'show_class_members': app.config.numpydoc_show_class_members,
'show_inherited_class_members':
app.config.numpydoc_show_inherited_class_members,
@@ -99,6 +146,8 @@
# duplicates
rename_references(app, what, name, obj, options, lines)
+ lines += ['..', DEDUPLICATION_TAG]
+
def mangle_signature(app, what, name, obj, options, sig, retann):
# Do not try to inspect classes that don't define `__init__`
@@ -129,8 +178,10 @@
app.connect('autodoc-process-docstring', mangle_docstrings)
app.connect('autodoc-process-signature', mangle_signature)
+ app.connect('doctree-read', relabel_references)
app.add_config_value('numpydoc_edit_link', None, False)
app.add_config_value('numpydoc_use_plots', None, False)
+ app.add_config_value('numpydoc_use_blockquotes', None, False)
app.add_config_value('numpydoc_show_class_members', True, True)
app.add_config_value('numpydoc_show_inherited_class_members', True, True)
app.add_config_value('numpydoc_class_members_toctree', True, True)
@@ -140,7 +191,10 @@
app.add_domain(NumpyPythonDomain)
app.add_domain(NumpyCDomain)
- metadata = {'parallel_read_safe': True}
+ app.setup_extension('sphinx.ext.autosummary')
+
+ metadata = {'version': __version__,
+ 'parallel_read_safe': True}
return metadata
# ------------------------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numpydoc-0.7.0/numpydoc/tests/test_docscrape.py new/numpydoc-0.8.0/numpydoc/tests/test_docscrape.py
--- old/numpydoc-0.7.0/numpydoc/tests/test_docscrape.py 2017-06-20 11:30:41.000000000 +0200
+++ new/numpydoc-0.8.0/numpydoc/tests/test_docscrape.py 2018-03-31 01:39:19.000000000 +0200
@@ -1,8 +1,10 @@
# -*- encoding:utf-8 -*-
from __future__ import division, absolute_import, print_function
+import re
import sys
import textwrap
+import warnings
import jinja2
@@ -13,10 +15,12 @@
ParseError
)
from numpydoc.docscrape_sphinx import (SphinxDocString, SphinxClassDoc,
- SphinxFunctionDoc)
+ SphinxFunctionDoc, get_doc_object)
from nose.tools import (assert_equal, assert_raises, assert_list_equal,
assert_true)
+assert_list_equal.__self__.maxDiff = None
+
if sys.version_info[0] >= 3:
sixu = lambda s: s
else:
@@ -52,7 +56,7 @@
-------
out : ndarray
The drawn samples, arranged according to `shape`. If the
- shape given is (m,n,...), then the shape of `out` is is
+ shape given is (m,n,...), then the shape of `out` is
(m,n,...,N).
In other words, each entry ``out[i,j,...,:]`` is an N-dimensional
@@ -60,6 +64,7 @@
list of str
This is not a real return value. It exists to test
anonymous return values.
+ no_description
Other Parameters
----------------
@@ -151,13 +156,16 @@
assert doc['Signature'].startswith('numpy.multivariate_normal(')
assert doc['Signature'].endswith('spam=None)')
+
def test_summary():
assert doc['Summary'][0].startswith('Draw values')
assert doc['Summary'][-1].endswith('covariance.')
+
def test_extended_summary():
assert doc['Extended Summary'][0].startswith('The multivariate normal')
+
def test_parameters():
assert_equal(len(doc['Parameters']), 3)
assert_equal([n for n,_,_ in doc['Parameters']], ['mean','cov','shape'])
@@ -165,7 +173,8 @@
arg, arg_type, desc = doc['Parameters'][1]
assert_equal(arg_type, '(N, N) ndarray')
assert desc[0].startswith('Covariance matrix')
- assert doc['Parameters'][0][-1][-2] == ' (1+2+3)/3'
+ assert doc['Parameters'][0][-1][-1] == ' (1+2+3)/3'
+
def test_other_parameters():
assert_equal(len(doc['Other Parameters']), 1)
@@ -174,8 +183,9 @@
assert_equal(arg_type, 'parrot')
assert desc[0].startswith('A parrot off its mortal coil')
+
def test_returns():
- assert_equal(len(doc['Returns']), 2)
+ assert_equal(len(doc['Returns']), 3)
arg, arg_type, desc = doc['Returns'][0]
assert_equal(arg, 'out')
assert_equal(arg_type, 'ndarray')
@@ -188,6 +198,12 @@
assert desc[0].startswith('This is not a real')
assert desc[-1].endswith('anonymous return values.')
+ arg, arg_type, desc = doc['Returns'][2]
+ assert_equal(arg, 'no_description')
+ assert_equal(arg_type, '')
+ assert not ''.join(desc).strip()
+
+
def test_yields():
section = doc_yields['Yields']
assert_equal(len(section), 3)
@@ -200,6 +216,7 @@
assert desc[0].startswith('The number of')
assert desc[0].endswith(end)
+
def test_returnyield():
doc_text = """
Test having returns and yields.
@@ -289,31 +306,44 @@
assert doc['Notes'][-1].endswith('definite.')
assert_equal(len(doc['Notes']), 17)
+
def test_references():
assert doc['References'][0].startswith('..')
assert doc['References'][-1].endswith('2001.')
+
def test_examples():
assert doc['Examples'][0].startswith('>>>')
assert doc['Examples'][-1].endswith('True]')
+
def test_index():
assert_equal(doc['index']['default'], 'random')
assert_equal(len(doc['index']), 2)
assert_equal(len(doc['index']['refguide']), 2)
-def non_blank_line_by_line_compare(a,b):
+
+def _strip_blank_lines(s):
+ "Remove leading, trailing and multiple blank lines"
+ s = re.sub(r'^\s*\n', '', s)
+ s = re.sub(r'\n\s*$', '', s)
+ s = re.sub(r'\n\s*\n', r'\n\n', s)
+ return s
+
+
+def line_by_line_compare(a, b):
a = textwrap.dedent(a)
b = textwrap.dedent(b)
- a = [l.rstrip() for l in a.split('\n') if l.strip()]
- b = [l.rstrip() for l in b.split('\n') if l.strip()]
+ a = [l.rstrip() for l in _strip_blank_lines(a).split('\n')]
+ b = [l.rstrip() for l in _strip_blank_lines(b).split('\n')]
assert_list_equal(a, b)
+
def test_str():
# doc_txt has the order of Notes and See Also sections flipped.
# This should be handled automatically, and so, one thing this test does
# is to make sure that See Also precedes Notes in the output.
- non_blank_line_by_line_compare(str(doc),
+ line_by_line_compare(str(doc),
"""numpy.multivariate_normal(mean, cov, shape=None, spam=None)
Draw values from a multivariate normal distribution with specified
@@ -330,7 +360,6 @@
.. math::
(1+2+3)/3
-
cov : (N, N) ndarray
Covariance matrix of the distribution.
shape : tuple of ints
@@ -342,7 +371,7 @@
-------
out : ndarray
The drawn samples, arranged according to `shape`. If the
- shape given is (m,n,...), then the shape of `out` is is
+ shape given is (m,n,...), then the shape of `out` is
(m,n,...,N).
In other words, each entry ``out[i,j,...,:]`` is an N-dimensional
@@ -350,6 +379,7 @@
list of str
This is not a real return value. It exists to test
anonymous return values.
+no_description
Other Parameters
----------------
@@ -372,6 +402,7 @@
See Also
--------
+
`some`_, `other`_, `funcs`_
`otherfunc`_
@@ -423,7 +454,7 @@
def test_yield_str():
- non_blank_line_by_line_compare(str(doc_yields),
+ line_by_line_compare(str(doc_yields),
"""Test generator
Yields
@@ -440,7 +471,7 @@
def test_sphinx_str():
sphinx_doc = SphinxDocString(doc_txt)
- non_blank_line_by_line_compare(str(sphinx_doc),
+ line_by_line_compare(str(sphinx_doc),
"""
.. index:: random
single: random;distributions, random;gauss
@@ -454,7 +485,6 @@
:Parameters:
**mean** : (N,) ndarray
-
Mean of the N-dimensional distribution.
.. math::
@@ -462,11 +492,9 @@
(1+2+3)/3
**cov** : (N, N) ndarray
-
Covariance matrix of the distribution.
**shape** : tuple of ints
-
Given a shape of, for example, (m,n,k), m*n*k samples are
generated, and packed in an m-by-n-by-k arrangement. Because
each sample is N-dimensional, the output shape is (m,n,k,N).
@@ -474,35 +502,33 @@
:Returns:
**out** : ndarray
-
The drawn samples, arranged according to `shape`. If the
- shape given is (m,n,...), then the shape of `out` is is
+ shape given is (m,n,...), then the shape of `out` is
(m,n,...,N).
In other words, each entry ``out[i,j,...,:]`` is an N-dimensional
value drawn from the distribution.
- list of str
-
+ **list of str**
This is not a real return value. It exists to test
anonymous return values.
+ **no_description**
+ ..
+
:Other Parameters:
**spam** : parrot
-
A parrot off its mortal coil.
:Raises:
**RuntimeError**
-
Some error
:Warns:
**RuntimeWarning**
-
Some warning
.. warning::
@@ -565,21 +591,18 @@
def test_sphinx_yields_str():
sphinx_doc = SphinxDocString(doc_yields_txt)
- non_blank_line_by_line_compare(str(sphinx_doc),
+ line_by_line_compare(str(sphinx_doc),
"""Test generator
:Yields:
**a** : int
-
The number of apples.
**b** : int
-
The number of bananas.
- int
-
+ **int**
The number of unknowns.
""")
@@ -595,15 +618,18 @@
If None, the index is into the flattened array, otherwise along
the specified axis""")
+
def test_parameters_without_extended_description():
assert_equal(len(doc2['Parameters']), 2)
+
doc3 = NumpyDocString("""
my_signature(*params, **kwds)
Return this and that.
""")
+
def test_escape_stars():
signature = str(doc3).split('\n')[0]
assert_equal(signature, 'my_signature(\*params, \*\*kwds)')
@@ -614,14 +640,17 @@
fdoc = FunctionDoc(func=my_func)
assert_equal(fdoc['Signature'], 'my_func(a, b, \*\*kwargs)')
+
doc4 = NumpyDocString(
"""a.conj()
Return an array with all complex-valued elements conjugated.""")
+
def test_empty_extended_summary():
assert_equal(doc4['Extended Summary'], [])
+
doc5 = NumpyDocString(
"""
a.something()
@@ -637,18 +666,21 @@
If needed
""")
+
def test_raises():
assert_equal(len(doc5['Raises']), 1)
name,_,desc = doc5['Raises'][0]
assert_equal(name,'LinAlgException')
assert_equal(desc,['If array is singular.'])
+
def test_warns():
assert_equal(len(doc5['Warns']), 1)
name,_,desc = doc5['Warns'][0]
assert_equal(name,'SomeWarning')
assert_equal(desc,['If needed'])
+
def test_see_also():
doc6 = NumpyDocString(
"""
@@ -663,21 +695,23 @@
func_f, func_g, :meth:`func_h`, func_j,
func_k
:obj:`baz.obj_q`
+ :obj:`~baz.obj_r`
:class:`class_j`: fubar
foobar
""")
- assert len(doc6['See Also']) == 12
+ assert len(doc6['See Also']) == 13
for func, desc, role in doc6['See Also']:
if func in ('func_a', 'func_b', 'func_c', 'func_f',
- 'func_g', 'func_h', 'func_j', 'func_k', 'baz.obj_q'):
+ 'func_g', 'func_h', 'func_j', 'func_k', 'baz.obj_q',
+ '~baz.obj_r'):
assert(not desc)
else:
assert(desc)
if func == 'func_h':
assert role == 'meth'
- elif func == 'baz.obj_q':
+ elif func == 'baz.obj_q' or func == '~baz.obj_r':
assert role == 'obj'
elif func == 'class_j':
assert role == 'class'
@@ -726,12 +760,45 @@
assert(' some relationship' in s)
assert(':func:`func_d`' in s)
+
+def test_unknown_section():
+ doc_text = """
+Test having an unknown section
+
+Mope
+----
+This should be ignored and warned about
+"""
+
+ class BadSection(object):
+ """Class with bad section.
+
+ Nope
+ ----
+ This class has a nope section.
+ """
+ pass
+
+ with warnings.catch_warnings(record=True) as w:
+ NumpyDocString(doc_text)
+ assert len(w) == 1
+ assert "Unknown section Mope" == str(w[0].message)
+
+ with warnings.catch_warnings(record=True) as w:
+ SphinxClassDoc(BadSection)
+ assert len(w) == 1
+ assert_true('test_docscrape.test_unknown_section.<locals>.BadSection'
+ in str(w[0].message)
+ or 'test_docscrape.BadSection' in str(w[0].message))
+
+
doc7 = NumpyDocString("""
Doc starts on second line.
""")
+
def test_empty_first_line():
assert doc7['Summary'][0].startswith('Doc starts')
@@ -762,6 +829,7 @@
assert isinstance(doc['Summary'][0], str)
assert doc['Summary'][0] == 'öäöäöäöäöåååå'
+
def test_plot_examples():
cfg = dict(use_plots=True)
@@ -777,6 +845,15 @@
doc = SphinxDocString("""
Examples
--------
+ >>> from matplotlib import pyplot as plt
+ >>> plt.plot([1,2,3],[4,5,6])
+ >>> plt.show()
+ """, config=cfg)
+ assert 'plot::' in str(doc), str(doc)
+
+ doc = SphinxDocString("""
+ Examples
+ --------
.. plot::
import matplotlib.pyplot as plt
@@ -785,6 +862,47 @@
""", config=cfg)
assert str(doc).count('plot::') == 1, str(doc)
+
+def test_use_blockquotes():
+ cfg = dict(use_blockquotes=True)
+ doc = SphinxDocString("""
+ Parameters
+ ----------
+ abc : def
+ ghi
+ jkl
+ mno
+
+ Returns
+ -------
+ ABC : DEF
+ GHI
+ JKL
+ MNO
+ """, config=cfg)
+ line_by_line_compare(str(doc), '''
+ :Parameters:
+
+ **abc** : def
+
+ ghi
+
+ **jkl**
+
+ mno
+
+ :Returns:
+
+ **ABC** : DEF
+
+ GHI
+
+ **JKL**
+
+ MNO
+ ''')
+
+
def test_class_members():
class Dummy(object):
@@ -866,6 +984,7 @@
else:
assert 'Spammity index' in str(doc), str(doc)
+
def test_duplicate_signature():
# Duplicate function signatures occur e.g. in ufuncs, when the
# automatic mechanism adds one, and a more detailed comes from the
@@ -889,6 +1008,7 @@
f : callable ``f(t, y, *f_args)``
Aaa.
jac : callable ``jac(t, y, *jac_args)``
+
Bbb.
Attributes
@@ -897,8 +1017,17 @@
Current time.
y : ndarray
Current variable values.
- x : float
- Some parameter
+
+ * hello
+ * world
+ an_attribute : float
+ The docstring is printed instead
+ no_docstring : str
+ But a description
+ no_docstring2 : str
+ multiline_sentence
+ midword_period
+ no_period
Methods
-------
@@ -911,9 +1040,10 @@
For usage examples, see `ode`.
"""
+
def test_class_members_doc():
doc = ClassDoc(None, class_doc_txt)
- non_blank_line_by_line_compare(str(doc),
+ line_by_line_compare(str(doc),
"""
Foo
@@ -934,58 +1064,109 @@
Current time.
y : ndarray
Current variable values.
- x : float
- Some parameter
+
+ * hello
+ * world
+ an_attribute : float
+ The docstring is printed instead
+ no_docstring : str
+ But a description
+ no_docstring2 : str
+ multiline_sentence
+ midword_period
+ no_period
Methods
-------
a
-
b
-
c
.. index::
""")
+
def test_class_members_doc_sphinx():
class Foo:
@property
- def x(self):
+ def an_attribute(self):
"""Test attribute"""
return None
+ @property
+ def no_docstring(self):
+ return None
+
+ @property
+ def no_docstring2(self):
+ return None
+
+ @property
+ def multiline_sentence(self):
+ """This is a
+ sentence. It spans multiple lines."""
+ return None
+
+ @property
+ def midword_period(self):
+ """The sentence for numpy.org."""
+ return None
+
+ @property
+ def no_period(self):
+ """This does not have a period
+ so we truncate its summary to the first linebreak
+
+ Apparently.
+ """
+ return None
+
doc = SphinxClassDoc(Foo, class_doc_txt)
- non_blank_line_by_line_compare(str(doc),
+ line_by_line_compare(str(doc),
"""
Foo
:Parameters:
**f** : callable ``f(t, y, *f_args)``
-
Aaa.
**jac** : callable ``jac(t, y, *jac_args)``
-
Bbb.
.. rubric:: Examples
For usage examples, see `ode`.
- .. rubric:: Attributes
+ :Attributes:
- .. autosummary::
- :toctree:
+ **t** : float
+ Current time.
- x
+ **y** : ndarray
+ Current variable values.
- ===== ==========
- **t** (float) Current time.
- **y** (ndarray) Current variable values.
- ===== ==========
+ * hello
+ * world
+
+ :obj:`an_attribute <an_attribute>` : float
+ Test attribute
+
+ **no_docstring** : str
+ But a description
+
+ **no_docstring2** : str
+ ..
+
+ :obj:`multiline_sentence <multiline_sentence>`
+ This is a sentence.
+
+ :obj:`midword_period <midword_period>`
+ The sentence for numpy.org.
+
+ :obj:`no_period <no_period>`
+ This does not have a period
.. rubric:: Methods
@@ -997,29 +1178,52 @@
""")
+
def test_templated_sections():
doc = SphinxClassDoc(None, class_doc_txt,
- config={'template': jinja2.Template('{{examples}}{{parameters}}')})
- non_blank_line_by_line_compare(str(doc),
+ config={'template': jinja2.Template('{{examples}}\n{{parameters}}')})
+ line_by_line_compare(str(doc),
"""
.. rubric:: Examples
For usage examples, see `ode`.
-
:Parameters:
**f** : callable ``f(t, y, *f_args)``
-
Aaa.
**jac** : callable ``jac(t, y, *jac_args)``
-
Bbb.
""")
+def test_nonstandard_property():
+ # test discovery of a property that does not satisfy isinstace(.., property)
+
+ class SpecialProperty(object):
+
+ def __init__(self, axis=0, doc=""):
+ self.axis = axis
+ self.__doc__ = doc
+
+ def __get__(self, obj, type):
+ if obj is None:
+ # Only instances have actual _data, not classes
+ return self
+ else:
+ return obj._data.axes[self.axis]
+
+ def __set__(self, obj, value):
+ obj._set_axis(self.axis, value)
+
+ class Dummy:
+
+ attr = SpecialProperty(doc="test attribute")
+
+ doc = get_doc_object(Dummy)
+ assert "test attribute" in str(doc)
if __name__ == "__main__":
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numpydoc-0.7.0/setup.py new/numpydoc-0.8.0/setup.py
--- old/numpydoc-0.7.0/setup.py 2017-06-18 12:59:18.000000000 +0200
+++ new/numpydoc-0.8.0/setup.py 2018-03-31 01:45:04.000000000 +0200
@@ -1,25 +1,35 @@
from __future__ import division, print_function
import sys
+import os
+import setuptools # may monkeypatch distutils in some versions. # noqa
from distutils.command.sdist import sdist
-import setuptools
from distutils.core import setup
+from numpydoc import __version__ as version
+
if sys.version_info[:2] < (2, 7) or (3, 0) <= sys.version_info[0:2] < (3, 4):
raise RuntimeError("Python version 2.7 or >= 3.4 required.")
-with open('numpydoc/__init__.py') as fid:
- for line in fid:
- if line.startswith('__version__'):
- version = line.strip().split()[-1][1:-1]
- break
+
+def read(fname):
+ """Utility function to get README.rst into long_description.
+
+ ``long_description`` is what ends up on the PyPI front page.
+ """
+ with open(os.path.join(os.path.dirname(__file__), fname)) as f:
+ contents = f.read()
+
+ return contents
+
setup(
name="numpydoc",
packages=["numpydoc"],
version=version,
description="Sphinx extension to support docstrings in Numpy format",
+ long_description=read('README.rst'),
# classifiers from http://pypi.python.org/pypi?%3Aaction=list_classifiers
classifiers=["Development Status :: 4 - Beta",
"Environment :: Plugins",
@@ -35,7 +45,7 @@
keywords="sphinx numpy",
author="Pauli Virtanen and others",
author_email="pav(a)iki.fi",
- url="https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt",
+ url="https://numpydoc.readthedocs.io",
license="BSD",
install_requires=["sphinx >= 1.2.3", 'Jinja2>=2.3'],
package_data={'numpydoc': ['tests/test_*.py', 'templates/*.rst']},
1
0
Hello community,
here is the log from the commit of package spyder for openSUSE:Factory checked in at 2018-04-30 22:56:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/spyder (Old)
and /work/SRC/openSUSE:Factory/.spyder.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "spyder"
Mon Apr 30 22:56:51 2018 rev:28 rq:602312 version:3.2.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/spyder/spyder.changes 2017-09-09 20:24:44.705225835 +0200
+++ /work/SRC/openSUSE:Factory/.spyder.new/spyder.changes 2018-04-30 22:59:05.524125306 +0200
@@ -1,0 +2,516 @@
+Sat Apr 28 20:13:57 UTC 2018 - toddrme2178(a)gmail.com
+
+- Update to Version 3.2.8
+ + New features
+ > Editor
+ * Add `Ctrl+Shift+Enter` shortcut to introduce new lines at any point.
+ > IPython console
+ * Always run Cython files in a dedicated console.
+ + Issues Closed
+ * ValueError trying to open pandas.DateOffset objects in Variable Explorer
+ * AttributeError when attempting to edit non-writeable or non-settable attributes of certain (e.g. many common Pandas) objects in CollectionsEditor
+ * TypeError and Python hard crash to desktop after modifying _typ attribute of pandas Period in CollectionsEditor
+ * Saving session data (spydata) deletes all arrays nested inside other data structures
+ * System time change causes Spyder error
+ * AttributeError: 'NoneType' object has no attribute 'apply_plugin_settings' when attempting to activate Automatic Connections for Help
+ * Typo in introspection.utils.get_words
+ * Sphinx html_use_smartypants is deprecated as of 1.6 and removed in 1.7
+ * Spyder always open a new instance after updating to 3.2.7 version
+ * Strange behavior for Spyder code annotations
+ * AttributeError: 'NoneType' object has no attribute 'apply_plugin_settings'
+ * AttributeError: 'NoneType' object has no attribute 'load_module'
+ * Setting a path containing a single quote
+ * ValueError when closing a file whose folder changed name in File Explorer
+ * When browsing MultiIndex in Object Explorer, Pandas raises NotImplementedError: isna is not defined for MultiIndex
+ * FileNotFoundError generated for template.py
+ * Variable Explorer windows don't close when Spyder exits; prevents it from reopening until manually closed
+ * Bug: Find and Replace indicate "no matches" when "[", "(", or ")" included in the search string
+ * AttributeError when attempting to view dom.minidom.Element object in Variable Explorer
+ * How do I move to a new line while I'm in the middle of the current line?
+ * pyximport.install() in sitecustomize.py is not a good idea
+ * delete (context="editor", name="delete") keyboard shortcut doesn't work
+ * Saving large workspace on network drive crashes Spyder on Windows
+ + Pull Requests Merged
+ * Error report stopgap to make instructions harder to miss
+ * Fix various bugs in Variable Explorer, including an application crash to desktop
+ * Replace deprecated function in inline CollectionsEditor tests and add recently supported data types
+ * Make several GUI/qtbot tests more reliable by increasing timeouts and tweaking the methods used
+ * Add .pytest_cache to gitignore
+ * Fix new instance validation on Windows.
+ * Fix NotImplementedError when browsing a MultiIndex in the Collection Editor
+ * Set parent for Variable Explorer editors so Spyder closes properly
+ * Change time elapsed calculation to prevent OSError
+ * Fix bugs in session saving to spydata and improve tests
+ * Allow TODO check marks with blank line
+ * Fix typo in utils.introspection.get_words
+ * Pin to a Tornado version less than 5.0 to avoid hangs in our tests
+ * Run Cython files in a dedicated console
+ * Avoid showing dialogs in IPython console tests to avoid segfaults
+ * Be able to open files in the Editor if no template is found
+ * Add handling for AttributteError when importing module from path
+ * Remove ipyconsole and editor attrs from the Help plugin
+ * Update deprecated Sphinx directive html_use_smartypants
+ * Allow rename from Explorer to work for directories
+ * Fix error when setting a path with a single quote
+ * Delay check whether we are running under pytest until run time
+ * Allow shortcut key for editor/delete to work like Del key
+ * Restore the previous wording for package versions in error report
+ * Skip some IPython console tests in PyQt4 because they are segfaulting too much
+ * Find/replace - return match counts on unescaped characters
+ * Add Ctrl+Shift+Enter to enter a new line in the Editor
+- Update to Version 3.2.7
+ + New features
+ > Main Window
+ * Improve the interface to report errors to Github.
+ > Variable Explorer
+ * Enable the display of many more Numpy array types.
+ > Editor
+ * Copy text from the search field to the replace one
+ after pressing `Tab`.
+ > IPython console
+ * Make `%edit foo.py` open `foo.py` in the Editor on
+ Windows.
+ > Find in Files
+ * Remove items from the `Search in` list when hovering
+ over them and pressing `Del`.
+ * Add a `Clear this list` option below `Select other
+ directory`.
+ > Under the hood
+ * Demand PyQt less than 5.10 for our wheels.
+ + Issues Closed
+ * Update translations for 3.2.7
+ * test_completions_custom_path fails with jedi 0.9.0 (Spyder 3)
+ * FileNotFoundError history.py when running code in the IPython console
+ * Mouse cursor issue with PyQt 5.10
+ * Add the the Collapse All and Expand All buttons to the toolbar of the Outline Explorer
+ * PermissionError when Spyder is started
+ * Selecting "tutorial" from help menu does not bring up Help pane automatically if not loaded, leading to user confusion
+ * IndexError when getting help of an object
+ * AttributeError when running code in the IPython console
+ * RuntimeError when interrupting kernel
+ * pdb history doesn't collapse similar text
+ * IOError when trying to write to stderr file
+ * Convert re expressions to use raw strings
+ * Errors pop up when change the key shortcuts in python 2.7
+ * %edit magic command does not work on Windows
+ * Color scheme changes after kernel restart
+ * Spyder Profiler Hangs/Freezes
+ * Bug with saved window layouts
+ * Icon should be moved from share/pixmaps to share/icons
+ * UnicodeEncodeError when searching text in the Editor
+ * Uncaught error when opening a pandas DataFrame with out of bounds timestamps
+ * Several tests fail locally under user environment with customized keyboard shortcuts due to relying on hardcoded keybindings
+ * TypeError: tabText(self, int) when moving plugin tabs
+ * UnicodeEncodeError when using a project with non-ascii characters on it
+ * UnicodeDecodeError when moving a file with Project Explorer
+ * Add missing Keywords metadata in desktop file
+ * Paths in the "Search in" combobox of the "Find in File" plugin becomes corrupted
+ * Improve interface to report errors
+ * IPython console failing when custom interpreter is removed
+ * Use Tab key to copy text to "Replace with:" field
+ + Pull Requests Merged
+ * Update Spanish translation
+ * French translation for 3.2.7
+ * Update Japanese translation for 3.2.7
+ * Update Brazilian Portuguese translation
+ * Update Russian translation
+ * Demand PyQt5 less than 5.10 in our wheels
+ * Skip test_completions_custom_path if jedi version before 0.10.0
+ * Update broken matplotlib project URL in install doc
+ * Make projects work on unicode directories
+ * Handle errors when writing history to disk in the IPython Console
+ * Fix all test files to be run independently
+ * Xfail test_auto_backend for certain versions of zmq and ipykernel
+ * Add test for file directory change in the Project Explorer.
+ * Add keywords to desktop files
+ * Change share/pixmaps to share/icons in setup.py
+ * Add error handling for the lockfile symlink on Windows
+ * Harmonized the toolbar of the Outline Explorer with its context menu.
+ * Add validation for custom interpreter option
+ * Show Help if closed when opening tutorial to avoid user confusion
+ * Fix and catch typeerror thrown when from_index is None while moving plugin tab
+ * Catch any error in the isdefined method of dochelpers
+ * Handle AttributeError when running code in the IPython Console.
+ * Catch any error when creating stderr files in the IPython console
+ * Catch RuntimeError when no kernel is running
+ * Skip test_tab_copies_find_to_replace on Linux because it fails
+ * Don't add repeated entries to history while on pdb
+ * Skip test_calltip on Python 3 and PyQt < 5.9 because it's failing there
+ * Custom layouts not working when hexstate is None
+ * Pin pyqt5 to 5.9.2 on tests because 5.10 is giving segfaults during the collection phase
+ * Install and run window manager in Travis to fix focus issues and unskip now-passing tests
+ * Update Brazilian Portuguese translation
+ * Change to re strings for Deprecation Warning
+ * Use a temporary config directory to run our tests
+ * Preserve color scheme on kernel restart
+ * Update super() call to use Python 2 style call
+ * Fix %edit magic on Windows
+ * Fix Profiler error when run is stopped
+ * Catch OutOfBoundsDatetime errors from pandas
+ * Use a checkbox in error dialog to dismiss it instead of a button
+ * Fix some completion errors in the Editor and show again no docs message in Help
+ * Fix error when searching text in the Editor in translated interfaces
+ * Find/replace - Copy search text to replace textbox on tabbing between them
+ * Add troubleshooting blurb and OS version to issue template and enhance UI
+ * Add Troubleshooting links and blurb to various appropriate places in Spyder and doc
+ * Enable the display of many more numpy array types in the Variable Explorer
+ * Fix 3 bugs and add 4 improvements to Find in Files
+ * Major overhaul of Readme, contributing and install docs
+ * Differenciate between ), }, and ] when closing brackets
+ * Change error report dialog to enter issue description before submitting it
+- Update to Version 3.2.6
+ + New features
+ > Editor
+ * Make `Shift+Del` to cut text if users have some text
+ selected.
+ * Make `Shift+Ins` to paste text.
+ * Make `Ctrl+PgUp`, `Ctrl+PgDn` and `Ctrl+Tab` shortcuts
+ configurable.
+ > Variable Explorer
+ * Display date/times in human readable format.
+ * Disable editing for immutable types (e.g. tuples).
+ > Under the hood
+ * Fix installation of wheels with `pip`.
+ + Issues Closed
+ * Error on Maximize Current Pane
+ * AttributeError when resetting console namespace
+ * Not able to change layouts after resetting
+ * DataFrame Editor raises TypeError when editing any complex type
+ * Fix errors when entering a value for a cell larger than the max int in Array and Dataframe editors
+ * Consoles get renamed when moved in the IPython console
+ * 3.2.5 fails to activate Matplotlib Qt5 backend
+ * Variable Explorer throws an error instead of displaying contents when attempting to inspect any loaded modules
+ * Spyder not starting in macOS because pyopengl is present
+ * Update to 3.2.5 with pip fails for Python 2.7 as it pulls pyqt5
+ * Spyder crashes upon typing `net(` in editor
+ * When comparing a generated and loaded profile, any negative deltas show (actual_value - ?) 1h:60min, not actual value
+ * Improve how we detect that Spyder is running under Anaconda
+ * Shift+del should delete line only when empty selection, otherwise clipboard cut
+ * Tuples can be "edited" in Variable Explorer but changes are discarded
+ * "ValueError: malformed node or string" when evaluating code that contains Path elements
+ * Window layout setting error
+ * Segmentation fault when trying to change keyboard shortcuts in Preferences
+ * File switcher error
+ * ValueError: not enough values to unpack in the File Explorer
+ * Add ability to change Ctrl+PgUp and PgDn shortcuts
+ * Keyboard shortcut hint is missing from menu item Search/Find in files
+ * Tab in-between find and replace text boxes
++++ 319 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/spyder/spyder.changes
++++ and /work/SRC/openSUSE:Factory/.spyder.new/spyder.changes
Old:
----
spyder-3.2.1.tar.gz
New:
----
spyder-3.2.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ spyder.spec ++++++
--- /var/tmp/diff_new_pack.2SqTsf/_old 2018-04-30 22:59:06.336095677 +0200
+++ /var/tmp/diff_new_pack.2SqTsf/_new 2018-04-30 22:59:06.340095532 +0200
@@ -1,7 +1,7 @@
#
# spec file for package spyder
#
-# 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
@@ -19,7 +19,7 @@
%bcond_with test
%define X_display ":98"
Name: spyder
-Version: 3.2.1
+Version: 3.2.8
Release: 0
Url: https://github.com/spyder-ide/spyder
Summary: Scientific PYthon Development EnviRonment
@@ -96,6 +96,7 @@
Recommends: %{name}-profiler
Recommends: %{name}-pylint
Provides: python-spyderlib = %{version}
+Provides: python-spyder
Obsoletes: python-spyderlib < %{version}
BuildArch: noarch
@@ -204,9 +205,13 @@
# install the icon
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/
+mkdir -p %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/
pushd %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/
ln -s %{python2_sitelib}/spyder/images/spyder.svg %{name}.svg
popd
+pushd %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/
+ln -s %{_datadir}/icons/%{name}.png %{name}.png
+popd
# get the language files
%find_lang spyder %{name}.lang
@@ -224,6 +229,7 @@
%if %{with test}
%check
export DISPLAY=%{X_display}
+export PYTHONDONTWRITEBYTECODE=1
Xvfb %{X_display} >& Xvfb.log &
trap "kill $! || true" EXIT
sleep 10
@@ -238,10 +244,13 @@
%{python2_sitelib}/spyder/
%{python2_sitelib}/spyder-%{version}-py*.egg-info
%exclude %{python2_sitelib}/spyder/locale/
+%dir %{_datadir}/icons/hicolor/128x128
%dir %{_datadir}/icons/hicolor/scalable
+%dir %{_datadir}/icons/hicolor/128x128/apps
%dir %{_datadir}/icons/hicolor/scalable/apps
%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
-%{_datadir}/pixmaps/%{name}.png
+%{_datadir}/icons/hicolor/128x128/apps/%{name}.png
+%{_datadir}/icons/%{name}.png
%files breakpoints
%defattr(-,root,root,-)
++++++ spyder-3.2.1.tar.gz -> spyder-3.2.8.tar.gz ++++++
++++ 52033 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package spyder3 for openSUSE:Factory checked in at 2018-04-30 22:56:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/spyder3 (Old)
and /work/SRC/openSUSE:Factory/.spyder3.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "spyder3"
Mon Apr 30 22:56:46 2018 rev:16 rq:602311 version:3.2.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/spyder3/spyder3.changes 2017-08-30 16:24:07.829663322 +0200
+++ /work/SRC/openSUSE:Factory/.spyder3.new/spyder3.changes 2018-04-30 22:59:01.864258853 +0200
@@ -1,0 +2,516 @@
+Sat Apr 28 20:13:57 UTC 2018 - toddrme2178(a)gmail.com
+
+- Update to Version 3.2.8
+ + New features
+ > Editor
+ * Add `Ctrl+Shift+Enter` shortcut to introduce new lines at any point.
+ > IPython console
+ * Always run Cython files in a dedicated console.
+ + Issues Closed
+ * ValueError trying to open pandas.DateOffset objects in Variable Explorer
+ * AttributeError when attempting to edit non-writeable or non-settable attributes of certain (e.g. many common Pandas) objects in CollectionsEditor
+ * TypeError and Python hard crash to desktop after modifying _typ attribute of pandas Period in CollectionsEditor
+ * Saving session data (spydata) deletes all arrays nested inside other data structures
+ * System time change causes Spyder error
+ * AttributeError: 'NoneType' object has no attribute 'apply_plugin_settings' when attempting to activate Automatic Connections for Help
+ * Typo in introspection.utils.get_words
+ * Sphinx html_use_smartypants is deprecated as of 1.6 and removed in 1.7
+ * Spyder always open a new instance after updating to 3.2.7 version
+ * Strange behavior for Spyder code annotations
+ * AttributeError: 'NoneType' object has no attribute 'apply_plugin_settings'
+ * AttributeError: 'NoneType' object has no attribute 'load_module'
+ * Setting a path containing a single quote
+ * ValueError when closing a file whose folder changed name in File Explorer
+ * When browsing MultiIndex in Object Explorer, Pandas raises NotImplementedError: isna is not defined for MultiIndex
+ * FileNotFoundError generated for template.py
+ * Variable Explorer windows don't close when Spyder exits; prevents it from reopening until manually closed
+ * Bug: Find and Replace indicate "no matches" when "[", "(", or ")" included in the search string
+ * AttributeError when attempting to view dom.minidom.Element object in Variable Explorer
+ * How do I move to a new line while I'm in the middle of the current line?
+ * pyximport.install() in sitecustomize.py is not a good idea
+ * delete (context="editor", name="delete") keyboard shortcut doesn't work
+ * Saving large workspace on network drive crashes Spyder on Windows
+ + Pull Requests Merged
+ * Error report stopgap to make instructions harder to miss
+ * Fix various bugs in Variable Explorer, including an application crash to desktop
+ * Replace deprecated function in inline CollectionsEditor tests and add recently supported data types
+ * Make several GUI/qtbot tests more reliable by increasing timeouts and tweaking the methods used
+ * Add .pytest_cache to gitignore
+ * Fix new instance validation on Windows.
+ * Fix NotImplementedError when browsing a MultiIndex in the Collection Editor
+ * Set parent for Variable Explorer editors so Spyder closes properly
+ * Change time elapsed calculation to prevent OSError
+ * Fix bugs in session saving to spydata and improve tests
+ * Allow TODO check marks with blank line
+ * Fix typo in utils.introspection.get_words
+ * Pin to a Tornado version less than 5.0 to avoid hangs in our tests
+ * Run Cython files in a dedicated console
+ * Avoid showing dialogs in IPython console tests to avoid segfaults
+ * Be able to open files in the Editor if no template is found
+ * Add handling for AttributteError when importing module from path
+ * Remove ipyconsole and editor attrs from the Help plugin
+ * Update deprecated Sphinx directive html_use_smartypants
+ * Allow rename from Explorer to work for directories
+ * Fix error when setting a path with a single quote
+ * Delay check whether we are running under pytest until run time
+ * Allow shortcut key for editor/delete to work like Del key
+ * Restore the previous wording for package versions in error report
+ * Skip some IPython console tests in PyQt4 because they are segfaulting too much
+ * Find/replace - return match counts on unescaped characters
+ * Add Ctrl+Shift+Enter to enter a new line in the Editor
+- Update to Version 3.2.7
+ + New features
+ > Main Window
+ * Improve the interface to report errors to Github.
+ > Variable Explorer
+ * Enable the display of many more Numpy array types.
+ > Editor
+ * Copy text from the search field to the replace one
+ after pressing `Tab`.
+ > IPython console
+ * Make `%edit foo.py` open `foo.py` in the Editor on
+ Windows.
+ > Find in Files
+ * Remove items from the `Search in` list when hovering
+ over them and pressing `Del`.
+ * Add a `Clear this list` option below `Select other
+ directory`.
+ > Under the hood
+ * Demand PyQt less than 5.10 for our wheels.
+ + Issues Closed
+ * Update translations for 3.2.7
+ * test_completions_custom_path fails with jedi 0.9.0 (Spyder 3)
+ * FileNotFoundError history.py when running code in the IPython console
+ * Mouse cursor issue with PyQt 5.10
+ * Add the the Collapse All and Expand All buttons to the toolbar of the Outline Explorer
+ * PermissionError when Spyder is started
+ * Selecting "tutorial" from help menu does not bring up Help pane automatically if not loaded, leading to user confusion
+ * IndexError when getting help of an object
+ * AttributeError when running code in the IPython console
+ * RuntimeError when interrupting kernel
+ * pdb history doesn't collapse similar text
+ * IOError when trying to write to stderr file
+ * Convert re expressions to use raw strings
+ * Errors pop up when change the key shortcuts in python 2.7
+ * %edit magic command does not work on Windows
+ * Color scheme changes after kernel restart
+ * Spyder Profiler Hangs/Freezes
+ * Bug with saved window layouts
+ * Icon should be moved from share/pixmaps to share/icons
+ * UnicodeEncodeError when searching text in the Editor
+ * Uncaught error when opening a pandas DataFrame with out of bounds timestamps
+ * Several tests fail locally under user environment with customized keyboard shortcuts due to relying on hardcoded keybindings
+ * TypeError: tabText(self, int) when moving plugin tabs
+ * UnicodeEncodeError when using a project with non-ascii characters on it
+ * UnicodeDecodeError when moving a file with Project Explorer
+ * Add missing Keywords metadata in desktop file
+ * Paths in the "Search in" combobox of the "Find in File" plugin becomes corrupted
+ * Improve interface to report errors
+ * IPython console failing when custom interpreter is removed
+ * Use Tab key to copy text to "Replace with:" field
+ + Pull Requests Merged
+ * Update Spanish translation
+ * French translation for 3.2.7
+ * Update Japanese translation for 3.2.7
+ * Update Brazilian Portuguese translation
+ * Update Russian translation
+ * Demand PyQt5 less than 5.10 in our wheels
+ * Skip test_completions_custom_path if jedi version before 0.10.0
+ * Update broken matplotlib project URL in install doc
+ * Make projects work on unicode directories
+ * Handle errors when writing history to disk in the IPython Console
+ * Fix all test files to be run independently
+ * Xfail test_auto_backend for certain versions of zmq and ipykernel
+ * Add test for file directory change in the Project Explorer.
+ * Add keywords to desktop files
+ * Change share/pixmaps to share/icons in setup.py
+ * Add error handling for the lockfile symlink on Windows
+ * Harmonized the toolbar of the Outline Explorer with its context menu.
+ * Add validation for custom interpreter option
+ * Show Help if closed when opening tutorial to avoid user confusion
+ * Fix and catch typeerror thrown when from_index is None while moving plugin tab
+ * Catch any error in the isdefined method of dochelpers
+ * Handle AttributeError when running code in the IPython Console.
+ * Catch any error when creating stderr files in the IPython console
+ * Catch RuntimeError when no kernel is running
+ * Skip test_tab_copies_find_to_replace on Linux because it fails
+ * Don't add repeated entries to history while on pdb
+ * Skip test_calltip on Python 3 and PyQt < 5.9 because it's failing there
+ * Custom layouts not working when hexstate is None
+ * Pin pyqt5 to 5.9.2 on tests because 5.10 is giving segfaults during the collection phase
+ * Install and run window manager in Travis to fix focus issues and unskip now-passing tests
+ * Update Brazilian Portuguese translation
+ * Change to re strings for Deprecation Warning
+ * Use a temporary config directory to run our tests
+ * Preserve color scheme on kernel restart
+ * Update super() call to use Python 2 style call
+ * Fix %edit magic on Windows
+ * Fix Profiler error when run is stopped
+ * Catch OutOfBoundsDatetime errors from pandas
+ * Use a checkbox in error dialog to dismiss it instead of a button
+ * Fix some completion errors in the Editor and show again no docs message in Help
+ * Fix error when searching text in the Editor in translated interfaces
+ * Find/replace - Copy search text to replace textbox on tabbing between them
+ * Add troubleshooting blurb and OS version to issue template and enhance UI
+ * Add Troubleshooting links and blurb to various appropriate places in Spyder and doc
+ * Enable the display of many more numpy array types in the Variable Explorer
+ * Fix 3 bugs and add 4 improvements to Find in Files
+ * Major overhaul of Readme, contributing and install docs
+ * Differenciate between ), }, and ] when closing brackets
+ * Change error report dialog to enter issue description before submitting it
+- Update to Version 3.2.6
+ + New features
+ > Editor
+ * Make `Shift+Del` to cut text if users have some text
+ selected.
+ * Make `Shift+Ins` to paste text.
+ * Make `Ctrl+PgUp`, `Ctrl+PgDn` and `Ctrl+Tab` shortcuts
+ configurable.
+ > Variable Explorer
+ * Display date/times in human readable format.
+ * Disable editing for immutable types (e.g. tuples).
+ > Under the hood
+ * Fix installation of wheels with `pip`.
+ + Issues Closed
+ * Error on Maximize Current Pane
+ * AttributeError when resetting console namespace
+ * Not able to change layouts after resetting
+ * DataFrame Editor raises TypeError when editing any complex type
+ * Fix errors when entering a value for a cell larger than the max int in Array and Dataframe editors
+ * Consoles get renamed when moved in the IPython console
+ * 3.2.5 fails to activate Matplotlib Qt5 backend
+ * Variable Explorer throws an error instead of displaying contents when attempting to inspect any loaded modules
+ * Spyder not starting in macOS because pyopengl is present
+ * Update to 3.2.5 with pip fails for Python 2.7 as it pulls pyqt5
+ * Spyder crashes upon typing `net(` in editor
+ * When comparing a generated and loaded profile, any negative deltas show (actual_value - ?) 1h:60min, not actual value
+ * Improve how we detect that Spyder is running under Anaconda
+ * Shift+del should delete line only when empty selection, otherwise clipboard cut
+ * Tuples can be "edited" in Variable Explorer but changes are discarded
+ * "ValueError: malformed node or string" when evaluating code that contains Path elements
+ * Window layout setting error
+ * Segmentation fault when trying to change keyboard shortcuts in Preferences
+ * File switcher error
+ * ValueError: not enough values to unpack in the File Explorer
+ * Add ability to change Ctrl+PgUp and PgDn shortcuts
+ * Keyboard shortcut hint is missing from menu item Search/Find in files
+ * Tab in-between find and replace text boxes
++++ 319 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/spyder3/spyder3.changes
++++ and /work/SRC/openSUSE:Factory/.spyder3.new/spyder3.changes
Old:
----
spyder-3.2.1.tar.gz
New:
----
spyder-3.2.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ spyder3.spec ++++++
--- /var/tmp/diff_new_pack.GNdnf5/_old 2018-04-30 22:59:02.596232143 +0200
+++ /var/tmp/diff_new_pack.GNdnf5/_new 2018-04-30 22:59:02.600231998 +0200
@@ -1,7 +1,7 @@
#
# spec file for package spyder3
#
-# 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
@@ -19,7 +19,7 @@
%bcond_with test
%define X_display ":98"
Name: spyder3
-Version: 3.2.1
+Version: 3.2.8
Release: 0
Url: https://github.com/spyder-ide/spyder
Summary: Scientific PYthon Development EnviRonment
@@ -96,6 +96,7 @@
Recommends: %{name}-profiler
Recommends: %{name}-pylint
Provides: python3-spyderlib = %{version}
+Provides: python3-spyder = %{version}
Obsoletes: python3-spyderlib < %{version}
BuildArch: noarch
@@ -204,9 +205,13 @@
# install the icon
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/
+mkdir -p %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/
pushd %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/
ln -s %{python3_sitelib}/spyder/images/spyder.svg %{name}.svg
popd
+pushd %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/
+ln -s %{_datadir}/icons/%{name}.png %{name}.png
+popd
# get the language files
%find_lang spyder %{name}.lang
@@ -224,6 +229,7 @@
%if %{with test}
%check
export DISPLAY=%{X_display}
+export PYTHONDONTWRITEBYTECODE=1
Xvfb %{X_display} >& Xvfb.log &
trap "kill $! || true" EXIT
sleep 10
@@ -238,10 +244,13 @@
%{python3_sitelib}/spyder/
%{python3_sitelib}/spyder-%{version}-py*.egg-info
%exclude %{python3_sitelib}/spyder/locale/
+%dir %{_datadir}/icons/hicolor/128x128
%dir %{_datadir}/icons/hicolor/scalable
+%dir %{_datadir}/icons/hicolor/128x128/apps
%dir %{_datadir}/icons/hicolor/scalable/apps
%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
-%{_datadir}/pixmaps/%{name}.png
+%{_datadir}/icons/hicolor/128x128/apps/%{name}.png
+%{_datadir}/icons/%{name}.png
%dir %{_datadir}/metainfo/
%{_datadir}/metainfo/%{name}.appdata.xml
++++++ spyder-3.2.1.tar.gz -> spyder-3.2.8.tar.gz ++++++
++++ 52033 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package xviewer for openSUSE:Factory checked in at 2018-04-30 22:56:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xviewer (Old)
and /work/SRC/openSUSE:Factory/.xviewer.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xviewer"
Mon Apr 30 22:56:43 2018 rev:14 rq:602306 version:1.8.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/xviewer/xviewer.changes 2018-03-28 10:28:39.982904000 +0200
+++ /work/SRC/openSUSE:Factory/.xviewer.new/xviewer.changes 2018-04-30 22:58:59.948328765 +0200
@@ -1,0 +2,9 @@
+Sat Apr 28 20:12:30 UTC 2018 - sor.alexei(a)meowr.ru
+
+- Update to version 1.8.0:
+ * EogListStore: Use the CHANGES_DONE_HINT to detect file changes.
+ * build: Use cinnamon-desktop instead of gnome-desktop.
+ * Fix build with gnome-desktop-3.28 development.
+- Remove xviewer-use-cinnamon-desktop.patch: fixed upstream.
+
+-------------------------------------------------------------------
Old:
----
xviewer-1.6.1.tar.gz
xviewer-use-cinnamon-desktop.patch
New:
----
xviewer-1.8.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xviewer.spec ++++++
--- /var/tmp/diff_new_pack.fmBOV3/_old 2018-04-30 22:59:00.704301179 +0200
+++ /var/tmp/diff_new_pack.fmBOV3/_new 2018-04-30 22:59:00.708301034 +0200
@@ -17,15 +17,13 @@
Name: xviewer
-Version: 1.6.1
+Version: 1.8.0
Release: 0
Summary: Fast and functional graphics viewer
License: GPL-2.0-or-later AND LGPL-2.1-or-later
Group: Productivity/Graphics/Viewers
Url: https://github.com/linuxmint/xviewer
Source: https://github.com/linuxmint/%{name}/archive/%{version}.tar.gz#/%{name}-%{v…
-# PATCH-FIX-UPSTREAM xviewer-use-cinnamon-desktop.patch -- Use cinnamon-desktop instead of gnome-desktop.
-Patch0: xviewer-use-cinnamon-desktop.patch
BuildRequires: fdupes
BuildRequires: gnome-common
BuildRequires: hicolor-icon-theme
@@ -39,7 +37,7 @@
BuildRequires: pkgconfig(exempi-2.0)
BuildRequires: pkgconfig(gdk-pixbuf-2.0)
BuildRequires: pkgconfig(gobject-introspection-1.0)
-BuildRequires: pkgconfig(gtk+-3.0) >= 3.10.0
+BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(gtk+-unix-print-3.0)
BuildRequires: pkgconfig(lcms2)
BuildRequires: pkgconfig(libexif)
@@ -72,7 +70,6 @@
%prep
%setup -q
-%patch0 -p1
%build
NOCONFIGURE=1 gnome-autogen.sh
@@ -104,11 +101,7 @@
%endif
%files
-%if 0%{?suse_version} >= 1500
%license COPYING
-%else
-%doc COPYING
-%endif
%doc AUTHORS README
%{_bindir}/%{name}
%{_libdir}/%{name}/
++++++ xviewer-1.6.1.tar.gz -> xviewer-1.8.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xviewer-1.6.1/.circleci/config.yml new/xviewer-1.8.0/.circleci/config.yml
--- old/xviewer-1.6.1/.circleci/config.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/xviewer-1.8.0/.circleci/config.yml 2018-04-26 20:01:53.000000000 +0200
@@ -0,0 +1,70 @@
+version: 2.0
+
+shared: &shared
+
+ steps:
+
+ - checkout
+
+ - run:
+ name: Prepare environment
+ command: apt-get update
+
+ - run:
+ name: Install dependencies
+ command: |
+ wget https://github.com/linuxmint/xapps/releases/download/master.${CIRCLE_JOB}/p… -O xapps.tar.gz
+ ls *.tar.gz | xargs -i tar zxvf {}
+ apt install --yes --allow-downgrades ./packages/*.deb
+ rm -rf packages
+
+ - run:
+ name: Build project
+ command: mint-build -i
+
+ - run:
+ name: Prepare packages
+ command: |
+ if [ -z $CI_PULL_REQUEST ]; then
+ mkdir /packages
+ mv /root/*.deb /packages/
+ git log > /packages/git.log
+ cd /
+ tar zcvf packages.tar.gz packages
+ fi
+
+ - run:
+ name: Deploy packages to Github
+ command: |
+ if [ -z $CI_PULL_REQUEST ]; then
+ wget https://github.com/tcnksm/ghr/releases/download/v0.5.4/ghr_v0.5.4_linux_amd…
+ apt-get install --yes unzip
+ unzip ghr_v0.5.4_linux_amd64.zip
+ TAG="master".$CIRCLE_JOB
+ ./ghr -t $GITHUB_TOKEN -u $CIRCLE_PROJECT_USERNAME -r $CIRCLE_PROJECT_REPONAME -replace $TAG /packages.tar.gz
+ ./ghr -t $GITHUB_TOKEN -u $CIRCLE_PROJECT_USERNAME -r $CIRCLE_PROJECT_REPONAME -recreate -b "Latest unstable packages" $TAG /packages.tar.gz
+ fi
+
+jobs:
+ "mint18":
+ <<: *shared
+ docker:
+ - image: linuxmintd/mint18-amd64
+
+ "mint19":
+ <<: *shared
+ docker:
+ - image: linuxmintd/mint19-amd64
+
+ "lmde3":
+ <<: *shared
+ docker:
+ - image: linuxmintd/lmde3-amd64
+
+workflows:
+ version: 2
+ build:
+ jobs:
+ - "mint18"
+ - "mint19"
+ - "lmde3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xviewer-1.6.1/configure.ac new/xviewer-1.8.0/configure.ac
--- old/xviewer-1.6.1/configure.ac 2017-11-23 13:35:27.000000000 +0100
+++ new/xviewer-1.8.0/configure.ac 2018-04-26 20:01:53.000000000 +0200
@@ -1,8 +1,8 @@
AC_PREREQ(2.59)
m4_define(xviewer_major_version, 1)
-m4_define(xviewer_minor_version, 6)
-m4_define(xviewer_micro_version, 1)
+m4_define(xviewer_minor_version, 8)
+m4_define(xviewer_micro_version, 0)
m4_define(xviewer_version, xviewer_major_version.xviewer_minor_version.xviewer_micro_version)
AC_INIT([xviewer], xviewer_version, [https://github.com/linuxmint/xviewer/issues] [xviewer])
@@ -87,12 +87,11 @@
GTK_REQUIRED=3.10.0
GLIB_REQUIRED=2.38.0
-GNOME_DESKTOP_REQUIRED=2.91.2
+CINNAMON_DESKTOP_REQUIRED=3.2.0
GDKPIXBUF_REQUIRED=2.4.0
GTK_PRINT_REQUIRED=3.5.4
SHARED_MIME_INFO_REQUIRED=0.20
EXEMPI_REQUIRED=1.99.5
-DESKTOP_SCHEMAS_REQUIRED=2.91.92
LIBPEAS_REQUIRED=0.7.4
LIBPEAS_GTK_REQUIRED=0.7.4
@@ -100,11 +99,10 @@
glib-2.0 >= $GLIB_REQUIRED \
gio-2.0 >= $GLIB_REQUIRED \
gio-unix-2.0 >= $GLIB_REQUIRED \
- gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED \
+ cinnamon-desktop >= $CINNAMON_DESKTOP_REQUIRED \
gdk-pixbuf-2.0 >= $GDKPIXBUF_REQUIRED \
gtk+-unix-print-3.0 >= $GTK_PRINT_REQUIRED \
shared-mime-info >= $SHARED_MIME_INFO_REQUIRED \
- gsettings-desktop-schemas >= $DESKTOP_SCHEMAS_REQUIRED \
libpeas-1.0 >= $LIBPEAS_REQUIRED \
libpeas-gtk-1.0 >= $LIBPEAS_GTK_REQUIRED"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xviewer-1.6.1/debian/changelog new/xviewer-1.8.0/debian/changelog
--- old/xviewer-1.6.1/debian/changelog 2017-11-23 13:35:27.000000000 +0100
+++ new/xviewer-1.8.0/debian/changelog 2018-04-26 20:01:53.000000000 +0200
@@ -1,3 +1,17 @@
+xviewer (1.8.0) tara; urgency=medium
+
+ [ Clement Lefebvre ]
+ * Add CI configuration
+ * EogListStore: Use the CHANGES_DONE_HINT to detect file changes
+
+ [ Michael Webster ]
+ * build: Use cinnamon-desktop instead of gnome-desktop.
+
+ [ Leigh Scott ]
+ * Fix build with gnome-desktop-3.28 development (#57)
+
+ -- Clement Lefebvre <root(a)linuxmint.com> Thu, 26 Apr 2018 19:01:19 +0100
+
xviewer (1.6.1) sylvia; urgency=medium
* l10n: Update translations
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xviewer-1.6.1/debian/control new/xviewer-1.8.0/debian/control
--- old/xviewer-1.6.1/debian/control 2017-11-23 13:35:27.000000000 +0100
+++ new/xviewer-1.8.0/debian/control 2018-04-26 20:01:53.000000000 +0200
@@ -15,9 +15,8 @@
libgtk-3-dev,
libgdk-pixbuf2.0-dev (>= 2.19.1),
libglib2.0-dev (>= 2.38.0),
- libgnome-desktop-3-dev (>= 2.91.2),
+ libcinnamon-desktop-dev (>=3.2.0),
shared-mime-info (>= 0.20),
- gsettings-desktop-schemas-dev (>= 2.91.92),
libpeas-dev (>= 0.7.4),
yelp-tools,
zlib1g-dev,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xviewer-1.6.1/src/xviewer-file-chooser.c new/xviewer-1.8.0/src/xviewer-file-chooser.c
--- old/xviewer-1.6.1/src/xviewer-file-chooser.c 2017-11-23 13:35:27.000000000 +0100
+++ new/xviewer-1.8.0/src/xviewer-file-chooser.c 2018-04-26 20:01:53.000000000 +0200
@@ -33,7 +33,7 @@
#ifndef GNOME_DESKTOP_USE_UNSTABLE_API
#define GNOME_DESKTOP_USE_UNSTABLE_API
#endif
-#include <libgnome-desktop/gnome-desktop-thumbnail.h>
+#include <libcinnamon-desktop/gnome-desktop-thumbnail.h>
static char *last_dir[] = { NULL, NULL, NULL, NULL };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xviewer-1.6.1/src/xviewer-list-store.c new/xviewer-1.8.0/src/xviewer-list-store.c
--- old/xviewer-1.6.1/src/xviewer-list-store.c 2017-11-23 13:35:27.000000000 +0100
+++ new/xviewer-1.8.0/src/xviewer-list-store.c 2018-04-26 20:01:53.000000000 +0200
@@ -381,7 +381,7 @@
XviewerImage *image;
switch (event) {
- case G_FILE_MONITOR_EVENT_CHANGED:
+ case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT:
file_info = g_file_query_info (file,
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
0, NULL, NULL);
@@ -449,7 +449,6 @@
}
g_object_unref (file_info);
break;
- case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT:
case G_FILE_MONITOR_EVENT_PRE_UNMOUNT:
case G_FILE_MONITOR_EVENT_UNMOUNTED:
case G_FILE_MONITOR_EVENT_MOVED:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xviewer-1.6.1/src/xviewer-thumbnail.c new/xviewer-1.8.0/src/xviewer-thumbnail.c
--- old/xviewer-1.6.1/src/xviewer-thumbnail.c 2017-11-23 13:35:27.000000000 +0100
+++ new/xviewer-1.8.0/src/xviewer-thumbnail.c 2018-04-26 20:01:53.000000000 +0200
@@ -31,7 +31,7 @@
#ifndef GNOME_DESKTOP_USE_UNSTABLE_API
#define GNOME_DESKTOP_USE_UNSTABLE_API
#endif
-#include <libgnome-desktop/gnome-desktop-thumbnail.h>
+#include <libcinnamon-desktop/gnome-desktop-thumbnail.h>
#include "xviewer-thumbnail.h"
#include "xviewer-list-store.h"
@@ -122,10 +122,16 @@
height = gdk_pixbuf_get_height (pixbuf);
perc = CLAMP (128.0/(MAX (width, height)), 0, 1);
-
+#if GDK_PIXBUF_CHECK_VERSION(2,36,5)
+ thumb = gdk_pixbuf_scale_simple (pixbuf,
+ width*perc,
+ height*perc,
+ GDK_INTERP_HYPER);
+#else
thumb = gnome_desktop_thumbnail_scale_down_pixbuf (pixbuf,
width*perc,
height*perc);
+#endif
return thumb;
}
@@ -444,7 +450,11 @@
width = MAX (width * factor, 1);
height = MAX (height * factor, 1);
+#if GDK_PIXBUF_CHECK_VERSION(2,36,5)
+ result_pixbuf = gdk_pixbuf_scale_simple (thumbnail, width, height, GDK_INTERP_HYPER);
+#else
result_pixbuf = gnome_desktop_thumbnail_scale_down_pixbuf (thumbnail, width, height);
+#endif
return result_pixbuf;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xviewer-1.6.1/src/xviewer-thumbnail.h new/xviewer-1.8.0/src/xviewer-thumbnail.h
--- old/xviewer-1.6.1/src/xviewer-thumbnail.h 2017-11-23 13:35:27.000000000 +0100
+++ new/xviewer-1.8.0/src/xviewer-thumbnail.h 2018-04-26 20:01:53.000000000 +0200
@@ -28,6 +28,12 @@
#include <gdk-pixbuf/gdk-pixbuf.h>
#include "xviewer-image.h"
+#define GDK_PIXBUF_CHECK_VERSION(major, minor, micro) \
+ (GDK_PIXBUF_MAJOR > (major) || \
+ (GDK_PIXBUF_MAJOR == (major) && GDK_PIXBUF_MINOR > (minor)) || \
+ (GDK_PIXBUF_MAJOR == (major) && GDK_PIXBUF_MINOR == (minor) && \
+ GDK_PIXBUF_MICRO >= (micro)))
+
G_BEGIN_DECLS
void xviewer_thumbnail_init (void);
1
0
Hello community,
here is the log from the commit of package python-jupyter_nbsphinx for openSUSE:Factory checked in at 2018-04-30 22:56:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_nbsphinx (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_nbsphinx.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_nbsphinx"
Mon Apr 30 22:56:38 2018 rev:7 rq:602304 version:0.3.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jupyter_nbsphinx/python-jupyter_nbsphinx.changes 2018-04-19 15:32:30.111630378 +0200
+++ /work/SRC/openSUSE:Factory/.python-jupyter_nbsphinx.new/python-jupyter_nbsphinx.changes 2018-04-30 22:58:59.180356787 +0200
@@ -1,0 +2,7 @@
+Sat Apr 28 19:29:14 UTC 2018 - toddrme2178(a)gmail.com
+
+- Update to version 0.3.3
+ * Locally linked files are only copied for Jupyter notebooks
+ (and not anymore for other Sphinx source files)
+
+-------------------------------------------------------------------
Old:
----
nbsphinx-0.3.2.tar.gz
New:
----
nbsphinx-0.3.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_nbsphinx.spec ++++++
--- /var/tmp/diff_new_pack.rw2Wmb/_old 2018-04-30 22:58:59.668338981 +0200
+++ /var/tmp/diff_new_pack.rw2Wmb/_new 2018-04-30 22:58:59.672338835 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-jupyter_nbsphinx
-Version: 0.3.2
+Version: 0.3.3
Release: 0
Summary: Jupyter Notebook Tools for Sphinx
License: MIT
++++++ nbsphinx-0.3.2.tar.gz -> nbsphinx-0.3.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nbsphinx-0.3.2/NEWS.rst new/nbsphinx-0.3.3/NEWS.rst
--- old/nbsphinx-0.3.2/NEWS.rst 2018-03-28 13:44:00.000000000 +0200
+++ new/nbsphinx-0.3.3/NEWS.rst 2018-04-25 10:02:27.000000000 +0200
@@ -1,3 +1,7 @@
+Version 0.3.3 (2018-04-25):
+ * Locally linked files are only copied for Jupyter notebooks (and not anymore
+ for other Sphinx source files)
+
Version 0.3.2 (2018-03-28):
* Links to local files are rewritten for all Sphinx source files (not only
Jupyter notebooks)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nbsphinx-0.3.2/PKG-INFO new/nbsphinx-0.3.3/PKG-INFO
--- old/nbsphinx-0.3.2/PKG-INFO 2018-03-28 13:46:05.000000000 +0200
+++ new/nbsphinx-0.3.3/PKG-INFO 2018-04-25 10:05:36.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: nbsphinx
-Version: 0.3.2
+Version: 0.3.3
Summary: Jupyter Notebook Tools for Sphinx
Home-page: http://nbsphinx.readthedocs.io/
Author: Matthias Geier
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nbsphinx-0.3.2/doc/a-normal-rst-file.rst new/nbsphinx-0.3.3/doc/a-normal-rst-file.rst
--- old/nbsphinx-0.3.2/doc/a-normal-rst-file.rst 2018-03-26 12:31:38.000000000 +0200
+++ new/nbsphinx-0.3.3/doc/a-normal-rst-file.rst 2018-04-18 11:15:24.000000000 +0200
@@ -75,19 +75,6 @@
.. _subsection: subdir/a-notebook-in-a-subdir.ipynb#A-Sub-Section
-Links to Local Files (HTML only)
---------------------------------
-
-If you use any of the above-mentioned methods to link to a local file that
-*isn't* a Sphinx source file, it will be automatically copied to the HTML output
-directory, like it would if you `link from a notebook`__.
-
-Alternatively, you can of course as always use Sphinx's download__ role.
-
-__ markdown-cells.ipynb#Links-to-Local-Files-(HTML-only)
-__ http://www.sphinx-doc.org/en/stable/markup/inline.html#role-download
-
-
Links to Notebooks, Ye Olde Way
-------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nbsphinx-0.3.2/src/nbsphinx.egg-info/PKG-INFO new/nbsphinx-0.3.3/src/nbsphinx.egg-info/PKG-INFO
--- old/nbsphinx-0.3.2/src/nbsphinx.egg-info/PKG-INFO 2018-03-28 13:46:05.000000000 +0200
+++ new/nbsphinx-0.3.3/src/nbsphinx.egg-info/PKG-INFO 2018-04-25 10:05:36.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: nbsphinx
-Version: 0.3.2
+Version: 0.3.3
Summary: Jupyter Notebook Tools for Sphinx
Home-page: http://nbsphinx.readthedocs.io/
Author: Matthias Geier
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nbsphinx-0.3.2/src/nbsphinx.py new/nbsphinx-0.3.3/src/nbsphinx.py
--- old/nbsphinx-0.3.2/src/nbsphinx.py 2018-03-28 13:41:57.000000000 +0200
+++ new/nbsphinx-0.3.3/src/nbsphinx.py 2018-04-25 10:00:30.000000000 +0200
@@ -23,7 +23,7 @@
http://nbsphinx.rtfd.org/
"""
-__version__ = '0.3.2'
+__version__ = '0.3.3'
import copy
import json
@@ -476,21 +476,6 @@
margin-top: -19px;
}
-/* nice headers on first paragraph of info/warning boxes */
-.admonition .first {
- margin: -12px;
- padding: 6px 12px;
- margin-bottom: 12px;
- color: #fff;
- line-height: 1;
- display: block;
-}
-.admonition.warning .first {
- background: #f0b37e;
-}
-.admonition.note .first {
- background: #6ab0de;
-}
.admonition > p:before {
margin-right: 4px; /* make room for the exclamation icon */
}
@@ -501,7 +486,7 @@
/* nicer titles and more space for info and warning logos */
-div.admonition > .first {
+div.admonition p.admonition-title {
background: rgba(0, 0, 0, .05);
margin: .5em -1em;
margin-top: -.5em !important;
@@ -618,6 +603,7 @@
return rst.Parser.get_transforms(self) + [
CreateNotebookSectionAnchors,
ReplaceAlertDivs,
+ CopyLinkedFiles,
]
def parse(self, inputstring, document):
@@ -1003,11 +989,48 @@
node.attributes[attr] = value
-class ProcessLocalLinks(docutils.transforms.Transform):
- """Process links to local files.
+def _local_file_from_reference(node, document):
+ """Get local file path from reference and split it into components."""
+ # NB: Anonymous hyperlinks must be already resolved at this point!
+ refuri = node.get('refuri')
+ if not refuri:
+ refname = node.get('refname')
+ if refname:
+ refid = document.nameids.get(refname)
+ else:
+ # NB: This can happen for anonymous hyperlinks
+ refid = node.get('refid')
+ target = document.ids.get(refid)
+ if not target:
+ # No corresponding target, Sphinx may warn later
+ return '', '', ''
+ refuri = target.get('refuri')
+ if not refuri:
+ # Target doesn't have URI
+ return '', '', ''
+ if '://' in refuri:
+ # Not a local link
+ return '', '', ''
+ elif refuri.startswith('#') or refuri.startswith('mailto:'):
+ # Not a local link
+ return '', '', ''
+
+ # NB: We look for "fragment identifier" before unquoting
+ match = re.match(r'^([^#]+)(\.[^#]+)(#.+)$', refuri)
+ if match:
+ base = unquote(match.group(1))
+ # NB: The suffix and "fragment identifier" are not unquoted
+ suffix = match.group(2)
+ fragment = match.group(3)
+ else:
+ base, suffix = os.path.splitext(refuri)
+ base = unquote(base)
+ fragment = ''
+ return base, suffix, fragment
+
- Marks local files to be copied to the HTML output directory and
- turns links to source files into ``:doc:``/``:ref:`` links.
+class RewriteLocalLinks(docutils.transforms.Transform):
+ """Turn links to source files into ``:doc:``/``:ref:`` links.
Links to subsections are possible with ``...#Subsection-Title``.
These links use the labels created by CreateSectionLabels.
@@ -1027,69 +1050,28 @@
default_priority = 500 # After AnonymousHyperlinks (440)
- _subsection_re = re.compile(r'^([^#]+)((\.[^#]+)#.+)$')
-
def apply(self):
env = self.document.settings.env
for node in self.document.traverse(docutils.nodes.reference):
- # NB: Anonymous hyperlinks must be already resolved at this point!
- refuri = node.get('refuri')
- if not refuri:
- refname = node.get('refname')
- if refname:
- refid = self.document.nameids.get(refname)
- else:
- # NB: This can happen for anonymous hyperlinks
- refid = node.get('refid')
- target = self.document.ids.get(refid)
- if not target:
- continue # No corresponding target, Sphinx may warn later
- refuri = target.get('refuri')
- if not refuri:
- continue # Target doesn't have URI
-
- if '://' in refuri:
- continue # Not a local link
- elif refuri.startswith('#') or refuri.startswith('mailto:'):
- continue # Nothing to be done
+ base, suffix, fragment = _local_file_from_reference(node,
+ self.document)
+ if not base:
+ continue
- # NB: We look for "fragment identifier" before unquoting
- fragment = self._subsection_re.match(refuri)
- refuri = unquote(refuri)
- for suffix in env.config.source_suffix:
- if fragment:
- if fragment.group(3).lower() == suffix.lower():
- target = unquote(fragment.group(1))
- # NB: The "fragment identifier" is not unquoted
- target_ext = fragment.group(2)
+ for s in env.config.source_suffix:
+ if suffix.lower() == s.lower():
+ target = base
+ if fragment:
+ target_ext = suffix + fragment
reftype = 'ref'
refdomain = 'std'
- break
- else:
- if refuri.lower().endswith(suffix.lower()):
- target = refuri[:-len(suffix)]
+ else:
target_ext = ''
reftype = 'doc'
refdomain = None
- break
+ break
else:
- if fragment:
- refuri = unquote(fragment.group(1)) + fragment.group(3)
- file = os.path.normpath(
- os.path.join(os.path.dirname(env.docname), refuri))
- if not os.path.isfile(os.path.join(env.srcdir, file)):
- env.app.warn('file not found: {!r}'.format(file),
- env.doc2path(env.docname))
- continue # Link is ignored
- elif file.startswith('..'):
- env.app.warn(
- 'link outside of source directory: {!r}'.format(file),
- env.doc2path(env.docname))
- continue # Link is ignored
- if not hasattr(env, 'nbsphinx_files'):
- env.nbsphinx_files = {}
- env.nbsphinx_files.setdefault(env.docname, []).append(file)
- continue # We're done here
+ continue # Not a link to a potential Sphinx source file
target_docname = nbconvert.filters.posix_path(os.path.normpath(
os.path.join(os.path.dirname(env.docname), target)))
@@ -1124,7 +1106,7 @@
class CreateSectionLabels(docutils.transforms.Transform):
"""Make labels for each document and each section thereof.
- These labels are referenced in ProcessLocalLinks but can also be
+ These labels are referenced in RewriteLocalLinks but can also be
used manually with ``:ref:``.
"""
@@ -1235,6 +1217,35 @@
content.append(sibling)
+class CopyLinkedFiles(docutils.transforms.Transform):
+ """Mark linked (local) files to be copied to the HTML output."""
+
+ default_priority = 600 # After RewriteLocalLinks
+
+ def apply(self):
+ env = self.document.settings.env
+ for node in self.document.traverse(docutils.nodes.reference):
+ base, suffix, fragment = _local_file_from_reference(node,
+ self.document)
+ if not base:
+ continue # Not a local link
+ relpath = base + suffix + fragment
+ file = os.path.normpath(
+ os.path.join(os.path.dirname(env.docname), relpath))
+ if not os.path.isfile(os.path.join(env.srcdir, file)):
+ env.app.warn('file not found: {!r}'.format(file),
+ env.doc2path(env.docname))
+ continue # Link is ignored
+ elif file.startswith('..'):
+ env.app.warn(
+ 'link outside of source directory: {!r}'.format(file),
+ env.doc2path(env.docname))
+ continue # Link is ignored
+ if not hasattr(env, 'nbsphinx_files'):
+ env.nbsphinx_files = {}
+ env.nbsphinx_files.setdefault(env.docname, []).append(file)
+
+
def builder_inited(app):
# Add LaTeX definitions to preamble
latex_elements = app.builder.config.latex_elements
@@ -1373,12 +1384,11 @@
def visit_admonition_html(self, node):
self.body.append(self.starttag(node, 'div'))
- self.set_first_last(node)
- if self.settings.env.config.html_theme in ('sphinx_rtd_theme', 'julia'):
- if node.children:
- classes = node.children[0]['classes']
- if 'last' not in classes:
- classes.extend(['fa', 'fa-exclamation-circle'])
+ if len(node.children) >= 2:
+ node[0]['classes'].append('admonition-title')
+ html_theme = self.settings.env.config.html_theme
+ if html_theme in ('sphinx_rtd_theme', 'julia'):
+ node.children[0]['classes'].extend(['fa', 'fa-exclamation-circle'])
def depart_admonition_html(self, node):
@@ -1453,7 +1463,7 @@
app.connect('env-purge-doc', env_purge_doc)
app.add_transform(CreateSectionLabels)
app.add_transform(CreateDomainObjectLabels)
- app.add_transform(ProcessLocalLinks)
+ app.add_transform(RewriteLocalLinks)
# Make docutils' "code" directive (generated by markdown2rst/pandoc)
# behave like Sphinx's "code-block",
1
0
Hello community,
here is the log from the commit of package python-QtPy for openSUSE:Factory checked in at 2018-04-30 22:56:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-QtPy (Old)
and /work/SRC/openSUSE:Factory/.python-QtPy.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-QtPy"
Mon Apr 30 22:56:35 2018 rev:3 rq:602303 version:1.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-QtPy/python-QtPy.changes 2017-08-29 11:47:45.269251682 +0200
+++ /work/SRC/openSUSE:Factory/.python-QtPy.new/python-QtPy.changes 2018-04-30 22:58:55.716483182 +0200
@@ -1,0 +2,32 @@
+Sat Apr 28 19:47:37 UTC 2018 - toddrme2178(a)gmail.com
+
+- Update to Version 1.4.1
+ + New features
+ * Show a warning when QT_API is changed automatically by qtpy.
+ + Issues Closed
+ * Raise a warning if QT_API value is changed automatically
+ * On OSX qtpy applications are forcing discrete graphics
+ + Pull Requests Merged
+ * Add better compatibility with PySide2
+ * Add a warning if API is changed automatically
+ * Avoid using PyQt5.Qt, which imports unneeded stuff and forces
+ discrete GPU on OSX
+- Update to Version 1.4 (2018-03-11)
+ + New features
+ * Add support for QtHelp
+ * Add support for QtSql
+ * Use already imported bindings
+ + Issues Closed
+ * If one binding has already been imported,
+ then qtpy should just use it
+ * Add Wrapper for QtSql
+ * Methods missing from QStandardPaths when QT_API=pyqt4
+ * Add Wrapper for QtHelp
+ + Pull Requests Merged
+ * Pin PyQt5 to 5.9.2 in CircleCI because 5.10 is generating segfaults
+ * If a Qt binding is already imported, then use it.
+ * Add QtSql wrapper (incl. test)
+ * Changes to QDesktop split
+ * Add QtHelp Wrapper
+
+-------------------------------------------------------------------
Old:
----
QtPy-1.3.1.tar.gz
New:
----
QtPy-1.4.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-QtPy.spec ++++++
--- /var/tmp/diff_new_pack.JDwOgh/_old 2018-04-30 22:58:56.620450197 +0200
+++ /var/tmp/diff_new_pack.JDwOgh/_new 2018-04-30 22:58:56.640449468 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-QtPy
#
-# 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
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-QtPy
-Version: 1.3.1
+Version: 1.4.1
Release: 0
License: MIT
Summary: Abstraction layer on top of Qt bindings
++++++ QtPy-1.3.1.tar.gz -> QtPy-1.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/CHANGELOG.md new/QtPy-1.4.1/CHANGELOG.md
--- old/QtPy-1.3.1/CHANGELOG.md 2017-08-21 18:45:03.000000000 +0200
+++ new/QtPy-1.4.1/CHANGELOG.md 2018-04-28 19:05:26.000000000 +0200
@@ -1,5 +1,61 @@
# History of changes
+## Version 1.4.1 (2018-04-28)
+
+### New features
+
+* Show a warning when QT_API is changed automatically by qtpy.
+
+### Issues Closed
+
+* [Issue 145](https://github.com/spyder-ide/qtpy/issues/145) - Raise a warning if QT_API value is changed automatically ([PR 146](https://github.com/spyder-ide/qtpy/pull/146))
+* [Issue 142](https://github.com/spyder-ide/qtpy/issues/142) - On OSX qtpy applications are forcing discrete graphics ([PR 143](https://github.com/spyder-ide/qtpy/pull/143))
+
+In this release 2 issues were closed.
+
+### Pull Requests Merged
+
+* [PR 147](https://github.com/spyder-ide/qtpy/pull/147) - PR: Add better compatibility with PySide2
+* [PR 146](https://github.com/spyder-ide/qtpy/pull/146) - PR: Add a warning if API is changed automatically ([145](https://github.com/spyder-ide/qtpy/issues/145))
+* [PR 143](https://github.com/spyder-ide/qtpy/pull/143) - PR: Avoid using PyQt5.Qt, which imports unneeded stuff and forces discrete GPU on OSX ([142](https://github.com/spyder-ide/qtpy/issues/142))
+
+In this release 3 pull requests were closed.
+
+
+----
+
+
+## Version 1.4 (2018-03-11)
+
+### New features
+
+* Add support for QtHelp
+* Add support for QtSql
+* Use already imported bindings
+
+### Issues Closed
+
+* [Issue 138](https://github.com/spyder-ide/qtpy/issues/138) - If one binding has already been imported, then qtpy should just use it ([PR 139](https://github.com/spyder-ide/qtpy/pull/139))
+* [Issue 135](https://github.com/spyder-ide/qtpy/issues/135) - Add Wrapper for QtSql [feature request] ([PR 136](https://github.com/spyder-ide/qtpy/pull/136))
+* [Issue 131](https://github.com/spyder-ide/qtpy/issues/131) - Methods missing from QStandardPaths when QT_API=pyqt4
+* [Issue 127](https://github.com/spyder-ide/qtpy/issues/127) - Add Wrapper for QtHelp [feature request] ([PR 128](https://github.com/spyder-ide/qtpy/pull/128))
+
+In this release 4 issues were closed.
+
+### Pull Requests Merged
+
+* [PR 140](https://github.com/spyder-ide/qtpy/pull/140) - PR: Pin PyQt5 to 5.9.2 in CircleCI because 5.10 is generating segfaults
+* [PR 139](https://github.com/spyder-ide/qtpy/pull/139) - PR: If a Qt binding is already imported, then use it. ([138](https://github.com/spyder-ide/qtpy/issues/138))
+* [PR 136](https://github.com/spyder-ide/qtpy/pull/136) - PR: Add QtSql wrapper (incl. test) ([135](https://github.com/spyder-ide/qtpy/issues/135))
+* [PR 132](https://github.com/spyder-ide/qtpy/pull/132) - PR: Changes to QDesktop split
+* [PR 128](https://github.com/spyder-ide/qtpy/pull/128) - PR: Add QtHelp Wrapper ([127](https://github.com/spyder-ide/qtpy/issues/127))
+
+In this release 5 pull requests were closed.
+
+
+----
+
+
## Version 1.3.1 (2017-08-21)
### Bugs fixed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/PKG-INFO new/QtPy-1.4.1/PKG-INFO
--- old/QtPy-1.3.1/PKG-INFO 2017-08-21 18:47:29.000000000 +0200
+++ new/QtPy-1.4.1/PKG-INFO 2018-04-28 19:09:04.000000000 +0200
@@ -1,10 +1,12 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
Name: QtPy
-Version: 1.3.1
+Version: 1.4.1
Summary: Provides an abstraction layer on top of the various Qt bindings (PyQt5, PyQt4 and PySide) and additional custom QWidgets.
Home-page: https://github.com/spyder-ide/qtpy
-Author: Gonzalo Peña-Castellanos
+Author: Colin Duquesnoy, The Spyder Development Team
Author-email: goanpeca(a)gmail.com
+Maintainer: Gonzalo Peña-Castellanos
+Maintainer-email: goanpeca(a)gmail.com
License: MIT
Description:
.. image:: https://img.shields.io/pypi/v/QtPy.svg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/QtPy.egg-info/PKG-INFO new/QtPy-1.4.1/QtPy.egg-info/PKG-INFO
--- old/QtPy-1.3.1/QtPy.egg-info/PKG-INFO 2017-08-21 18:47:28.000000000 +0200
+++ new/QtPy-1.4.1/QtPy.egg-info/PKG-INFO 2018-04-28 19:09:04.000000000 +0200
@@ -1,10 +1,12 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
Name: QtPy
-Version: 1.3.1
+Version: 1.4.1
Summary: Provides an abstraction layer on top of the various Qt bindings (PyQt5, PyQt4 and PySide) and additional custom QWidgets.
Home-page: https://github.com/spyder-ide/qtpy
-Author: Gonzalo Peña-Castellanos
+Author: Colin Duquesnoy, The Spyder Development Team
Author-email: goanpeca(a)gmail.com
+Maintainer: Gonzalo Peña-Castellanos
+Maintainer-email: goanpeca(a)gmail.com
License: MIT
Description:
.. image:: https://img.shields.io/pypi/v/QtPy.svg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/QtPy.egg-info/SOURCES.txt new/QtPy-1.4.1/QtPy.egg-info/SOURCES.txt
--- old/QtPy-1.3.1/QtPy.egg-info/SOURCES.txt 2017-08-21 18:47:29.000000000 +0200
+++ new/QtPy-1.4.1/QtPy.egg-info/SOURCES.txt 2018-04-28 19:09:04.000000000 +0200
@@ -12,10 +12,12 @@
qtpy/QtCore.py
qtpy/QtDesigner.py
qtpy/QtGui.py
+qtpy/QtHelp.py
qtpy/QtMultimedia.py
qtpy/QtNetwork.py
qtpy/QtOpenGL.py
qtpy/QtPrintSupport.py
+qtpy/QtSql.py
qtpy/QtSvg.py
qtpy/QtTest.py
qtpy/QtWebEngineWidgets.py
@@ -39,9 +41,11 @@
qtpy/tests/test_qdesktopservice_split.py
qtpy/tests/test_qtcore.py
qtpy/tests/test_qtdesigner.py
+qtpy/tests/test_qthelp.py
qtpy/tests/test_qtmultimedia.py
qtpy/tests/test_qtnetwork.py
qtpy/tests/test_qtprintsupport.py
+qtpy/tests/test_qtsql.py
qtpy/tests/test_qtsvg.py
qtpy/tests/test_qttest.py
qtpy/tests/test_uic.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/README.md new/QtPy-1.4.1/README.md
--- old/QtPy-1.3.1/README.md 2017-08-12 17:45:55.000000000 +0200
+++ new/QtPy-1.4.1/README.md 2018-03-11 22:29:19.000000000 +0100
@@ -6,6 +6,8 @@
[![license](https://img.shields.io/pypi/l/qtpy.svg)](./LICENSE)
[![pypi version](https://img.shields.io/pypi/v/qtpy.svg)](https://pypi.python.org/p…
[![Join the chat at https://gitter.im/spyder-ide/public](https://badges.gitter.im/spyder-ide/sp…
+[![OpenCollective Backers](https://opencollective.com/spyder/backers/badge.svg?color=blue)](#…
+[![OpenCollective Sponsors](https://opencollective.com/spyder/sponsors/badge.svg?color=blue)]…
## Build status
[![Build status](https://ci.appveyor.com/api/projects/status/62y6i02vhn4hefg0/branch…
@@ -13,6 +15,27 @@
[![Coverage Status](https://coveralls.io/repos/github/spyder-ide/qtpy/badge.svg?branch=master)](https://coveralls.io/github/spyder-ide/qtpy?branch=master)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/spyder-ide/qtpy/badges/quality-score.…
+----
+
+## Important Announcement: Spyder is unfunded!
+
+Since mid November/2017, [Anaconda, Inc](https://www.anaconda.com/) has
+stopped funding Spyder development, after doing it for the past 18
+months. Because of that, development will focus from now on maintaining
+Spyder 3 at a much slower pace than before.
+
+If you want to contribute to maintain Spyder, please consider donating at
+
+https://opencollective.com/spyder
+
+We appreciate all the help you can provide us and can't thank you enough for
+supporting the work of Spyder devs and Spyder development.
+
+If you want to know more about this, please read this
+[page](https://github.com/spyder-ide/spyder/wiki/Anaconda-stopped-funding-Spyder).
+
+----
+
## Description
**QtPy** is a small abstraction layer that lets you
@@ -68,3 +91,20 @@
```bash
conda install qtpy
```
+
+## Contributing
+
+Everyone is welcome to contribute!
+
+## Backers
+
+Support us with a monthly donation and help us continue our activities.
+
+[![Backers](https://opencollective.com/spyder/backers.svg)](https://opencollective.com/spyder#support)
+
+
+## Sponsors
+
+Become a sponsor to get your logo on our README on Github.
+
+[![Sponsors](https://opencollective.com/spyder/sponsors.svg)](https://opencollective.com/spyder#support)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/qtpy/QtCore.py new/QtPy-1.4.1/qtpy/QtCore.py
--- old/QtPy-1.3.1/qtpy/QtCore.py 2017-08-12 17:19:03.000000000 +0200
+++ new/QtPy-1.4.1/qtpy/QtCore.py 2018-04-28 19:01:30.000000000 +0200
@@ -24,6 +24,8 @@
del pyqtSignal, pyqtSlot, pyqtProperty, QT_VERSION_STR
elif PYSIDE2:
from PySide2.QtCore import *
+ from PySide2.QtGui import QStringListModel
+
elif PYQT4:
from PyQt4.QtCore import *
# Those are things we inherited from Spyder that fix crazy crashes under
@@ -58,6 +60,7 @@
HomeLocation = _QDesktopServices.HomeLocation
DataLocation = _QDesktopServices.DataLocation
CacheLocation = _QDesktopServices.CacheLocation
+ writableLocation = _QDesktopServices.storageLocation
# Those are imported from `import *`
del pyqtSignal, pyqtSlot, pyqtProperty, QT_VERSION_STR, qInstallMsgHandler
@@ -88,6 +91,7 @@
HomeLocation = _QDesktopServices.HomeLocation
DataLocation = _QDesktopServices.DataLocation
CacheLocation = _QDesktopServices.CacheLocation
+ writableLocation = _QDesktopServices.storageLocation
import PySide.QtCore
__version__ = PySide.QtCore.__version__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/qtpy/QtGui.py new/QtPy-1.4.1/qtpy/QtGui.py
--- old/QtPy-1.3.1/qtpy/QtGui.py 2017-05-11 17:36:04.000000000 +0200
+++ new/QtPy-1.4.1/qtpy/QtGui.py 2018-03-11 22:29:19.000000000 +0100
@@ -12,6 +12,7 @@
exposed here. Therefore, you need to treat/use this package as if it were
the ``PyQt5.QtGui`` module.
"""
+import warnings
from . import PYQT5, PYQT4, PYSIDE, PYSIDE2, PythonQtError
@@ -75,10 +76,21 @@
from PyQt4.QtGui import QDesktopServices as _QDesktopServices
class QDesktopServices():
- openUrl = _QDesktopServices.openUrl
- setUrlHandler = _QDesktopServices.setUrlHandler
- unsetUrlHandler = _QDesktopServices.unsetUrlHandler
-
+ openUrl = _QDesktopServices.openUrl
+ setUrlHandler = _QDesktopServices.setUrlHandler
+ unsetUrlHandler = _QDesktopServices.unsetUrlHandler
+
+ def __getattr__(self, name):
+ attr = getattr(_QDesktopServices, name)
+
+ new_name = name
+ if name == 'storageLocation':
+ new_name = 'writableLocation'
+ warnings.warn(("Warning QDesktopServices.{} is deprecated in Qt5"
+ "we recommend you use QDesktopServices.{} instead").format(name, new_name),
+ DeprecationWarning)
+ return attr
+ QDesktopServices = QDesktopServices()
elif PYSIDE:
from PySide.QtGui import (QAbstractTextDocumentLayout, QActionEvent, QBitmap,
@@ -126,8 +138,20 @@
from PySide.QtGui import QDesktopServices as _QDesktopServices
class QDesktopServices():
- openUrl = _QDesktopServices.openUrl
- setUrlHandler = _QDesktopServices.setUrlHandler
- unsetUrlHandler = _QDesktopServices.unsetUrlHandler
+ openUrl = _QDesktopServices.openUrl
+ setUrlHandler = _QDesktopServices.setUrlHandler
+ unsetUrlHandler = _QDesktopServices.unsetUrlHandler
+
+ def __getattr__(self, name):
+ attr = getattr(_QDesktopServices, name)
+
+ new_name = name
+ if name == 'storageLocation':
+ new_name = 'writableLocation'
+ warnings.warn(("Warning QDesktopServices.{} is deprecated in Qt5"
+ "we recommend you use QDesktopServices.{} instead").format(name, new_name),
+ DeprecationWarning)
+ return attr
+ QDesktopServices = QDesktopServices()
else:
raise PythonQtError('No Qt bindings could be found')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/qtpy/QtHelp.py new/QtPy-1.4.1/qtpy/QtHelp.py
--- old/QtPy-1.3.1/qtpy/QtHelp.py 1970-01-01 01:00:00.000000000 +0100
+++ new/QtPy-1.4.1/qtpy/QtHelp.py 2018-03-11 22:30:58.000000000 +0100
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright © 2009- The Spyder Development Team
+#
+# Licensed under the terms of the MIT License
+# (see LICENSE.txt for details)
+
+"""QtHelp Wrapper."""
+
+import warnings
+
+from . import PYQT5
+from . import PYQT4
+from . import PYSIDE
+from . import PYSIDE2
+from . import PythonQtWarning
+
+if PYQT5:
+ from PyQt5.QtHelp import *
+elif PYSIDE2:
+ # Current wheels don't have this module
+ # from PySide2.QtHelp
+ warnings.warn("QtHelp binding is missing in PySide2", PythonQtWarning)
+elif PYQT4:
+ from PyQt4.QtHelp import *
+elif PYSIDE:
+ from PySide.QtHelp import *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/qtpy/QtMultimedia.py new/QtPy-1.4.1/qtpy/QtMultimedia.py
--- old/QtPy-1.3.1/qtpy/QtMultimedia.py 2017-05-11 17:36:04.000000000 +0200
+++ new/QtPy-1.4.1/qtpy/QtMultimedia.py 2018-03-11 22:30:58.000000000 +0100
@@ -1,15 +1,17 @@
+import warnings
+
from . import PYQT5
from . import PYQT4
from . import PYSIDE
from . import PYSIDE2
-
+from . import PythonQtWarning
if PYQT5:
from PyQt5.QtMultimedia import *
elif PYSIDE2:
# Current wheels don't have this module
# from PySide2.QtMultimedia import *
- pass
+ warnings.warn("QtMultimedia binding is missing in PySide2", PythonQtWarning)
elif PYQT4:
from PyQt4.QtMultimedia import *
from PyQt4.QtGui import QSound
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/qtpy/QtSql.py new/QtPy-1.4.1/qtpy/QtSql.py
--- old/QtPy-1.3.1/qtpy/QtSql.py 1970-01-01 01:00:00.000000000 +0100
+++ new/QtPy-1.4.1/qtpy/QtSql.py 2018-03-11 22:29:19.000000000 +0100
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+# -----------------------------------------------------------------------------
+# Copyright © 2009- The Spyder Development Team
+#
+# Licensed under the terms of the MIT License
+# (see LICENSE.txt for details)
+# -----------------------------------------------------------------------------
+"""Provides QtSql classes and functions."""
+
+# Local imports
+from . import PYQT5, PYSIDE2, PYQT4, PYSIDE, PythonQtError
+
+if PYQT5:
+ from PyQt5.QtSql import *
+elif PYSIDE2:
+ from PySide2.QtSql import *
+elif PYQT4:
+ from PyQt4.QtSql import *
+elif PYSIDE:
+ from PySide.QtSql import *
+else:
+ raise PythonQtError('No Qt bindings could be found')
+
+del PYQT4, PYQT5, PYSIDE, PYSIDE2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/qtpy/__init__.py new/QtPy-1.4.1/qtpy/__init__.py
--- old/QtPy-1.3.1/qtpy/__init__.py 2017-05-11 17:36:04.000000000 +0200
+++ new/QtPy-1.4.1/qtpy/__init__.py 2018-04-28 19:01:30.000000000 +0200
@@ -10,12 +10,13 @@
**QtPy** is a shim over the various Python Qt bindings. It is used to write
Qt binding indenpendent libraries or applications.
-The shim will automatically select the first available API (PyQt5, PyQt4 and
-finally PySide).
+If one of the APIs has already been imported, then it will be used.
-You can force the use of one specific bindings (e.g. if your application is
-using one specific bindings and you need to use library that use QtPy) by
-setting up the ``QT_API`` environment variable.
+Otherwise, the shim will automatically select the first available API (PyQt5,
+PySide2, PyQt4 and finally PySide); in that case, you can force the use of one
+specific bindings (e.g. if your application is using one specific bindings and
+you need to use library that use QtPy) by setting up the ``QT_API`` environment
+variable.
PyQt5
=====
@@ -62,6 +63,8 @@
"""
import os
+import sys
+import warnings
# Version of QtPy
from ._version import __version__
@@ -86,7 +89,9 @@
# Setting a default value for QT_API
os.environ.setdefault(QT_API, 'pyqt5')
+
API = os.environ[QT_API].lower()
+initial_api = API
assert API in (PYQT5_API + PYQT4_API + PYSIDE_API + PYSIDE2_API)
is_old_pyqt = is_pyqt46 = False
@@ -98,11 +103,24 @@
"""Error raise if no bindings could be selected"""
pass
+class PythonQtWarning(Warning):
+ """Warning if some features are not implemented in a binding."""
+ pass
+
+if 'PyQt5' in sys.modules:
+ API = 'pyqt5'
+elif 'PySide2' in sys.modules:
+ API = 'pyside2'
+elif 'PyQt4' in sys.modules:
+ API = 'pyqt4'
+elif 'PySide' in sys.modules:
+ API = 'pyside'
+
if API in PYQT5_API:
try:
- from PyQt5.Qt import PYQT_VERSION_STR as PYQT_VERSION # analysis:ignore
- from PyQt5.Qt import QT_VERSION_STR as QT_VERSION # analysis:ignore
+ from PyQt5.QtCore import PYQT_VERSION_STR as PYQT_VERSION # analysis:ignore
+ from PyQt5.QtCore import QT_VERSION_STR as QT_VERSION # analysis:ignore
PYSIDE_VERSION = None
except ImportError:
API = os.environ['QT_API'] = 'pyside2'
@@ -153,6 +171,12 @@
except ImportError:
raise PythonQtError('No Qt bindings could be found')
+# If a correct API name is passed to QT_API and it could not be found,
+# switches to another and informs through the warning
+if API != initial_api:
+ warnings.warn('Selected binding "{}" could not be found, '
+ 'using "{}"'.format(initial_api, API), RuntimeWarning)
+
API_NAME = {'pyqt5': 'PyQt5', 'pyqt': 'PyQt4', 'pyqt4': 'PyQt4',
'pyside': 'PySide', 'pyside2':'PySide2'}[API]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/qtpy/_version.py new/QtPy-1.4.1/qtpy/_version.py
--- old/QtPy-1.3.1/qtpy/_version.py 2017-08-21 18:46:27.000000000 +0200
+++ new/QtPy-1.4.1/qtpy/_version.py 2018-04-28 19:07:19.000000000 +0200
@@ -1,2 +1,2 @@
-version_info = (1, 3, 1)
+version_info = (1, 4, 1)
__version__ = '.'.join(map(str, version_info))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/qtpy/tests/test_qdesktopservice_split.py new/QtPy-1.4.1/qtpy/tests/test_qdesktopservice_split.py
--- old/QtPy-1.3.1/qtpy/tests/test_qdesktopservice_split.py 2017-05-11 17:36:04.000000000 +0200
+++ new/QtPy-1.4.1/qtpy/tests/test_qdesktopservice_split.py 2018-03-11 22:29:19.000000000 +0100
@@ -1,7 +1,8 @@
from __future__ import absolute_import
import pytest
-from qtpy import PYSIDE2
+import warnings
+from qtpy import PYQT4, PYSIDE, PYSIDE2
"""Test QDesktopServices split in Qt5."""
@@ -23,6 +24,18 @@
assert QDesktopServices.setUrlHandler is not None
- # Attributes from QStandardPaths shouldn't be in QDesktopServices
- with pytest.raises(AttributeError) as excinfo:
- QDesktopServices.StandardLocation
\ No newline at end of file
+
+(a)pytest.mark.skipif(not (PYQT4 or PYSIDE), reason="Warning is only raised in old bindings")
+def test_qdesktopservice_qt4_pyside():
+ from qtpy.QtGui import QDesktopServices
+ # Attributes from QStandardPaths should raise a warning when imported
+ # from QDesktopServices
+ with warnings.catch_warnings(record=True) as w:
+ # Cause all warnings to always be triggered.
+ warnings.simplefilter("always")
+ # Try to import QtHelp.
+ QDesktopServices.StandardLocation
+
+ assert len(w) == 1
+ assert issubclass(w[-1].category, DeprecationWarning)
+ assert "deprecated" in str(w[-1].message)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/qtpy/tests/test_qthelp.py new/QtPy-1.4.1/qtpy/tests/test_qthelp.py
--- old/QtPy-1.3.1/qtpy/tests/test_qthelp.py 1970-01-01 01:00:00.000000000 +0100
+++ new/QtPy-1.4.1/qtpy/tests/test_qthelp.py 2018-03-11 22:30:58.000000000 +0100
@@ -0,0 +1,38 @@
+"""Test for QtHelp namespace."""
+
+from __future__ import absolute_import
+import warnings
+
+import pytest
+from qtpy import PYSIDE2, PythonQtWarning
+
+
+(a)pytest.mark.skipif(PYSIDE2, reason="QtHelp binding is missing in PySide2")
+def test_qthelp():
+ """Test the qtpy.QtHelp namespace."""
+ from qtpy import QtHelp
+
+ assert QtHelp.QHelpContentItem is not None
+ assert QtHelp.QHelpContentModel is not None
+ assert QtHelp.QHelpContentWidget is not None
+ assert QtHelp.QHelpEngine is not None
+ assert QtHelp.QHelpEngineCore is not None
+ assert QtHelp.QHelpIndexModel is not None
+ assert QtHelp.QHelpIndexWidget is not None
+ assert QtHelp.QHelpSearchEngine is not None
+ assert QtHelp.QHelpSearchQuery is not None
+ assert QtHelp.QHelpSearchQueryWidget is not None
+ assert QtHelp.QHelpSearchResultWidget is not None
+
+
+(a)pytest.mark.skipif(not PYSIDE2, reason="Only runs in not implemented bindings")
+def test_qthelp_not_implemented():
+ with warnings.catch_warnings(record=True) as w:
+ # Cause all warnings to always be triggered.
+ warnings.simplefilter("always")
+ # Try to import QtHelp.
+ from qtpy import QtHelp
+
+ assert len(w) == 1
+ assert issubclass(w[-1].category, PythonQtWarning)
+ assert "missing" in str(w[-1].message)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/qtpy/tests/test_qtmultimedia.py new/QtPy-1.4.1/qtpy/tests/test_qtmultimedia.py
--- old/QtPy-1.3.1/qtpy/tests/test_qtmultimedia.py 2017-05-11 17:36:04.000000000 +0200
+++ new/QtPy-1.4.1/qtpy/tests/test_qtmultimedia.py 2018-03-11 22:30:58.000000000 +0100
@@ -1,14 +1,30 @@
from __future__ import absolute_import
import pytest
-from qtpy import PYSIDE2, QtMultimedia
+import warnings
+from qtpy import PYSIDE2, PythonQtWarning
@pytest.mark.skipif(PYSIDE2, reason="It fails on PySide2")
def test_qtmultimedia():
"""Test the qtpy.QtMultimedia namespace"""
+ from qtpy import QtMultimedia
+
assert QtMultimedia.QAbstractVideoBuffer is not None
assert QtMultimedia.QAudio is not None
assert QtMultimedia.QAudioDeviceInfo is not None
assert QtMultimedia.QAudioInput is not None
assert QtMultimedia.QSound is not None
+
+
+(a)pytest.mark.skipif(not PYSIDE2, reason="Only runs in not implemented bindings")
+def test_qtmultimedia_not_implemented():
+ with warnings.catch_warnings(record=True) as w:
+ # Cause all warnings to always be triggered.
+ warnings.simplefilter("always")
+ # Try to import QtMultimedia.
+ from qtpy import QtMultimedia
+
+ assert len(w) == 1
+ assert issubclass(w[-1].category, PythonQtWarning)
+ assert "missing" in str(w[-1].message)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/qtpy/tests/test_qtsql.py new/QtPy-1.4.1/qtpy/tests/test_qtsql.py
--- old/QtPy-1.3.1/qtpy/tests/test_qtsql.py 1970-01-01 01:00:00.000000000 +0100
+++ new/QtPy-1.4.1/qtpy/tests/test_qtsql.py 2018-03-11 22:29:19.000000000 +0100
@@ -0,0 +1,24 @@
+from __future__ import absolute_import
+
+import pytest
+from qtpy import QtSql
+
+def test_qtsql():
+ """Test the qtpy.QtSql namespace"""
+ assert QtSql.QSqlDatabase is not None
+ assert QtSql.QSqlDriverCreatorBase is not None
+ assert QtSql.QSqlDriver is not None
+ assert QtSql.QSqlError is not None
+ assert QtSql.QSqlField is not None
+ assert QtSql.QSqlIndex is not None
+ assert QtSql.QSqlQuery is not None
+ assert QtSql.QSqlRecord is not None
+ assert QtSql.QSqlResult is not None
+ assert QtSql.QSqlQueryModel is not None
+ assert QtSql.QSqlRelationalDelegate is not None
+ assert QtSql.QSqlRelation is not None
+ assert QtSql.QSqlRelationalTableModel is not None
+ assert QtSql.QSqlTableModel is not None
+
+ # Following modules are not (yet) part of any wrapper:
+ # QSqlDriverCreator, QSqlDriverPlugin
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPy-1.3.1/setup.cfg new/QtPy-1.4.1/setup.cfg
--- old/QtPy-1.3.1/setup.cfg 2017-08-21 18:47:29.000000000 +0200
+++ new/QtPy-1.4.1/setup.cfg 2018-04-28 19:09:04.000000000 +0200
@@ -4,5 +4,4 @@
[egg_info]
tag_build =
tag_date = 0
-tag_svn_revision = 0
1
0
Hello community,
here is the log from the commit of package mypaint for openSUSE:Factory checked in at 2018-04-30 22:56:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mypaint (Old)
and /work/SRC/openSUSE:Factory/.mypaint.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mypaint"
Mon Apr 30 22:56:26 2018 rev:4 rq:602293 version:1.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/mypaint/mypaint.changes 2017-12-11 18:57:01.405074324 +0100
+++ /work/SRC/openSUSE:Factory/.mypaint.new/mypaint.changes 2018-04-30 22:58:53.492564333 +0200
@@ -1,0 +2,13 @@
+Sat Apr 28 16:25:40 UTC 2018 - badshah400(a)gmail.com
+
+- Updated standalone library libmypaint already provides its own
+ lang files; just strip mypaint-lang of all libmypaint.mo files
+ to avoid a file conflict between the libmypaint-lang and
+ mypaint-lang.
+- Recommend instead of requiring lang package.
+- Don't run desktop database and icon cache update scripts as part
+ of post(un) for openSUSE >=1500; these are taken care of by
+ rpm's file triggers.
+- Fix env-based hashbang in the main app binary.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mypaint.spec ++++++
--- /var/tmp/diff_new_pack.IuLysv/_old 2018-04-30 22:58:54.968510476 +0200
+++ /var/tmp/diff_new_pack.IuLysv/_new 2018-04-30 22:58:54.988509746 +0200
@@ -1,7 +1,7 @@
#
# spec file for package mypaint
#
-# 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.1.0
Release: 0
Summary: Graphics application for digital painters
-License: GPL-2.0+
+License: GPL-2.0-or-later
Group: Productivity/Graphics/Other
Url: http://mypaint.org
Source: https://github.com/mypaint/mypaint/releases/download/v1.1.0/mypaint-1.1.0.t…
@@ -48,7 +48,7 @@
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(json)
BuildRequires: pkgconfig(lcms2)
-Requires: %{name}-lang = %{version}
+Recommends: %{name}-lang = %{version}
%if 0%{?suse_version} >= 1220
Requires: python-numpy >= 1.7
%else
@@ -108,18 +108,28 @@
%{buildroot}%{_datadir}/pixmaps/
%suse_update_desktop_file %{name}
%find_lang %{name}
-%find_lang lib%{name}
+
+# Updated libmypaint already provides its own lang files
+find %{buildroot} -name "libmypaint.mo" -print | xargs rm -f
+
+# Fix env-based hashbang
+sed -E -i "s:/usr/bin/env python*.*:/usr/bin/python3:" %{buildroot}%{_bindir}/mypaint
+
%fdupes %{buildroot}
%post
/sbin/ldconfig
+%if 0%{?suse_version} < 1500
%desktop_database_post
%icon_theme_cache_post
+%endif
%postun
/sbin/ldconfig
+%if 0%{?suse_version} < 1500
%desktop_database_postun
%icon_theme_cache_postun
+%endif
%files
%defattr(-,root,root)
@@ -133,7 +143,7 @@
%{_datadir}/icons/hicolor/*/*/brush*
%{_datadir}/pixmaps/%{name}.png
-%files lang -f %{name}.lang -f lib%{name}.lang
+%files lang -f %{name}.lang
%files devel
%defattr(-, root, root)
1
0
Hello community,
here is the log from the commit of package tanukiwrapper for openSUSE:Factory checked in at 2018-04-30 22:56:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tanukiwrapper (Old)
and /work/SRC/openSUSE:Factory/.tanukiwrapper.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tanukiwrapper"
Mon Apr 30 22:56:21 2018 rev:17 rq:602277 version:3.5.35
Changes:
--------
--- /work/SRC/openSUSE:Factory/tanukiwrapper/tanukiwrapper.changes 2018-04-16 12:48:54.925273031 +0200
+++ /work/SRC/openSUSE:Factory/.tanukiwrapper.new/tanukiwrapper.changes 2018-04-30 22:58:49.420712912 +0200
@@ -1,0 +2,8 @@
+Sat Apr 28 10:48:20 UTC 2018 - kasimir_(a)outlook.de
+
+- update to version 3.5.35
+- fix build on armv6, armv7, ppc64 and riscv64
+ Modified:
+ * tanukiwrapper-additional-makefiles.patch
+
+-------------------------------------------------------------------
Old:
----
wrapper_3.5.32_src.tar.gz
New:
----
wrapper_3.5.35_src.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tanukiwrapper.spec ++++++
--- /var/tmp/diff_new_pack.yD3Kkt/_old 2018-04-30 22:58:51.236646650 +0200
+++ /var/tmp/diff_new_pack.yD3Kkt/_new 2018-04-30 22:58:51.248646212 +0200
@@ -18,7 +18,7 @@
Name: tanukiwrapper
-Version: 3.5.32
+Version: 3.5.35
Release: 0
Summary: Java Service Wrapper
License: GPL-2.0-only
++++++ tanukiwrapper-additional-makefiles.patch ++++++
--- /var/tmp/diff_new_pack.yD3Kkt/_old 2018-04-30 22:58:51.292644606 +0200
+++ /var/tmp/diff_new_pack.yD3Kkt/_new 2018-04-30 22:58:51.296644460 +0200
@@ -1,9 +1,9 @@
Description: linux makefiles for other architectures
-Index: wrapper_3.5.32_src/src/c/Makefile-linux-mips-32.make
+Index: wrapper_3.5.35_src/src/c/Makefile-linux-mips-32.make
===================================================================
--- /dev/null
-+++ wrapper_3.5.32_src/src/c/Makefile-linux-mips-32.make
++++ wrapper_3.5.35_src/src/c/Makefile-linux-mips-32.make
@@ -0,0 +1,49 @@
+
+# Copyright (c) 1999, 2013 Tanuki Software, Ltd.
@@ -21,7 +21,7 @@
+
+DEFS = -I$(INCLUDE) -I$(INCLUDE)/linux
+
-+wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c wrapper_hashmap.c
++wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c wrapper_hashmap.c wrapper_ulimit.c wrapper_encoding.c wrapper_jvminfo.c
+
+libwrapper_so_OBJECTS = wrapper_i18n.o wrapperjni_unix.o wrapperinfo.o wrapperjni.o loggerjni.o
+
@@ -54,10 +54,10 @@
+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
+ >> .deps/$(*F).P; \
+ rm .deps/$(*F).pp
-Index: wrapper_3.5.32_src/src/c/Makefile-linux-mipsel-32.make
+Index: wrapper_3.5.35_src/src/c/Makefile-linux-mipsel-32.make
===================================================================
--- /dev/null
-+++ wrapper_3.5.32_src/src/c/Makefile-linux-mipsel-32.make
++++ wrapper_3.5.35_src/src/c/Makefile-linux-mipsel-32.make
@@ -0,0 +1,49 @@
+
+# Copyright (c) 1999, 2013 Tanuki Software, Ltd.
@@ -75,7 +75,7 @@
+
+DEFS = -I$(INCLUDE) -I$(INCLUDE)/linux
+
-+wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c wrapper_hashmap.c
++wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c wrapper_hashmap.c wrapper_ulimit.c wrapper_encoding.c wrapper_jvminfo.c
+
+libwrapper_so_OBJECTS = wrapper_i18n.o wrapperjni_unix.o wrapperinfo.o wrapperjni.o loggerjni.o
+
@@ -108,10 +108,10 @@
+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
+ >> .deps/$(*F).P; \
+ rm .deps/$(*F).pp
-Index: wrapper_3.5.32_src/src/c/Makefile-linux-s390x-64.make
+Index: wrapper_3.5.35_src/src/c/Makefile-linux-s390x-64.make
===================================================================
--- /dev/null
-+++ wrapper_3.5.32_src/src/c/Makefile-linux-s390x-64.make
++++ wrapper_3.5.35_src/src/c/Makefile-linux-s390x-64.make
@@ -0,0 +1,49 @@
+
+# Copyright (c) 1999, 2013 Tanuki Software, Ltd.
@@ -129,7 +129,7 @@
+
+DEFS = -I$(INCLUDE) -I$(INCLUDE)/linux
+
-+wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c wrapper_hashmap.c wrapper_ulimit.c
++wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c wrapper_hashmap.c wrapper_ulimit.c wrapper_encoding.c wrapper_jvminfo.c
+
+libwrapper_so_OBJECTS = wrapper_i18n.o wrapperjni_unix.o wrapperinfo.o wrapperjni.o loggerjni.o
+
@@ -162,10 +162,10 @@
+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
+ >> .deps/$(*F).P; \
+ rm .deps/$(*F).pp
-Index: wrapper_3.5.32_src/src/c/Makefile-linux-sparc-32.make
+Index: wrapper_3.5.35_src/src/c/Makefile-linux-sparc-32.make
===================================================================
--- /dev/null
-+++ wrapper_3.5.32_src/src/c/Makefile-linux-sparc-32.make
++++ wrapper_3.5.35_src/src/c/Makefile-linux-sparc-32.make
@@ -0,0 +1,49 @@
+
+# Copyright (c) 1999, 2013 Tanuki Software, Ltd.
@@ -183,7 +183,7 @@
+
+DEFS = -I$(INCLUDE) -I$(INCLUDE)/linux
+
-+wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c wrapper_hashmap.c
++wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c wrapper_hashmap.c wrapper_ulimit.c wrapper_encoding.c wrapper_jvminfo.c
+
+libwrapper_so_OBJECTS = wrapper_i18n.o wrapperjni_unix.o wrapperinfo.o wrapperjni.o loggerjni.o
+
@@ -216,10 +216,10 @@
+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
+ >> .deps/$(*F).P; \
+ rm .deps/$(*F).pp
-Index: wrapper_3.5.32_src/src/c/Makefile-linux-sparc-64.make
+Index: wrapper_3.5.35_src/src/c/Makefile-linux-sparc-64.make
===================================================================
--- /dev/null
-+++ wrapper_3.5.32_src/src/c/Makefile-linux-sparc-64.make
++++ wrapper_3.5.35_src/src/c/Makefile-linux-sparc-64.make
@@ -0,0 +1,49 @@
+
+# Copyright (c) 1999, 2013 Tanuki Software, Ltd.
@@ -237,7 +237,7 @@
+
+DEFS = -I$(INCLUDE) -I$(INCLUDE)/linux
+
-+wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c property.c logger.c logger_file.c logger_file.c wrapper_file.c wrapper_i18n.c wrapper_hashmap.c
++wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c wrapper_hashmap.c wrapper_ulimit.c wrapper_encoding.c wrapper_jvminfo.c
+
+libwrapper_so_OBJECTS = wrapper_i18n.o wrapperjni_unix.o wrapperinfo.o wrapperjni.o loggerjni.o
+
@@ -270,10 +270,10 @@
+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
+ >> .deps/$(*F).P; \
+ rm .deps/$(*F).pp
-Index: wrapper_3.5.32_src/src/c/Makefile-linux-aarch64-64.make
+Index: wrapper_3.5.35_src/src/c/Makefile-linux-aarch64-64.make
===================================================================
--- /dev/null
-+++ wrapper_3.5.32_src/src/c/Makefile-linux-aarch64-64.make
++++ wrapper_3.5.35_src/src/c/Makefile-linux-aarch64-64.make
@@ -0,0 +1,49 @@
+
+# Copyright (c) 1999, 2013 Tanuki Software, Ltd.
@@ -291,7 +291,7 @@
+
+DEFS = -I$(INCLUDE) -I$(INCLUDE)/linux
+
-+wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c wrapper_hashmap.c wrapper_ulimit.c
++wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c wrapper_hashmap.c wrapper_ulimit.c wrapper_encoding.c wrapper_jvminfo.c
+
+libwrapper_so_OBJECTS = wrapper_i18n.o wrapperjni_unix.o wrapperinfo.o wrapperjni.o loggerjni.o
+
@@ -324,10 +324,135 @@
+ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
+ >> .deps/$(*F).P; \
+ rm .deps/$(*F).pp
-Index: wrapper_3.5.32_src/src/c/Makefile-linux-ppcle-64.make
+Index: wrapper_3.5.35_src/src/c/Makefile-linux-arm-32.make
===================================================================
---- wrapper_3.5.32_src.orig/src/c/Makefile-linux-ppcle-64.make
-+++ wrapper_3.5.32_src/src/c/Makefile-linux-ppcle-64.make
+--- /dev/null
++++ wrapper_3.5.35_src/src/c/Makefile-linux-arm-32.make
+@@ -0,0 +1,49 @@
++
++# Copyright (c) 1999, 2013 Tanuki Software, Ltd.
++# http://www.tanukisoftware.com
++# All rights reserved.
++#
++# This software is the proprietary information of Tanuki Software.
++# You shall use it only in accordance with the terms of the
++# license agreement you entered into with Tanuki Software.
++# http://wrapper.tanukisoftware.com/doc/english/licenseOverview.html
++
++COMPILE = gcc -O3 -fPIC -Wall --pedantic -DLINUX -DJSW64 -D_FILE_OFFSET_BITS=64 -fpic -D_GNU_SOURCE -DUNICODE -D_UNICODE
++
++INCLUDE=$(JAVA_HOME)/include
++
++DEFS = -I$(INCLUDE) -I$(INCLUDE)/linux
++
++wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c wrapper_hashmap.c wrapper_ulimit.c wrapper_encoding.c wrapper_jvminfo.c
++
++libwrapper_so_OBJECTS = wrapper_i18n.o wrapperjni_unix.o wrapperinfo.o wrapperjni.o loggerjni.o
++
++BIN = ../../bin
++LIB = ../../lib
++
++all: init wrapper libwrapper.so
++
++clean:
++ rm -f *.o
++
++cleanall: clean
++ rm -rf *~ .deps
++ rm -f $(BIN)/wrapper $(LIB)/libwrapper.so
++
++init:
++ if test ! -d .deps; then mkdir .deps; fi
++
++wrapper: $(wrapper_SOURCE)
++ $(COMPILE) -pthread $(wrapper_SOURCE) -lm $(LDFLAGS) -o $(BIN)/wrapper
++
++libwrapper.so: $(libwrapper_so_OBJECTS)
++ ${COMPILE} -shared $(libwrapper_so_OBJECTS) $(LDFLAGS) -o $(LIB)/libwrapper.so
++
++%.o: %.c
++ @echo '$(COMPILE) -c $<'; \
++ $(COMPILE) $(DEFS) -Wp,-MD,.deps/$(*F).pp -c $<
++ @-cp .deps/$(*F).pp .deps/$(*F).P; \
++ tr ' ' '\012' < .deps/$(*F).pp \
++ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
++ >> .deps/$(*F).P; \
++ rm .deps/$(*F).pp
+Index: wrapper_3.5.35_src/src/c/Makefile-linux-riscv64-64.make
+===================================================================
+--- /dev/null
++++ wrapper_3.5.35_src/src/c/Makefile-linux-riscv64-64.make
+@@ -0,0 +1,49 @@
++
++# Copyright (c) 1999, 2013 Tanuki Software, Ltd.
++# http://www.tanukisoftware.com
++# All rights reserved.
++#
++# This software is the proprietary information of Tanuki Software.
++# You shall use it only in accordance with the terms of the
++# license agreement you entered into with Tanuki Software.
++# http://wrapper.tanukisoftware.com/doc/english/licenseOverview.html
++
++COMPILE = gcc -O3 -fPIC -Wall --pedantic -DLINUX -DJSW64 -D_FILE_OFFSET_BITS=64 -fpic -D_GNU_SOURCE -DUNICODE -D_UNICODE
++
++INCLUDE=$(JAVA_HOME)/include
++
++DEFS = -I$(INCLUDE) -I$(INCLUDE)/linux
++
++wrapper_SOURCE = wrapper.c wrapperinfo.c wrappereventloop.c wrapper_unix.c property.c logger.c logger_file.c wrapper_file.c wrapper_i18n.c wrapper_hashmap.c wrapper_ulimit.c wrapper_encoding.c wrapper_jvminfo.c
++
++libwrapper_so_OBJECTS = wrapper_i18n.o wrapperjni_unix.o wrapperinfo.o wrapperjni.o loggerjni.o
++
++BIN = ../../bin
++LIB = ../../lib
++
++all: init wrapper libwrapper.so
++
++clean:
++ rm -f *.o
++
++cleanall: clean
++ rm -rf *~ .deps
++ rm -f $(BIN)/wrapper $(LIB)/libwrapper.so
++
++init:
++ if test ! -d .deps; then mkdir .deps; fi
++
++wrapper: $(wrapper_SOURCE)
++ $(COMPILE) -pthread $(wrapper_SOURCE) -lm $(LDFLAGS) -o $(BIN)/wrapper
++
++libwrapper.so: $(libwrapper_so_OBJECTS)
++ ${COMPILE} -shared $(libwrapper_so_OBJECTS) $(LDFLAGS) -o $(LIB)/libwrapper.so
++
++%.o: %.c
++ @echo '$(COMPILE) -c $<'; \
++ $(COMPILE) $(DEFS) -Wp,-MD,.deps/$(*F).pp -c $<
++ @-cp .deps/$(*F).pp .deps/$(*F).P; \
++ tr ' ' '\012' < .deps/$(*F).pp \
++ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
++ >> .deps/$(*F).P; \
++ rm .deps/$(*F).pp
+Index: wrapper_3.5.35_src/src/c/Makefile-linux-ppcle-64.make
+===================================================================
+--- wrapper_3.5.35_src.orig/src/c/Makefile-linux-ppcle-64.make
++++ wrapper_3.5.35_src/src/c/Makefile-linux-ppcle-64.make
+@@ -33,10 +33,10 @@ init:
+ if test ! -d .deps; then mkdir .deps; fi
+
+ wrapper: $(wrapper_SOURCE)
+- $(COMPILE) -lm -pthread $(wrapper_SOURCE) -o $(BIN)/wrapper
++ $(COMPILE) -pthread $(wrapper_SOURCE) $(LDFLAGS) -o $(BIN)/wrapper -lm
+
+ libwrapper.so: $(libwrapper_so_OBJECTS)
+- ${COMPILE} -shared $(libwrapper_so_OBJECTS) -o $(LIB)/libwrapper.so
++ ${COMPILE} -shared $(libwrapper_so_OBJECTS) $(LDFLAGS) -o $(LIB)/libwrapper.so
+
+ %.o: %.c
+ @echo '$(COMPILE) -c $<'; \
+Index: wrapper_3.5.35_src/src/c/Makefile-linux-ppcbe-64.make
+===================================================================
+--- wrapper_3.5.35_src.orig/src/c/Makefile-linux-ppcbe-64.make
++++ wrapper_3.5.35_src/src/c/Makefile-linux-ppcbe-64.make
@@ -33,10 +33,10 @@ init:
if test ! -d .deps; then mkdir .deps; fi
++++++ wrapper_3.5.32_src.tar.gz -> wrapper_3.5.35_src.tar.gz ++++++
++++ 18337 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-invoke for openSUSE:Factory checked in at 2018-04-30 22:56:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-invoke (Old)
and /work/SRC/openSUSE:Factory/.python-invoke.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-invoke"
Mon Apr 30 22:56:15 2018 rev:4 rq:602274 version:0.22.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-invoke/python-invoke.changes 2017-10-27 14:00:25.474813094 +0200
+++ /work/SRC/openSUSE:Factory/.python-invoke.new/python-invoke.changes 2018-04-30 22:58:45.544854340 +0200
@@ -1,0 +2,28 @@
+Sat Apr 28 12:30:16 UTC 2018 - badshah400(a)gmail.com
+
+- Update to version 0.22.1:
+ * gh#pyinvoke/invoke#488: Account for additional I/O related
+ OSError error strings when attempting to capture only this
+ specific subtype of error.
+ * gh#pyinvoke/invoke#437: When merging configuration levels
+ together (which uses copy.copy by default), pass file objects
+ by reference so they don’t get closed.
+ * gh#pyinvoke/invoke#342: Accidentally hardcoded Collection
+ instead of cls in Collection.from_module (an alternate
+ constructor and therefore a classmethod.) This made it rather
+ hard to properly subclass Collection.
+ * gh#pyinvoke/invoke#469: Fix up the doc/example re: subclassing
+ Config.
+ * gh#pyinvoke/invoke#433: Add -dev and -nightly style Python
+ versions to our Travis builds.
+- Changes from version 0.22.0:
+ * Iterable-type CLI args were actually still somewhat broken &
+ were ‘eating’ values after themselves in the parser stream
+ (thus e.g. preventing parsing of subsequent tasks or flags.)
+ * gh#pyinvoke/invoke#364: Drop Python 2.6 and Python 3.3
+ support, as these versions now account for only very low
+ percentages of the userbase and are unsupported (or about to
+ be unsupported) by the rest of the ecosystem, including pip.
+- Update URL to upstream recommended.
+
+-------------------------------------------------------------------
Old:
----
invoke-0.21.0.tar.gz
New:
----
invoke-0.22.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-invoke.spec ++++++
--- /var/tmp/diff_new_pack.gx2rcX/_old 2018-04-30 22:58:46.292827047 +0200
+++ /var/tmp/diff_new_pack.gx2rcX/_new 2018-04-30 22:58:46.292827047 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-invoke
#
-# 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
@@ -20,12 +20,12 @@
# Tests have a dependency loop with python(2|3)-invocations
%bcond_with test
Name: python-invoke
-Version: 0.21.0
+Version: 0.22.1
Release: 0
Summary: Pythonic Task Execution
License: BSD-2-Clause
Group: Development/Languages/Python
-Url: http://docs.pyinvoke.org
+Url: http://www.pyinvoke.org
Source: https://files.pythonhosted.org/packages/source/i/invoke/invoke-%{version}.t…
BuildRequires: %{python_module devel}
BuildRequires: %{python_module setuptools}
@@ -42,7 +42,7 @@
%python_subpackages
%description
-Invoke is a Python (2.6+ and 3.2+) task execution tool & library, drawing
+Invoke is a Python (2.7 and 3.4+) task execution tool & library, drawing
inspiration from various sources to arrive at a powerful & clean feature set.
* Like Ruby's Rake tool and Invoke's own predecessor Fabric 1.x, it provides a
@@ -99,4 +99,4 @@
%{python_sitelib}/invoke/
%{python_sitelib}/invoke-%{version}-py*
-
+%changelog
++++++ invoke-0.21.0.tar.gz -> invoke-0.22.1.tar.gz ++++++
++++ 2185 lines of diff (skipped)
1
0