openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
January 2016
- 1 participants
- 1523 discussions
Hello community,
here is the log from the commit of package python3-pep8 for openSUSE:Factory checked in at 2016-01-21 23:42:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-pep8 (Old)
and /work/SRC/openSUSE:Factory/.python3-pep8.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-pep8"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-pep8/python3-pep8.changes 2015-10-28 17:30:56.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-pep8.new/python3-pep8.changes 2016-01-22 01:07:06.000000000 +0100
@@ -1,0 +2,39 @@
+Wed Jan 13 09:35:26 UTC 2016 - toddrme2178(a)gmail.com
+
+- Implement update-alternatives
+
+-------------------------------------------------------------------
+Wed Jan 13 09:19:24 UTC 2016 - toddrme2178(a)gmail.com
+
+- Update to 1.7.0
+ + Announcements:
+ * Repository moved to PyCQA Organization on GitHub:
+ https://github.com/pycqa/pep8
+ + Changes:
+ * Reverted the fix in #368, "options passed on command line are only ones
+ accepted" feature. This has many unintended consequences in pep8 and flake8
+ and needs to be reworked when I have more time.
+ * Added support for Python 3.5. (Issue #420 & #459)
+ * Added support for multi-line config_file option parsing. (Issue #429)
+ * Improved parameter parsing. (Issues #420 & #456)
+ + Bugs:
+ * Fixed BytesWarning on Python 3. (Issue #459)
+
+-------------------------------------------------------------------
+Tue Jan 12 22:19:15 UTC 2016 - arun(a)gmx.de
+
+- specfile:
+ * updated url
+
+- update to version 1.7.0:
+ * Repository moved to PyCQA Organization on GitHub:
+ https://github.com/pycqa/pep8
+ * Reverted the fix in #368, "options passed on command line are only ones
+ accepted" feature. This has many unintended consequences in pep8 and flake8
+ and needs to be reworked when I have more time.
+ * Added support for Python 3.5. (Issue #420 & #459)
+ * Added support for multi-line config_file option parsing. (Issue #429)
+ * Improved parameter parsing. (Issues #420 & #456)
+ * Fixed BytesWarning on Python 3. (Issue #459)
+
+-------------------------------------------------------------------
Old:
----
pep8-1.6.2.tar.gz
New:
----
pep8-1.7.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-pep8.spec ++++++
--- /var/tmp/diff_new_pack.jX4MaV/_old 2016-01-22 01:07:08.000000000 +0100
+++ /var/tmp/diff_new_pack.jX4MaV/_new 2016-01-22 01:07:08.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-pep8
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,9 +17,9 @@
Name: python3-pep8
-Version: 1.6.2
+Version: 1.7.0
Release: 0
-Url: http://github.com/jcrocholl/pep8
+Url: https://github.com/pycqa/pep8
Summary: Python style guide checker
License: MIT
Group: Development/Languages/Python
@@ -30,6 +30,8 @@
BuildRequires: python3-2to3
BuildRequires: python3-devel
BuildRequires: python3-setuptools
+Requires(post): update-alternatives
+Requires(postun): update-alternatives
BuildArch: noarch
%description
@@ -45,9 +47,24 @@
%install
python3 setup.py install --prefix=%{_prefix} --root=%{buildroot}
-mv %{buildroot}%{_bindir}/pep8 %{buildroot}%{_bindir}/pep8-python%{py3_ver}
-rm -rf %{buildroot}%{python3_sitelib}/__pycache__/
-%fdupes %{buildroot}%{python_sitelib}
+
+# Prepare for update-alternatives usage
+mkdir -p %{buildroot}%{_sysconfdir}/alternatives
+mv %{buildroot}%{_bindir}/pep8 %{buildroot}%{_bindir}/pep8-%{py3_ver}
+ln -s -f %{_sysconfdir}/alternatives/pep8 %{buildroot}%{_bindir}/pep8
+# create a dummy target for /etc/alternatives/pep8
+touch %{buildroot}%{_sysconfdir}/alternatives/pep8
+
+%fdupes %{buildroot}%{python3_sitelib}
+
+%post
+"%_sbindir/update-alternatives" \
+ --install %{_bindir}/pep8 pep8 %{_bindir}/pep8-%{py3_ver} 30
+
+%postun
+if [ $1 -eq 0 ] ; then
+ "%_sbindir/update-alternatives" --remove pep8 %{_bindir}/pep8-%{py3_ver}
+fi
%check
python3 setup.py test
@@ -55,8 +72,11 @@
%files
%defattr(-,root,root)
%doc CHANGES.txt README.rst
-%{_bindir}/pep8-python%{py3_ver}
+%{_bindir}/pep8
+%{_bindir}/pep8-%{py3_ver}
+%ghost %{_sysconfdir}/alternatives/pep8
%{python3_sitelib}/pep8.py*
-%{python3_sitelib}/pep8-%{version}-py%{py3_ver}.egg-info/
+%{python3_sitelib}/pep8-%{version}-py%{py3_ver}.egg-info
+%{python3_sitelib}/__pycache__/pep8.*.pyc
%changelog
++++++ pep8-1.6.2.tar.gz -> pep8-1.7.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/CHANGES.txt new/pep8-1.7.0/CHANGES.txt
--- old/pep8-1.6.2/CHANGES.txt 2015-02-15 23:06:06.000000000 +0100
+++ new/pep8-1.7.0/CHANGES.txt 2016-01-12 19:40:45.000000000 +0100
@@ -2,6 +2,27 @@
=========
+1.7.0 (2016-01-12)
+------------------
+
+Announcements:
+
+* Repository moved to PyCQA Organization on GitHub:
+ https://github.com/pycqa/pep8
+
+Changes:
+
+* Reverted the fix in #368, "options passed on command line are only ones
+ accepted" feature. This has many unintended consequences in pep8 and flake8
+ and needs to be reworked when I have more time.
+* Added support for Python 3.5. (Issue #420 & #459)
+* Added support for multi-line config_file option parsing. (Issue #429)
+* Improved parameter parsing. (Issues #420 & #456)
+
+Bugs:
+
+* Fixed BytesWarning on Python 3. (Issue #459)
+
1.6.2 (2015-02-15)
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/CONTRIBUTING.rst new/pep8-1.7.0/CONTRIBUTING.rst
--- old/pep8-1.6.2/CONTRIBUTING.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/pep8-1.7.0/CONTRIBUTING.rst 2016-01-02 20:54:54.000000000 +0100
@@ -0,0 +1,4 @@
+Contributing to ``pep8``
+========================
+
+Please see the `developer notes <https://pep8.readthedocs.org/en/latest/developer.html>`_
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/PKG-INFO new/pep8-1.7.0/PKG-INFO
--- old/pep8-1.6.2/PKG-INFO 2015-02-15 23:07:16.000000000 +0100
+++ new/pep8-1.7.0/PKG-INFO 2016-01-12 19:42:59.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pep8
-Version: 1.6.2
+Version: 1.7.0
Summary: Python style guide checker
Home-page: http://pep8.readthedocs.org/
Author: Johann C. Rocholl
@@ -86,8 +86,8 @@
Links
-----
- .. image:: https://api.travis-ci.org/jcrocholl/pep8.png?branch=master
- :target: https://travis-ci.org/jcrocholl/pep8
+ .. image:: https://api.travis-ci.org/PyCQA/pep8.png?branch=master
+ :target: https://travis-ci.org/PyCQA/pep8
:alt: Build status
.. image:: https://pypip.in/wheel/pep8/badge.png?branch=master
@@ -96,13 +96,34 @@
* `Read the documentation <http://pep8.readthedocs.org/>`_
- * `Fork me on GitHub <http://github.com/jcrocholl/pep8>`_
+ * `Fork me on GitHub <http://github.com/PyCQA/pep8>`_
Changelog
=========
+ 1.7.0 (2016-01-12)
+ ------------------
+
+ Announcements:
+
+ * Repository moved to PyCQA Organization on GitHub:
+ https://github.com/pycqa/pep8
+
+ Changes:
+
+ * Reverted the fix in #368, "options passed on command line are only ones
+ accepted" feature. This has many unintended consequences in pep8 and flake8
+ and needs to be reworked when I have more time.
+ * Added support for Python 3.5. (Issue #420 & #459)
+ * Added support for multi-line config_file option parsing. (Issue #429)
+ * Improved parameter parsing. (Issues #420 & #456)
+
+ Bugs:
+
+ * Fixed BytesWarning on Python 3. (Issue #459)
+
1.6.2 (2015-02-15)
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/README.rst new/pep8-1.7.0/README.rst
--- old/pep8-1.6.2/README.rst 2015-01-01 02:17:54.000000000 +0100
+++ new/pep8-1.7.0/README.rst 2015-09-07 08:38:04.000000000 +0200
@@ -78,8 +78,8 @@
Links
-----
-.. image:: https://api.travis-ci.org/jcrocholl/pep8.png?branch=master
- :target: https://travis-ci.org/jcrocholl/pep8
+.. image:: https://api.travis-ci.org/PyCQA/pep8.png?branch=master
+ :target: https://travis-ci.org/PyCQA/pep8
:alt: Build status
.. image:: https://pypip.in/wheel/pep8/badge.png?branch=master
@@ -88,4 +88,4 @@
* `Read the documentation <http://pep8.readthedocs.org/>`_
-* `Fork me on GitHub <http://github.com/jcrocholl/pep8>`_
+* `Fork me on GitHub <http://github.com/PyCQA/pep8>`_
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/docs/advanced.rst new/pep8-1.7.0/docs/advanced.rst
--- old/pep8-1.6.2/docs/advanced.rst 2014-12-07 05:52:39.000000000 +0100
+++ new/pep8-1.7.0/docs/advanced.rst 2015-09-08 00:50:03.000000000 +0200
@@ -42,7 +42,7 @@
----------------
Another example is related to the `feature request #143
-<https://github.com/jcrocholl/pep8/issues/143>`_: skip a number of lines
+<https://github.com/pycqa/pep8/issues/143>`_: skip a number of lines
at the beginning and the end of a file. This use case is easy to implement
through a custom wrapper for the PEP 8 library::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/docs/conf.py new/pep8-1.7.0/docs/conf.py
--- old/pep8-1.6.2/docs/conf.py 2015-01-01 02:17:54.000000000 +0100
+++ new/pep8-1.7.0/docs/conf.py 2016-01-02 20:56:25.000000000 +0100
@@ -46,7 +46,7 @@
# General information about the project.
project = u'pep8'
authors = u'Johann C. Rocholl, Florent Xicluna, Ian Lee'
-copyright = u'2006-2014, %s' % (authors)
+copyright = u'2006-2016, %s' % (authors)
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@@ -99,7 +99,11 @@
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
-html_theme = 'default'
+on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
+if not on_rtd: # only import and set the theme if we're building docs locally
+ import sphinx_rtd_theme
+ html_theme = 'sphinx_rtd_theme'
+ html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/docs/developer.rst new/pep8-1.7.0/docs/developer.rst
--- old/pep8-1.6.2/docs/developer.rst 2015-01-01 02:17:54.000000000 +0100
+++ new/pep8-1.7.0/docs/developer.rst 2016-01-02 20:54:54.000000000 +0100
@@ -11,13 +11,28 @@
The source code is currently `available on GitHub`_ under the terms and
conditions of the :ref:`Expat license <license>`. Fork away!
-* `Source code <https://github.com/jcrocholl/pep8>`_ and
- `issue tracker <https://github.com/jcrocholl/pep8/issues>`_ on GitHub.
-* `Continuous tests <http://travis-ci.org/jcrocholl/pep8>`_ against Python
+* `Source code <https://github.com/pycqa/pep8>`_ and
+ `issue tracker <https://github.com/pycqa/pep8/issues>`_ on GitHub.
+* `Continuous tests <http://travis-ci.org/pycqa/pep8>`_ against Python
2.6 through 3.4 and PyPy, on `Travis-CI platform
<http://about.travis-ci.org/>`_.
-.. _available on GitHub: https://github.com/jcrocholl/pep8
+.. _available on GitHub: https://github.com/pycqa/pep8
+
+
+Direction
+~~~~~~~~~
+
+Some high-level aims and directions to bear in mind for contributions:
+
+* ``pep8`` is intended to be as fast as possible.
+ Using the ``ast`` module defeats that purpose.
+ The `pep8-naming <https://github.com/flintwork/pep8-naming>`_ plugin exists for this sort of functionality.
+* If you want to provide extensibility / plugins,
+ please see `flake8 <https://gitlab.com/pycqa/flake8>`_ -
+ ``pep8`` doesn't want or need a plugin architecture.
+* Python 2.6 support is still deemed important.
+* ``pep8`` aims to have no external dependencies.
Contribute
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/docs/index.rst new/pep8-1.7.0/docs/index.rst
--- old/pep8-1.6.2/docs/index.rst 2015-01-01 02:17:54.000000000 +0100
+++ new/pep8-1.7.0/docs/index.rst 2015-09-08 00:50:03.000000000 +0200
@@ -22,7 +22,7 @@
developer
* Online documentation: http://pep8.readthedocs.org/
-* Source code and issue tracker: https://github.com/jcrocholl/pep8
+* Source code and issue tracker: https://github.com/pycqa/pep8
Indices and tables
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/docs/intro.rst new/pep8-1.7.0/docs/intro.rst
--- old/pep8-1.6.2/docs/intro.rst 2015-02-14 23:52:43.000000000 +0100
+++ new/pep8-1.7.0/docs/intro.rst 2015-10-25 18:52:26.000000000 +0100
@@ -207,201 +207,202 @@
these files have a ``[pep8]`` section, no project specific configuration is
loaded.
-If the ``ignore`` option is not in the configuration and not in the arguments,
-only the error codes ``E123/E133``, ``E226`` and ``E241/E242`` are ignored
-(see below).
-
Error codes
-----------
This is the current list of error and warning codes:
-+----------+----------------------------------------------------------------------+
-| code | sample message |
-+==========+======================================================================+
-| **E1** | *Indentation* |
-+----------+----------------------------------------------------------------------+
-| E101 | indentation contains mixed spaces and tabs |
-+----------+----------------------------------------------------------------------+
-| E111 | indentation is not a multiple of four |
-+----------+----------------------------------------------------------------------+
-| E112 | expected an indented block |
-+----------+----------------------------------------------------------------------+
-| E113 | unexpected indentation |
-+----------+----------------------------------------------------------------------+
-| E114 | indentation is not a multiple of four (comment) |
-+----------+----------------------------------------------------------------------+
-| E115 | expected an indented block (comment) |
-+----------+----------------------------------------------------------------------+
-| E116 | unexpected indentation (comment) |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E121 (*^)| continuation line under-indented for hanging indent |
-+----------+----------------------------------------------------------------------+
-| E122 (^) | continuation line missing indentation or outdented |
-+----------+----------------------------------------------------------------------+
-| E123 (*) | closing bracket does not match indentation of opening bracket's line |
-+----------+----------------------------------------------------------------------+
-| E124 (^) | closing bracket does not match visual indentation |
-+----------+----------------------------------------------------------------------+
-| E125 (^) | continuation line with same indent as next logical line |
-+----------+----------------------------------------------------------------------+
-| E126 (*^)| continuation line over-indented for hanging indent |
-+----------+----------------------------------------------------------------------+
-| E127 (^) | continuation line over-indented for visual indent |
-+----------+----------------------------------------------------------------------+
-| E128 (^) | continuation line under-indented for visual indent |
-+----------+----------------------------------------------------------------------+
-| E129 (^) | visually indented line with same indent as next logical line |
-+----------+----------------------------------------------------------------------+
-| E131 (^) | continuation line unaligned for hanging indent |
-+----------+----------------------------------------------------------------------+
-| E133 (*) | closing bracket is missing indentation |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **E2** | *Whitespace* |
-+----------+----------------------------------------------------------------------+
-| E201 | whitespace after '(' |
-+----------+----------------------------------------------------------------------+
-| E202 | whitespace before ')' |
-+----------+----------------------------------------------------------------------+
-| E203 | whitespace before ':' |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E211 | whitespace before '(' |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E221 | multiple spaces before operator |
-+----------+----------------------------------------------------------------------+
-| E222 | multiple spaces after operator |
-+----------+----------------------------------------------------------------------+
-| E223 | tab before operator |
-+----------+----------------------------------------------------------------------+
-| E224 | tab after operator |
-+----------+----------------------------------------------------------------------+
-| E225 | missing whitespace around operator |
-+----------+----------------------------------------------------------------------+
-| E226 (*) | missing whitespace around arithmetic operator |
-+----------+----------------------------------------------------------------------+
-| E227 | missing whitespace around bitwise or shift operator |
-+----------+----------------------------------------------------------------------+
-| E228 | missing whitespace around modulo operator |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E231 | missing whitespace after ',', ';', or ':' |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E241 (*) | multiple spaces after ',' |
-+----------+----------------------------------------------------------------------+
-| E242 (*) | tab after ',' |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E251 | unexpected spaces around keyword / parameter equals |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E261 | at least two spaces before inline comment |
-+----------+----------------------------------------------------------------------+
-| E262 | inline comment should start with '# ' |
-+----------+----------------------------------------------------------------------+
-| E265 | block comment should start with '# ' |
-+----------+----------------------------------------------------------------------+
-| E266 | too many leading '#' for block comment |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E271 | multiple spaces after keyword |
-+----------+----------------------------------------------------------------------+
-| E272 | multiple spaces before keyword |
-+----------+----------------------------------------------------------------------+
-| E273 | tab after keyword |
-+----------+----------------------------------------------------------------------+
-| E274 | tab before keyword |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **E3** | *Blank line* |
-+----------+----------------------------------------------------------------------+
-| E301 | expected 1 blank line, found 0 |
-+----------+----------------------------------------------------------------------+
-| E302 | expected 2 blank lines, found 0 |
-+----------+----------------------------------------------------------------------+
-| E303 | too many blank lines (3) |
-+----------+----------------------------------------------------------------------+
-| E304 | blank lines found after function decorator |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **E4** | *Import* |
-+----------+----------------------------------------------------------------------+
-| E401 | multiple imports on one line |
-+----------+----------------------------------------------------------------------+
-| E402 | module level import not at top of file |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **E5** | *Line length* |
-+----------+----------------------------------------------------------------------+
-| E501 (^) | line too long (82 > 79 characters) |
-+----------+----------------------------------------------------------------------+
-| E502 | the backslash is redundant between brackets |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **E7** | *Statement* |
-+----------+----------------------------------------------------------------------+
-| E701 | multiple statements on one line (colon) |
-+----------+----------------------------------------------------------------------+
-| E702 | multiple statements on one line (semicolon) |
-+----------+----------------------------------------------------------------------+
-| E703 | statement ends with a semicolon |
-+----------+----------------------------------------------------------------------+
-| E704 (*) | multiple statements on one line (def) |
-+----------+----------------------------------------------------------------------+
-| E711 (^) | comparison to None should be 'if cond is None:' |
-+----------+----------------------------------------------------------------------+
-| E712 (^) | comparison to True should be 'if cond is True:' or 'if cond:' |
-+----------+----------------------------------------------------------------------+
-| E713 | test for membership should be 'not in' |
-+----------+----------------------------------------------------------------------+
-| E714 | test for object identity should be 'is not' |
-+----------+----------------------------------------------------------------------+
-| E721 (^) | do not compare types, use 'isinstance()' |
-+----------+----------------------------------------------------------------------+
-| E731 | do not assign a lambda expression, use a def |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **E9** | *Runtime* |
-+----------+----------------------------------------------------------------------+
-| E901 | SyntaxError or IndentationError |
-+----------+----------------------------------------------------------------------+
-| E902 | IOError |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **W1** | *Indentation warning* |
-+----------+----------------------------------------------------------------------+
-| W191 | indentation contains tabs |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **W2** | *Whitespace warning* |
-+----------+----------------------------------------------------------------------+
-| W291 | trailing whitespace |
-+----------+----------------------------------------------------------------------+
-| W292 | no newline at end of file |
-+----------+----------------------------------------------------------------------+
-| W293 | blank line contains whitespace |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **W3** | *Blank line warning* |
-+----------+----------------------------------------------------------------------+
-| W391 | blank line at end of file |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **W6** | *Deprecation warning* |
-+----------+----------------------------------------------------------------------+
-| W601 | .has_key() is deprecated, use 'in' |
-+----------+----------------------------------------------------------------------+
-| W602 | deprecated form of raising exception |
-+----------+----------------------------------------------------------------------+
-| W603 | '<>' is deprecated, use '!=' |
-+----------+----------------------------------------------------------------------+
-| W604 | backticks are deprecated, use 'repr()' |
-+----------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| code | sample message |
++============+======================================================================+
+| **E1** | *Indentation* |
++------------+----------------------------------------------------------------------+
+| E101 | indentation contains mixed spaces and tabs |
++------------+----------------------------------------------------------------------+
+| E111 | indentation is not a multiple of four |
++------------+----------------------------------------------------------------------+
+| E112 | expected an indented block |
++------------+----------------------------------------------------------------------+
+| E113 | unexpected indentation |
++------------+----------------------------------------------------------------------+
+| E114 | indentation is not a multiple of four (comment) |
++------------+----------------------------------------------------------------------+
+| E115 | expected an indented block (comment) |
++------------+----------------------------------------------------------------------+
+| E116 | unexpected indentation (comment) |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E121 (\*^) | continuation line under-indented for hanging indent |
++------------+----------------------------------------------------------------------+
+| E122 (^) | continuation line missing indentation or outdented |
++------------+----------------------------------------------------------------------+
+| E123 (*) | closing bracket does not match indentation of opening bracket's line |
++------------+----------------------------------------------------------------------+
+| E124 (^) | closing bracket does not match visual indentation |
++------------+----------------------------------------------------------------------+
+| E125 (^) | continuation line with same indent as next logical line |
++------------+----------------------------------------------------------------------+
+| E126 (\*^) | continuation line over-indented for hanging indent |
++------------+----------------------------------------------------------------------+
+| E127 (^) | continuation line over-indented for visual indent |
++------------+----------------------------------------------------------------------+
+| E128 (^) | continuation line under-indented for visual indent |
++------------+----------------------------------------------------------------------+
+| E129 (^) | visually indented line with same indent as next logical line |
++------------+----------------------------------------------------------------------+
+| E131 (^) | continuation line unaligned for hanging indent |
++------------+----------------------------------------------------------------------+
+| E133 (*) | closing bracket is missing indentation |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **E2** | *Whitespace* |
++------------+----------------------------------------------------------------------+
+| E201 | whitespace after '(' |
++------------+----------------------------------------------------------------------+
+| E202 | whitespace before ')' |
++------------+----------------------------------------------------------------------+
+| E203 | whitespace before ':' |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E211 | whitespace before '(' |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E221 | multiple spaces before operator |
++------------+----------------------------------------------------------------------+
+| E222 | multiple spaces after operator |
++------------+----------------------------------------------------------------------+
+| E223 | tab before operator |
++------------+----------------------------------------------------------------------+
+| E224 | tab after operator |
++------------+----------------------------------------------------------------------+
+| E225 | missing whitespace around operator |
++------------+----------------------------------------------------------------------+
+| E226 (*) | missing whitespace around arithmetic operator |
++------------+----------------------------------------------------------------------+
+| E227 | missing whitespace around bitwise or shift operator |
++------------+----------------------------------------------------------------------+
+| E228 | missing whitespace around modulo operator |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E231 | missing whitespace after ',', ';', or ':' |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E241 (*) | multiple spaces after ',' |
++------------+----------------------------------------------------------------------+
+| E242 (*) | tab after ',' |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E251 | unexpected spaces around keyword / parameter equals |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E261 | at least two spaces before inline comment |
++------------+----------------------------------------------------------------------+
+| E262 | inline comment should start with '# ' |
++------------+----------------------------------------------------------------------+
+| E265 | block comment should start with '# ' |
++------------+----------------------------------------------------------------------+
+| E266 | too many leading '#' for block comment |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E271 | multiple spaces after keyword |
++------------+----------------------------------------------------------------------+
+| E272 | multiple spaces before keyword |
++------------+----------------------------------------------------------------------+
+| E273 | tab after keyword |
++------------+----------------------------------------------------------------------+
+| E274 | tab before keyword |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **E3** | *Blank line* |
++------------+----------------------------------------------------------------------+
+| E301 | expected 1 blank line, found 0 |
++------------+----------------------------------------------------------------------+
+| E302 | expected 2 blank lines, found 0 |
++------------+----------------------------------------------------------------------+
+| E303 | too many blank lines (3) |
++------------+----------------------------------------------------------------------+
+| E304 | blank lines found after function decorator |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **E4** | *Import* |
++------------+----------------------------------------------------------------------+
+| E401 | multiple imports on one line |
++------------+----------------------------------------------------------------------+
+| E402 | module level import not at top of file |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **E5** | *Line length* |
++------------+----------------------------------------------------------------------+
+| E501 (^) | line too long (82 > 79 characters) |
++------------+----------------------------------------------------------------------+
+| E502 | the backslash is redundant between brackets |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **E7** | *Statement* |
++------------+----------------------------------------------------------------------+
+| E701 | multiple statements on one line (colon) |
++------------+----------------------------------------------------------------------+
+| E702 | multiple statements on one line (semicolon) |
++------------+----------------------------------------------------------------------+
+| E703 | statement ends with a semicolon |
++------------+----------------------------------------------------------------------+
+| E704 (*) | multiple statements on one line (def) |
++------------+----------------------------------------------------------------------+
+| E711 (^) | comparison to None should be 'if cond is None:' |
++------------+----------------------------------------------------------------------+
+| E712 (^) | comparison to True should be 'if cond is True:' or 'if cond:' |
++------------+----------------------------------------------------------------------+
+| E713 | test for membership should be 'not in' |
++------------+----------------------------------------------------------------------+
+| E714 | test for object identity should be 'is not' |
++------------+----------------------------------------------------------------------+
+| E721 (^) | do not compare types, use 'isinstance()' |
++------------+----------------------------------------------------------------------+
+| E731 | do not assign a lambda expression, use a def |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **E9** | *Runtime* |
++------------+----------------------------------------------------------------------+
+| E901 | SyntaxError or IndentationError |
++------------+----------------------------------------------------------------------+
+| E902 | IOError |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **W1** | *Indentation warning* |
++------------+----------------------------------------------------------------------+
+| W191 | indentation contains tabs |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **W2** | *Whitespace warning* |
++------------+----------------------------------------------------------------------+
+| W291 | trailing whitespace |
++------------+----------------------------------------------------------------------+
+| W292 | no newline at end of file |
++------------+----------------------------------------------------------------------+
+| W293 | blank line contains whitespace |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **W3** | *Blank line warning* |
++------------+----------------------------------------------------------------------+
+| W391 | blank line at end of file |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **W5** | *Line break warning* |
++------------+----------------------------------------------------------------------+
+| W503 | line break occurred before a binary operator |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **W6** | *Deprecation warning* |
++------------+----------------------------------------------------------------------+
+| W601 | .has_key() is deprecated, use 'in' |
++------------+----------------------------------------------------------------------+
+| W602 | deprecated form of raising exception |
++------------+----------------------------------------------------------------------+
+| W603 | '<>' is deprecated, use '!=' |
++------------+----------------------------------------------------------------------+
+| W604 | backticks are deprecated, use 'repr()' |
++------------+----------------------------------------------------------------------+
**(*)** In the default configuration, the checks **E121**, **E123**, **E126**,
@@ -430,6 +431,6 @@
``pep8`` and similar tools. It supports plugins.
Other tools which use ``pep8`` are referenced in the Wiki: `list of related
-tools <https://github.com/jcrocholl/pep8/wiki/RelatedTools>`_.
+tools <https://github.com/pycqa/pep8/wiki/RelatedTools>`_.
.. _PEP 8: http://www.python.org/dev/peps/pep-0008/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/pep8.egg-info/PKG-INFO new/pep8-1.7.0/pep8.egg-info/PKG-INFO
--- old/pep8-1.6.2/pep8.egg-info/PKG-INFO 2015-02-15 23:07:16.000000000 +0100
+++ new/pep8-1.7.0/pep8.egg-info/PKG-INFO 2016-01-12 19:42:59.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pep8
-Version: 1.6.2
+Version: 1.7.0
Summary: Python style guide checker
Home-page: http://pep8.readthedocs.org/
Author: Johann C. Rocholl
@@ -86,8 +86,8 @@
Links
-----
- .. image:: https://api.travis-ci.org/jcrocholl/pep8.png?branch=master
- :target: https://travis-ci.org/jcrocholl/pep8
+ .. image:: https://api.travis-ci.org/PyCQA/pep8.png?branch=master
+ :target: https://travis-ci.org/PyCQA/pep8
:alt: Build status
.. image:: https://pypip.in/wheel/pep8/badge.png?branch=master
@@ -96,13 +96,34 @@
* `Read the documentation <http://pep8.readthedocs.org/>`_
- * `Fork me on GitHub <http://github.com/jcrocholl/pep8>`_
+ * `Fork me on GitHub <http://github.com/PyCQA/pep8>`_
Changelog
=========
+ 1.7.0 (2016-01-12)
+ ------------------
+
+ Announcements:
+
+ * Repository moved to PyCQA Organization on GitHub:
+ https://github.com/pycqa/pep8
+
+ Changes:
+
+ * Reverted the fix in #368, "options passed on command line are only ones
+ accepted" feature. This has many unintended consequences in pep8 and flake8
+ and needs to be reworked when I have more time.
+ * Added support for Python 3.5. (Issue #420 & #459)
+ * Added support for multi-line config_file option parsing. (Issue #429)
+ * Improved parameter parsing. (Issues #420 & #456)
+
+ Bugs:
+
+ * Fixed BytesWarning on Python 3. (Issue #459)
+
1.6.2 (2015-02-15)
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/pep8.egg-info/SOURCES.txt new/pep8-1.7.0/pep8.egg-info/SOURCES.txt
--- old/pep8-1.6.2/pep8.egg-info/SOURCES.txt 2015-02-15 23:07:16.000000000 +0100
+++ new/pep8-1.7.0/pep8.egg-info/SOURCES.txt 2016-01-12 19:42:59.000000000 +0100
@@ -1,4 +1,5 @@
CHANGES.txt
+CONTRIBUTING.rst
MANIFEST.in
README.rst
pep8.py
@@ -51,6 +52,7 @@
testsuite/support.py
testsuite/test_all.py
testsuite/test_api.py
+testsuite/test_parser.py
testsuite/test_shell.py
testsuite/test_util.py
testsuite/utf-8-bom.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/pep8.py new/pep8-1.7.0/pep8.py
--- old/pep8-1.6.2/pep8.py 2015-02-15 23:05:54.000000000 +0100
+++ new/pep8-1.7.0/pep8.py 2016-01-12 19:40:45.000000000 +0100
@@ -2,7 +2,7 @@
# pep8.py - Check Python source code formatting, according to PEP 8
# Copyright (C) 2006-2009 Johann C. Rocholl <johann(a)rocholl.net>
# Copyright (C) 2009-2014 Florent Xicluna <florent.xicluna(a)gmail.com>
-# Copyright (C) 2014 Ian Lee <ianlee1521(a)gmail.com>
+# Copyright (C) 2014-2016 Ian Lee <ianlee1521(a)gmail.com>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
@@ -31,7 +31,7 @@
$ python pep8.py -h
This program and its regression test suite live here:
-http://github.com/jcrocholl/pep8
+https://github.com/pycqa/pep8
Groups of errors and warnings:
E errors
@@ -62,7 +62,7 @@
except ImportError:
from ConfigParser import RawConfigParser
-__version__ = '1.6.2'
+__version__ = '1.7.0'
DEFAULT_EXCLUDE = '.svn,CVS,.bzr,.hg,.git,__pycache__,.tox'
DEFAULT_IGNORE = 'E121,E123,E126,E226,E24,E704'
@@ -108,7 +108,7 @@
DOCSTRING_REGEX = re.compile(r'u?r?["\']')
EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[[({] | []}),;:]')
WHITESPACE_AFTER_COMMA_REGEX = re.compile(r'[,;:]\s*(?: |\t)')
-COMPARE_SINGLETON_REGEX = re.compile(r'\b(None|False|True)?\s*([=!]=)'
+COMPARE_SINGLETON_REGEX = re.compile(r'(\bNone|\bFalse|\bTrue)?\s*([=!]=)'
r'\s*(?(1)|(None|False|True))\b')
COMPARE_NEGATIVE_REGEX = re.compile(r'\b(not)\s+[^][)(}{ ]+\s+(in|is)\s')
COMPARE_TYPE_REGEX = re.compile(r'(?:[=!]=|is(?:\s+not)?)\s*type(?:s.\w+Type'
@@ -1171,7 +1171,7 @@
##############################################################################
-if '' == ''.encode():
+if sys.version_info < (3,):
# Python 2: implicit encoding.
def readlines(filename):
"""Read the source code."""
@@ -1314,6 +1314,16 @@
_checks = {'physical_line': {}, 'logical_line': {}, 'tree': {}}
+def _get_parameters(function):
+ if sys.version_info >= (3, 3):
+ return [parameter.name
+ for parameter
+ in inspect.signature(function).parameters.values()
+ if parameter.kind == parameter.POSITIONAL_OR_KEYWORD]
+ else:
+ return inspect.getargspec(function)[0]
+
+
def register_check(check, codes=None):
"""Register a new check object."""
def _add_check(check, kind, codes, args):
@@ -1322,13 +1332,13 @@
else:
_checks[kind][check] = (codes or [''], args)
if inspect.isfunction(check):
- args = inspect.getargspec(check)[0]
+ args = _get_parameters(check)
if args and args[0] in ('physical_line', 'logical_line'):
if codes is None:
codes = ERRORCODE_REGEX.findall(check.__doc__ or '')
_add_check(check, args[0], codes, args)
elif inspect.isclass(check):
- if inspect.getargspec(check.__init__)[0][:2] == ['self', 'tree']:
+ if _get_parameters(check.__init__)[:2] == ['self', 'tree']:
_add_check(check, 'tree', codes, None)
@@ -1504,7 +1514,7 @@
"""Build the file's AST and run all AST checks."""
try:
tree = compile(''.join(self.lines), '', 'exec', PyCF_ONLY_AST)
- except (SyntaxError, TypeError):
+ except (ValueError, SyntaxError, TypeError):
return self.report_invalid_syntax()
for name, cls, __ in self._ast_checks:
checker = cls(tree, self.filename)
@@ -1955,8 +1965,8 @@
parser.add_option('--format', metavar='format', default='default',
help="set the error format [default|pylint|<custom>]")
parser.add_option('--diff', action='store_true',
- help="report only lines changed according to the "
- "unified diff received on STDIN")
+ help="report changes only within line number ranges in "
+ "the unified diff received on STDIN")
group = parser.add_option_group("Testing Options")
if os.path.exists(TESTSUITE_PATH):
group.add_option('--testsuite', metavar='dir',
@@ -1984,24 +1994,24 @@
local_dir = os.curdir
+ if USER_CONFIG and os.path.isfile(USER_CONFIG):
+ if options.verbose:
+ print('user configuration: %s' % USER_CONFIG)
+ config.read(USER_CONFIG)
+
+ parent = tail = args and os.path.abspath(os.path.commonprefix(args))
+ while tail:
+ if config.read(os.path.join(parent, fn) for fn in PROJECT_CONFIG):
+ local_dir = parent
+ if options.verbose:
+ print('local configuration: in %s' % parent)
+ break
+ (parent, tail) = os.path.split(parent)
+
if cli_conf and os.path.isfile(cli_conf):
if options.verbose:
print('cli configuration: %s' % cli_conf)
config.read(cli_conf)
- else:
- if USER_CONFIG and os.path.isfile(USER_CONFIG):
- if options.verbose:
- print('user configuration: %s' % USER_CONFIG)
- config.read(USER_CONFIG)
-
- parent = tail = args and os.path.abspath(os.path.commonprefix(args))
- while tail:
- if config.read(os.path.join(parent, fn) for fn in PROJECT_CONFIG):
- local_dir = parent
- if options.verbose:
- print('local configuration: in %s' % parent)
- break
- (parent, tail) = os.path.split(parent)
pep8_section = parser.prog
if config.has_section(pep8_section):
@@ -2074,10 +2084,10 @@
options = read_config(options, args, arglist, parser)
options.reporter = parse_argv and options.quiet == 1 and FileReport
- options.filename = options.filename and options.filename.split(',')
+ options.filename = _parse_multi_options(options.filename)
options.exclude = normalize_paths(options.exclude)
- options.select = options.select and options.select.split(',')
- options.ignore = options.ignore and options.ignore.split(',')
+ options.select = _parse_multi_options(options.select)
+ options.ignore = _parse_multi_options(options.ignore)
if options.diff:
options.reporter = DiffReport
@@ -2088,6 +2098,22 @@
return options, args
+def _parse_multi_options(options, split_token=','):
+ r"""Split and strip and discard empties.
+
+ Turns the following:
+
+ A,
+ B,
+
+ into ["A", "B"]
+ """
+ if options:
+ return [o.strip() for o in options.split(split_token) if o.strip()]
+ else:
+ return options
+
+
def _main():
"""Parse options and run checks on Python source."""
import signal
@@ -2100,17 +2126,22 @@
pep8style = StyleGuide(parse_argv=True)
options = pep8style.options
+
if options.doctest or options.testsuite:
from testsuite.support import run_tests
report = run_tests(pep8style)
else:
report = pep8style.check_files()
+
if options.statistics:
report.print_statistics()
+
if options.benchmark:
report.print_benchmark()
+
if options.testsuite and not options.quiet:
report.print_results()
+
if report.total_errors:
if options.count:
sys.stderr.write(str(report.total_errors) + '\n')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/testsuite/E71.py new/pep8-1.7.0/testsuite/E71.py
--- old/pep8-1.6.2/testsuite/E71.py 2015-01-01 02:17:54.000000000 +0100
+++ new/pep8-1.7.0/testsuite/E71.py 2015-10-25 18:12:14.000000000 +0100
@@ -10,6 +10,18 @@
#: E711
if None != res:
pass
+#: E711
+if res[1] == None:
+ pass
+#: E711
+if res[1] != None:
+ pass
+#: E711
+if None != res[1]:
+ pass
+#: E711
+if None == res[1]:
+ pass
#
#: E712
@@ -24,6 +36,12 @@
#: E712
if False == res:
pass
+#: E712
+if res[1] == True:
+ pass
+#: E712
+if res[1] != False:
+ pass
#
#: E713
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/testsuite/test_all.py new/pep8-1.7.0/testsuite/test_all.py
--- old/pep8-1.6.2/testsuite/test_all.py 2015-01-01 02:17:54.000000000 +0100
+++ new/pep8-1.7.0/testsuite/test_all.py 2015-09-08 00:50:03.000000000 +0200
@@ -46,11 +46,12 @@
def suite():
- from testsuite import test_api, test_shell, test_util
+ from testsuite import test_api, test_parser, test_shell, test_util
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(Pep8TestCase))
suite.addTest(unittest.makeSuite(test_api.APITestCase))
+ suite.addTest(unittest.makeSuite(test_parser.ParserTestCase))
suite.addTest(unittest.makeSuite(test_shell.ShellTestCase))
suite.addTest(unittest.makeSuite(test_util.UtilTestCase))
return suite
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/testsuite/test_api.py new/pep8-1.7.0/testsuite/test_api.py
--- old/pep8-1.6.2/testsuite/test_api.py 2015-01-27 17:16:12.000000000 +0100
+++ new/pep8-1.7.0/testsuite/test_api.py 2015-09-07 08:38:04.000000000 +0200
@@ -339,6 +339,9 @@
if 'SyntaxError' in stdout:
# PyPy 2.2 returns a SyntaxError
expected = "stdin:1:2: E901 SyntaxError"
+ elif 'ValueError' in stdout:
+ # Python 3.5.
+ expected = "stdin:1:1: E901 ValueError"
else:
expected = "stdin:1:1: E901 TypeError"
self.assertTrue(stdout.startswith(expected),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/testsuite/test_parser.py new/pep8-1.7.0/testsuite/test_parser.py
--- old/pep8-1.6.2/testsuite/test_parser.py 1970-01-01 01:00:00.000000000 +0100
+++ new/pep8-1.7.0/testsuite/test_parser.py 2015-09-08 00:50:03.000000000 +0200
@@ -0,0 +1,61 @@
+import os
+import tempfile
+import unittest
+
+import pep8
+
+
+def _process_file(contents):
+ with tempfile.NamedTemporaryFile(delete=False) as f:
+ f.write(contents)
+
+ options, args = pep8.process_options(config_file=f.name)
+ os.remove(f.name)
+
+ return options, args
+
+
+class ParserTestCase(unittest.TestCase):
+
+ def test_vanilla_ignore_parsing(self):
+ contents = b"""
+[pep8]
+ignore = E226,E24
+ """
+ options, args = _process_file(contents)
+
+ self.assertEqual(options.ignore, ["E226", "E24"])
+
+ def test_multiline_ignore_parsing(self):
+ contents = b"""
+[pep8]
+ignore =
+ E226,
+ E24
+ """
+
+ options, args = _process_file(contents)
+
+ self.assertEqual(options.ignore, ["E226", "E24"])
+
+ def test_trailing_comma_ignore_parsing(self):
+ contents = b"""
+[pep8]
+ignore = E226,
+ """
+
+ options, args = _process_file(contents)
+
+ self.assertEqual(options.ignore, ["E226"])
+
+ def test_multiline_trailing_comma_ignore_parsing(self):
+ contents = b"""
+[pep8]
+ignore =
+ E226,
+ E24,
+ """
+
+ options, args = _process_file(contents)
+
+ self.assertEqual(options.ignore, ["E226", "E24"])
1
0
Hello community,
here is the log from the commit of package python3-astroid for openSUSE:Factory checked in at 2016-01-21 23:42:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-astroid (Old)
and /work/SRC/openSUSE:Factory/.python3-astroid.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-astroid"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-astroid/python3-astroid.changes 2015-12-03 13:32:19.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-astroid.new/python3-astroid.changes 2016-01-22 01:07:02.000000000 +0100
@@ -1,0 +2,23 @@
+Wed Jan 13 10:03:16 UTC 2016 - toddrme2178(a)gmail.com
+
+- Update to version 1.4.3
+ * pkg_resources brain tips are a bit more specific,
+ by specifiying proper returns.
+ * Standard library modules are properly detected by is_standard_module.
+ This should fix issues such as https://github.com/PyCQA/pylint/issues/725.
+- Update to version 1.4.2
+ * The slots() method conflates all the slots from the ancestors
+ into a list of current and parent slots.
+ We're doing this because this is the right semantics of slots,
+ they get inherited, as long as each parent defines a __slots__
+ entry.
+ * Revert to using printf-style formatting in as_string, in order
+ to avoid a potential problem with encodings when using .format.
+ Closes issue #273.
+ * assigned_stmts methods have the same signature from now on.
+ They used to have different signatures and each one made
+ assumptions about what could be passed to other implementations,
+ leading to various possible crashes when one or more arguments
+ weren't given. Closes issue #277.
+
+-------------------------------------------------------------------
Old:
----
astroid-1.4.1.tar.gz
New:
----
astroid-1.4.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-astroid.spec ++++++
--- /var/tmp/diff_new_pack.Tt6SPH/_old 2016-01-22 01:07:04.000000000 +0100
+++ /var/tmp/diff_new_pack.Tt6SPH/_new 2016-01-22 01:07:04.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-astroid
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,17 +17,18 @@
Name: python3-astroid
-Version: 1.4.1
+Version: 1.4.3
Release: 0
-Url: http://bitbucket.org/logilab/astroid
+Url: https://github.com/pycqa/astroid
Summary: Rebuild a new abstract syntax tree from Python's ast
License: LGPL-2.1+
Group: Development/Libraries/Python
Source: https://pypi.python.org/packages/source/a/astroid/astroid-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-BuildRequires: python3-2to3
BuildRequires: python3-devel
BuildRequires: python3-setuptools
+BuildRequires: python3-six
+Requires: python3-six
BuildArch: noarch
%description
@@ -56,7 +57,7 @@
%files
%defattr(-,root,root,-)
-%doc COPYING COPYING.LESSER ChangeLog README
+%doc COPYING COPYING.LESSER ChangeLog README.rst
%{python3_sitelib}/astroid/
%{python3_sitelib}/astroid-%{version}-py*.egg-info
++++++ astroid-1.4.1.tar.gz -> astroid-1.4.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/ChangeLog new/astroid-1.4.3/ChangeLog
--- old/astroid-1.4.1/ChangeLog 2015-11-29 21:44:44.000000000 +0100
+++ new/astroid-1.4.3/ChangeLog 2015-12-24 16:03:30.000000000 +0100
@@ -1,6 +1,36 @@
Change log for the astroid package (used to be astng)
=====================================================
+2015-12-24 -- 1.4.3
+
+ * pkg_resources brain tips are a bit more specific,
+ by specifiying proper returns.
+
+ * Standard library modules are properly detected by is_standard_module.
+
+ This should fix issues such as https://github.com/PyCQA/pylint/issues/725.
+
+2015-12-21 -- 1.4.2
+
+ * The slots() method conflates all the slots from the ancestors
+ into a list of current and parent slots.
+
+ We're doing this because this is the right semantics of slots,
+ they get inherited, as long as each parent defines a __slots__
+ entry.
+
+ * Revert to using printf-style formatting in as_string, in order
+ to avoid a potential problem with encodings when using .format.
+ Closes issue #273.
+
+ * assigned_stmts methods have the same signature from now on.
+
+ They used to have different signatures and each one made
+ assumptions about what could be passed to other implementations,
+ leading to various possible crashes when one or more arguments
+ weren't given. Closes issue #277.
+
+
2015-11-29 -- 1.4.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/PKG-INFO new/astroid-1.4.3/PKG-INFO
--- old/astroid-1.4.1/PKG-INFO 2015-11-29 22:19:52.000000000 +0100
+++ new/astroid-1.4.3/PKG-INFO 2015-12-24 16:13:30.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: astroid
-Version: 1.4.1
+Version: 1.4.3
Summary: A abstract syntax tree for Python with inference support.
Home-page: http://bitbucket.org/logilab/astroid
Author: Logilab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/README new/astroid-1.4.3/README
--- old/astroid-1.4.1/README 2015-11-29 15:57:24.000000000 +0100
+++ new/astroid-1.4.3/README 1970-01-01 01:00:00.000000000 +0100
@@ -1,64 +0,0 @@
-.. image:: https://drone.io/bitbucket.org/logilab/astroid/status.png
- :alt: drone.io Build Status
- :target: https://drone.io/bitbucket.org/logilab/astroid
-
-Astroid
-=======
-
-What's this?
-------------
-
-The aim of this module is to provide a common base representation of
-python source code for projects such as pychecker, pyreverse,
-pylint... Well, actually the development of this library is essentially
-governed by pylint's needs. It used to be called logilab-astng.
-
-It provides a compatible representation which comes from the `_ast`
-module. It rebuilds the tree generated by the builtin _ast module by
-recursively walking down the AST and building an extended ast. The new
-node classes have additional methods and attributes for different
-usages. They include some support for static inference and local name
-scopes. Furthermore, astroid builds partial trees by inspecting living
-objects.
-
-Main modules are:
-
-* `bases`, `node_classses` and `scoped_nodes` contain the classes for the
- different type of nodes of the tree.
-
-* the `manager` contains a high level object to get astroid trees from
- source files and living objects. It maintains a cache of previously
- constructed tree for quick access.
-
-
-Installation
-------------
-
-Extract the tarball, jump into the created directory and run::
-
- python setup.py install
-
-For installation options, see::
-
- python setup.py install --help
-
-
-If you have any questions, please mail the code-quality(a)python.org
-mailing list for support. See
-http://mail.python.org/mailman/listinfo/code-quality for subscription
-information and archives. You may find older archives at
-http://lists.logilab.org/mailman/listinfo/python-projects .
-
-Python Versions
----------------
-
-astroid is compatible with Python 2.7 as well as 3.3 and later. astroid uses
-the same code base for both Python versions, using six.
-
-Test
-----
-
-Tests are in the 'test' subdirectory. To launch the whole tests suite
-at once, you can use unittest discover::
-
- python -m unittest discover -p "unittest*.py"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/README.rst new/astroid-1.4.3/README.rst
--- old/astroid-1.4.1/README.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/astroid-1.4.3/README.rst 2015-12-24 16:02:22.000000000 +0100
@@ -0,0 +1,64 @@
+.. image:: https://drone.io/bitbucket.org/logilab/astroid/status.png
+ :alt: drone.io Build Status
+ :target: https://drone.io/bitbucket.org/logilab/astroid
+
+Astroid
+=======
+
+What's this?
+------------
+
+The aim of this module is to provide a common base representation of
+python source code for projects such as pychecker, pyreverse,
+pylint... Well, actually the development of this library is essentially
+governed by pylint's needs. It used to be called logilab-astng.
+
+It provides a compatible representation which comes from the `_ast`
+module. It rebuilds the tree generated by the builtin _ast module by
+recursively walking down the AST and building an extended ast. The new
+node classes have additional methods and attributes for different
+usages. They include some support for static inference and local name
+scopes. Furthermore, astroid builds partial trees by inspecting living
+objects.
+
+Main modules are:
+
+* `bases`, `node_classses` and `scoped_nodes` contain the classes for the
+ different type of nodes of the tree.
+
+* the `manager` contains a high level object to get astroid trees from
+ source files and living objects. It maintains a cache of previously
+ constructed tree for quick access.
+
+
+Installation
+------------
+
+Extract the tarball, jump into the created directory and run::
+
+ python setup.py install
+
+For installation options, see::
+
+ python setup.py install --help
+
+
+If you have any questions, please mail the code-quality(a)python.org
+mailing list for support. See
+http://mail.python.org/mailman/listinfo/code-quality for subscription
+information and archives. You may find older archives at
+http://lists.logilab.org/mailman/listinfo/python-projects .
+
+Python Versions
+---------------
+
+astroid is compatible with Python 2.7 as well as 3.3 and later. astroid uses
+the same code base for both Python versions, using six.
+
+Test
+----
+
+Tests are in the 'test' subdirectory. To launch the whole tests suite
+at once, you can use unittest discover::
+
+ python -m unittest discover -p "unittest*.py"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/__init__.py new/astroid-1.4.3/astroid/__init__.py
--- old/astroid-1.4.1/astroid/__init__.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/__init__.py 2015-12-24 16:02:22.000000000 +0100
@@ -114,8 +114,11 @@
def register_module_extender(manager, module_name, get_extension_mod):
def transform(node):
extension_module = get_extension_mod()
- for name, obj in extension_module._locals.items():
- node._locals[name] = obj
+ for name, objs in extension_module._locals.items():
+ node._locals[name] = objs
+ for obj in objs:
+ if obj.parent is extension_module:
+ obj.parent = node
manager.register_transform(Module, transform, lambda n: n.name == module_name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/__pkginfo__.py new/astroid-1.4.3/astroid/__pkginfo__.py
--- old/astroid-1.4.1/astroid/__pkginfo__.py 2015-11-29 21:44:53.000000000 +0100
+++ new/astroid-1.4.3/astroid/__pkginfo__.py 2015-12-24 16:03:37.000000000 +0100
@@ -20,7 +20,7 @@
modname = 'astroid'
-numversion = (1, 4, 1)
+numversion = (1, 4, 3)
version = '.'.join([str(num) for num in numversion])
install_requires = ['six', 'lazy_object_proxy', 'wrapt']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/as_string.py new/astroid-1.4.3/astroid/as_string.py
--- old/astroid-1.4.1/astroid/as_string.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/as_string.py 2015-12-24 16:02:22.000000000 +0100
@@ -287,13 +287,11 @@
trailer = return_annotation + ":"
else:
trailer = ":"
- def_format = "\n{decorators}def {name}({args}){trailer}{docs}\n{body}"
- return def_format.format(decorators=decorate,
- name=node.name,
- args=node.args.accept(self),
- trailer=trailer,
- docs=docs,
- body=self._stmt_list(node.body))
+ def_format = "\n%sdef %s(%s)%s%s\n%s"
+ return def_format % (decorate, node.name,
+ node.args.accept(self),
+ trailer, docs,
+ self._stmt_list(node.body))
def visit_generatorexp(self, node):
"""return an astroid.GeneratorExp node as string"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/bases.py new/astroid-1.4.3/astroid/bases.py
--- old/astroid-1.4.1/astroid/bases.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/bases.py 2015-12-24 16:02:22.000000000 +0100
@@ -47,7 +47,7 @@
POSSIBLE_PROPERTIES = {"cached_property", "cachedproperty",
"lazyproperty", "lazy_property", "reify",
"lazyattribute", "lazy_attribute",
- "LazyProperty"}
+ "LazyProperty", "lazy"}
def _is_property(meth):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/brain/brain_gi.py new/astroid-1.4.3/astroid/brain/brain_gi.py
--- old/astroid-1.4.1/astroid/brain/brain_gi.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/brain/brain_gi.py 2015-12-24 16:02:22.000000000 +0100
@@ -47,13 +47,13 @@
elif (inspect.ismethod(obj) or
inspect.ismethoddescriptor(obj)):
methods[name] = obj
- elif isinstance(obj, (int, str)):
- constants[name] = obj
elif (str(obj).startswith("<flags") or
str(obj).startswith("<enum ") or
str(obj).startswith("<GType ") or
inspect.isdatadescriptor(obj)):
constants[name] = 0
+ elif isinstance(obj, (int, str)):
+ constants[name] = obj
elif callable(obj):
# Fall back to a function for anything callable
functions[name] = obj
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/brain/brain_stdlib.py new/astroid-1.4.3/astroid/brain/brain_stdlib.py
--- old/astroid-1.4.1/astroid/brain/brain_stdlib.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/brain/brain_stdlib.py 2015-12-24 16:02:22.000000000 +0100
@@ -156,30 +156,36 @@
def pkg_resources_transform():
return AstroidBuilder(MANAGER).string_build('''
-
def resource_exists(package_or_requirement, resource_name):
- pass
+ return get_provider(package_or_requirement).has_resource(resource_name)
def resource_isdir(package_or_requirement, resource_name):
- pass
+ return get_provider(package_or_requirement).resource_isdir(
+ resource_name)
def resource_filename(package_or_requirement, resource_name):
- pass
+ return get_provider(package_or_requirement).get_resource_filename(
+ self, resource_name)
def resource_stream(package_or_requirement, resource_name):
- pass
+ return get_provider(package_or_requirement).get_resource_stream(
+ self, resource_name)
def resource_string(package_or_requirement, resource_name):
- pass
+ return get_provider(package_or_requirement).get_resource_string(
+ self, resource_name)
def resource_listdir(package_or_requirement, resource_name):
- pass
+ return get_provider(package_or_requirement).resource_listdir(
+ resource_name)
def extraction_error():
pass
def get_cache_path(archive_name, names=()):
- pass
+ extract_path = self.extraction_path or get_default_cache()
+ target_path = os.path.join(extract_path, archive_name+'-tmp', *names)
+ return target_path
def postprocess(tempname, filename):
pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/modutils.py new/astroid-1.4.3/astroid/modutils.py
--- old/astroid-1.4.1/astroid/modutils.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/modutils.py 2015-12-24 16:02:22.000000000 +0100
@@ -50,12 +50,7 @@
PY_SOURCE_EXTS = ('py',)
PY_COMPILED_EXTS = ('so',)
-# Notes about STD_LIB_DIRS
-# Consider arch-specific installation for STD_LIB_DIRS definition
-# :mod:`distutils.sysconfig` contains to much hardcoded values to rely on
-#
-# :see: `Problems with /usr/lib64 builds <http://bugs.python.org/issue1294959>`_
-# :see: `FHS <http://www.pathname.com/fhs/pub/fhs-2.3.html#LIBLTQUALGTALTERNATEFORMATESSE…>`_
+
try:
# The explicit sys.prefix is to work around a patch in virtualenv that
# replaces the 'real' sys.prefix (i.e. the location of the binary)
@@ -67,18 +62,50 @@
# Take care of installations where exec_prefix != prefix.
get_python_lib(standard_lib=True, prefix=sys.exec_prefix),
get_python_lib(standard_lib=True)])
- if os.name == 'nt':
- STD_LIB_DIRS.add(os.path.join(sys.prefix, 'dlls'))
- try:
- # real_prefix is defined when running inside virtualenv.
- STD_LIB_DIRS.add(os.path.join(sys.real_prefix, 'dlls'))
- except AttributeError:
- pass
# get_python_lib(standard_lib=1) is not available on pypy, set STD_LIB_DIR to
# non-valid path, see https://bugs.pypy.org/issue1164
except DistutilsPlatformError:
STD_LIB_DIRS = set()
+if os.name == 'nt':
+ STD_LIB_DIRS.add(os.path.join(sys.prefix, 'dlls'))
+ try:
+ # real_prefix is defined when running inside virtualenv.
+ STD_LIB_DIRS.add(os.path.join(sys.real_prefix, 'dlls'))
+ except AttributeError:
+ pass
+if platform.python_implementation() == 'PyPy':
+ _root = os.path.join(sys.prefix, 'lib_pypy')
+ STD_LIB_DIRS.add(_root)
+ try:
+ # real_prefix is defined when running inside virtualenv.
+ STD_LIB_DIRS.add(os.path.join(sys.real_prefix, 'lib_pypy'))
+ except AttributeError:
+ pass
+ del _root
+if os.name == 'posix':
+ # Need the real prefix is we're under a virtualenv, otherwise
+ # the usual one will do.
+ try:
+ prefix = sys.real_prefix
+ except AttributeError:
+ prefix = sys.prefix
+
+ def _posix_path(path):
+ base_python = 'python%d.%d' % sys.version_info[:2]
+ return os.path.join(prefix, path, base_python)
+
+ STD_LIB_DIRS.add(_posix_path('lib'))
+ if sys.maxsize > 2**32:
+ # This tries to fix a problem with /usr/lib64 builds,
+ # where systems are running both 32-bit and 64-bit code
+ # on the same machine, which reflects into the places where
+ # standard library could be found. More details can be found
+ # here http://bugs.python.org/issue1294959.
+ # An easy reproducing case would be
+ # https://github.com/PyCQA/pylint/issues/712#issuecomment-163178753
+ STD_LIB_DIRS.add(_posix_path('lib64'))
+
EXT_LIB_DIR = get_python_lib()
IS_JYTHON = platform.python_implementation() == 'Jython'
BUILTIN_MODULES = dict.fromkeys(sys.builtin_module_names, True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/protocols.py new/astroid-1.4.3/astroid/protocols.py
--- old/astroid-1.4.1/astroid/protocols.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/protocols.py 2015-12-24 16:02:22.000000000 +0100
@@ -250,7 +250,7 @@
@bases.raise_if_nothing_inferred
-def for_assigned_stmts(self, node, context=None, asspath=None):
+def for_assigned_stmts(self, node=None, context=None, asspath=None):
if asspath is None:
for lst in self.iter.infer(context):
if isinstance(lst, (nodes.Tuple, nodes.List)):
@@ -265,18 +265,25 @@
nodes.Comprehension.assigned_stmts = for_assigned_stmts
-def mulass_assigned_stmts(self, node, context=None, asspath=None):
+def sequence_assigned_stmts(self, node=None, context=None, asspath=None):
if asspath is None:
asspath = []
- asspath.insert(0, self.elts.index(node))
- return self.parent.assigned_stmts(self, context, asspath)
+ try:
+ index = self.elts.index(node)
+ except ValueError:
+ util.reraise(exceptions.InferenceError(
+ 'Tried to retrieve a node {node!r} which does not exist',
+ node=self, assign_path=asspath, context=context))
+
+ asspath.insert(0, index)
+ return self.parent.assigned_stmts(node=self, context=context, asspath=asspath)
-nodes.Tuple.assigned_stmts = mulass_assigned_stmts
-nodes.List.assigned_stmts = mulass_assigned_stmts
+nodes.Tuple.assigned_stmts = sequence_assigned_stmts
+nodes.List.assigned_stmts = sequence_assigned_stmts
-def assend_assigned_stmts(self, context=None):
- return self.parent.assigned_stmts(self, context=context)
+def assend_assigned_stmts(self, node=None, context=None, asspath=None):
+ return self.parent.assigned_stmts(node=self, context=context)
nodes.AssignName.assigned_stmts = assend_assigned_stmts
nodes.AssignAttr.assigned_stmts = assend_assigned_stmts
@@ -325,7 +332,7 @@
yield util.YES
-def arguments_assigned_stmts(self, node, context, asspath=None):
+def arguments_assigned_stmts(self, node=None, context=None, asspath=None):
if context.callcontext:
# reset call context/name
callcontext = context.callcontext
@@ -339,7 +346,7 @@
@bases.raise_if_nothing_inferred
-def assign_assigned_stmts(self, node, context=None, asspath=None):
+def assign_assigned_stmts(self, node=None, context=None, asspath=None):
if not asspath:
yield self.value
return
@@ -380,7 +387,7 @@
@bases.raise_if_nothing_inferred
-def excepthandler_assigned_stmts(self, node, context=None, asspath=None):
+def excepthandler_assigned_stmts(self, node=None, context=None, asspath=None):
for assigned in node_classes.unpack_infer(self.type):
if isinstance(assigned, nodes.ClassDef):
assigned = bases.Instance(assigned)
@@ -389,7 +396,7 @@
@bases.raise_if_nothing_inferred
-def with_assigned_stmts(self, node, context=None, asspath=None):
+def with_assigned_stmts(self, node=None, context=None, asspath=None):
if asspath is None:
for _, vars in self.items:
if vars is None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/scoped_nodes.py new/astroid-1.4.3/astroid/scoped_nodes.py
--- old/astroid-1.4.1/astroid/scoped_nodes.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/scoped_nodes.py 2015-12-24 16:02:22.000000000 +0100
@@ -535,6 +535,7 @@
all = self['__all__']
except KeyError:
return default
+
try:
explicit = next(all.assigned_stmts())
except exceptions.InferenceError:
@@ -1578,6 +1579,22 @@
except exceptions.InferenceError:
continue
+ def _slots(self):
+ if not self.newstyle:
+ raise NotImplementedError(
+ "The concept of slots is undefined for old-style classes.")
+
+ slots = self._islots()
+ try:
+ first = next(slots)
+ except StopIteration as exc:
+ # The class doesn't have a __slots__ definition or empty slots.
+ if exc.args and exc.args[0] not in ('', None):
+ return exc.args[0]
+ return None
+ # pylint: disable=unsupported-binary-operation; false positive
+ return [first] + list(slots)
+
# Cached, because inferring them all the time is expensive
@decorators_mod.cached
def slots(self):
@@ -1588,20 +1605,28 @@
Also, it will return None in the case the slots weren't inferred.
Otherwise, it will return a list of slot names.
"""
+ def grouped_slots():
+ # Not interested in object, since it can't have slots.
+ for cls in self.mro()[:-1]:
+ try:
+ cls_slots = cls._slots()
+ except NotImplementedError:
+ continue
+ if cls_slots is not None:
+ for slot in cls_slots:
+ yield slot
+ else:
+ yield None
+
if not self.newstyle:
raise NotImplementedError(
"The concept of slots is undefined for old-style classes.")
- slots = self._islots()
- try:
- first = next(slots)
- except StopIteration as exc:
- # The class doesn't have a __slots__ definition or empty slots.
- if exc.args and exc.args[0] not in ('', None):
- return exc.args[0]
+ slots = list(grouped_slots())
+ if not all(slot is not None for slot in slots):
return None
- # pylint: disable=unsupported-binary-operation; false positive
- return [first] + list(slots)
+
+ return sorted(slots, key=lambda item: item.value)
def _inferred_bases(self, context=None):
# TODO(cpopa): really similar with .ancestors,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/tests/unittest_brain.py new/astroid-1.4.3/astroid/tests/unittest_brain.py
--- old/astroid-1.4.1/astroid/tests/unittest_brain.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/tests/unittest_brain.py 2015-12-24 16:02:22.000000000 +0100
@@ -301,6 +301,15 @@
else:
self.assertIsInstance(cpu_count, astroid.BoundMethod)
+ def test_module_name(self):
+ module = test_utils.extract_node("""
+ import multiprocessing
+ multiprocessing.SyncManager()
+ """)
+ inferred_sync_mgr = next(module.infer())
+ module = inferred_sync_mgr.root()
+ self.assertEqual(module.name, 'multiprocessing.managers')
+
def test_multiprocessing_manager(self):
# Test that we have the proper attributes
# for a multiprocessing.managers.SyncManager
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/tests/unittest_manager.py new/astroid-1.4.3/astroid/tests/unittest_manager.py
--- old/astroid-1.4.1/astroid/tests/unittest_manager.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/tests/unittest_manager.py 2015-12-24 16:02:22.000000000 +0100
@@ -35,8 +35,9 @@
return obj.__file__.split("$py.class")[0] + ".py"
if sys.version_info > (3, 0):
return obj.__file__
- else:
+ if not obj.__file__.endswith(".py"):
return obj.__file__[:-1]
+ return obj.__file__
class AstroidManagerTest(resources.SysPathSetup,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/tests/unittest_modutils.py new/astroid-1.4.3/astroid/tests/unittest_modutils.py
--- old/astroid-1.4.1/astroid/tests/unittest_modutils.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/tests/unittest_modutils.py 2015-12-24 16:02:22.000000000 +0100
@@ -176,6 +176,11 @@
library
"""
+ def test_datetime(self):
+ # This is an interesting example, since datetime, on pypy,
+ # is under lib_pypy, rather than the usual Lib directory.
+ self.assertTrue(modutils.is_standard_module('datetime'))
+
def test_builtins(self):
if sys.version_info < (3, 0):
self.assertEqual(modutils.is_standard_module('__builtin__'), True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/tests/unittest_nodes.py new/astroid-1.4.3/astroid/tests/unittest_nodes.py
--- old/astroid-1.4.1/astroid/tests/unittest_nodes.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/tests/unittest_nodes.py 2015-12-24 16:02:22.000000000 +0100
@@ -534,6 +534,7 @@
pass
def lazyproperty():
pass
+ def lazy(): pass
class A(object):
@property
def builtin_property(self):
@@ -550,6 +551,8 @@
@lazyproperty
def lazyprop(self): return 42
def not_prop(self): pass
+ @lazy
+ def decorated_with_lazy(self): return 42
cls = A()
builtin_property = cls.builtin_property
@@ -559,9 +562,10 @@
not_prop = cls.not_prop
lazy_prop = cls.lazy_prop
lazyprop = cls.lazyprop
+ decorated_with_lazy = cls.decorated_with_lazy
''')
for prop in ('builtin_property', 'abc_property', 'cached_p', 'reified',
- 'lazy_prop', 'lazyprop'):
+ 'lazy_prop', 'lazyprop', 'decorated_with_lazy'):
inferred = next(ast[prop].infer())
self.assertIsInstance(inferred, nodes.Const, prop)
self.assertEqual(inferred.value, 42, prop)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/tests/unittest_protocols.py new/astroid-1.4.3/astroid/tests/unittest_protocols.py
--- old/astroid-1.4.1/astroid/tests/unittest_protocols.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/tests/unittest_protocols.py 2015-12-24 16:02:22.000000000 +0100
@@ -16,8 +16,10 @@
# You should have received a copy of the GNU Lesser General Public License along
# with astroid. If not, see <http://www.gnu.org/licenses/>.
+import contextlib
import unittest
+import astroid
from astroid.test_utils import extract_node, require_version
from astroid import InferenceError
from astroid import nodes
@@ -25,6 +27,15 @@
from astroid.node_classes import AssignName, Const, Name, Starred
+(a)contextlib.contextmanager
+def _add_transform(manager, node, transform, predicate=None):
+ manager.register_transform(node, transform, predicate)
+ try:
+ yield
+ finally:
+ manager.unregister_transform(node, transform, predicate)
+
+
class ProtocolTests(unittest.TestCase):
def assertConstNodesEqual(self, nodes_list_expected, nodes_list_got):
@@ -149,6 +160,17 @@
assigned = list(simple_mul_assnode_2.assigned_stmts())
self.assertNameNodesEqual(['c'], assigned)
+ def test_sequence_assigned_stmts_not_accepting_empty_node(self):
+ def transform(node):
+ node.root().locals['__all__'] = [node.value]
+
+ manager = astroid.MANAGER
+ with _add_transform(manager, astroid.Assign, transform):
+ module = astroid.parse('''
+ __all__ = ['a']
+ ''')
+ module.wildcard_import_names()
+
if __name__ == '__main__':
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/tests/unittest_regrtest.py new/astroid-1.4.3/astroid/tests/unittest_regrtest.py
--- old/astroid-1.4.1/astroid/tests/unittest_regrtest.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/tests/unittest_regrtest.py 2015-12-24 16:02:22.000000000 +0100
@@ -282,6 +282,23 @@
''')
self.assertRaises(exceptions.InferenceError, next, node.infer())
+ def test_unicode_in_docstring(self):
+ # Crashed for astroid==1.4.1
+ # Test for https://bitbucket.org/logilab/astroid/issues/273/
+
+ # In a regular file, "coding: utf-8" would have been used.
+ node = extract_node(u'''
+ from __future__ import unicode_literals
+
+ class MyClass(object):
+ def method(self):
+ "With unicode : %s "
+
+ instance = MyClass()
+ ''' % u"\u2019")
+
+ next(node.value.infer()).as_string()
+
class Whatever(object):
a = property(lambda x: x, lambda x: x)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/tests/unittest_scoped_nodes.py new/astroid-1.4.3/astroid/tests/unittest_scoped_nodes.py
--- old/astroid-1.4.1/astroid/tests/unittest_scoped_nodes.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/tests/unittest_scoped_nodes.py 2015-12-24 16:02:22.000000000 +0100
@@ -1203,6 +1203,41 @@
module['OldStyle'].slots()
self.assertEqual(str(cm.exception), msg)
+ def test_slots_empty_list_of_slots(self):
+ module = builder.parse("""
+ class Klass(object):
+ __slots__ = ()
+ """)
+ cls = module['Klass']
+ self.assertEqual(cls.slots(), [])
+
+ def test_slots_taken_from_parents(self):
+ module = builder.parse('''
+ class FirstParent(object):
+ __slots__ = ('a', 'b', 'c')
+ class SecondParent(FirstParent):
+ __slots__ = ('d', 'e')
+ class Third(SecondParent):
+ __slots__ = ('d', )
+ ''')
+ cls = module['Third']
+ slots = cls.slots()
+ self.assertEqual(sorted(set(slot.value for slot in slots)),
+ ['a', 'b', 'c', 'd', 'e'])
+
+ def test_all_ancestors_need_slots(self):
+ module = builder.parse('''
+ class A(object):
+ __slots__ = ('a', )
+ class B(A): pass
+ class C(B):
+ __slots__ = ('a', )
+ ''')
+ cls = module['C']
+ self.assertIsNone(cls.slots())
+ cls = module['B']
+ self.assertIsNone(cls.slots())
+
def assertEqualMro(self, klass, expected_mro):
self.assertEqual(
[member.name for member in klass.mro()],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid.egg-info/PKG-INFO new/astroid-1.4.3/astroid.egg-info/PKG-INFO
--- old/astroid-1.4.1/astroid.egg-info/PKG-INFO 2015-11-29 22:19:16.000000000 +0100
+++ new/astroid-1.4.3/astroid.egg-info/PKG-INFO 2015-12-24 16:13:17.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: astroid
-Version: 1.4.1
+Version: 1.4.3
Summary: A abstract syntax tree for Python with inference support.
Home-page: http://bitbucket.org/logilab/astroid
Author: Logilab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid.egg-info/SOURCES.txt new/astroid-1.4.3/astroid.egg-info/SOURCES.txt
--- old/astroid-1.4.1/astroid.egg-info/SOURCES.txt 2015-11-29 22:19:16.000000000 +0100
+++ new/astroid-1.4.3/astroid.egg-info/SOURCES.txt 2015-12-24 16:13:17.000000000 +0100
@@ -2,7 +2,7 @@
COPYING.LESSER
ChangeLog
MANIFEST.in
-README
+README.rst
setup.cfg
setup.py
tox.ini
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/setup.cfg new/astroid-1.4.3/setup.cfg
--- old/astroid-1.4.1/setup.cfg 2015-11-29 22:19:52.000000000 +0100
+++ new/astroid-1.4.3/setup.cfg 2015-12-24 16:13:30.000000000 +0100
@@ -2,7 +2,7 @@
universal = 1
[egg_info]
+tag_date = 0
tag_svn_revision = 0
tag_build =
-tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/setup.py new/astroid-1.4.3/setup.py
--- old/astroid-1.4.1/setup.py 2015-11-29 15:57:24.000000000 +0100
+++ new/astroid-1.4.3/setup.py 2015-12-21 10:32:11.000000000 +0100
@@ -20,14 +20,18 @@
"""Setup script for astroid."""
import os
from setuptools import setup, find_packages
+from setuptools.command import easy_install
from setuptools.command import install_lib
-pkginfo = 'astroid/__pkginfo__.py'
+
+real_path = os.path.realpath(__file__)
+astroid_dir = os.path.dirname(real_path)
+pkginfo = os.path.join(astroid_dir, 'astroid', '__pkginfo__.py')
with open(pkginfo, 'rb') as fobj:
exec(compile(fobj.read(), pkginfo, 'exec'), locals())
-with open('README') as fobj:
+with open(os.path.join(astroid_dir, 'README.rst')) as fobj:
long_description = fobj.read()
class AstroidInstallLib(install_lib.install_lib):
@@ -37,6 +41,15 @@
install_lib.install_lib.byte_compile(self, files)
+class AstroidEasyInstallLib(easy_install.easy_install):
+ # override this since pip/easy_install attempt to byte compile
+ # test data files, some of them being syntactically wrong by design,
+ # and this scares the end-user
+ def byte_compile(self, files):
+ test_datadir = os.path.join('astroid', 'tests', 'testdata')
+ files = [f for f in files if test_datadir not in f]
+ easy_install.easy_install.byte_compile(self, files)
+
def install():
return setup(name = distname,
@@ -51,7 +64,8 @@
include_package_data = True,
install_requires = install_requires,
packages = find_packages(),
- cmdclass={'install_lib': AstroidInstallLib}
+ cmdclass={'install_lib': AstroidInstallLib,
+ 'easy_install': AstroidEasyInstallLib}
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/tox.ini new/astroid-1.4.3/tox.ini
--- old/astroid-1.4.1/tox.ini 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/tox.ini 2015-12-24 16:02:22.000000000 +0100
@@ -3,9 +3,6 @@
skip_missing_interpreters = true
[testenv:pylint]
-deps =
- hg+https://bitbucket.org/logilab/astroid@1.4.0
- hg+https://bitbucket.org/logilab/pylint@1.5.0
commands = pylint -rn --rcfile={toxinidir}/pylintrc {envsitepackagesdir}/astroid
[testenv]
@@ -19,5 +16,5 @@
py27,py33,pypy,jython: singledispatch
six
wrapt
- pylint: hg+https://bitbucket.org/logilab/pylint
+ pylint: git+https://github.com/pycqa/pylint@1.5.0
commands = python -m unittest discover -s {envsitepackagesdir}/astroid/tests -p "unittest*.py"
1
0
Hello community,
here is the log from the commit of package python3-pylint for openSUSE:Factory checked in at 2016-01-21 23:42:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-pylint (Old)
and /work/SRC/openSUSE:Factory/.python3-pylint.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-pylint"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-pylint/python3-pylint.changes 2015-12-23 08:50:40.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-pylint.new/python3-pylint.changes 2016-01-22 01:07:00.000000000 +0100
@@ -1,0 +2,34 @@
+Wed Jan 13 10:15:52 UTC 2016 - toddrme2178(a)gmail.com
+
+- Update to version 1.5.3:
+ * Handle the import fallback idiom with regard to wrong-import-order.
+ Closes issue #750.
+ * Decouple the displaying of reports from the displaying of messages
+ Some reporters are aggregating the messages instead of displaying
+ them when they are available. The actual displaying was conflatted
+ in the generate_reports. Unfortunately this behaviour was flaky
+ and in the case of the JSON reporter, the messages weren't shown
+ at all if a file had syntax errors or if it was missing.
+ In order to fix this, the aggregated messages can now be
+ displayed with Reporter.display_message, while the reports are
+ displayed with display_reports.
+ Closes issues #766 and #765.
+ * Ignore function calls with variadic arguments without a context.
+ Inferring variadic positional arguments and keyword arguments
+ will result into empty Tuples and Dicts, which can lead in
+ some cases to false positives with regard to no-value-for-parameter.
+ In order to avoid this, until we'll have support for call context
+ propagation, we're ignoring such cases if detected.
+ Closes issue #722.
+ * Treat AsyncFunctionDef just like FunctionDef nodes,
+ by implementing visit_asyncfunctiondef in terms of
+ visit_functiondef.
+ Closes issue #767.
+ * Take in account kwonlyargs when verifying that arguments
+ are defined with the check_docs extension.
+ Closes issue #745.
+ * Suppress reporting 'unneeded-not' inside `__ne__` methods
+ Closes issue #749.
+- Cleanup update-alternatives
+
+-------------------------------------------------------------------
Old:
----
pylint-1.5.2.tar.gz
New:
----
pylint-1.5.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-pylint.spec ++++++
--- /var/tmp/diff_new_pack.n7Ho4P/_old 2016-01-22 01:07:02.000000000 +0100
+++ /var/tmp/diff_new_pack.n7Ho4P/_new 2016-01-22 01:07:02.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-pylint
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,15 +17,15 @@
Name: python3-pylint
-Version: 1.5.2
+Version: 1.5.3
Release: 0
Summary: Syntax and style checker for Python code
License: GPL-2.0+
Group: Development/Languages/Python
-Url: http://www.pylint.org/
+Url: https://github.com/pycqa/pylint
Source: https://pypi.python.org/packages/source/p/pylint/pylint-%{version}.tar.gz
-BuildRequires: python3-2to3
BuildRequires: python3-astroid
+BuildRequires: python3-six
BuildRequires: python3-tk
Requires: python3-astroid
Requires: python3-six
@@ -58,58 +58,53 @@
python3 setup.py build
%install
-# build failes without --no-compile
python3 setup.py install --prefix=%{_prefix} --root=%{buildroot} --no-compile
+
# fix non-executable rpmlint warning
chmod +x %{buildroot}%{python3_sitelib}/pylint/epylint.py
-# update-alternatives
-mv %{buildroot}%{_bindir}/pylint %{buildroot}%{_bindir}/pylint-%{py3_ver}
-mv %{buildroot}%{_bindir}/epylint %{buildroot}%{_bindir}/epylint-%{py3_ver}
-mv %{buildroot}%{_bindir}/pylint-gui %{buildroot}%{_bindir}/pylint-gui-%{py3_ver}
-mv %{buildroot}%{_bindir}/pyreverse %{buildroot}%{_bindir}/pyreverse-%{py3_ver}
-mv %{buildroot}%{_bindir}/symilar %{buildroot}%{_bindir}/symilar-%{py3_ver}
-ln -s %{_bindir}/pylint-%{py3_ver} %{buildroot}%{_bindir}/pylint
-ln -s %{_bindir}/epylint-%{py3_ver} %{buildroot}%{_bindir}/epylint
-ln -s %{_bindir}/pylint-gui-%{py3_ver} %{buildroot}%{_bindir}/pylint-gui
-ln -s %{_bindir}/pyreverse-%{py3_ver} %{buildroot}%{_bindir}/pyreverse
-ln -s %{_bindir}/symilar-%{py3_ver} %{buildroot}%{_bindir}/symilar
-
-%pre
-# Since /usr/bin/pylint, etc. became ghosted to be used with update-alternatives, we have to get rid
-# of the old binary resulting from the non-update-alternativies-ified package:
-[ -h %{_bindir}/pylint ] || rm -f %{_bindir}/pylint
-[ -h %{_bindir}/epylint ] || rm -f %{_bindir}/epylint
-[ -h %{_bindir}/pylint-gui ] || rm -f %{_bindir}/pylint-gui
-[ -h %{_bindir}/pyreverse ] || rm -f %{_bindir}/pyreverse
-[ -h %{_bindir}/symilar ] || rm -f %{_bindir}/symilar
+
+# Prepare for update-alternatives usage
+mkdir -p %{buildroot}%{_sysconfdir}/alternatives
+for p in pylint epylint pylint-gui pyreverse symilar ; do
+ mv %{buildroot}%{_bindir}/$p %{buildroot}%{_bindir}/$p-%{py3_ver}
+ ln -s -f %{_sysconfdir}/alternatives/$p %{buildroot}%{_bindir}/$p
+ # create a dummy target for /etc/alternatives/$p
+ touch %{buildroot}%{_sysconfdir}/alternatives/$p
+done
%post
-update-alternatives \
+%_sbindir/update-alternatives \
--install %{_bindir}/pylint pylint %{_bindir}/pylint-%{py3_ver} 30 \
--slave %{_bindir}/epylint epylint %{_bindir}/epylint-%{py3_ver} \
--slave %{_bindir}/pylint-gui pylint-gui %{_bindir}/pylint-gui-%{py3_ver} \
--slave %{_bindir}/pyreverse pyreverse %{_bindir}/pyreverse-%{py3_ver} \
--slave %{_bindir}/symilar symilar %{_bindir}/symilar-%{py3_ver}
-%preun
+%postun
if [ $1 -eq 0 ] ; then
- update-alternatives --remove pylint %{_bindir}/pylint-%{py3_ver}
+ %_sbindir/update-alternatives --remove pylint %{_bindir}/pylint-%{py3_ver}
fi
%files
%defattr(-,root,root)
-%doc ChangeLog COPYING README.rst examples/
+%doc ChangeLog COPYING README.rst
+%doc examples/
+%{_bindir}/pylint
+%{_bindir}/epylint
+%{_bindir}/pylint-gui
+%{_bindir}/pyreverse
+%{_bindir}/symilar
%{_bindir}/pylint-%{py3_ver}
%{_bindir}/epylint-%{py3_ver}
%{_bindir}/pylint-gui-%{py3_ver}
%{_bindir}/pyreverse-%{py3_ver}
%{_bindir}/symilar-%{py3_ver}
-%ghost %{_bindir}/pylint
-%ghost %{_bindir}/epylint
-%ghost %{_bindir}/pylint-gui
-%ghost %{_bindir}/pyreverse
-%ghost %{_bindir}/symilar
+%ghost %{_sysconfdir}/alternatives/pylint
+%ghost %{_sysconfdir}/alternatives/epylint
+%ghost %{_sysconfdir}/alternatives/pylint-gui
+%ghost %{_sysconfdir}/alternatives/pyreverse
+%ghost %{_sysconfdir}/alternatives/symilar
%{python3_sitelib}/pylint/
-%{python3_sitelib}/pylint-%{version}-py%{py3_ver}.egg-info
+%{python3_sitelib}/pylint-%{version}-py*.egg-info
%changelog
++++++ pylint-1.5.2.tar.gz -> pylint-1.5.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/ChangeLog new/pylint-1.5.3/ChangeLog
--- old/pylint-1.5.2/ChangeLog 2015-12-21 01:15:06.000000000 +0100
+++ new/pylint-1.5.3/ChangeLog 2016-01-11 10:51:49.000000000 +0100
@@ -1,8 +1,52 @@
ChangeLog for Pylint
--------------------
-2015-12-21
+2016-01-11 -- 1.5.3
+ * Handle the import fallback idiom with regard to wrong-import-order.
+
+ Closes issue #750.
+
+ * Decouple the displaying of reports from the displaying of messages
+
+ Some reporters are aggregating the messages instead of displaying
+ them when they are available. The actual displaying was conflatted
+ in the generate_reports. Unfortunately this behaviour was flaky
+ and in the case of the JSON reporter, the messages weren't shown
+ at all if a file had syntax errors or if it was missing.
+ In order to fix this, the aggregated messages can now be
+ displayed with Reporter.display_message, while the reports are
+ displayed with display_reports.
+
+ Closes issues #766 and #765.
+
+ * Ignore function calls with variadic arguments without a context.
+
+ Inferring variadic positional arguments and keyword arguments
+ will result into empty Tuples and Dicts, which can lead in
+ some cases to false positives with regard to no-value-for-parameter.
+ In order to avoid this, until we'll have support for call context
+ propagation, we're ignoring such cases if detected.
+ Closes issue #722.
+
+ * Treat AsyncFunctionDef just like FunctionDef nodes,
+ by implementing visit_asyncfunctiondef in terms of
+ visit_functiondef.
+
+ Closes issue #767.
+
+ * Take in account kwonlyargs when verifying that arguments
+ are defined with the check_docs extension.
+
+ Closes issue #745.
+
+ * Suppress reporting 'unneeded-not' inside `__ne__` methods
+
+ Closes issue #749.
+
+
+2015-12-21 -- 1.5.2
+
* Don't crash if graphviz is not installed, instead emit a
warning letting the user to know.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/PKG-INFO new/pylint-1.5.3/PKG-INFO
--- old/pylint-1.5.2/PKG-INFO 2015-12-21 01:21:43.000000000 +0100
+++ new/pylint-1.5.3/PKG-INFO 2016-01-11 11:07:57.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pylint
-Version: 1.5.2
+Version: 1.5.3
Summary: python code static checker
Home-page: http://www.pylint.org
Author: Logilab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/doc/changelog.rst new/pylint-1.5.3/doc/changelog.rst
--- old/pylint-1.5.2/doc/changelog.rst 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/doc/changelog.rst 2016-01-09 21:13:05.000000000 +0100
@@ -1,8 +1,6 @@
-Changes & Contributors
-======================
+Change log
+==========
.. include:: ../ChangeLog
-
-.. include:: ../CONTRIBUTORS.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/man/pylint.1 new/pylint-1.5.3/man/pylint.1
--- old/pylint-1.5.2/man/pylint.1 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/man/pylint.1 2016-01-09 21:13:05.000000000 +0100
@@ -239,7 +239,7 @@
.IP "--max-module-lines=<int>"
Maximum number of lines in a module [current: 1000]
.IP "--indent-string=<string>"
-String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 tab). [current: ' ']
+String used as indentation unit. This is usually " " (4 spaces) or "\\t" (1 tab). [current: ' ']
.IP "--indent-after-paren=<int>"
Number of spaces of indent required inside a hanging or continued line. [current: 4]
.IP "--expected-line-ending-format=<empty or LF or CRLF>"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/__pkginfo__.py new/pylint-1.5.3/pylint/__pkginfo__.py
--- old/pylint-1.5.2/pylint/__pkginfo__.py 2015-12-21 01:14:49.000000000 +0100
+++ new/pylint-1.5.3/pylint/__pkginfo__.py 2016-01-11 10:51:17.000000000 +0100
@@ -23,11 +23,11 @@
modname = distname = 'pylint'
-numversion = (1, 5, 2)
+numversion = (1, 5, 3)
version = '.'.join([str(num) for num in numversion])
install_requires = [
- 'astroid>=1.4.1',
+ 'astroid>=1.4.1,<1.5.0',
'six',
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/base.py new/pylint-1.5.3/pylint/checkers/base.py
--- old/pylint-1.5.2/pylint/checkers/base.py 2015-12-20 14:33:00.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/base.py 2016-01-09 21:13:05.000000000 +0100
@@ -419,6 +419,8 @@
else:
args.add(name)
+ visit_asyncfunctiondef = visit_functiondef
+
def _check_nonlocal_and_global(self, node):
"""Check that a name is both nonlocal and global."""
def same_scope(current):
@@ -777,7 +779,7 @@
# * a yield (which are wrapped by a discard node in _ast XXX)
# warn W0106 if we have any underlying function call (we can't predict
# side effects), else pointless-statement
- if (isinstance(expr, (astroid.Yield, astroid.Call)) or
+ if (isinstance(expr, (astroid.Yield, astroid.Await, astroid.Call)) or
(isinstance(node.parent, astroid.TryExcept) and
node.parent.body == [node])):
return
@@ -871,6 +873,8 @@
self.stats[node.is_method() and 'method' or 'function'] += 1
self._check_dangerous_default(node)
+ visit_asyncfunctiondef = visit_functiondef
+
def _check_dangerous_default(self, node):
# check for dangerous default values as arguments
is_iterable = lambda n: isinstance(n, (astroid.List,
@@ -1238,6 +1242,8 @@
if args is not None:
self._recursive_check_names(args, node)
+ visit_asyncfunctiondef = visit_functiondef
+
@check_messages('blacklisted-name', 'invalid-name')
def visit_global(self, node):
for name in node.names:
@@ -1389,6 +1395,8 @@
else:
self._check_docstring(ftype, node)
+ visit_asyncfunctiondef = visit_functiondef
+
def _check_docstring(self, node_type, node, report_missing=True,
confidence=HIGH):
"""check the node has a non empty docstring"""
@@ -1860,6 +1868,7 @@
if node.op != 'not':
return
operand = node.operand
+
if isinstance(operand, astroid.UnaryOp) and operand.op == 'not':
self.add_message('unneeded-not', node=node,
args=(node.as_string(),
@@ -1872,6 +1881,12 @@
operator, right = operand.ops[0]
if operator not in self.reverse_op:
return
+
+ # Ignore __ne__ as function of __eq__
+ frame = node.frame()
+ if frame.name == '__ne__' and operator == '==':
+ return
+
suggestion = '%s %s %s' % (left.as_string(),
self.reverse_op[operator],
right.as_string())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/classes.py new/pylint-1.5.3/pylint/checkers/classes.py
--- old/pylint-1.5.2/pylint/checkers/classes.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/classes.py 2016-01-09 21:13:05.000000000 +0100
@@ -508,6 +508,8 @@
except astroid.NotFoundError:
pass
+ visit_asyncfunctiondef = visit_functiondef
+
def _check_slots(self, node):
if '__slots__' not in node.locals:
return
@@ -1015,6 +1017,8 @@
if node.name in PYMETHODS:
self._check_unexpected_method_signature(node)
+ visit_asyncfunctiondef = visit_functiondef
+
def _check_unexpected_method_signature(self, node):
expected_params = SPECIAL_METHODS_PARAMS[node.name]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/design_analysis.py new/pylint-1.5.3/pylint/checkers/design_analysis.py
--- old/pylint-1.5.2/pylint/checkers/design_analysis.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/design_analysis.py 2016-01-09 21:13:05.000000000 +0100
@@ -254,6 +254,8 @@
# init statements counter
self._stmts = 1
+ visit_asyncfunctiondef = visit_functiondef
+
@check_messages('too-many-return-statements', 'too-many-branches',
'too-many-arguments', 'too-many-locals',
'too-many-statements')
@@ -274,6 +276,8 @@
self.add_message('too-many-statements', node=node,
args=(self._stmts, self.config.max_statements))
+ leave_asyncfunctiondef = leave_functiondef
+
def visit_return(self, _):
"""count number of returns"""
if not self._returns:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/imports.py new/pylint-1.5.3/pylint/checkers/imports.py
--- old/pylint-1.5.2/pylint/checkers/imports.py 2015-12-21 00:56:43.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/imports.py 2016-01-11 10:42:15.000000000 +0100
@@ -16,6 +16,7 @@
"""imports checkers for Python code"""
import collections
+from distutils import sysconfig
import os
import sys
@@ -23,7 +24,7 @@
import astroid
from astroid import are_exclusive
-from astroid.modutils import (EXT_LIB_DIR, get_module_part, is_standard_module,
+from astroid.modutils import (get_module_part, is_standard_module,
file_from_modpath)
from pylint.interfaces import IAstroidChecker
@@ -253,7 +254,6 @@
given file (report RP0402 must not be disabled)'}
),
)
- ext_lib_dir = os.path.normcase(os.path.abspath(EXT_LIB_DIR))
def __init__(self, linter=None):
BaseChecker.__init__(self, linter)
@@ -268,6 +268,29 @@
self._report_dependencies_graph),
)
+ self._site_packages = self._compute_site_packages()
+
+ @staticmethod
+ def _compute_site_packages():
+ def _normalized_path(path):
+ return os.path.normcase(os.path.abspath(path))
+
+ paths = set()
+ real_prefix = getattr(sys, 'real_prefix', None)
+ for prefix in filter(None, (real_prefix, sys.prefix)):
+ path = sysconfig.get_python_lib(prefix=prefix)
+ path = _normalized_path(path)
+ paths.add(path)
+
+ # Handle Debian's derivatives /usr/local.
+ if os.path.isfile("/etc/debian_version"):
+ for prefix in filter(None, (real_prefix, sys.prefix)):
+ libpython = os.path.join(prefix, "local", "lib",
+ "python" + sysconfig.get_python_version(),
+ "dist-packages")
+ paths.add(libpython)
+ return paths
+
def open(self):
"""called before visiting project (i.e set of modules)"""
self.linter.add_stats(dependencies={})
@@ -429,6 +452,12 @@
importedname = node.names[0][0].split('.')[0]
self._imports_stack.append((node, importedname))
+ @staticmethod
+ def _is_fallback_import(node, imports):
+ imports = [import_node for (import_node, _) in imports]
+ return any(astroid.are_exclusive(import_node, node)
+ for import_node in imports)
+
def _check_imports_order(self, node):
"""Checks imports of module `node` are grouped by category
@@ -437,11 +466,6 @@
extern_imports = []
local_imports = []
std_imports = []
- stdlib_paths = [sys.prefix, self.ext_lib_dir]
- real_prefix = getattr(sys, 'real_prefix', None)
- if real_prefix is not None:
- stdlib_paths.append(real_prefix)
-
for node, modname in self._imports_stack:
package = modname.split('.')[0]
if is_standard_module(modname):
@@ -449,6 +473,8 @@
wrong_import = extern_imports or local_imports
if not wrong_import:
continue
+ if self._is_fallback_import(node, wrong_import):
+ continue
self.add_message('wrong-import-order', node=node,
args=('standard import "%s"' % node.as_string(),
'"%s"' % wrong_import[0][0].as_string()))
@@ -456,13 +482,12 @@
try:
filename = file_from_modpath([package])
except ImportError:
- extern_imports.append((node, package))
continue
if not filename:
- extern_imports.append((node, package))
continue
+
filename = os.path.normcase(os.path.abspath(filename))
- if not any(filename.startswith(path) for path in stdlib_paths):
+ if not any(filename.startswith(path) for path in self._site_packages):
local_imports.append((node, package))
continue
extern_imports.append((node, package))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/newstyle.py new/pylint-1.5.3/pylint/checkers/newstyle.py
--- old/pylint-1.5.2/pylint/checkers/newstyle.py 2015-12-16 16:25:28.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/newstyle.py 2016-01-09 21:13:05.000000000 +0100
@@ -161,6 +161,8 @@
if name is not None:
self.add_message('bad-super-call', node=call, args=(name, ))
+ visit_asyncfunctiondef = visit_functiondef
+
def register(linter):
"""required method to auto register this checker """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/spelling.py new/pylint-1.5.3/pylint/checkers/spelling.py
--- old/pylint-1.5.2/pylint/checkers/spelling.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/spelling.py 2016-01-09 21:13:05.000000000 +0100
@@ -239,6 +239,8 @@
return
self._check_docstring(node)
+ visit_asyncfunctiondef = visit_functiondef
+
def _check_docstring(self, node):
"""check the node has any spelling errors"""
docstring = node.doc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/typecheck.py new/pylint-1.5.3/pylint/checkers/typecheck.py
--- old/pylint-1.5.2/pylint/checkers/typecheck.py 2015-12-21 00:56:58.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/typecheck.py 2016-01-11 10:42:15.000000000 +0100
@@ -468,6 +468,33 @@
args=node.func.as_string())
break
+ @staticmethod
+ def _no_context_variadic(node):
+ """Verify if the given call node has variadic nodes without context
+
+ This is a workaround for handling cases of nested call functions
+ which don't have the specific call context at hand.
+ Variadic arguments (variable positional arguments and variable
+ keyword arguments) are inferred, inherently wrong, by astroid
+ as a Tuple, respectively a Dict with empty elements.
+ This can lead pylint to believe that a function call receives
+ too few arguments.
+ """
+ for arg in node.args:
+ if not isinstance(arg, astroid.Starred):
+ continue
+
+ inferred = safe_infer(arg.value)
+ if isinstance(inferred, astroid.Tuple):
+ length = len(inferred.elts)
+ elif isinstance(inferred, astroid.Dict):
+ length = len(inferred.items)
+ else:
+ return False
+ if not length and isinstance(inferred.statement(), astroid.FunctionDef):
+ return True
+ return False
+
@check_messages(*(list(MSGS.keys())))
def visit_call(self, node):
"""check that called functions/methods are inferred to callable objects,
@@ -479,6 +506,7 @@
call_site = astroid.arguments.CallSite.from_call(node)
num_positional_args = len(call_site.positional_arguments)
keyword_args = list(call_site.keyword_arguments.keys())
+ no_context_variadic = self._no_context_variadic(node)
called = safe_infer(node.func)
# only function, generator and object defining __call__ are allowed
@@ -494,6 +522,7 @@
# Any error occurred during determining the function type, most of
# those errors are handled by different warnings.
return
+
num_positional_args += implicit_args
if called.args.args is None:
# Built-in functions have no argument information.
@@ -610,8 +639,10 @@
display_name = '<tuple>'
else:
display_name = repr(name)
- self.add_message('no-value-for-parameter', node=node,
- args=(display_name, callable_name))
+ # TODO(cpopa): this should be removed after PyCQA/astroid/issues/177
+ if not no_context_variadic:
+ self.add_message('no-value-for-parameter', node=node,
+ args=(display_name, callable_name))
for name in kwparams:
defval, assigned = kwparams[name]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/variables.py new/pylint-1.5.3/pylint/checkers/variables.py
--- old/pylint-1.5.2/pylint/checkers/variables.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/variables.py 2016-01-11 10:42:15.000000000 +0100
@@ -622,6 +622,9 @@
continue
self.add_message('unused-variable', args=name, node=stmt)
+ visit_asyncfunctiondef = visit_functiondef
+ leave_asyncfunctiondef = leave_functiondef
+
@check_messages('global-variable-undefined', 'global-variable-not-assigned',
'global-statement', 'global-at-module-level',
'redefined-builtin')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/extensions/check_docs.py new/pylint-1.5.3/pylint/extensions/check_docs.py
--- old/pylint-1.5.2/pylint/extensions/check_docs.py 2015-12-12 13:20:29.000000000 +0100
+++ new/pylint-1.5.3/pylint/extensions/check_docs.py 2016-01-09 21:13:05.000000000 +0100
@@ -174,6 +174,7 @@
# Collect the function arguments.
expected_argument_names = [arg.name for arg in arguments_node.args]
+ expected_argument_names += [arg.name for arg in arguments_node.kwonlyargs]
not_needed_type_in_docstring = (
self.not_needed_param_in_docstring.copy())
@@ -183,7 +184,6 @@
if arguments_node.kwarg is not None:
expected_argument_names.append(arguments_node.kwarg)
not_needed_type_in_docstring.add(arguments_node.kwarg)
-
params_with_doc, params_with_type = self.match_param_docs(doc)
# Tolerate no parameter documentation at all.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/interfaces.py new/pylint-1.5.3/pylint/interfaces.py
--- old/pylint-1.5.2/pylint/interfaces.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/interfaces.py 2016-01-11 10:42:15.000000000 +0100
@@ -94,7 +94,7 @@
msg is the actual message
"""
- def display_results(self, layout):
+ def display_reports(self, layout):
"""display results encapsulated in the layout tree
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/lint.py new/pylint-1.5.3/pylint/lint.py
--- old/pylint-1.5.2/pylint/lint.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/lint.py 2016-01-11 10:42:15.000000000 +0100
@@ -964,6 +964,9 @@
if persistent run, pickle results for later comparison
"""
+ # Display whatever messages are left on the reporter.
+ self.reporter.display_messages(report_nodes.Section())
+
if self.file_state.base_name is not None:
# load previous results if any
previous_stats = config.load_results(self.file_state.base_name)
@@ -976,17 +979,12 @@
self.reporter.set_output(open(filename, 'w'))
else:
sect = report_nodes.Section()
- if self.config.reports or self.config.output_format == 'html':
- self.reporter.display_results(sect)
+ if self.config.reports:
+ self.reporter.display_reports(sect)
# save results if persistent run
if self.config.persistent:
config.save_results(self.stats, self.file_state.base_name)
else:
- if self.config.output_format == 'html':
- # No output will be emitted for the html
- # reporter if the file doesn't exist, so emit
- # the results here.
- self.reporter.display_results(report_nodes.Section())
self.reporter.on_close(self.stats, {})
# specific reports ########################################################
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/reporters/__init__.py new/pylint-1.5.3/pylint/reporters/__init__.py
--- old/pylint-1.5.2/pylint/reporters/__init__.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/reporters/__init__.py 2016-01-11 10:42:15.000000000 +0100
@@ -91,17 +91,34 @@
"""write a line in the output buffer"""
print(self.encode(string), file=self.out)
- def display_results(self, layout):
+ def display_reports(self, layout):
"""display results encapsulated in the layout tree"""
self.section = 0
if hasattr(layout, 'report_id'):
layout.children[0].children[0].data += ' (%s)' % layout.report_id
self._display(layout)
+ def display_results(self, layout):
+ warnings.warn("display_results is deprecated, use display_reports instead. "
+ "The former will be removed in Pylint 2.0.",
+ DeprecationWarning)
+ self.display_reports(layout)
+
def _display(self, layout):
"""display the layout"""
raise NotImplementedError()
+ def display_messages(self, layout):
+ """Hook for displaying the messages of the reporter
+
+ This will be called whenever the underlying messages
+ needs to be displayed. For some reporters, it probably
+ doesn't make sense to display messages as soon as they
+ are available, so some mechanism of storing them could be used.
+ This method can be implemented to display them after they've
+ been aggregated.
+ """
+
# Event callbacks
def on_set_current_module(self, module, filepath):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/reporters/html.py new/pylint-1.5.3/pylint/reporters/html.py
--- old/pylint-1.5.2/pylint/reporters/html.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/reporters/html.py 2016-01-09 21:13:05.000000000 +0100
@@ -88,6 +88,9 @@
(in add_message, message is not displayed, just collected so it
can be displayed in an html table)
"""
+ HTMLWriter().format(layout, self.out)
+
+ def display_messages(self, layout):
if self.msgs:
# add stored messages to the layout
msgs = self.header
@@ -97,7 +100,7 @@
layout.append(sect)
sect.append(Table(cols=cols, children=msgs, rheaders=1))
self.msgs = []
- HTMLWriter().format(layout, self.out)
+ self._display(layout)
def register(linter):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/reporters/json.py new/pylint-1.5.3/pylint/reporters/json.py
--- old/pylint-1.5.2/pylint/reporters/json.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/reporters/json.py 2016-01-09 21:13:05.000000000 +0100
@@ -35,7 +35,6 @@
def handle_message(self, message):
"""Manage message of different type and in the context of path."""
-
self.messages.append({
'type': message.category,
'module': message.module,
@@ -48,11 +47,17 @@
'message': cgi.escape(message.msg or ''),
})
- def _display(self, layout):
+ def display_messages(self, layout):
"""Launch layouts display"""
if self.messages:
print(json.dumps(self.messages, indent=4), file=self.out)
+ def display_reports(self, _):
+ """Don't do nothing in this reporter."""
+
+ def _display(self, layout):
+ """Don't do nothing."""
+
def register(linter):
"""Register the reporter classes with the linter."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/extensions/test_check_docs.py new/pylint-1.5.3/pylint/test/extensions/test_check_docs.py
--- old/pylint-1.5.2/pylint/test/extensions/test_check_docs.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/extensions/test_check_docs.py 2016-01-09 21:13:05.000000000 +0100
@@ -4,6 +4,7 @@
from __future__ import division, print_function, absolute_import
import unittest
+import sys
import astroid
from astroid import test_utils
@@ -639,6 +640,27 @@
):
self._visit_methods_of_class(node)
+ @unittest.skipIf(sys.version_info[0] != 3, "Enabled on Python 3")
+ def test_kwonlyargs_are_taken_in_account(self):
+ node = test_utils.extract_node('''
+ def my_func(arg, *, kwonly, missing_kwonly):
+ """The docstring
+
+ :param int arg: The argument.
+ :param bool kwonly: A keyword-arg.
+ """
+ ''')
+ with self.assertAddsMessages(
+ Message(
+ msg_id='missing-param-doc',
+ node=node,
+ args=('missing_kwonly', )),
+ Message(
+ msg_id='missing-type-doc',
+ node=node,
+ args=('missing_kwonly', ))):
+ self.checker.visit_functiondef(node)
+
if __name__ == '__main__':
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/arguments.py new/pylint-1.5.3/pylint/test/functional/arguments.py
--- old/pylint-1.5.2/pylint/test/functional/arguments.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/arguments.py 2016-01-11 10:42:15.000000000 +0100
@@ -156,3 +156,12 @@
function_1_arg(5, 6, **{unknown: 1})
function_1_arg(**{object: 1})
function_1_arg(**{1: 2})
+
+# Don't emit no-value-for-parameter for this, since we
+# don't have the context at our disposal.
+def expect_three(one, two, three):
+ return one + two + three
+
+
+def no_context(*args):
+ expect_three(*args)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/async_functions.py new/pylint-1.5.3/pylint/test/functional/async_functions.py
--- old/pylint-1.5.2/pylint/test/functional/async_functions.py 1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/async_functions.py 2016-01-11 10:42:15.000000000 +0100
@@ -0,0 +1,65 @@
+"""Check that Python 3.5's async functions are properly analyzed by Pylint."""
+# pylint: disable=missing-docstring,invalid-name,too-few-public-methods
+# pylint: disable=using-constant-test
+
+async def next(): # [redefined-builtin]
+ pass
+
+async def some_function(arg1, arg2): # [unused-argument]
+ await arg1
+
+
+class OtherClass(object):
+
+ @staticmethod
+ def test():
+ return 42
+
+
+class Class(object):
+
+ async def some_method(self):
+ super(OtherClass, self).test() # [bad-super-call]
+
+
+# +1: [too-many-arguments,too-many-return-statements, too-many-branches]
+async def complex_function(this, function, has, more, arguments, than,
+ one, _, should, have):
+ if 1:
+ return this
+ elif 1:
+ return function
+ elif 1:
+ return has
+ elif 1:
+ return more
+ elif 1:
+ return arguments
+ elif 1:
+ return than
+ try:
+ return one
+ finally:
+ pass
+ if 2:
+ return should
+ while True:
+ pass
+ if 1:
+ return have
+ elif 2:
+ return function
+ elif 3:
+ pass
+
+
+# +1: [duplicate-argument-name,dangerous-default-value]
+async def func(a, a, b=[]):
+ return a, b
+
+
+# +1: [empty-docstring, blacklisted-name]
+async def foo():
+ ""
+
+
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/async_functions.rc new/pylint-1.5.3/pylint/test/functional/async_functions.rc
--- old/pylint-1.5.2/pylint/test/functional/async_functions.rc 1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/async_functions.rc 2016-01-09 21:13:05.000000000 +0100
@@ -0,0 +1,2 @@
+[testoptions]
+min_pyver=3.5
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/async_functions.txt new/pylint-1.5.3/pylint/test/functional/async_functions.txt
--- old/pylint-1.5.2/pylint/test/functional/async_functions.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/async_functions.txt 2016-01-09 21:13:05.000000000 +0100
@@ -0,0 +1,10 @@
+redefined-builtin:5:next:"Redefining built-in 'next'"
+unused-argument:8:some_function:"Unused argument 'arg2'"
+bad-super-call:22:Class.some_method:"Bad first argument 'OtherClass' given to super()"
+too-many-arguments:26:complex_function:Too many arguments (10/5)
+too-many-branches:26:complex_function:Too many branches (13/12)
+too-many-return-statements:26:complex_function:Too many return statements (10/6)
+dangerous-default-value:57:func:Dangerous default value [] as argument
+duplicate-argument-name:57:func:Duplicate argument name a in function definition
+blacklisted-name:62:foo:Black listed name "foo"
+empty-docstring:62:foo:Empty function docstring
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/unneeded_not.py new/pylint-1.5.3/pylint/test/functional/unneeded_not.py
--- old/pylint-1.5.2/pylint/test/functional/unneeded_not.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/unneeded_not.py 2016-01-11 10:42:15.000000000 +0100
@@ -1,6 +1,6 @@
"""Check exceeding negations in boolean expressions trigger warnings"""
-# pylint: disable=singleton-comparison, too-many-branches
+# pylint: disable=singleton-comparison, too-many-branches, too-few-public-methods
def unneeded_not():
"""This is not ok
@@ -49,3 +49,9 @@
pass
if not 2 <= someint < 3 < 4:
pass
+
+class Klass(object):
+ """This is also ok"""
+ def __ne__(self, other):
+ return not self == other
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/wrong_import_order.py new/pylint-1.5.3/pylint/test/functional/wrong_import_order.py
--- old/pylint-1.5.2/pylint/test/functional/wrong_import_order.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/wrong_import_order.py 2016-01-11 10:42:04.000000000 +0100
@@ -1,5 +1,9 @@
"""Checks import order rule"""
# pylint: disable=unused-import,relative-import,ungrouped-imports,import-error
+try:
+ from six.moves import configparser
+except ImportError:
+ import configparser
import six
import os.path # [wrong-import-order]
@@ -7,4 +11,5 @@
import sys # [wrong-import-order]
import datetime # [wrong-import-order]
import unused_import
+import totally_missing
import astroid
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/wrong_import_order.txt new/pylint-1.5.3/pylint/test/functional/wrong_import_order.txt
--- old/pylint-1.5.2/pylint/test/functional/wrong_import_order.txt 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/wrong_import_order.txt 2016-01-11 10:40:13.000000000 +0100
@@ -1,3 +1,3 @@
-wrong-import-order:5::standard import "import os.path" comes before "import six"
-wrong-import-order:7::standard import "import sys" comes before "import six"
-wrong-import-order:8::standard import "import datetime" comes before "import six"
+wrong-import-order:9::standard import "import os.path" comes before "from six.moves import configparser"
+wrong-import-order:11::standard import "import sys" comes before "from six.moves import configparser"
+wrong-import-order:12::standard import "import datetime" comes before "from six.moves import configparser"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/yield_inside_async_function.py new/pylint-1.5.3/pylint/test/functional/yield_inside_async_function.py
--- old/pylint-1.5.2/pylint/test/functional/yield_inside_async_function.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/yield_inside_async_function.py 2016-01-09 21:13:05.000000000 +0100
@@ -1,5 +1,5 @@
"""Test that `yield` or `yield from` can't be used inside an async function."""
-# pylint: disable=missing-docstring
+# pylint: disable=missing-docstring, unused-variable
async def good_coro():
def _inner():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/regrtest_data/syntax_error.py new/pylint-1.5.3/pylint/test/regrtest_data/syntax_error.py
--- old/pylint-1.5.2/pylint/test/regrtest_data/syntax_error.py 1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/regrtest_data/syntax_error.py 2016-01-09 21:13:05.000000000 +0100
@@ -0,0 +1 @@
+class A extends B {}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/test_functional.py new/pylint-1.5.3/pylint/test/test_functional.py
--- old/pylint-1.5.2/pylint/test/test_functional.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/test_functional.py 2016-01-09 21:13:05.000000000 +0100
@@ -88,7 +88,7 @@
def on_set_current_module(self, module, filepath):
self.messages = []
- def display_results(self, layout):
+ def display_reports(self, layout):
"""Ignore layouts."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/test_self.py new/pylint-1.5.3/pylint/test/test_self.py
--- old/pylint-1.5.2/pylint/test/test_self.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/test_self.py 2016-01-11 10:42:15.000000000 +0100
@@ -12,6 +12,7 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import contextlib
+import json
import re
import sys
import os
@@ -56,7 +57,7 @@
for rep in self._reporters:
rep.handle_message(msg)
- def display_results(self, layout):
+ def display_reports(self, layout):
pass
@property
@@ -296,6 +297,51 @@
expected_output=expected)
+ def test_json_report_when_file_has_syntax_error(self):
+ out = six.StringIO()
+ module = join(HERE, 'regrtest_data', 'syntax_error.py')
+ self._runtest([module], code=2, reporter=JSONReporter(out))
+ output = json.loads(out.getvalue())
+ self.assertIsInstance(output, list)
+ self.assertEqual(len(output), 1)
+ self.assertIsInstance(output[0], dict)
+ expected = {
+ "obj": "",
+ "column": 0,
+ "line": 1,
+ "type": "error",
+ "symbol": "syntax-error",
+ "module": "syntax_error"
+ }
+ message = output[0]
+ for key, value in expected.items():
+ self.assertIn(key, message)
+ self.assertEqual(message[key], value)
+ self.assertIn("invalid syntax", message["message"].lower())
+
+ def test_json_report_when_file_is_missing(self):
+ out = six.StringIO()
+ module = join(HERE, 'regrtest_data', 'totally_missing.py')
+ self._runtest([module], code=1, reporter=JSONReporter(out))
+ output = json.loads(out.getvalue())
+ self.assertIsInstance(output, list)
+ self.assertEqual(len(output), 1)
+ self.assertIsInstance(output[0], dict)
+ expected = {
+ "obj": "",
+ "column": 0,
+ "line": 1,
+ "type": "fatal",
+ "symbol": "fatal",
+ "module": module
+ }
+ message = output[0]
+ for key, value in expected.items():
+ self.assertIn(key, message)
+ self.assertEqual(message[key], value)
+ self.assertTrue(message['message'].startswith("No module named"))
+
+
if __name__ == '__main__':
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/unittest_reporters_json.py new/pylint-1.5.3/pylint/test/unittest_reporters_json.py
--- old/pylint-1.5.2/pylint/test/unittest_reporters_json.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/unittest_reporters_json.py 2016-01-09 21:13:05.000000000 +0100
@@ -40,7 +40,8 @@
linter.add_message('line-too-long', line=1, args=(1, 2))
# we call this method because we didn't actually run the checkers
- reporter.display_results(None)
+ reporter.display_messages(None)
+
expected_result = [[
("column", 0),
("line", 1),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/unittest_reporting.py new/pylint-1.5.3/pylint/test/unittest_reporting.py
--- old/pylint-1.5.2/pylint/test/unittest_reporting.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/unittest_reporting.py 2016-01-11 10:42:15.000000000 +0100
@@ -123,7 +123,7 @@
linter.open()
linter.set_current_module('0123')
linter.add_message('lowercase-l-suffix', line=1)
- linter.reporter.display_results(Section())
+ linter.reporter.display_messages(Section())
self.assertEqual(output.getvalue().splitlines(), expected)
@unittest.expectedFailure
@@ -169,8 +169,26 @@
linter.add_message('bad-whitespace', line=1,
args=('Exactly one', 'required', 'before',
'comparison', 'a< 5: print "zero"'))
- linter.reporter.display_results(Section())
+ linter.reporter.display_reports(Section())
self.assertMultiLineEqual(output.getvalue(), expected)
+ def test_display_results_is_renamed(self):
+ class CustomReporter(TextReporter):
+ def _display(self, layout):
+ return None
+
+ reporter = CustomReporter()
+ if __pkginfo__.numversion >= (2, 0):
+ with self.assertRaises(AttributeError):
+ reporter.display_results
+ else:
+ with warnings.catch_warnings(record=True) as cm:
+ warnings.simplefilter("always")
+ reporter.display_results(Section())
+
+ self.assertEqual(len(cm), 1)
+ self.assertIsInstance(cm[0].message, DeprecationWarning)
+
+
if __name__ == '__main__':
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/testutils.py new/pylint-1.5.3/pylint/testutils.py
--- old/pylint-1.5.2/pylint/testutils.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/testutils.py 2016-01-11 10:42:15.000000000 +0100
@@ -125,7 +125,7 @@
self.reset()
return result
- def display_results(self, layout):
+ def display_reports(self, layout):
"""ignore layouts"""
_display = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint.egg-info/PKG-INFO new/pylint-1.5.3/pylint.egg-info/PKG-INFO
--- old/pylint-1.5.2/pylint.egg-info/PKG-INFO 2015-12-21 01:21:34.000000000 +0100
+++ new/pylint-1.5.3/pylint.egg-info/PKG-INFO 2016-01-11 11:07:49.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pylint
-Version: 1.5.2
+Version: 1.5.3
Summary: python code static checker
Home-page: http://www.pylint.org
Author: Logilab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint.egg-info/SOURCES.txt new/pylint-1.5.3/pylint.egg-info/SOURCES.txt
--- old/pylint-1.5.2/pylint.egg-info/SOURCES.txt 2015-12-21 01:21:34.000000000 +0100
+++ new/pylint-1.5.3/pylint.egg-info/SOURCES.txt 2016-01-11 11:07:49.000000000 +0100
@@ -178,6 +178,9 @@
pylint/test/functional/assert_on_tuple.txt
pylint/test/functional/assigning_non_slot.py
pylint/test/functional/assigning_non_slot.txt
+pylint/test/functional/async_functions.py
+pylint/test/functional/async_functions.rc
+pylint/test/functional/async_functions.txt
pylint/test/functional/attribute_defined_outside_init.py
pylint/test/functional/attribute_defined_outside_init.txt
pylint/test/functional/bad_builtin.py
@@ -784,6 +787,7 @@
pylint/test/regrtest_data/precedence_test.py
pylint/test/regrtest_data/py3k_error_flag.py
pylint/test/regrtest_data/special_attr_scope_lookup_crash.py
+pylint/test/regrtest_data/syntax_error.py
pylint/test/regrtest_data/try_finally_disable_msg_crash.py
pylint/test/regrtest_data/wrong_import_position.py
pylint/test/regrtest_data/absimp/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint.egg-info/requires.txt new/pylint-1.5.3/pylint.egg-info/requires.txt
--- old/pylint-1.5.2/pylint.egg-info/requires.txt 2015-12-21 01:21:34.000000000 +0100
+++ new/pylint-1.5.3/pylint.egg-info/requires.txt 2016-01-11 11:07:49.000000000 +0100
@@ -1,3 +1,3 @@
-astroid>=1.4.1
+astroid>=1.4.1,<1.5.0
six
colorama
1
0
Hello community,
here is the log from the commit of package python3-pyflakes for openSUSE:Factory checked in at 2016-01-21 23:42:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-pyflakes (Old)
and /work/SRC/openSUSE:Factory/.python3-pyflakes.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-pyflakes"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-pyflakes/python3-pyflakes.changes 2015-11-12 19:41:17.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-pyflakes.new/python3-pyflakes.changes 2016-01-22 01:06:58.000000000 +0100
@@ -1,0 +2,5 @@
+Wed Jan 13 09:55:01 UTC 2016 - toddrme2178(a)gmail.com
+
+- Implement update-alternatives.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-pyflakes.spec ++++++
--- /var/tmp/diff_new_pack.ZynNXF/_old 2016-01-22 01:07:00.000000000 +0100
+++ /var/tmp/diff_new_pack.ZynNXF/_new 2016-01-22 01:07:00.000000000 +0100
@@ -34,6 +34,8 @@
Requires: python3
# the pkg_resources module is required at runtime
Requires: python3-setuptools
+Requires(post): update-alternatives
+Requires(postun): update-alternatives
BuildArch: noarch
%description
@@ -49,12 +51,32 @@
%install
python3 setup.py install --prefix=%{_prefix} --root=%{buildroot}
-mv %{buildroot}%{_bindir}/pyflakes %{buildroot}%{_bindir}/pyflakes-python%{py3_ver}
+
+# Prepare for update-alternatives usage
+mkdir -p %{buildroot}%{_sysconfdir}/alternatives
+mv %{buildroot}%{_bindir}/pyflakes %{buildroot}%{_bindir}/pyflakes-%{py3_ver}
+ln -s -f %{_sysconfdir}/alternatives/pyflakes %{buildroot}%{_bindir}/pyflakes
+# create a dummy target for /etc/alternatives/pyflakes
+touch %{buildroot}%{_sysconfdir}/alternatives/pyflakes
+# Leave existing executable name in place
+ln -s -f %{_bindir}/pyflakes-%{py3_ver} %{buildroot}%{_bindir}/pyflakes-python%{py3_ver}
+
+%post
+"%_sbindir/update-alternatives" \
+ --install %{_bindir}/pyflakes pyflakes %{_bindir}/pyflakes-%{py3_ver} 30
+
+%postun
+if [ $1 -eq 0 ] ; then
+ "%_sbindir/update-alternatives" --remove pyflakes %{_bindir}/pyflakes-%{py3_ver}
+fi
%files
%defattr(-,root,root,-)
%doc LICENSE NEWS.txt README.rst AUTHORS
+%{_bindir}/pyflakes
+%{_bindir}/pyflakes-%{py3_ver}
%{_bindir}/pyflakes-python%{py3_ver}
+%ghost %{_sysconfdir}/alternatives/pyflakes
%{python3_sitelib}/pyflakes/
%{python3_sitelib}/pyflakes-%{version}-py*.egg-info
1
0
Hello community,
here is the log from the commit of package python3-flake8 for openSUSE:Factory checked in at 2016-01-21 23:42:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-flake8 (Old)
and /work/SRC/openSUSE:Factory/.python3-flake8.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-flake8"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-flake8/python3-flake8.changes 2015-01-10 23:05:33.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-flake8.new/python3-flake8.changes 2016-01-22 01:06:56.000000000 +0100
@@ -1,0 +2,38 @@
+Wed Jan 13 09:23:20 UTC 2016 - toddrme2178(a)gmail.com
+
+- Update to 2.5.1
+ * Bug Properly look for .flake8 in current working directory
+ * Bug Monkey-patch pep8.stdin_get_value to cache the actual value
+ in stdin. This helps plugins relying on the function when run
+ with multiprocessing.
+- Update to 2.5.0
+ * Improvement Raise cap on PyFlakes for Python 3.5 support
+ * Improvement Avoid deprecation warnings when loading extensions
+ * Improvement Separate logic to enable “off-by-default” extensions
+ * Bug Properly parse options to setuptools Flake8 command
+ * Bug Fix exceptions when output on stdout is truncated before
+ Flake8 finishes writing the output
+ * Bug Fix error on OS X where Flake8 can no longer acquire or
+ create new semaphores
+- Update to 2.4.1
+ * Bug Do not raise a SystemError unless there were errors in the
+ setuptools command.
+ * Bug Do not verify dependencies of extensions loaded via
+ entry-points.
+ * Improvement Blacklist versions of pep8 we know are broken
+- Update to 2.4.0
+ * Bug Print filenames when using multiprocessing and -q option.
+ * Bug Put upper cap on dependencies. The caps for 2.4.0 are:
+ > pep8 < 1.6 (Related to GitLab#35)
+ > mccabe < 0.4
+ > pyflakes < 0.9
+ * See also GitLab#32
+ * Bug Files excluded in a config file were not being excluded
+ when flake8 was run from a git hook.
+ * Improvement Print warnings for users who are providing
+ mutually exclusive options to flake8.
+ * Feature Allow git hook configuration to live in .git/config.
+ See the updated VCS hooks docs for more details.
+- Implement update-alternatives
+
+-------------------------------------------------------------------
Old:
----
flake8-2.3.0.tar.gz
New:
----
flake8-2.5.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-flake8.spec ++++++
--- /var/tmp/diff_new_pack.APNnbi/_old 2016-01-22 01:06:57.000000000 +0100
+++ /var/tmp/diff_new_pack.APNnbi/_new 2016-01-22 01:06:57.000000000 +0100
@@ -17,7 +17,7 @@
Name: python3-flake8
-Version: 2.3.0
+Version: 2.5.1
Release: 0
Summary: Modular source code checker: pep8, pyflakes and co
License: MIT
@@ -26,15 +26,17 @@
Source: http://pypi.python.org/packages/source/f/flake8/flake8-%{version}.tar.gz
BuildRequires: python3-devel
BuildRequires: python3-distribute
-# Test requirements:
BuildRequires: python3-mccabe >= 0.2
-BuildRequires: python3-mock
-BuildRequires: python3-nose
BuildRequires: python3-pep8 >= 1.4.3
BuildRequires: python3-pyflakes >= 0.6.1
+# Test requirements:
+BuildRequires: python3-mock
+BuildRequires: python3-nose
Requires: python3-mccabe >= 0.2
Requires: python3-pep8 >= 1.4.3
Requires: python3-pyflakes >= 0.6.1
+Requires(post): update-alternatives
+Requires(postun): update-alternatives
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
@@ -55,8 +57,22 @@
%install
python3 setup.py install --prefix=%{_prefix} --root=%{buildroot}
-# Avoid file conflict with Python-2.x version:
-mv %{buildroot}%{_bindir}/flake8{,-%{py3_ver}}
+
+# Prepare for update-alternatives usage
+mkdir -p %{buildroot}%{_sysconfdir}/alternatives
+mv %{buildroot}%{_bindir}/flake8 %{buildroot}%{_bindir}/flake8-%{py3_ver}
+ln -s -f %{_sysconfdir}/alternatives/flake8 %{buildroot}%{_bindir}/flake8
+# create a dummy target for /etc/alternatives/flake8
+touch %{buildroot}%{_sysconfdir}/alternatives/flake8
+
+%post
+"%_sbindir/update-alternatives" \
+ --install %{_bindir}/flake8 flake8 %{_bindir}/flake8-%{py3_ver} 30
+
+%postun
+if [ $1 -eq 0 ] ; then
+ "%_sbindir/update-alternatives" --remove flake8 %{_bindir}/flake8-%{py3_ver}
+fi
%check
python3 setup.py test
@@ -64,7 +80,9 @@
%files
%defattr(-,root,root,-)
%doc LICENSE README.rst
+%{_bindir}/flake8
%{_bindir}/flake8-%{py3_ver}
+%ghost %{_sysconfdir}/alternatives/flake8
%{python3_sitelib}/*
%changelog
++++++ flake8-2.3.0.tar.gz -> flake8-2.5.1.tar.gz ++++++
++++ 1811 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package virtualbox for openSUSE:Factory checked in at 2016-01-21 23:41:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/virtualbox (Old)
and /work/SRC/openSUSE:Factory/.virtualbox.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "virtualbox"
Changes:
--------
--- /work/SRC/openSUSE:Factory/virtualbox/virtualbox.changes 2016-01-04 09:20:50.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.virtualbox.new/virtualbox.changes 2016-01-21 23:41:39.000000000 +0100
@@ -1,0 +2,27 @@
+Tue Jan 19 20:38:27 UTC 2016 - Larry.Finger(a)lwfinger.net
+
+- Version bump to 5.0.14 (released 2016-01-19i by Oracle)
+
+This is a maintenance release. The following items were fixed and/or added:
+
+ GUI: properly limit the number of VCPUs to the number of physical cores on Mac OS X (bug #15018)
+ Audio: fixed a bug which prevented loading a saved state of a saved guests with HDA emulation (5.0.12 regression; bug #14981)
+ Audio: don't crash if the backend is unable to initialize (bug #14960)
+ Audio: fixed audio capture on Mac OS X (bug #14386)
+ Storage: fixed a possible crash when attaching the same ISO image multiple times to the same VM (bug #14951)
+ BIOS: properly report if two floppy drives are attached
+ USB: fixed a problem with filters which would not capture the device under certain circumstances (5.0.10 regression; bug #15042)
+ ExtPack: black-list Extension Packs older than 4.3.30 due to incompatible changes not being properly handled in the past
+ Windows hosts: fixed a regression which caused robocopy to fail (bug #14958)
+ Linux hosts: properly create the /sbin/rcvboxdrv symbolic link (5.0.12 regression; bug #14989)
+ Mac OS X hosts: several fixes for USB on El Capitan (bug #14677)
+ Linux Additions: fixes for Linux 4.5 (bug #15032)
+
+
+
+-------------------------------------------------------------------
+Thu Jan 14 14:47:01 UTC 2016 - bwiedemann(a)suse.com
+
+- vboxadd script no more fails on remote_fs failure (bnc#908383)
+
+-------------------------------------------------------------------
Old:
----
VirtualBox-5.0.12-patched.tar.bz2
New:
----
VirtualBox-5.0.14-patched.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ virtualbox.spec ++++++
--- /var/tmp/diff_new_pack.QH35sZ/_old 2016-01-21 23:41:43.000000000 +0100
+++ /var/tmp/diff_new_pack.QH35sZ/_new 2016-01-21 23:41:43.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package virtualbox
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 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 @@
%define _vbox_instdir %{_libexecdir}/virtualbox
%define _udevrulesdir %{_libexecdir}/udev/rules.d
Name: virtualbox
-Version: 5.0.12
+Version: 5.0.14
Release: 0
Summary: VirtualBox is an Emulator
License: GPL-2.0+
++++++ UserManual.pdf ++++++
(binary differes)
++++++ VirtualBox-5.0.12-patched.tar.bz2 -> VirtualBox-5.0.14-patched.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/virtualbox/VirtualBox-5.0.12-patched.tar.bz2 /work/SRC/openSUSE:Factory/.virtualbox.new/VirtualBox-5.0.14-patched.tar.bz2 differ: char 11, line 1
++++++ vbox-vboxadd-init-script.diff ++++++
--- /var/tmp/diff_new_pack.QH35sZ/_old 2016-01-21 23:41:43.000000000 +0100
+++ /var/tmp/diff_new_pack.QH35sZ/_new 2016-01-21 23:41:43.000000000 +0100
@@ -1,16 +1,12 @@
-Index: src/VBox/Additions/linux/installer/vboxadd.sh
-===================================================================
---- src/VBox/Additions/linux/installer/vboxadd.sh.orig
-+++ src/VBox/Additions/linux/installer/vboxadd.sh
-@@ -21,11 +21,12 @@
- #
- ### BEGIN INIT INFO
+--- src/VBox/Additions/linux/installer/vboxadd.sh.orig 2015-12-18 17:17:03.000000000 +0100
++++ src/VBox/Additions/linux/installer/vboxadd.sh 2016-01-14 15:45:13.793994484 +0100
+@@ -23,9 +23,12 @@
# Provides: vboxadd
--# Required-Start:
--# Required-Stop:
+ # Required-Start:
+ # Required-Stop:
-# Default-Start: 2 3 4 5
-+# Required-Start: $remote_fs
-+# Required-Stop: $remote_fs
++# Should-Start: $remote_fs
++# Should-Stop: $remote_fs
+# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# Description: VirtualBox Linux Additions kernel modules
@@ -18,7 +14,7 @@
### END INIT INFO
PATH=$PATH:/bin:/sbin:/usr/sbin
-@@ -224,12 +225,6 @@ do_vboxguest_non_udev()
+@@ -224,12 +227,6 @@
fail "Cannot create device $dev with major $maj and minor $min"
}
fi
@@ -31,7 +27,7 @@
if [ ! -c $userdev ]; then
maj=10
-@@ -240,12 +235,6 @@ do_vboxguest_non_udev()
+@@ -240,12 +237,6 @@
rmmod vboxguest 2>/dev/null
fail "Cannot create device $userdev with major $maj and minor $min"
}
@@ -44,7 +40,7 @@
fi
fi
}
-@@ -260,6 +249,13 @@ start()
+@@ -260,6 +251,13 @@
fi
test -n "$INSTALL_DIR" -a -n "$INSTALL_VER" ||
fail "Configuration file $config not complete"
@@ -58,7 +54,7 @@
uname -r | grep -q -E '^2\.6|^3|^4' 2>/dev/null &&
ps -A -o comm | grep -q '/*udevd$' 2>/dev/null ||
no_udev=1
-@@ -470,33 +466,8 @@ extra_setup()
+@@ -470,33 +468,8 @@
# setup_script
setup()
{
1
0
Hello community,
here is the log from the commit of package linuxrc for openSUSE:Factory checked in at 2016-01-21 23:41:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/linuxrc (Old)
and /work/SRC/openSUSE:Factory/.linuxrc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "linuxrc"
Changes:
--------
--- /work/SRC/openSUSE:Factory/linuxrc/linuxrc.changes 2015-12-01 09:17:25.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.linuxrc.new/linuxrc.changes 2016-01-21 23:41:34.000000000 +0100
@@ -1,0 +2,12 @@
+Tue Jan 19 09:00:14 UTC 2016 - snwint(a)suse.com
+
+- squashfs.ko might depend on lz4_decompress (bsc#962493)
+- 5.0.65
+
+-------------------------------------------------------------------
+Fri Jan 15 02:30:13 UTC 2016 - snwint(a)suse.com
+
+- Removed the prompt for portname when configuring LCS interfaces (bsc#956603)
+- 5.0.64
+
+-------------------------------------------------------------------
Old:
----
linuxrc-5.0.63.tar.xz
New:
----
linuxrc-5.0.65.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ linuxrc.spec ++++++
--- /var/tmp/diff_new_pack.eMsJdf/_old 2016-01-21 23:41:35.000000000 +0100
+++ /var/tmp/diff_new_pack.eMsJdf/_new 2016-01-21 23:41:35.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package linuxrc
#
-# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -25,7 +25,7 @@
Summary: SUSE Installation Program
License: GPL-3.0+
Group: System/Boot
-Version: 5.0.63
+Version: 5.0.65
Release: 0
Source: %{name}-%{version}.tar.xz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ linuxrc-5.0.63.tar.xz -> linuxrc-5.0.65.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-5.0.63/VERSION new/linuxrc-5.0.65/VERSION
--- old/linuxrc-5.0.63/VERSION 2015-11-23 16:42:59.000000000 +0100
+++ new/linuxrc-5.0.65/VERSION 2016-01-19 09:57:06.000000000 +0100
@@ -1 +1 @@
-5.0.63
+5.0.65
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-5.0.63/changelog new/linuxrc-5.0.65/changelog
--- old/linuxrc-5.0.63/changelog 2015-11-23 16:42:59.000000000 +0100
+++ new/linuxrc-5.0.65/changelog 2016-01-19 09:57:06.000000000 +0100
@@ -1,3 +1,9 @@
+2016-01-19: 5.0.65
+ - squashfs.ko might depend on lz4_decompress (bsc #962493)
+
+2016-01-14: 5.0.64
+ - Removed the prompt for portname when configuring LCS interfaces (bsc #956603)
+
2015-11-23: 5.0.63
- adjust buffer size to sane value
- document new logging behavior
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-5.0.63/linuxrc.c new/linuxrc-5.0.65/linuxrc.c
--- old/linuxrc-5.0.63/linuxrc.c 2015-11-23 16:42:59.000000000 +0100
+++ new/linuxrc-5.0.65/linuxrc.c 2016-01-19 09:57:06.000000000 +0100
@@ -1559,6 +1559,9 @@
if(!insmod_done) {
insmod_done = 1;
lxrc_run("/sbin/insmod /modules/loop.ko max_loop=64");
+ if(util_check_exist("/modules/lz4_decompress.ko")) {
+ lxrc_run("/sbin/insmod /modules/lz4_decompress.ko");
+ }
}
strprintf(&mp, "/parts/mp_%04u", config.mountpoint.initrd_parts++);
mkdir(mp, 0755);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-5.0.63/net.c new/linuxrc-5.0.65/net.c
--- old/linuxrc-5.0.63/net.c 2015-11-23 16:42:59.000000000 +0100
+++ new/linuxrc-5.0.65/net.c 2016-01-19 09:57:06.000000000 +0100
@@ -1552,9 +1552,6 @@
if((rc=net_s390_getrwchans_ex(hd))) return rc;
- IFNOTAUTO(config.hwp.portname)
- if((rc=dia_input2_chopspace("Enter the relative port number", &config.hwp.portname,9,0))) return rc;
-
}
break;
1
0
Hello community,
here is the log from the commit of package iproute2 for openSUSE:Factory checked in at 2016-01-21 23:41:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/iproute2 (Old)
and /work/SRC/openSUSE:Factory/.iproute2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "iproute2"
Changes:
--------
--- /work/SRC/openSUSE:Factory/iproute2/iproute2-doc.changes 2015-09-24 07:15:58.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.iproute2.new/iproute2-doc.changes 2016-01-21 23:41:24.000000000 +0100
@@ -1,0 +2,34 @@
+Thu Jan 14 09:57:42 UTC 2016 - mkubecek(a)suse.cz
+
+- Update to new upstream release 4.4
+* tunnel code rework
+* add VRF support
+* add lightweight tunnel support
+* ila: Add support for ILA lwtunnels
+* f_bpf: allow for optional classid and add flags
+* m_bpf: don't require default opcode on ebpf actions
+* route: Add RTM_F_LOOKUP_TABLE flag and show table id
+* neigh: Add support for filtering dumps by master device
+* route: print addrgenmode stable_secret and fallback otherwise
+* tc: flower no need to specify the ethertype
+* geneve: add support for IPv6 link partners
+* neigh: device is optional for proxy entries
+* tunnel: determine tunnel address family from the tunnel type
+* addr: ignore EADDRNOTAVAIL errors during address flush operation
+* vxlan, gre: add support for collect metadata flag
+* route: ignore RTAX_HOPLIMIT of value -1
+* route: fix printing of locked entries
+* vxlan: Add support for remote checksum offload
+* documentation improvements
+- man-fix-documentation-references-in-manual-pages.patch:
+ replace Debian specific paths and package names with SUSE ones
+
+-------------------------------------------------------------------
+Wed Nov 11 15:21:05 UTC 2015 - jengelh(a)inai.de
+
+- Update to new upstream release 4.3
+* route: filter routes by family if so specified
+* ip: add `ip rule save/restore`
+* Manpage additions for tc filters
+
+-------------------------------------------------------------------
--- /work/SRC/openSUSE:Factory/iproute2/iproute2.changes 2015-11-17 14:19:57.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.iproute2.new/iproute2.changes 2016-01-21 23:41:24.000000000 +0100
@@ -1,0 +2,26 @@
+Thu Jan 14 09:57:42 UTC 2016 - mkubecek(a)suse.cz
+
+- Update to new upstream release 4.4
+* tunnel code rework
+* add VRF support
+* add lightweight tunnel support
+* ila: Add support for ILA lwtunnels
+* f_bpf: allow for optional classid and add flags
+* m_bpf: don't require default opcode on ebpf actions
+* route: Add RTM_F_LOOKUP_TABLE flag and show table id
+* neigh: Add support for filtering dumps by master device
+* route: print addrgenmode stable_secret and fallback otherwise
+* tc: flower no need to specify the ethertype
+* geneve: add support for IPv6 link partners
+* neigh: device is optional for proxy entries
+* tunnel: determine tunnel address family from the tunnel type
+* addr: ignore EADDRNOTAVAIL errors during address flush operation
+* vxlan, gre: add support for collect metadata flag
+* route: ignore RTAX_HOPLIMIT of value -1
+* route: fix printing of locked entries
+* vxlan: Add support for remote checksum offload
+* documentation improvements
+- man-fix-documentation-references-in-manual-pages.patch:
+ replace Debian specific paths and package names with SUSE ones
+
+-------------------------------------------------------------------
Old:
----
iproute2-4.3.0.tar.sign
iproute2-4.3.0.tar.xz
New:
----
iproute2-4.4.0.tar.sign
iproute2-4.4.0.tar.xz
man-fix-documentation-references-in-manual-pages.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ iproute2-doc.spec ++++++
--- /var/tmp/diff_new_pack.udS4uT/_old 2016-01-21 23:41:26.000000000 +0100
+++ /var/tmp/diff_new_pack.udS4uT/_new 2016-01-21 23:41:26.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package iproute2-doc
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,9 +17,9 @@
Name: iproute2-doc
-Version: 4.3
+Version: 4.4
Release: 0
-%define rversion 4.3.0
+%define rversion 4.4.0
Summary: Documentation to iproute2
License: GPL-2.0+
Group: Documentation/Other
++++++ iproute2.spec ++++++
--- /var/tmp/diff_new_pack.udS4uT/_old 2016-01-21 23:41:26.000000000 +0100
+++ /var/tmp/diff_new_pack.udS4uT/_new 2016-01-21 23:41:26.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package iproute2
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,9 +17,9 @@
Name: iproute2
-Version: 4.3
+Version: 4.4
Release: 0
-%define rversion 4.3.0
+%define rversion 4.4.0
Summary: Linux network configuration utilities
License: GPL-2.0
Group: Productivity/Networking/Routing
@@ -37,6 +37,7 @@
Patch3: revert-pdf-creation.diff
Patch4: revert-bison-fix.diff
Patch5: kernel_xfrm6_raw.patch
+Patch6: man-fix-documentation-references-in-manual-pages.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: bison
BuildRequires: db-devel
@@ -78,7 +79,7 @@
%if 0%{?sles_version} == 11
%patch -P 4 -p1
%endif
-%patch -P 5 -p1
+%patch -P 5 -P 6 -p1
find . -name *.orig -delete
%build
++++++ iproute2-4.3.0.tar.xz -> iproute2-4.4.0.tar.xz ++++++
++++ 6182 lines of diff (skipped)
++++++ man-fix-documentation-references-in-manual-pages.patch ++++++
From: Michal Kubecek <mkubecek(a)suse.cz>
Date: Mon, 19 Oct 2015 14:11:00 +0200
Subject: man: fix documentation references in manual pages
Patch-mainline: Never, SUSE specific
References: bsc#949063
Some manual pages refer to Debian specific paths and package names.
Replace them by SUSE specific ones.
---
man/man8/lnstat.8 | 2 +-
man/man8/ss.8 | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/man/man8/lnstat.8 b/man/man8/lnstat.8
index acd5f4a20522..738acd545f6a 100644
--- a/man/man8/lnstat.8
+++ b/man/man8/lnstat.8
@@ -255,7 +255,7 @@ route cache removal, therefore always zero.
.SH SEE ALSO
.BR ip (8),
-and /usr/share/doc/iproute-doc/README.lnstat (package iproute-doc on Debian)
+and /usr/share/doc/packages/iproute2/README.lnstat
.br
.SH AUTHOR
lnstat was written by Harald Welte <laforge(a)gnumonks.org>.
diff --git a/man/man8/ss.8 b/man/man8/ss.8
index f4d5264f3036..2be5295d58f3 100644
--- a/man/man8/ss.8
+++ b/man/man8/ss.8
@@ -131,7 +131,7 @@ Read filter information from FILE.
Each line of FILE is interpreted like single command line option. If FILE is - stdin is used.
.TP
.B FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
-Please take a look at the official documentation (Debian package iproute-doc) for details regarding filters.
+Please take a look at the official documentation (package iproute2-doc) for details regarding filters.
.SH STATE-FILTER
@@ -186,7 +186,7 @@ Find all local processes connected to X server.
List all the tcp sockets in state FIN-WAIT-1 for our apache to network 193.233.7/24 and look at their timers.
.SH SEE ALSO
.BR ip (8),
-.BR /usr/share/doc/iproute-doc/ss.html " (package iproute�doc)",
+.BR /usr/share/doc/packages/iproute2/ss.* " (package iproute2-doc)"
.br
.BR RFC " 793 "
- https://tools.ietf.org/rfc/rfc793.txt (TCP states)
--
2.7.0
1
0
Hello community,
here is the log from the commit of package libcanberra for openSUSE:Factory checked in at 2016-01-21 23:41:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libcanberra (Old)
and /work/SRC/openSUSE:Factory/.libcanberra.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libcanberra"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libcanberra/libcanberra.changes 2016-01-05 09:41:00.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libcanberra.new/libcanberra.changes 2016-01-21 23:41:19.000000000 +0100
@@ -1,0 +2,8 @@
+Thu Jan 14 12:11:44 UTC 2016 - dimstar(a)opensuse.org
+
+- Do not require sound-theme-freedesktop by libcanberra0: if this
+ is wanted on a default install, it is up to the DE pattern to
+ recommend/require this - it is not needed for the libraries
+ proper functioning.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libcanberra.spec ++++++
--- /var/tmp/diff_new_pack.fCqrgM/_old 2016-01-21 23:41:20.000000000 +0100
+++ /var/tmp/diff_new_pack.fCqrgM/_new 2016-01-21 23:41:20.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libcanberra
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 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
@@ -58,7 +58,6 @@
Summary: Portable sound event library
Group: System/Libraries
Requires: libpulse0 >= 0.9.11
-Requires: sound-theme-freedesktop
%description -n libcanberra0
libcanberra is an implementation of the XDG Sound Theme and Name
1
0
Hello community,
here is the log from the commit of package libproxy for openSUSE:Factory checked in at 2016-01-21 23:41:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libproxy (Old)
and /work/SRC/openSUSE:Factory/.libproxy.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libproxy"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libproxy/libproxy-plugins.changes 2015-07-16 17:16:46.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libproxy.new/libproxy-plugins.changes 2016-01-21 23:41:14.000000000 +0100
@@ -1,0 +2,26 @@
+Tue Jan 12 16:46:37 UTC 2016 - dimstar(a)opensuse.org
+
+- Update to version 0.4.12:
+ + Move development to github.com/libproxy/libproxy.
+ + Fix fd leak in get_pac (Bug #185).
+ + Detect running MATE session (Bug #186, Part1).
+ + Fix linking of perl bindings to pthread (Bug #182).
+ + Correctly detect spidermonky (mozjs185) (Bug #188).
+ + Stop pxgsettings from segfaulting on exit (Bug #192).
+ + Fix test #10 (Bug #189).
+ + Fix build on Mac OS X (Bug #183).
+ + Add a generic KDE Config module (fix crashes of Qt5 based
+ apps) (issue#4).
+- Drop upstream fixed patches:
+ + libproxy-pxgsettings-crash.patch
+ + libproxy-no-libperl.patch
+ + libproxy-pxgsettings-signals.patch
+- Rename libproxy1-config-kde4 subpackage to libproxy-config-kde,
+ following upstreams introduction of the generic config loader.
+- Require libKF5ConfigCore5 from libproxy1-config-kde (we don't
+ really need the library, but kreadconfig5 in this package).
+- Replace libkde4-devel and libqt4-devel BuildRequires with
+ libKF5ConfigCore5: the new KDE config parser interacts directly
+ with kreadconfig5 and does not link to Qt.
+
+-------------------------------------------------------------------
libproxy.changes: same change
Old:
----
libproxy-0.4.11.tar.gz
libproxy-no-libperl.patch
libproxy-pxgsettings-crash.patch
libproxy-pxgsettings-signals.patch
New:
----
0.4.12.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libproxy-plugins.spec ++++++
--- /var/tmp/diff_new_pack.t96Dq4/_old 2016-01-21 23:41:16.000000000 +0100
+++ /var/tmp/diff_new_pack.t96Dq4/_new 2016-01-21 23:41:16.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libproxy-plugins
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 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
@@ -31,7 +31,7 @@
Summary: Libproxy provides consistent proxy configuration to applications
License: GPL-2.0+ and LGPL-2.1+
Group: System/Libraries
-Version: 0.4.11
+Version: 0.4.12
Release: 0
# FIXME: verify if test suite works - 0.4.10 has weird behavior in some cases, where the internal server times out.
%if 0%{?build_snapshot}
@@ -39,16 +39,10 @@
%else
%define _sourcename %{_name}-%{version}
%endif
-Source: http://libproxy.googlecode.com/files/%{_name}-%{version}.tar.gz
+Source: https://github.com/libproxy/%{_name}/archive/%{version}.tar.gz
# Script used for automatic snapshot updates
Source98: update-from-svn.sh
Source99: baselibs.conf
-# PATCH-FIX-UPSTREAM libproxy-pxgsettings-crash.patch bnc#836576 dimstar(a)opensuse.org -- Fix crash when pxgsettings is closing, taken from svn.
-Patch0: libproxy-pxgsettings-crash.patch
-# PATCH-FIX-UPSTREAM libproxy-no-libperl.patch mls(a)suse.de -- Do not link against libperl. Submitted upstream.
-Patch1: libproxy-no-libperl.patch
-# PATCH-FIX-UPSTREAM libproxy-pxgsettings-signals.patch dimstar(a)opensuse.org -- Due to changes in glib, signals are not emited on settings that are not read AFTER connecting the signal
-Patch2: libproxy-pxgsettings-signals.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: cmake
BuildRequires: gcc-c++
@@ -74,8 +68,7 @@
BuildRequires: pkgconfig(webkitgtk-3.0)
%endif
BuildRequires: NetworkManager-devel
-BuildRequires: libkde4-devel
-BuildRequires: libqt4-devel
+BuildRequires: libKF5ConfigCore5
%if %{build_mozjs}
BuildRequires: pkgconfig(mozjs185)
%endif
@@ -188,10 +181,12 @@
A module to extend libproxy with capabilities to query GNOME about
proxy settings.
-%package -n libproxy1-config-kde4
+%package -n libproxy1-config-kde
Summary: Libproxy module for KDE configuration
Group: System/Libraries
Requires: libproxy1 = %{version}
+# We don't really need the library, but this package brings kreadconfig5
+Requires: libKF5ConfigCore5
%if 0%{?suse_version}
Recommends: libproxy1-pacrunner = %{version}
Supplements: packageand(libproxy1:libkde4)
@@ -200,8 +195,10 @@
%endif
Provides: libproxy-kde = %{version}
Obsoletes: libproxy-kde < %{version}
+# A generic KDE config loader was introduced in 0.4.12
+Obsoletes: libproxy1-config-kde4 < 0.4.12
-%description -n libproxy1-config-kde4
+%description -n libproxy1-config-kde
A module to extend libproxy with capabilities to query KDE4 about proxy
settings.
@@ -314,9 +311,6 @@
%prep
%setup -q -n %{_sourcename}
-%patch0
-%patch1
-%patch2 -p1
mkdir build
%build
@@ -441,9 +435,9 @@
%if ! 0%{?windows}
-%files -n libproxy1-config-kde4
+%files -n libproxy1-config-kde
%defattr(-, root, root)
-%{_libdir}/libproxy-%{version}/modules/config_kde4.so
+%{_libdir}/libproxy-%{version}/modules/config_kde.so
%if 0%{?favor_gtk2}
++++++ libproxy.spec ++++++
--- /var/tmp/diff_new_pack.t96Dq4/_old 2016-01-21 23:41:16.000000000 +0100
+++ /var/tmp/diff_new_pack.t96Dq4/_new 2016-01-21 23:41:16.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libproxy
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 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
@@ -31,7 +31,7 @@
Summary: Libproxy provides consistent proxy configuration to applications
License: GPL-2.0+ and LGPL-2.1+
Group: System/Libraries
-Version: 0.4.11
+Version: 0.4.12
Release: 0
# FIXME: verify if test suite works - 0.4.10 has weird behavior in some cases, where the internal server times out.
%if 0%{?build_snapshot}
@@ -39,16 +39,10 @@
%else
%define _sourcename %{_name}-%{version}
%endif
-Source: http://libproxy.googlecode.com/files/%{_name}-%{version}.tar.gz
+Source: https://github.com/libproxy/%{_name}/archive/%{version}.tar.gz
# Script used for automatic snapshot updates
Source98: update-from-svn.sh
Source99: baselibs.conf
-# PATCH-FIX-UPSTREAM libproxy-pxgsettings-crash.patch bnc#836576 dimstar(a)opensuse.org -- Fix crash when pxgsettings is closing, taken from svn.
-Patch0: libproxy-pxgsettings-crash.patch
-# PATCH-FIX-UPSTREAM libproxy-no-libperl.patch mls(a)suse.de -- Do not link against libperl. Submitted upstream.
-Patch1: libproxy-no-libperl.patch
-# PATCH-FIX-UPSTREAM libproxy-pxgsettings-signals.patch dimstar(a)opensuse.org -- Due to changes in glib, signals are not emited on settings that are not read AFTER connecting the signal
-Patch2: libproxy-pxgsettings-signals.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: cmake
BuildRequires: gcc-c++
@@ -74,8 +68,7 @@
BuildRequires: pkgconfig(webkitgtk-3.0)
%endif
BuildRequires: NetworkManager-devel
-BuildRequires: libkde4-devel
-BuildRequires: libqt4-devel
+BuildRequires: libKF5ConfigCore5
%if %{build_mozjs}
BuildRequires: pkgconfig(mozjs185)
%endif
@@ -188,10 +181,12 @@
A module to extend libproxy with capabilities to query GNOME about
proxy settings.
-%package -n libproxy1-config-kde4
+%package -n libproxy1-config-kde
Summary: Libproxy module for KDE configuration
Group: System/Libraries
Requires: libproxy1 = %{version}
+# We don't really need the library, but this package brings kreadconfig5
+Requires: libKF5ConfigCore5
%if 0%{?suse_version}
Recommends: libproxy1-pacrunner = %{version}
Supplements: packageand(libproxy1:libkde4)
@@ -200,8 +195,10 @@
%endif
Provides: libproxy-kde = %{version}
Obsoletes: libproxy-kde < %{version}
+# A generic KDE config loader was introduced in 0.4.12
+Obsoletes: libproxy1-config-kde4 < 0.4.12
-%description -n libproxy1-config-kde4
+%description -n libproxy1-config-kde
A module to extend libproxy with capabilities to query KDE4 about proxy
settings.
@@ -314,9 +311,6 @@
%prep
%setup -q -n %{_sourcename}
-%patch0
-%patch1
-%patch2 -p1
mkdir build
%build
@@ -441,9 +435,9 @@
%if ! 0%{?windows}
-%files -n libproxy1-config-kde4
+%files -n libproxy1-config-kde
%defattr(-, root, root)
-%{_libdir}/libproxy-%{version}/modules/config_kde4.so
+%{_libdir}/libproxy-%{version}/modules/config_kde.so
%if 0%{?favor_gtk2}
++++++ libproxy-0.4.11.tar.gz -> 0.4.12.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/NEWS new/libproxy-0.4.12/NEWS
--- old/libproxy-0.4.11/NEWS 2012-11-30 23:31:17.000000000 +0100
+++ new/libproxy-0.4.12/NEWS 2016-01-12 17:41:07.000000000 +0100
@@ -1,3 +1,16 @@
+New in version 0.4.12
+==============================
+* Move development to github.com/libproxy/libproxy
+* Fix fd leak in get_pac (Bug #185)
+* Detect running MATE session (Bug #186, Part1).
+* Fix linking of perl bindings to pthread (Bug #182)
+* Correctly detect spidermonky (mozjs185) (Bug #188)
+* Stop pxgsettings from segfaulting on exit (Bug #192)
+* Fix test #10 (Bug #189)
+* Fix build on Mac OS X (Bug #183)
+* Add a generic KDE Config module (fix crashes of Qt5 based
+ apps) (issue#4)
+
New in version 0.4.11
==============================
* Build fixes with cmake 2.8.10+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/bindings/perl/src/CMakeLists.txt new/libproxy-0.4.12/bindings/perl/src/CMakeLists.txt
--- old/libproxy-0.4.11/bindings/perl/src/CMakeLists.txt 2010-11-24 21:50:12.000000000 +0100
+++ new/libproxy-0.4.12/bindings/perl/src/CMakeLists.txt 2016-01-12 17:41:07.000000000 +0100
@@ -12,7 +12,7 @@
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/perl/blib/arch/auto/Net)
add_library(PLlibproxy SHARED ${Libproxy_LIB_SRCS})
-target_link_libraries(PLlibproxy ${PERL_LIBRARY} libproxy)
+target_link_libraries(PLlibproxy libproxy pthread)
set_target_properties(PLlibproxy PROPERTIES OUTPUT_NAME "Libproxy")
set_target_properties(PLlibproxy PROPERTIES PREFIX "")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/cmake/cpack.cmk new/libproxy-0.4.12/cmake/cpack.cmk
--- old/libproxy-0.4.11/cmake/cpack.cmk 2010-08-22 16:02:23.000000000 +0200
+++ new/libproxy-0.4.12/cmake/cpack.cmk 2016-01-12 17:41:07.000000000 +0100
@@ -1,6 +1,6 @@
set(CPACK_IGNORE_FILES "CMakeCache.txt;install_manifest.txt;/Testing/;/Makefile$;\\\\.tar.gz$;\\\\.so[.0-9]*$;/build/;/_CPack_Packages/;/CMakeFiles/;/CVS/;/\\\\.svn/;/\\\\.git/;\\\\.swp$;\\\\.#;/#")
set(CPACK_SOURCE_IGNORE_FILES ${CPACK_IGNORE_FILES})
-set(CPACK_SOURCE_GENERATOR TGZ ZIP)
+set(CPACK_SOURCE_GENERATOR TXZ ZIP)
set(CPACK_SOURCE_TOPLEVEL_TAG "")
function(set_project_version MAJOR MINOR PATCH)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/CMakeLists.txt new/libproxy-0.4.12/libproxy/CMakeLists.txt
--- old/libproxy-0.4.11/libproxy/CMakeLists.txt 2012-11-30 23:31:35.000000000 +0100
+++ new/libproxy-0.4.12/libproxy/CMakeLists.txt 2016-01-12 17:41:07.000000000 +0100
@@ -1,6 +1,6 @@
### Project info
project(libproxy)
-set_project_version(0 4 11)
+set_project_version(0 4 12)
### Add a global compilation stuff
if (WIN32)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/Libproxy-1.0.gir new/libproxy-0.4.12/libproxy/Libproxy-1.0.gir
--- old/libproxy-0.4.11/libproxy/Libproxy-1.0.gir 2011-08-11 18:12:37.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/Libproxy-1.0.gir 1970-01-01 01:00:00.000000000 +0100
@@ -1,84 +0,0 @@
-<?xml version="1.0"?>
-<!-- This file was automatically generated from C sources - DO NOT EDIT!
-To affect the contents of this file, edit the original C definitions,
-and/or use gtk-doc annotations. -->
-<repository version="1.2"
- xmlns="http://www.gtk.org/introspection/core/1.0"
- xmlns:c="http://www.gtk.org/introspection/c/1.0"
- xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
- <namespace name="Libproxy"
- version="1.0"
- shared-library="libproxy.so.1"
- c:identifier-prefixes="px"
- c:symbol-prefixes="px">
- <record name="ProxyFactory" c:type="pxProxyFactory" disguised="1">
- <method name="free" c:identifier="px_proxy_factory_free">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- </method>
- <method name="get_proxies" c:identifier="px_proxy_factory_get_proxies">
- <doc xml:whitespace="preserve">Get which proxies to use for the specified URL.
-A NULL-terminated array of proxy strings is returned.
-If the first proxy fails, the second should be tried, etc...
-Don't forget to free the strings/array when you are done.
-If an unrecoverable error occurs, this function returns NULL.
-in a separate thread (is thread-safe). In most cases, the time
-required to complete this function call is simply the time required
-to read the configuration (i.e. from gconf, kconfig, etc).
-In the case of PAC, if no valid PAC is found in the cache (i.e.
-configuration has changed, cache is invalid, etc), the PAC file is
-downloaded and inserted into the cache. This is the most expensive
-operation as the PAC is retrieved over the network. Once a PAC exists
-in the cache, it is merely a javascript invocation to evaluate the PAC.
-One should note that DNS can be called from within a PAC during
-javascript invocation.
-In the case of WPAD, WPAD is used to automatically locate a PAC on the
-network. Currently, we only use DNS for this, but other methods may
-be implemented in the future. Once the PAC is located, normal PAC
-performance (described above) applies.
-The format of the returned proxy strings are as follows:
-- http://[username:password@]proxy:port
-- socks://[username:password@]proxy:port
-- socks5://[username:password@]proxy:port
-- socks4://[username:password@]proxy:port
-- <procotol>://[username:password@]proxy:port
-- direct://
-Please note that the username and password in the above URLs are optional
-and should be use to authenticate the connection if present.
-For SOCKS proxies, when the protocol version is specified (socks4:// or
-sock5://), it is expected that only this version is used. When only
-socks:// is set, the client MUST try SOCKS version 5 protocol and, on
-connection failure, fallback to SOCKS version 4.
-Other proxying protocols may exist. It is expected that the returned
-configuration scheme shall match the network service name of the
-proxy protocol or the service name of the protocol being proxied if the
-previous does not exist. As an example, on Mac OS X you can configure a
-RTSP streaming proxy. The expected returned configuration would be:
-- rtsp://[username:password@]proxy:port</doc>
- <return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">A NULL-terminated array of proxy strings to use</doc>
- <array c:type="char**">
- <type name="utf8"/>
- </array>
- </return-value>
- <parameters>
- <parameter name="url" transfer-ownership="none">
- <doc xml:whitespace="preserve">The URL we are trying to reach</doc>
- <type name="utf8" c:type="char*"/>
- </parameter>
- </parameters>
- </method>
- </record>
- <function name="proxy_factory_new" c:identifier="px_proxy_factory_new">
- <doc xml:whitespace="preserve">Creates a new pxProxyFactory instance. This instance should be kept
-around as long as possible as it contains cached data to increase
-performance. Memory usage should be minimal (cache is small) and the
-cache lifespan is handled automatically.</doc>
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">A new pxProxyFactory instance or NULL on error</doc>
- <type name="ProxyFactory" c:type="pxProxyFactory*"/>
- </return-value>
- </function>
- </namespace>
-</repository>
Files old/libproxy-0.4.11/libproxy/Libproxy-1.0.typelib and new/libproxy-0.4.12/libproxy/Libproxy-1.0.typelib differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/cmake/libproxy.cmk new/libproxy-0.4.12/libproxy/cmake/libproxy.cmk
--- old/libproxy-0.4.11/libproxy/cmake/libproxy.cmk 2012-04-01 14:41:55.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/cmake/libproxy.cmk 2016-01-12 17:41:07.000000000 +0100
@@ -19,6 +19,7 @@
PROPERTY COMPILE_DEFINITIONS MODULEDIR="${MODULEDIR}";BUILTIN_MODULES=${BUILTIN_MODULES})
# When changing the SOVERSION here remember to also bump the 'favorite proxy .so' in python bindings.
set_target_properties(libproxy PROPERTIES PREFIX "" VERSION 1.0.0 SOVERSION 1)
+set_target_properties(libproxy PROPERTIES INTERFACE_LINK_LIBRARIES "")
set_target_properties(libproxy PROPERTIES LINK_INTERFACE_LIBRARIES "")
install(TARGETS libproxy DESTINATION ${LIB_INSTALL_DIR})
install(FILES proxy.h DESTINATION ${INCLUDE_INSTALL_DIR})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/cmake/modules/config_kde.cmk new/libproxy-0.4.12/libproxy/cmake/modules/config_kde.cmk
--- old/libproxy-0.4.11/libproxy/cmake/modules/config_kde.cmk 1970-01-01 01:00:00.000000000 +0100
+++ new/libproxy-0.4.12/libproxy/cmake/modules/config_kde.cmk 2016-01-12 17:41:07.000000000 +0100
@@ -0,0 +1,6 @@
+find_program(KDE4_CONF kreadconfig)
+find_program(KF5_CONF kreadconfig5)
+
+if (KDE4_CONF OR KF5_CONF)
+ set(KDE_FOUND 1)
+endif()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/cmake/modules/config_kde4.cmk new/libproxy-0.4.12/libproxy/cmake/modules/config_kde4.cmk
--- old/libproxy-0.4.11/libproxy/cmake/modules/config_kde4.cmk 2010-07-29 14:14:59.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/cmake/modules/config_kde4.cmk 1970-01-01 01:00:00.000000000 +0100
@@ -1,19 +0,0 @@
-if (NOT WIN32 AND NOT APPLE)
- option(WITH_KDE4 "Search for KDE4 package" ON)
- if (WITH_KDE4)
- find_package(KDE4)
- find_package(Qt4)
- if(KDE4_FOUND AND QT4_FOUND)
- include(KDE4Defaults)
- set(KDE4_FOUND 1)
- set(KDE4_LIBRARIES ${KDE4_KDECORE_LIBS} ${QT_LIBRARIES})
- include_directories(${KDE4_INCLUDES} ${QT_INCLUDES})
- link_directories(${KDE_LIB_DIR})
- string(REGEX REPLACE " *-fno-exceptions" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
- else()
- set(KDE4_FOUND 0)
- endif()
- else()
- set(KDE4_FOUND 0)
- endif()
-endif()
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/cmake/modules/pacrunner_mozjs.cmk new/libproxy-0.4.12/libproxy/cmake/modules/pacrunner_mozjs.cmk
--- old/libproxy-0.4.11/libproxy/cmake/modules/pacrunner_mozjs.cmk 2011-06-20 12:31:41.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/cmake/modules/pacrunner_mozjs.cmk 2016-01-12 17:41:07.000000000 +0100
@@ -9,7 +9,7 @@
elseif(NOT APPLE)
option(WITH_MOZJS "Search for MOZJS package" ON)
if (WITH_MOZJS)
- pkg_search_module(MOZJS mozjs185>=1.8.5)
+ pkg_search_module(MOZJS mozjs185)
if(MOZJS_FOUND)
include_directories(${MOZJS_INCLUDE_DIRS})
link_directories(${MOZJS_LIBRARY_DIRS})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/cmake/modules.cmk new/libproxy-0.4.12/libproxy/cmake/modules.cmk
--- old/libproxy-0.4.11/libproxy/cmake/modules.cmk 2012-03-09 18:52:57.000000000 +0100
+++ new/libproxy-0.4.12/libproxy/cmake/modules.cmk 2016-01-12 17:41:07.000000000 +0100
@@ -11,7 +11,7 @@
include(cmake/modules/config_envvar.cmk)
include(cmake/modules/config_sysconfig.cmk)
include(cmake/modules/config_gnome.cmk)
-include(cmake/modules/config_kde4.cmk)
+include(cmake/modules/config_kde.cmk)
include(cmake/modules/config_macosx.cmk)
include(cmake/modules/network_networkmanager.cmk)
include(cmake/modules/pacrunner_mozjs.cmk)
@@ -32,7 +32,7 @@
px_module(config_sysconfig "${SYSCONFIG_FOUND}" 1)
px_module(config_gnome "${GNOME2_FOUND}" 0)
px_module(config_gnome3 "${GNOME3_FOUND}" 0)
-px_module(config_kde4 "${KDE4_FOUND}" 0 ${KDE4_LIBRARIES})
+px_module(config_kde "${KDE_FOUND}" 0)
px_module(config_macosx "${SC_FOUND}" 1 ${SC_LIBRARIES} ${CF_LIBRARIES})
px_module(config_w32reg "${WIN32}" 1)
px_module(ignore_domain 1 1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/libproxy-config.cmake.in new/libproxy-0.4.12/libproxy/libproxy-config.cmake.in
--- old/libproxy-0.4.11/libproxy/libproxy-config.cmake.in 2011-06-11 23:58:39.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/libproxy-config.cmake.in 1970-01-01 01:00:00.000000000 +0100
@@ -1,26 +0,0 @@
-# - Try to find libproxy
-# Once done this will define
-#
-# LIBPROXY_FOUND - system has libproxy
-# LIBPROXY_INCLUDE_DIR - the libproxy include directory
-# LIBPROXY_LIBRARIES - libproxy library
-#
-# Copyright (c) 2010, Dominique Leuenberger
-#
-# Redistribution and use is allowed according the license terms
-# of libproxy, which this file is integrated part of.
-
-# Find proxy.h and the corresponding library (libproxy.so)
-FIND_PATH(LIBPROXY_INCLUDE_DIR proxy.h )
-FIND_LIBRARY(LIBPROXY_LIBRARIES NAMES proxy )
-
-# Set library version
-SET(LIBPROXY_VERSION @PROJECT_VERSION@)
-SET(LIBPROXY_VERSION_MAJOR @PROJECT_VERSION_MAJOR@)
-SET(LIBPROXY_VERSION_MINOR @PROJECT_VERSION_MINOR@)
-SET(LIBPROXY_VERSION_PATCH @PROJECT_VERSION_PATCH@)
-
-# Give output, should this be wished (this handles also QUIET and REQUIRED
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(libproxy DEFAULT_MSG LIBPROXY_LIBRARIES LIBPROXY_INCLUDE_DIR)
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/config_gnome3.cpp new/libproxy-0.4.12/libproxy/modules/config_gnome3.cpp
--- old/libproxy-0.4.11/libproxy/modules/config_gnome3.cpp 2012-07-05 18:50:06.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/config_gnome3.cpp 2016-01-12 17:41:07.000000000 +0100
@@ -288,7 +288,9 @@
static bool gnome_config_extension_test() {
return (getenv("GNOME_DESKTOP_SESSION_ID")
|| (getenv("DESKTOP_SESSION")
- && string(getenv("DESKTOP_SESSION")) == "gnome"));
+ && string(getenv("DESKTOP_SESSION")) == "gnome")
+ || (getenv("DESKTOP_SESSION")
+ && string(getenv("DESKTOP_SESSION")) == "mate"));
}
MM_MODULE_INIT(gnome_config_extension,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/config_kde.cpp new/libproxy-0.4.12/libproxy/modules/config_kde.cpp
--- old/libproxy-0.4.11/libproxy/modules/config_kde.cpp 1970-01-01 01:00:00.000000000 +0100
+++ new/libproxy-0.4.12/libproxy/modules/config_kde.cpp 2016-01-12 17:41:07.000000000 +0100
@@ -0,0 +1,147 @@
+/*******************************************************************************
+ * libproxy - A library for proxy configuration
+ * Copyright (C) 2006 Nathaniel McCallum <nathaniel(a)natemccallum.com>
+ * Copyright (C) 2016 Fabian Vogt <fvogt(a)suse.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ ******************************************************************************/
+
+#include <algorithm>
+#include <cstdlib>
+#include <cstdio>
+
+#include "../extension_config.hpp"
+using namespace libproxy;
+
+class kde_config_extension : public config_extension {
+public:
+ kde_config_extension()
+ {
+ try {
+ // Try the KF5 one first
+ command = "kreadconfig5";
+ kde_config_val("proxyType", "-1");
+ return; // Worked
+ }
+ catch(...) {}
+
+ try {
+ // The KDE4 one next
+ command = "kreadconfig";
+ kde_config_val("proxyType", "-1");
+ return; // Worked
+ }
+ catch(...) {}
+
+ // Neither worked, so throw in get_config
+ command = "";
+ }
+
+ vector<url> get_config(const url &dst) throw (runtime_error) {
+ // See constructor
+ if(command.empty())
+ throw runtime_error("Unable to read configuration");
+
+ vector<url> response;
+
+ string tmp, proxyType = kde_config_val("ProxyType", "-1");
+
+ // Just switch on the first byte, either a digit, '-' ("-1") or '\0'
+ switch(proxyType.c_str()[0])
+ {
+ case '1':
+ tmp = kde_config_val(dst.get_scheme() + "Proxy", "");
+ if(tmp.empty()) {
+ tmp = kde_config_val("httpProxy", "");
+ if(tmp.empty()) {
+ tmp = kde_config_val("socksProxy", "");
+ if(tmp.empty())
+ tmp = "direct://";
+ }
+ }
+
+ // KDE uses "http://127.0.0.1 8080" instead of "http://127.0.0.1:8080"
+ replace(tmp.begin(), tmp.end(), ' ', ':');
+
+ response.push_back(url(tmp));
+ break;
+
+ case '2':
+ tmp = "pac+" + kde_config_val("Proxy Config Script", "");
+ if (url::is_valid(tmp))
+ {
+ response.push_back(url(tmp));
+ break;
+ }
+ // else fallthrough
+
+ case '3':
+ response.push_back(url(string("wpad://")));
+ break;
+
+ case '4':
+ throw runtime_error("User config_envvar"); // We'll bypass this config plugin and let the envvar plugin wor
+
+ case '0':
+ default: // Not set or unknown/illegal
+ response.push_back(url("direct://"));
+ break;
+ }
+
+ return response;
+ }
+
+ string get_ignore(const url&) {
+ // See constructor
+ if(command.empty())
+ return "";
+
+ string proxyType = kde_config_val("ProxyType", "-1");
+ if(proxyType.c_str()[0] != '1')
+ return ""; // Not manual config
+
+ string prefix = kde_config_val("ReversedException", "false") != "false" ? "-" : "";
+ return prefix + kde_config_val("NoProxyFor", ""); // Already in the right format
+ }
+
+private:
+ // Neither key nor def must contain '
+ string kde_config_val(const string &key, const string &def) throw (runtime_error) {
+ string cmdline =
+ command + " --file kioslaverc --group 'Proxy Settings' --key '" + key + "' --default '" + def + "'";
+
+ FILE *pipe = popen(cmdline.c_str(), "r");
+ if (!pipe)
+ throw runtime_error("Unable to run command");
+
+ char buffer[128];
+ string result = "";
+ while (!feof(pipe)) {
+ if (fgets(buffer, 128, pipe) != NULL)
+ result += buffer; // TODO: If this throws bad_alloc, pipe is leaked
+ }
+
+ pclose(pipe);
+
+ // Trim newlines and whitespace at end
+ result.erase(result.begin() + (result.find_last_not_of(" \n\t")+1), result.end());
+ return result;
+ }
+
+ // Whether to use kreadconfig or kreadconfig5
+ string command;
+};
+
+MM_MODULE_INIT_EZ(kde_config_extension, getenv("KDE_FULL_SESSION"), NULL, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/config_kde4.cpp new/libproxy-0.4.12/libproxy/modules/config_kde4.cpp
--- old/libproxy-0.4.11/libproxy/modules/config_kde4.cpp 2012-07-05 18:50:06.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/config_kde4.cpp 1970-01-01 01:00:00.000000000 +0100
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * libproxy - A library for proxy configuration
- * Copyright (C) 2006 Nathaniel McCallum <nathaniel(a)natemccallum.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- ******************************************************************************/
-
-#include <KDE/KConfig>
-#include <KDE/KConfigGroup>
-#include <KDE/KGlobal>
-
-#include "../extension_config.hpp"
-using namespace libproxy;
-
-static void dummyMessageHandler(QtMsgType, const char *) {}
-
-class kde_config_extension : public config_extension {
-public:
- kde_config_extension() {
- /* The constructor of KConfig uses qAppName() which asumes a QApplication object to exist.
- If not, an error message is written. This error message and all others seems to be disabled for
- libraries, but to be sure, we can reemplace temporaly Qt's internal message handler by a
- dummy implementation. */
-
- // Open the config file
- QtMsgHandler oldHandler = qInstallMsgHandler(dummyMessageHandler);
- this->cfg = new KConfig("kioslaverc", KConfig::NoGlobals);
- this->grp = new KConfigGroup(this->cfg, "Proxy Settings");
- qInstallMsgHandler(oldHandler);
- }
-
- ~kde_config_extension() {
- delete this->grp;
- delete this->cfg;
- }
-
- vector<url> get_config(const url &dst) throw (runtime_error) {
- string tmp;
- QString prxy;
- vector<url> response;
-
- switch (this->grp->readEntry("ProxyType", 0)) {
- case 1: // Use a manual proxy
- prxy = this->grp->readEntry(QString(dst.get_scheme().c_str()) + "Proxy", "");
- if (prxy.isEmpty()) {
- prxy = this->grp->readEntry("httpProxy", "");
- if (prxy.isEmpty()) {
- prxy = this->grp->readEntry("socksProxy", "");
- if (prxy.isEmpty())
- prxy = "direct://";
- };
- };
- // The result of toLatin1() is undefined for non-Latin1 strings.
- // However, KDE saves this entry using IDN and percent-encoding, so no problem...
- response.push_back(string(prxy.toLatin1().data()));
- break;
- case 2: // Use a manual PAC
- // The result of toLatin1() is undefined for non-Latin1 strings.
- // However, KDE saves this entry using IDN and percent-encoding, so no problem...
- tmp = string(this->grp->readEntry("Proxy Config Script", "").toLatin1().data());
- if (url::is_valid("pac+" + tmp))
- response.push_back(url("pac+" + tmp));
- else
- response.push_back(string("wpad://"));
- break;
- case 3: // Use WPAD
- response.push_back(string("wpad://"));
- break;
- case 4: // Use envvar
- throw runtime_error("User config_envvar"); // We'll bypass this config plugin and let the envvar plugin work
- default:
- response.push_back(url("direct://"));
- break;
- };
-
- return response;
- }
-
- string get_ignore(const url& /*dst*/) {
- // Apply ignore list only for manual proxy configuration
- if (this->grp->readEntry("ProxyType", 0) == 1) {
- string prefix = this->grp->readEntry("ReversedException", false) ? "-" : "";
- QStringList list = this->grp->readEntry("NoProxyFor", QStringList());
- for (int i = 0; i < list.size(); ++i)
- list[i] = QUrl(list.at(i)).toEncoded();
- return prefix + string(list.join(",").toLatin1().data());
- }
- return "";
- }
-
-private:
- KConfig* cfg;
- KConfigGroup* grp;
-};
-
-MM_MODULE_INIT_EZ(kde_config_extension, getenv("KDE_FULL_SESSION"), NULL, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/config_macosx.cpp new/libproxy-0.4.12/libproxy/modules/config_macosx.cpp
--- old/libproxy-0.4.11/libproxy/modules/config_macosx.cpp 2012-07-05 18:50:06.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/config_macosx.cpp 2016-01-12 17:41:07.000000000 +0100
@@ -114,7 +114,7 @@
class macosx_config_extension : public config_extension {
public:
- vector<url> get_config(const url &url) throw (runtime_error) {
+ vector<url> get_config(const url &the_url) throw (runtime_error) {
string tmp;
CFDictionaryRef proxies = SCDynamicStoreCopyProxies(NULL);
vector<url> response;
@@ -136,8 +136,8 @@
}
// http:// or socks:// (TODO: gopher:// and rtsp:// ???)
- else if ((protocol_url(proxies, toupper(url.get_scheme()), tmp) && url::is_valid(tmp)) ||
- (protocol_url(proxies, capitalize(url.get_scheme()), tmp) && url::is_valid(tmp)) ||
+ else if ((protocol_url(proxies, toupper(the_url.get_scheme()), tmp) && url::is_valid(tmp)) ||
+ (protocol_url(proxies, capitalize(the_url.get_scheme()), tmp) && url::is_valid(tmp)) ||
(protocol_url(proxies, toupper("http"), tmp) && url::is_valid(tmp)) ||
(protocol_url(proxies, toupper("socks"), tmp) && url::is_valid(tmp))) {
CFRelease(proxies);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/config_sysfile.cpp new/libproxy-0.4.12/libproxy/modules/config_sysfile.cpp
--- old/libproxy-0.4.11/libproxy/modules/config_sysfile.cpp 2011-08-11 17:34:08.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/config_sysfile.cpp 1970-01-01 01:00:00.000000000 +0100
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * libproxy - A library for proxy configuration
- * Copyright (C) 2010 Dominique Leuenberger <dominique(a)leuenberger.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- ******************************************************************************/
-
-#include <cstdlib>
-
-#include "../extension_config.hpp"
-// include "helper_configfile.hpp"
-using namespace libproxy;
-
-#define SYSCONFDIR /etc
-#define CFGFILE libproxy.conf
-
-class sysfile_config_extension : public config_extension {
-public:
- url get_config(url url) throw (runtime_error) {
- pxConfigFile pxCFG(abolute_cfgpath);
- switch case pxCFG.pxConfigType
- case PX_TYPE_AUTO:
- return "wpad://";
- break;
- case PX_TYPE_PAC:
- break;
- case_PX_TYPE_MANUAL:
- break;
- case PX_TYPE_NONE:
- return "direct://";
- break;
- }
-
-};
-
-
-bool function cfg_file_exists {
- struct stat stFileInfo;
- return ! stat("/etc/libproxy.conf", stFileInfo);
-}
-
-MM_MODULE_INIT_EZ(sysfile_config_extension, cfg_file_exists, NULL, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/helper_configfile.cpp new/libproxy-0.4.12/libproxy/modules/helper_configfile.cpp
--- old/libproxy-0.4.11/libproxy/modules/helper_configfile.cpp 2010-09-26 15:53:35.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/helper_configfile.cpp 1970-01-01 01:00:00.000000000 +0100
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * libproxy - A library for proxy configuration
- * Copyright (C) 2010 Dominique Leuenberger <dominique(a)leuenberger.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- ******************************************************************************/
-
-Class pxConfigFile {
- public:
- enum pxConfigType {
- PX_TYPE_NONE,
- PX_TYPE_MANUAL,
- PX_TYPE_PAC,
- PX_TYPE_AUTO
- }
-
- void pxConfigFile() {
- // Initialize the class, read the config file and get the arrays filled
-
- }
-};
-
-pxConfigFile::pxConfigFile {
-
-}
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/helper_configfile.hpp new/libproxy-0.4.12/libproxy/modules/helper_configfile.hpp
--- old/libproxy-0.4.11/libproxy/modules/helper_configfile.hpp 2010-09-26 15:48:00.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/helper_configfile.hpp 1970-01-01 01:00:00.000000000 +0100
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * libproxy - A library for proxy configuration
- * Copyright (C) 2010 Dominique Leuenberger <dominique(a)leuenberger.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- ******************************************************************************/
-
-Class pxConfigFile {
- public:
- enum pxConfigType {
- PX_TYPE_NONE,
- PX_TYPE_MANUAL,
- PX_TYPE_PAC,
- PX_TYPE_AUTO
- }
-
- virtual void pxConfigFile() {
- // Initialize the class, read the config file and get the arrays filled
-
- }
-}
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/ignore_ip.cpp.orig new/libproxy-0.4.12/libproxy/modules/ignore_ip.cpp.orig
--- old/libproxy-0.4.11/libproxy/modules/ignore_ip.cpp.orig 2012-07-05 20:24:05.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/ignore_ip.cpp.orig 1970-01-01 01:00:00.000000000 +0100
@@ -1,188 +0,0 @@
-/*******************************************************************************
- * libproxy - A library for proxy configuration
- * Copyright (C) 2006 Nathaniel McCallum <nathaniel(a)natemccallum.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- ******************************************************************************/
-
-#include <cstdio>
-#include <cstring>
-
-#include "../extension_ignore.hpp"
-using namespace libproxy;
-
-static inline bool
-sockaddr_equals(const struct sockaddr *ip_a, const struct sockaddr *ip_b, const struct sockaddr *nm)
-{
- if (!ip_a || !ip_b) return false;
- if (ip_a->sa_family != ip_b->sa_family) return false;
- if (nm && ip_a->sa_family != nm->sa_family) return false;
-
- /* Setup the arrays */
- uint8_t bytes = 0, *a_data = NULL, *b_data = NULL, *nm_data = NULL;
- if (ip_a->sa_family == AF_INET)
- {
- bytes = 32 / 8;
- a_data = (uint8_t *) &((struct sockaddr_in *) ip_a)->sin_addr;
- b_data = (uint8_t *) &((struct sockaddr_in *) ip_b)->sin_addr;
- nm_data = nm ? (uint8_t *) &((struct sockaddr_in *) nm)->sin_addr : NULL;
- }
- else if (ip_a->sa_family == AF_INET6)
- {
- bytes = 128 / 8;
- a_data = (uint8_t *) &((struct sockaddr_in6 *) ip_a)->sin6_addr;
- b_data = (uint8_t *) &((struct sockaddr_in6 *) ip_b)->sin6_addr;
- nm_data = nm ? (uint8_t *) &((struct sockaddr_in6 *) nm)->sin6_addr : NULL;
- }
- else
- return false;
-
- for (int i=0 ; i < bytes ; i++)
- {
- if (nm && (a_data[i] & nm_data[i]) != (b_data[i] & nm_data[i]))
- return false;
- else if (!nm && (a_data[i] != b_data[i]))
- return false;
- }
- return true;
-}
-
-static inline sockaddr *
-sockaddr_from_string(string ip)
-{
- struct sockaddr *result = NULL;
-
- /* Try to parse */
- struct addrinfo *info = NULL;
- struct addrinfo flags;
- flags.ai_family = AF_UNSPEC;
- flags.ai_socktype = 0;
- flags.ai_protocol = 0;
- flags.ai_flags = AI_NUMERICHOST;
- if (getaddrinfo(ip.c_str(), NULL, &flags, &info) != 0 || !info) return result;
-
- /* Copy the results into our buffer */
- result = (sockaddr *) new char[info->ai_addrlen];
- if (!result) {
- freeaddrinfo(info);
- return result;
- }
- memcpy(result, info->ai_addr, info->ai_addrlen);
- freeaddrinfo(info);
- return result;
-}
-
-static inline sockaddr *
-sockaddr_from_cidr(sa_family_t af, uint8_t cidr)
-{
- /* IPv4 */
- if (af == AF_INET)
- {
- sockaddr_in *mask = new sockaddr_in;
- mask->sin_family = af;
- mask->sin_addr.s_addr = htonl(~0 << (32 - (cidr > 32 ? 32 : cidr)));
-
- return (struct sockaddr *) mask;
- }
-
- /* IPv6 */
- else if (af == AF_INET6)
- {
- sockaddr_in6 *mask = new sockaddr_in6;
- mask->sin6_family = af;
- for (uint8_t i=0 ; i < sizeof(mask->sin6_addr) ; i++)
- mask->sin6_addr.s6_addr[i] = ~0 << (8 - (8*i > cidr ? 0 : cidr-8*i < 8 ? cidr-8*i : 8) );
-
- return (sockaddr *) mask;
- }
-
- return NULL;
-}
-
-class ip_ignore_extension : public ignore_extension {
-public:
- virtual bool ignore(url& url, const string &ignore) {
- bool result = false;
- uint16_t port = 0;
- const struct sockaddr *dst_ip = url.get_ips(false) ? url.get_ips(false)[0] : NULL;
- struct sockaddr *ign_ip = NULL, *net_ip = NULL;
-
- /*
- * IPv4
- * IPv6
- */
- if ((ign_ip = sockaddr_from_string(ignore)))
- goto out;
-
- /*
- * IPv4/CIDR
- * IPv4/IPv4
- * IPv6/CIDR
- * IPv6/IPv6
- */
- if (ignore.find('/') != string::npos)
- {
- ign_ip = sockaddr_from_string(ignore.substr(0, ignore.find('/')));
-
- uint32_t cidr = 0;
- string mask = ignore.substr(ignore.find('/') + 1);
-
- if (mask.find('.') != string::npos)
- {
- /* A dotted netmask was used */
- net_ip = sockaddr_from_string(mask);
- }
- else
- {
- /* If CIDR notation was used, get the netmask */
- if (sscanf(mask.c_str(), "%d", &cidr) == 1)
- net_ip = sockaddr_from_cidr(ign_ip->sa_family, cidr);
- }
-
- if (ign_ip && net_ip && ign_ip->sa_family == net_ip->sa_family)
- goto out;
-
- delete ign_ip;
- delete net_ip;
- ign_ip = NULL;
- net_ip = NULL;
- }
-
- /*
- * IPv4:port
- * [IPv6]:port
- */
- if (ignore.rfind(':') != string::npos && sscanf(ignore.substr(ignore.rfind(':')).c_str(), ":%hu", &port) == 1 && port > 0)
- {
- ign_ip = sockaddr_from_string(ignore.substr(ignore.rfind(':')).c_str());
-
- /* Make sure this really is just a port and not just an IPv6 address */
- if (ign_ip && (ign_ip->sa_family != AF_INET6 || ignore[0] == '['))
- goto out;
-
- delete[] ign_ip;
- ign_ip = NULL;
- port = 0;
- }
-
- out:
- result = sockaddr_equals(dst_ip, ign_ip, net_ip);
- delete[] ign_ip;
- delete[] net_ip;
- return port != 0 ? (port == url.get_port() && result) : result;
- }
-};
-
-MM_MODULE_INIT_EZ(ip_ignore_extension, true, NULL, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/ignore_ip.cpp.rej new/libproxy-0.4.12/libproxy/modules/ignore_ip.cpp.rej
--- old/libproxy-0.4.11/libproxy/modules/ignore_ip.cpp.rej 2012-07-05 20:25:17.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/ignore_ip.cpp.rej 1970-01-01 01:00:00.000000000 +0100
@@ -1,31 +0,0 @@
---- libproxy/modules/ignore_ip.cpp
-+++ libproxy/modules/ignore_ip.cpp
-@@ -90,7 +90,7 @@
- /* IPv4 */
- if (af == AF_INET)
- {
-- sockaddr_in *mask = new sockaddr_in;
-+ sockaddr_in *mask = (sockaddr_in*) new char[sizeof(sockaddr_in)];
- mask->sin_family = af;
- mask->sin_addr.s_addr = htonl(~0 << (32 - (cidr > 32 ? 32 : cidr)));
-
-@@ -100,7 +100,7 @@
- /* IPv6 */
- else if (af == AF_INET6)
- {
-- sockaddr_in6 *mask = new sockaddr_in6;
-+ sockaddr_in6 *mask = (sockaddr_in6*) new char[sizeof(sockaddr_in6)];
- mask->sin6_family = af;
- for (uint8_t i=0 ; i < sizeof(mask->sin6_addr) ; i++)
- mask->sin6_addr.s6_addr[i] = ~0 << (8 - (8*i > cidr ? 0 : cidr-8*i < 8 ? cidr-8*i : 8) );
-@@ -154,8 +154,8 @@
- if (ign_ip && net_ip && ign_ip->sa_family == net_ip->sa_family)
- goto out;
-
-- delete ign_ip;
-- delete net_ip;
-+ delete[] ign_ip;
-+ delete[] net_ip;
- ign_ip = NULL;
- net_ip = NULL;
- }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/pxgsettings.cpp new/libproxy-0.4.12/libproxy/modules/pxgsettings.cpp
--- old/libproxy-0.4.11/libproxy/modules/pxgsettings.cpp 2011-05-02 19:46:03.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/pxgsettings.cpp 2016-01-12 17:41:07.000000000 +0100
@@ -143,23 +143,20 @@
g_io_add_watch(outchan, G_IO_ERR, err, NULL);
g_io_add_watch(outchan, G_IO_HUP, err, NULL);
- // Get GConf client
- GSettings* client;
+ // Get GSettings obkecy
+ GSettings* settings;
for (int i=1; i<argc; i++) {
- client = g_settings_new(argv[i]);
- gchar** keys = g_settings_list_keys(client);
- for (int j=0; keys[j]; on_value_change(client, keys[j++],argv[i] ));
- g_signal_connect(client, "changed::", (GCallback) on_value_change, argv[i]);
+ settings = g_settings_new(argv[i]);
+ gchar** keys = g_settings_list_keys(settings);
+ g_signal_connect(settings, "changed::", G_CALLBACK (on_value_change), argv[i]);
+ for (int j=0; keys[j]; on_value_change(settings, keys[j++],argv[i] ));
}
-
g_main_loop_run(loop);
// Cleanup
- while (G_IS_OBJECT(client)) {
- g_object_unref(client);
- }
+ g_object_unref(settings);
g_io_channel_shutdown(inchan, FALSE, NULL);
g_io_channel_shutdown(outchan, FALSE, NULL);
g_io_channel_unref(inchan);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/test/get-pac-test.cpp new/libproxy-0.4.12/libproxy/test/get-pac-test.cpp
--- old/libproxy-0.4.11/libproxy/test/get-pac-test.cpp 2012-10-16 19:52:03.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/test/get-pac-test.cpp 2016-01-12 17:41:07.000000000 +0100
@@ -3,6 +3,8 @@
#include <sstream>
#include <string>
+#include <stdlib.h> // for abort()
+#include <errno.h> // for EINTR
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
@@ -58,7 +60,12 @@
void stop()
{
- assert (write(m_pipe[1], (void*)"q", 1) == 1);
+ int ret;
+ do
+ {
+ ret = write(m_pipe[1], (void*)"q", 1);
+ } while (errno == EINTR);
+ if (ret < 0) abort(); // We could not write to the pipe anymore
pthread_join (m_thread, NULL);
close(m_pipe[1]);
m_pipe[1] = -1;
@@ -188,7 +195,8 @@
ret = send(csock, (void*)basic, strlen(basic), 0);
assert(ret == strlen(basic));
ret = send(csock, (void*)buf, size, 0);
- assert(ret != size);
+ if (!(errno == EBADF))
+ abort(); // Test failed... the socket did not close on us
delete[] buf;
shutdown(csock, SHUT_RDWR);
close(ret);
@@ -235,21 +243,21 @@
server.start();
pac = basic.get_pac();
- assert(pac != NULL);
- assert(strlen(pac) == 10);
- assert(!strcmp("0123456789", pac));
- delete[] pac;
+ if (!(pac != NULL && strlen(pac) == 10 && !strcmp("0123456789", pac)))
+ return 1; // test failed, exit with error code
+ delete[] pac; // test succesful, cleanup
pac = truncated.get_pac();
- assert(pac == NULL);
+ if (pac != NULL)
+ return 2; // Test failed, exit with error code
pac = overflow.get_pac();
- assert(pac == NULL);
+ if (pac != NULL)
+ return 3; // Test failed, exit with error code
pac = chunked.get_pac();
- assert(pac != NULL);
- assert(strlen(pac) == 10);
- assert(!strcmp("0123456789", pac));
+ if (!(pac != NULL && strlen(pac) == 10 && !strcmp("0123456789", pac)))
+ return 4; // Test failed, exit with error code
delete[] pac;
server.stop();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/url.cpp new/libproxy-0.4.12/libproxy/url.cpp
--- old/libproxy-0.4.11/libproxy/url.cpp 2012-10-16 19:52:03.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/url.cpp 2016-01-12 17:41:07.000000000 +0100
@@ -403,6 +403,7 @@
buffer = NULL;
}
}
+ close(sock);
return buffer;
}
@@ -496,6 +497,7 @@
// Clean up
shutdown(sock, SHUT_RDWR);
+ close(sock);
return buffer;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy-CVE-2012-4504.patch new/libproxy-0.4.12/libproxy-CVE-2012-4504.patch
--- old/libproxy-0.4.11/libproxy-CVE-2012-4504.patch 2012-10-10 21:25:54.000000000 +0200
+++ new/libproxy-0.4.12/libproxy-CVE-2012-4504.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,16 +0,0 @@
-Index: libproxy/url.cpp
-===================================================================
---- libproxy/url.cpp (revision 852)
-+++ libproxy/url.cpp (revision 853)
-@@ -474,9 +474,10 @@
- // Add this chunk to our content length,
- // ensuring that we aren't over our max size
- content_length += chunk_length;
-- if (content_length >= PAC_MAX_SIZE) break;
- }
-
-+ if (content_length >= PAC_MAX_SIZE) break;
-+
- while (recvd != content_length) {
- int r = recv(sock, buffer + recvd, content_length - recvd, 0);
- if (r < 0) break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/samples/dotnet/Makefile new/libproxy-0.4.12/samples/dotnet/Makefile
--- old/libproxy-0.4.11/samples/dotnet/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ new/libproxy-0.4.12/samples/dotnet/Makefile 2016-01-12 17:41:07.000000000 +0100
@@ -0,0 +1,8 @@
+
+all: proxy.exe
+
+proxy.exe: proxy.cs
+ gmcs -pkg:libproxy-sharp-1.0 proxy.cs
+
+clean:
+ rm proxy.exe
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/samples/libcurl/Makefile new/libproxy-0.4.12/samples/libcurl/Makefile
--- old/libproxy-0.4.11/samples/libcurl/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ new/libproxy-0.4.12/samples/libcurl/Makefile 2016-01-12 17:41:07.000000000 +0100
@@ -0,0 +1,9 @@
+
+
+all: curlget
+
+curlget: curlget.c
+ gcc curlget.c -o curlget -Wall -lcurl -std=c99 $(shell pkg-config --libs libproxy-1.0)
+
+clean:
+ rm curlget
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/samples/seed/main.js new/libproxy-0.4.12/samples/seed/main.js
--- old/libproxy-0.4.11/samples/seed/main.js 2011-08-11 18:10:14.000000000 +0200
+++ new/libproxy-0.4.12/samples/seed/main.js 1970-01-01 01:00:00.000000000 +0100
@@ -1,7 +0,0 @@
-
-Libproxy = imports.gi.Libproxy;
-px = Libproxy.proxy_factory_new;
-
-print (Libproxy.get_proxies("http://www.google.com"));
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/samples/vala/Makefile new/libproxy-0.4.12/samples/vala/Makefile
--- old/libproxy-0.4.11/samples/vala/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ new/libproxy-0.4.12/samples/vala/Makefile 2016-01-12 17:41:07.000000000 +0100
@@ -0,0 +1,7 @@
+all: sample
+
+sample: sample.vala
+ valac --pkg libproxy-1.0 sample.vala
+
+clean:
+ rm sample
++++++ baselibs.conf ++++++
--- /var/tmp/diff_new_pack.t96Dq4/_old 2016-01-21 23:41:16.000000000 +0100
+++ /var/tmp/diff_new_pack.t96Dq4/_new 2016-01-21 23:41:16.000000000 +0100
@@ -3,7 +3,7 @@
# supplements "packageand(libproxy1-<targettype>:libproxy1-config-gnome)"
libproxy1-config-gnome3
supplements "packageand(libproxy1-<targettype>:libproxy1-config-gnome3)"
-libproxy1-config-kde4
+libproxy1-config-kde
supplements "packageand(libproxy1-<targettype>:libproxy1-config-kde)"
#libproxy1-pacrunner-mozjs
# supplements "packageand(libproxy1-<targettype>:libproxy1-config-mozjs)"
1
0