openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
June 2013
- 1 participants
- 1952 discussions
Hello community,
here is the log from the commit of package python-waitress for openSUSE:Factory checked in at 2013-06-29 14:36:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-waitress (Old)
and /work/SRC/openSUSE:Factory/.python-waitress.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-waitress"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-waitress/python-waitress.changes 2013-05-03 07:40:22.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-waitress.new/python-waitress.changes 2013-06-29 14:36:45.000000000 +0200
@@ -1,0 +2,17 @@
+Tue Jun 25 11:28:09 UTC 2013 - dmueller(a)suse.com
+
+- update to 0.8.5:
+ - Fix runner multisegment imports in some Python 2 revisions (see
+ https://github.com/Pylons/waitress/pull/34)
+ - For compatibility, WSGIServer is now an alias of TcpWSGIServer. The
+ signature of BaseWSGIServer is now compatible with WSGIServer pre-0.8.4.
+ - Add a command-line runner called ``waitress-serve`` to allow Waitress
+ to run WSGI applications without any addional machinery. This is
+ essentially a thin wrapper around the ``waitress.serve()`` function.
+ - Allow parallel testing (e.g., under ``detox`` or ``nosetests --processes``)
+ using PID-dependent port / socket for functest servers.
+ - Fix integer overflow errors on large buffers. Thanks to Marcin Kuzminski
+ for the patch. See: https://github.com/Pylons/waitress/issues/22
+ - Add support for listening on Unix domain sockets.
+
+-------------------------------------------------------------------
Old:
----
waitress-0.8.3.tar.gz
New:
----
waitress-0.8.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-waitress.spec ++++++
--- /var/tmp/diff_new_pack.6y70m7/_old 2013-06-29 14:36:46.000000000 +0200
+++ /var/tmp/diff_new_pack.6y70m7/_new 2013-06-29 14:36:46.000000000 +0200
@@ -13,15 +13,16 @@
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
Name: python-waitress
-Version: 0.8.3
+Version: 0.8.5
Release: 0
-License: ZPL-2.1
Summary: Waitress WSGI server
-Url: https://github.com/Pylons/waitress
+License: ZPL-2.1
Group: Development/Languages/Python
+Url: https://github.com/Pylons/waitress
Source: http://pypi.python.org/packages/source/w/waitress/waitress-%{version}.tar.gz
BuildRequires: python-devel
BuildRequires: python-distribute
@@ -63,6 +64,7 @@
%files
%defattr(-,root,root,-)
%doc COPYRIGHT.txt LICENSE.txt README.rst
+%{_bindir}/waitress-serve
%{python_sitelib}/*
%changelog
++++++ waitress-0.8.3.tar.gz -> waitress-0.8.5.tar.gz ++++++
++++ 5026 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package python-tox for openSUSE:Factory checked in at 2013-06-29 14:35:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-tox (Old)
and /work/SRC/openSUSE:Factory/.python-tox.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-tox"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-tox/python-tox.changes 2013-04-23 11:39:27.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-tox.new/python-tox.changes 2013-06-29 14:35:57.000000000 +0200
@@ -1,0 +2,25 @@
+Tue Jun 25 11:49:47 UTC 2013 - dmueller(a)suse.com
+
+- update to 1.5.0:
+ - fix issue104: use setuptools by default, instead of distribute,
+ now that setuptools has distribute merged.
+ - make sure test commands are searched first in the virtualenv
+ - re-fix issue2 - add whitelist_externals to be used in ``[testenv*]``
+ sections, allowing to avoid warnings for commands such as ``make``,
+ used from the commands value.
+ - fix issue97 - allow substitutions to reference from other sections
+ (thanks Krisztian Fekete)
+ - fix issue92 - fix {envsitepackagesdir} to actually work again
+ - show (test) command that is being executed, thanks
+ Lukasz Balcerzak
+ - re-license tox to MIT license
+ - depend on virtualenv-1.9.1
+ - rename README.txt to README.rst to make bitbucket happier
+
+
+-------------------------------------------------------------------
+Mon Jun 17 12:14:38 UTC 2013 - speilicke(a)suse.com
+
+- Only require argparse on SLE, it's part of Python-2.7
+
+-------------------------------------------------------------------
Old:
----
tox-1.4.3.tar.gz
New:
----
tox-1.5.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-tox.spec ++++++
--- /var/tmp/diff_new_pack.MlI82X/_old 2013-06-29 14:35:57.000000000 +0200
+++ /var/tmp/diff_new_pack.MlI82X/_new 2013-06-29 14:35:57.000000000 +0200
@@ -15,11 +15,12 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
+
Name: python-tox
-Version: 1.4.3
+Version: 1.5.0
Release: 0
Summary: Virtualenv-based automation of test activities
-License: GPL-2.0+
+License: MIT
Group: Development/Languages/Python
Url: http://codespeak.net/tox
Source: http://pypi.python.org/packages/source/t/tox/tox-%{version}.tar.gz
@@ -29,12 +30,12 @@
BuildRequires: python-pytest
BuildRequires: python-virtualenv
BuildRequires: unzip
-Requires: python-argparse
Requires: python-py
Requires: python-virtualenv
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} && 0%{?suse_version} <= 1110
%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
+Requires: python-argparse
%else
BuildArch: noarch
%endif
@@ -68,7 +69,7 @@
%files
%defattr(-,root,root,-)
-%doc LICENSE README.txt doc/_build/html
+%doc LICENSE README.rst doc/_build/html
%{_bindir}/*
%{python_sitelib}/*
++++++ tox-1.4.3.tar.gz -> tox-1.5.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/CHANGELOG new/tox-1.5.0/CHANGELOG
--- old/tox-1.4.3/CHANGELOG 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/CHANGELOG 2013-06-22 15:00:49.000000000 +0200
@@ -1,3 +1,30 @@
+1.5.0
+-----------------
+
+- fix issue104: use setuptools by default, instead of distribute,
+ now that setuptools has distribute merged.
+
+- make sure test commands are searched first in the virtualenv
+
+- re-fix issue2 - add whitelist_externals to be used in ``[testenv*]``
+ sections, allowing to avoid warnings for commands such as ``make``,
+ used from the commands value.
+
+- fix issue97 - allow substitutions to reference from other sections
+ (thanks Krisztian Fekete)
+
+- fix issue92 - fix {envsitepackagesdir} to actually work again
+
+- show (test) command that is being executed, thanks
+ Lukasz Balcerzak
+
+- re-license tox to MIT license
+
+- depend on virtualenv-1.9.1
+
+- rename README.txt to README.rst to make bitbucket happier
+
+
1.4.3
-----------------
@@ -44,7 +71,7 @@
- change tests to not rely on os.path.expanduser (closes #60),
also make mock session return args[1:] for more precise checking (closes #61)
- thanks to Barry Warszaw for both.
+ thanks to Barry Warsaw for both.
1.4.2
-----------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/CONTRIBUTORS new/tox-1.5.0/CONTRIBUTORS
--- old/tox-1.4.3/CONTRIBUTORS 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/CONTRIBUTORS 2013-06-22 15:00:49.000000000 +0200
@@ -1,8 +1,10 @@
-contributions (under the MIT license):
+contributions:
+Krisztian Fekete
Marc Abramowitz
Sridhar Ratnakumar
+Barry Warsaw
Chris Rose
Jannis Leidl
Ronny Pfannschmidt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/LICENSE new/tox-1.5.0/LICENSE
--- old/tox-1.4.3/LICENSE 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/LICENSE 2013-06-22 15:00:49.000000000 +0200
@@ -1,10 +1,20 @@
-The tox package is released under the provisions of the GNU General
-Public License (GPL), version 2 or later.
-See http://www.fsf.org/licensing/licenses/ for more information.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
-If you have questions and/or want to use parts of
-the code under a different license than the GPL
-please contact me.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-holger krekel, May 2011, holger at merlinux eu
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/PKG-INFO new/tox-1.5.0/PKG-INFO
--- old/tox-1.4.3/PKG-INFO 2013-03-01 07:39:20.000000000 +0100
+++ new/tox-1.5.0/PKG-INFO 2013-06-22 15:00:49.000000000 +0200
@@ -1,33 +1,38 @@
Metadata-Version: 1.1
Name: tox
-Version: 1.4.3
+Version: 1.5.0
Summary: virtualenv-based automation of test activities
Home-page: http://tox.testrun.org/
Author: holger krekel
Author-email: holger(a)merlinux.eu
-License: GPLv2 or later
+License: http://opensource.org/licenses/MIT
Description:
What is Tox?
- ==========================
+ --------------------
- Tox as is a generic virtualenv management and test command line tool you can
- use for:
+ Tox as is a generic virtualenv_ management and test command line tool you can use for:
- * checking your package installs correctly with different
- Python versions and interpreters
+ * checking your package installs correctly with different Python versions and
+ interpreters
- * running your tests in each of the
- environments, configuring your test tool of choice
+ * running your tests in each of the environments, configuring your test tool of choice
- * acting as a frontend to Continuous Integration
- servers, greatly reducing boilerplate and merging
- CI and shell-based testing.
+ * acting as a frontend to Continuous Integration servers, greatly
+ reducing boilerplate and merging CI and shell-based testing.
- For more information, docs and many examples please checkout the `home page`_:
+ For more information and the repository please checkout:
- http://tox.testrun.org/
+ - homepage: http://tox.testrun.org
+
+ - repository: https://bitbucket.org/hpk42/tox
+
+ have fun,
+
+
+ have fun,
+
+ holger krekel, May 2013
- .. _`home page`: http://tox.testrun.org/
Platform: unix
Platform: linux
@@ -36,7 +41,7 @@
Platform: win32
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: MacOS :: MacOS X
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/README.rst new/tox-1.5.0/README.rst
--- old/tox-1.4.3/README.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/tox-1.5.0/README.rst 2013-06-22 15:00:49.000000000 +0200
@@ -0,0 +1,27 @@
+
+What is Tox?
+--------------------
+
+Tox as is a generic virtualenv_ management and test command line tool you can use for:
+
+* checking your package installs correctly with different Python versions and
+ interpreters
+
+* running your tests in each of the environments, configuring your test tool of choice
+
+* acting as a frontend to Continuous Integration servers, greatly
+ reducing boilerplate and merging CI and shell-based testing.
+
+For more information and the repository please checkout:
+
+- homepage: http://tox.testrun.org
+
+- repository: https://bitbucket.org/hpk42/tox
+
+have fun,
+
+
+have fun,
+
+holger krekel, May 2013
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/README.txt new/tox-1.5.0/README.txt
--- old/tox-1.4.3/README.txt 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/README.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,22 +0,0 @@
-
-What is Tox?
---------------------
-
-Tox as is a generic virtualenv_ management and test command line tool you can use for:
-
-* checking your package installs correctly with different Python versions and
- interpreters
-
-* running your tests in each of the environments, configuring your test tool of choice
-
-* acting as a frontend to Continuous Integration servers, greatly
- reducing boilerplate and merging CI and shell-based testing.
-
-For more information, docs and many examples please checkout:
-
- http://tox.testrun.org
-
-have fun,
-
-holger krekel, May 2012
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/doc/conf.py new/tox-1.5.0/doc/conf.py
--- old/tox-1.4.3/doc/conf.py 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/doc/conf.py 2013-06-22 15:00:49.000000000 +0200
@@ -41,14 +41,14 @@
# General information about the project.
project = u'tox'
-copyright = u'2011, holger krekel and others'
+copyright = u'2013, holger krekel and others'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
-release = version = "1.4.2-1"
+release = version = "1.5.0"
# The full version, including alpha/beta/rc tags.
# The language for content autogenerated by Sphinx. Refer to documentation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/doc/config.txt new/tox-1.5.0/doc/config.txt
--- old/tox-1.4.3/doc/config.txt 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/doc/config.txt 2013-06-22 15:00:49.000000000 +0200
@@ -75,6 +75,16 @@
For eventually performing a call to ``subprocess.Popen(args, ...)``
``args`` are determined by splitting the whole command by whitespace.
+.. confval:: whitelist_externals=MULTI-LINE-LIST
+
+ each line specifies a command name (in glob-style pattern format)
+ which can be used in the ``commands`` section without triggering
+ a "not installed in virtualenv" warning. Example: if you use the
+ unix ``make`` for running tests you can list ``whitelist_externals=make``
+ or ``whitelist_externals=/usr/bin/make`` if you want more precision.
+ If you don't want tox to issue a warning in any case, just use
+ ``whitelist_externals=*`` which will match all commands (not recommended).
+
.. confval:: changedir=path
change to this working directory when executing the test command.
@@ -115,9 +125,12 @@
.. confval:: distribute=True|False
- Set to ``False`` if you want to use setuptools_ instead of the default
- distribute_ in the virtual environment.
- **default:** True.
+ Set to ``True`` if you want to use distribute_ instead of the default
+ setuptools_ in the virtual environment. Prior to tox-1.5 the
+ default was True and now is False, meaning ``setuptools`` is used
+ (note that setuptools-0.7 merged with distribute). In future versions
+ of tox this option might be ignored and setuptools always chosen.
+ **default:** False.
.. confval:: sitepackages=True|False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/doc/example/basic.txt new/tox-1.5.0/doc/example/basic.txt
--- old/tox-1.4.3/doc/example/basic.txt 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/doc/example/basic.txt 2013-06-22 15:00:49.000000000 +0200
@@ -44,6 +44,22 @@
However, you can also create your own test environment names,
see some of the examples in :doc:`examples <../examples>`.
+whitelisting a non-virtualenv commands
+-----------------------------------------------
+
+.. versionadded:: 1.5
+
+Sometimes you may want to use tools not contained in your
+virtualenv such as ``make``, ``bash`` or others. To avoid
+warnings you can use the ``whitelist_externals`` testenv
+configuration::
+
+ # content of tox.ini
+ [testenv]
+ whitelist_externals = make
+ /bin/bash
+
+
.. _virtualenv: http://pypi.python.org/pypi/virtualenv
.. _multiindex:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/doc/example/pytest.txt new/tox-1.5.0/doc/example/pytest.txt
--- old/tox-1.4.3/doc/example/pytest.txt 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/doc/example/pytest.txt 2013-06-22 15:00:49.000000000 +0200
@@ -85,16 +85,30 @@
**installed-versus-checkout version**. ``py.test`` collects test
modules on the filesystem and then tries to import them under their
-`fully qualified name`_. This means that if your test directory contains
-an ``__init__.py`` file then your ``py.test`` invocation may end up
+`fully qualified name`_. This means that if your test files are
+importable from somewhere then your ``py.test`` invocation may end up
importing the package from the checkout directory rather than the
-installed package. Therefore it is better to try to avoid
-``__init__.py`` files in test directories and also try to avoid custom
-``PYTHONPATH`` settings. After all, it is the job of your ``setup.py``
-file and the install tools to care for making the package properly
-available for importing.
+installed package.
+
+There are a few ways to prevent this.
+
+With installed tests (the tests packages are known to ``setup.py``), a
+safe and explicit option is to give the explicit path
+``{envsitepackagesdir}/mypkg`` to pytest.
+Alternatively, it is possible to use ``changedir`` so that checked-out
+files are outside the import path, then pass ``--pyargs mypkg`` to
+pytest.
+
+Installed tests are particularly convenient when combined with
+`Distribute's 2to3 support` (``use_2to3``).
+
+With tests that won't be installed, the simplest way is to avoid
+``__init__.py`` files in test directories; pytest will still find them
+but they won't be copied to other places or be found by Python's import
+system.
.. _`fully qualified name`: http://pytest.org/latest/goodpractises.html#package-name
+.. _`Distribute's 2to3 support`: http://packages.python.org/distribute/python3.html
.. include:: ../links.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/doc/index.txt new/tox-1.5.0/doc/index.txt
--- old/tox-1.4.3/doc/index.txt 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/doc/index.txt 2013-06-22 15:00:49.000000000 +0200
@@ -1,7 +1,7 @@
Welcome to the tox automation project
===============================================
-.. note:: Upcoming: `professional testing with pytest and tox <`http://www.python-academy.com/courses/specialtopics/python_course_testing.html>`_ , 24th-26th June 2013, Leipzig.
+.. note:: Upcoming: `professional testing with pytest and tox <http://www.python-academy.com/courses/specialtopics/python_course_testing.h…>`_ , 24th-26th June 2013, Leipzig.
vision: standardize testing in Python
---------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/doc/install.txt new/tox-1.5.0/doc/install.txt
--- old/tox-1.4.3/doc/install.txt 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/doc/install.txt 2013-06-22 15:00:49.000000000 +0200
@@ -4,13 +4,13 @@
Install info in a nutshell
----------------------------------
-**Pythons**: CPython 2.4-3.2, Jython-2.5.1, pypy-1.5
+**Pythons**: CPython 2.4-3.3, Jython-2.5.1, pypy-1.9ff
**Operating systems**: Linux, Windows, OSX, Unix
**Installer Requirements**: setuptools_ or Distribute_
-**License**: GPLv2 or later
+**License**: MIT license
**hg repository**: http://bitbucket.org/hpk42/tox
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/setup.py new/tox-1.5.0/setup.py
--- old/tox-1.4.3/setup.py 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/setup.py 2013-06-22 15:00:49.000000000 +0200
@@ -2,29 +2,6 @@
from setuptools import setup
from setuptools.command.test import test as TestCommand
-long_description = """
-What is Tox?
-==========================
-
-Tox as is a generic virtualenv management and test command line tool you can
-use for:
-
-* checking your package installs correctly with different
- Python versions and interpreters
-
-* running your tests in each of the
- environments, configuring your test tool of choice
-
-* acting as a frontend to Continuous Integration
- servers, greatly reducing boilerplate and merging
- CI and shell-based testing.
-
-For more information, docs and many examples please checkout the `home page`_:
-
- http://tox.testrun.org/
-
-.. _`home page`: http://tox.testrun.org/
-"""
class Tox(TestCommand):
@@ -41,16 +18,16 @@
def main():
version = sys.version_info[:2]
- install_requires = ['virtualenv>=1.8.4', 'py>=1.4.12', ]
+ install_requires = ['virtualenv>=1.9.1', 'py>=1.4.15', ]
if version < (2, 7) or (3, 0) <= version <= (3, 1):
install_requires += ['argparse']
setup(
name='tox',
description='virtualenv-based automation of test activities',
- long_description=long_description,
+ long_description=open("README.rst").read(),
url='http://tox.testrun.org/',
- version='1.4.3',
- license='GPLv2 or later',
+ version='1.5.0',
+ license='http://opensource.org/licenses/MIT',
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
author='holger krekel',
author_email='holger(a)merlinux.eu',
@@ -65,15 +42,15 @@
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
- 'License :: OSI Approved :: GNU General Public License (GPL)',
- 'Operating System :: POSIX',
- 'Operating System :: Microsoft :: Windows',
- 'Operating System :: MacOS :: MacOS X',
- 'Topic :: Software Development :: Testing',
- 'Topic :: Software Development :: Libraries',
- 'Topic :: Utilities',
- 'Programming Language :: Python',
- 'Programming Language :: Python :: 3'],
+ 'License :: OSI Approved :: MIT License',
+ 'Operating System :: POSIX',
+ 'Operating System :: Microsoft :: Windows',
+ 'Operating System :: MacOS :: MacOS X',
+ 'Topic :: Software Development :: Testing',
+ 'Topic :: Software Development :: Libraries',
+ 'Topic :: Utilities',
+ 'Programming Language :: Python',
+ 'Programming Language :: Python :: 3'],
)
if __name__ == '__main__':
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/tests/test_config.py new/tox-1.5.0/tests/test_config.py
--- old/tox-1.4.3/tests/test_config.py 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/tests/test_config.py 2013-06-22 15:00:49.000000000 +0200
@@ -1,6 +1,7 @@
import tox
import pytest
import os, sys
+import subprocess
from textwrap import dedent
import py
@@ -175,6 +176,29 @@
py.test.raises(tox.exception.ConfigError,
'reader.getdefault("section", "key2")')
+ def test_getdefault_other_section_substitution(self, newconfig):
+ config = newconfig("""
+ [section]
+ key = rue
+ [testenv]
+ key = t{[section]key}
+ """)
+ reader = IniReader(config._cfg)
+ x = reader.getdefault("testenv", "key")
+ assert x == "true"
+
+ def test_command_substitution_from_other_section(self, newconfig):
+ config = newconfig("""
+ [section]
+ key = whatever
+ [testenv]
+ commands =
+ echo {[section]key}
+ """)
+ reader = IniReader(config._cfg)
+ x = reader.getargvlist("testenv", "commands")
+ assert x == [["echo", "whatever"]]
+
def test_argvlist(self, tmpdir, newconfig):
config = newconfig("""
[section]
@@ -328,7 +352,7 @@
envconfig = config.envconfigs['python']
assert envconfig.commands == [["xyz", "--abc"]]
assert envconfig.changedir == config.setupdir
- assert envconfig.distribute == True
+ assert envconfig.distribute == False
assert envconfig.sitepackages == False
assert envconfig.envlogdir == envconfig.envdir.join("log")
assert envconfig.setenv is None
@@ -344,6 +368,24 @@
envconfig = config.envconfigs['py']
assert envconfig.commands == [["abc"]]
+ def test_whitelist_externals(self, tmpdir, newconfig):
+ config = newconfig("""
+ [testenv]
+ whitelist_externals = xyz
+ commands=xyz
+ [testenv:x]
+
+ [testenv:py]
+ whitelist_externals = xyz2
+ commands=abc
+ """)
+ assert len(config.envconfigs) == 2
+ envconfig = config.envconfigs['py']
+ assert envconfig.commands == [["abc"]]
+ assert envconfig.whitelist_externals == ["xyz2"]
+ envconfig = config.envconfigs['x']
+ assert envconfig.whitelist_externals == ["xyz"]
+
def test_changedir(self, tmpdir, newconfig):
config = newconfig("""
[testenv]
@@ -590,6 +632,35 @@
assert conf.changedir.basename == 'testing'
assert conf.changedir.dirpath().realpath() == tmpdir.realpath()
+ @pytest.mark.xfailif("sys.platform == 'win32'")
+ def test_substitution_envsitepackagesdir(self, tmpdir, monkeypatch,
+ newconfig):
+ """
+ The envsitepackagesdir property is mostly doing system work,
+ so this test doesn't excercise it very well.
+
+ Usage of envsitepackagesdir on win32/jython will explicitly
+ throw an exception,
+ """
+ class MockPopen(object):
+ returncode = 0
+
+ def __init__(self, *args, **kwargs):
+ pass
+
+ def communicate(self, *args, **kwargs):
+ return 'onevalue', 'othervalue'
+
+ monkeypatch.setattr(subprocess, 'Popen', MockPopen)
+ env = 'py%s' % (''.join(sys.version.split('.')[0:2]))
+ config = newconfig("""
+ [testenv:%s]
+ commands = {envsitepackagesdir}
+ """ % (env))
+ conf = config.envconfigs[env]
+ argv = conf.commands
+ assert argv[0][0] == 'onevalue'
+
class TestGlobalOptions:
def test_notest(self, newconfig):
@@ -753,6 +824,22 @@
assert config.indexserver["default"].url == "xzy"
assert config.indexserver["name1"].url == "xzy"
+ def test_multiple_homedir_relative_local_indexservers(self, newconfig):
+ inisource = """
+ [tox]
+ indexserver =
+ default = file://{homedir}/.pip/downloads/simple
+ local1 = file://{homedir}/.pip/downloads/simple
+ local2 = file://{toxinidir}/downloads/simple
+ pypi = http://pypi.python.org/simple
+ """
+ config = newconfig([], inisource)
+ homedir = str(py.path.local._gethomedir())
+ expected = "file://%s/.pip/downloads/simple" % homedir
+ assert config.indexserver['default'].url == expected
+ assert config.indexserver['local1'].url == \
+ config.indexserver['default'].url
+
class TestParseEnv:
def test_parse_recreate(self, newconfig):
@@ -807,8 +894,6 @@
*docs*
""")
- @py.test.mark.xfail("sys.version_info < (2,6)",
- reason="virtualenv3 cannot be imported")
def test_config_specific_ini(self, tmpdir, cmd):
ini = tmpdir.ensure("hello.ini")
result = cmd.run("tox", "-c", ini, "--showconfig")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/tests/test_venv.py new/tox-1.5.0/tests/test_venv.py
--- old/tox-1.4.3/tests/test_venv.py 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/tests/test_venv.py 2013-06-22 15:00:49.000000000 +0200
@@ -102,6 +102,20 @@
assert interp == venv.getconfigexecutable()
assert venv.path_config.check(exists=False)
+(a)pytest.mark.skipif("sys.platform == 'win32'")
+def test_commandpath_venv_precendence(tmpdir, monkeypatch,
+ mocksession, newconfig):
+ config = newconfig([], """
+ [testenv:py123]
+ """)
+ envconfig = config.envconfigs['py123']
+ venv = VirtualEnv(envconfig, session=mocksession)
+ tmpdir.ensure("easy_install")
+ monkeypatch.setenv("PATH", str(tmpdir), prepend=os.pathsep)
+ envconfig.envbindir.ensure("easy_install")
+ p = venv.getcommandpath("easy_install")
+ assert py.path.local(p).relto(envconfig.envbindir), p
+
def test_create_distribute(monkeypatch, mocksession, newconfig):
config = newconfig([], """
[testenv:py123]
@@ -116,6 +130,7 @@
assert len(l) >= 1
args = l[0].args
assert "--distribute" not in map(str, args)
+ assert "--setuptools" in map(str, args)
def test_create_sitepackages(monkeypatch, mocksession, newconfig):
config = newconfig([], """
@@ -261,6 +276,16 @@
venv.update()
mocksession.report.expect("verbosity0", "*recreate*")
+def test_test_runtests_action_command_is_in_output(newmocksession):
+ mocksession = newmocksession([], '''
+ [testenv]
+ commands = echo foo bar
+ ''')
+ venv = mocksession.getenv('python')
+ venv.update()
+ venv.test()
+ mocksession.report.expect("verbosity0", "*runtests*commands?0? | echo foo bar")
+
def test_install_error(newmocksession, monkeypatch):
mocksession = newmocksession(['--recreate'], """
[testenv]
@@ -284,6 +309,21 @@
mocksession.report.expect("warning", "*test command found but not*")
assert venv.status == "commands failed"
+def test_install_command_whitelisted(newmocksession, monkeypatch):
+ mocksession = newmocksession(['--recreate'], """
+ [testenv]
+ whitelist_externals = py.test
+ xy*
+ commands=
+ py.test
+ xyz
+ """)
+ venv = mocksession.getenv('python')
+ venv.test()
+ mocksession.report.expect("warning", "*test command found but not*",
+ invert=True)
+ assert venv.status == "commands failed"
+
@pytest.mark.skipif("not sys.platform.startswith('linux')")
def test_install_command_not_installed(newmocksession):
mocksession = newmocksession(['--recreate'], """
@@ -427,7 +467,7 @@
venv = VirtualEnv(envconfig, session=mocksession)
venv.update()
cconfig = venv._getliveconfig()
- cconfig.distribute = False
+ cconfig.distribute = True
cconfig.writeconfig(venv.path_config)
mocksession._clearmocks()
venv.update()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/tests/test_z_cmdline.py new/tox-1.5.0/tests/test_z_cmdline.py
--- old/tox-1.4.3/tests/test_z_cmdline.py 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/tests/test_z_cmdline.py 2013-06-22 15:00:49.000000000 +0200
@@ -2,7 +2,7 @@
import py
import pytest
import sys
-from conftest import ReportExpectMock
+from tox._pytestplugin import ReportExpectMock
pytest_plugins = "pytester"
@@ -276,7 +276,7 @@
name='pkg123',
description='pkg123 project',
version='0.7',
- license='GPLv2 or later',
+ license='MIT',
platforms=['unix', 'win32'],
packages=['pkg123',],
install_requires=['qweqwe123'],
@@ -448,12 +448,16 @@
sdist_path = session.sdist()
assert sdist_path == p
-(a)pytest.mark.xfailif("sys.platform == 'win32'")
+(a)pytest.mark.xfail("sys.platform == 'win32'", reason="test needs better impl")
def test_envsitepackagesdir(cmd, initproj):
initproj("pkg512-0.0.5", filedefs={
'tox.ini': """
+ [testenv]
commands=
- grep '__version__.*=.*0\.0\.5' {envsitepackagesdir}/pkg512/__init__.py
+ echo X:{envsitepackagesdir}
"""})
result = cmd.run("tox")
-
+ assert result.ret == 0
+ result.stdout.fnmatch_lines("""
+ X:*site-packages*
+ """)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/tox/__init__.py new/tox-1.5.0/tox/__init__.py
--- old/tox-1.4.3/tox/__init__.py 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/tox/__init__.py 2013-06-22 15:00:49.000000000 +0200
@@ -1,5 +1,5 @@
#
-__version__ = '1.4.3'
+__version__ = '1.5.0'
class exception:
class Error(Exception):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/tox/_config.py new/tox-1.5.0/tox/_config.py
--- old/tox-1.4.3/tox/_config.py 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/tox/_config.py 2013-06-22 15:00:49.000000000 +0200
@@ -128,6 +128,7 @@
name = "python"
return self.envbindir.join(name)
+ # no @property to avoid early calling (see callable(subst[key]) checks)
def envsitepackagesdir(self):
print_envsitepackagesdir = textwrap.dedent("""
import sys
@@ -290,6 +291,8 @@
vc.setenv = None
vc.commands = reader.getargvlist(section, "commands")
+ vc.whitelist_externals = reader.getlist(section,
+ "whitelist_externals")
vc.deps = []
for depline in reader.getlist(section, "deps"):
m = re.match(r":(\w+):\s*(\S+)", depline)
@@ -300,7 +303,7 @@
name = depline.strip()
ixserver = None
vc.deps.append(DepConfig(name, ixserver))
- vc.distribute = reader.getbool(section, "distribute", True)
+ vc.distribute = reader.getbool(section, "distribute", False)
vc.sitepackages = reader.getbool(section, "sitepackages", False)
vc.downloadcache = None
downloadcache = os.environ.get("PIP_DOWNLOAD_CACHE", None)
@@ -344,6 +347,16 @@
self.name = name
self.url = url
+RE_ITEM_REF = re.compile(
+ '''
+ [{]
+ (?:(?P<sub_type>[^[:{}]+):)? # optional sub_type for special rules
+ (?P<substitution_value>[^{}]*) # substitution key
+ [}]
+ ''',
+ re.VERBOSE)
+
+
class IniReader:
def __init__(self, cfgparser, fallbacksections=None):
self._cfg = cfgparser
@@ -410,7 +423,6 @@
def _processcommand(self, command):
posargs = self._subs.get('_posargs', None)
- pat = r'\{(?:(?P<sub_type>[^:]+):)?(?P<substitution_value>.*)\}'
words = list(CommandParser(command).words())
new_command = ''
for word in words:
@@ -419,9 +431,9 @@
new_command += ' '.join(posargs)
continue
- new_word = re.sub(pat, self._replace_match, word)
+ new_word = self._replace(word, quote=True)
# two passes; we might have substitutions in the result
- new_word = re.sub(pat, self._replace_match, new_word)
+ new_word = self._replace(new_word, quote=True)
new_command += new_word
return shlex.split(new_command.strip())
@@ -463,38 +475,7 @@
#print "getdefault", section, name, "returned", repr(x)
return x
- def _sub(self, match):
- key = match.group(0)[1:-1]
- if key.startswith("env:"):
- envkey = key[4:]
- if envkey not in os.environ:
- raise tox.exception.ConfigError(
- "substitution %r: %r not found in environment" %
- (key, envkey))
- return os.environ[envkey]
- val = self._subs.get(key, None)
- if val is None:
- if key.startswith("[") and "]" in key:
- i = key.find("]")
- section, item = key[1:i], key[i+1:]
- if section in self._cfg and item in self._cfg[section]:
- if (section, item) in self._subststack:
- raise ValueError('%s already in %s' %(
- (section, item), self._subststack))
- x = str(self._cfg[section][item])
- self._subststack.append((section, item))
- try:
- return self._replace(x)
- finally:
- self._subststack.pop()
-
- raise tox.exception.ConfigError(
- "substitution key %r not found" % key)
- if py.builtin.callable(val):
- val = val()
- return str(val)
-
- def _replace_posargs(self, match):
+ def _replace_posargs(self, match, quote):
return self._do_replace_posargs(lambda: match.group('substitution_value'))
def _do_replace_posargs(self, value_func):
@@ -509,7 +490,7 @@
return ''
- def _replace_env(self, match):
+ def _replace_env(self, match, quote):
envkey = match.group('substitution_value')
if not envkey:
raise tox.exception.ConfigError(
@@ -522,18 +503,41 @@
return os.environ[envkey]
- def _replace_substitution(self, match):
+ def _substitute_from_other_section(self, key, quote):
+ if key.startswith("[") and "]" in key:
+ i = key.find("]")
+ section, item = key[1:i], key[i+1:]
+ if section in self._cfg and item in self._cfg[section]:
+ if (section, item) in self._subststack:
+ raise ValueError('%s already in %s' %(
+ (section, item), self._subststack))
+ x = str(self._cfg[section][item])
+ self._subststack.append((section, item))
+ try:
+ return self._replace(x, quote=quote)
+ finally:
+ self._subststack.pop()
+
+ raise tox.exception.ConfigError(
+ "substitution key %r not found" % key)
+
+ def _replace_substitution(self, match, quote):
sub_key = match.group('substitution_value')
- if sub_key not in self._subs:
- raise tox.exception.ConfigError(
- "substitution key %r not found" % sub_key)
- return '"%s"' % str(self._subs[sub_key]).replace('"', r'\"')
+ val = self._subs.get(sub_key, None)
+ if val is None:
+ val = self._substitute_from_other_section(sub_key, quote)
+ if py.builtin.callable(val):
+ val = val()
+ if quote:
+ return '"%s"' % str(val).replace('"', r'\"')
+ else:
+ return str(val)
def _is_bare_posargs(self, groupdict):
return groupdict.get('substitution_value', None) == 'posargs' \
and not groupdict.get('sub_type')
- def _replace_match(self, match):
+ def _replace_match(self, match, quote):
g = match.groupdict()
# special case: posargs. If there is a 'posargs' substitution value
@@ -556,11 +560,23 @@
except KeyError:
raise tox.exception.ConfigError("No support for the %s substitution type" % sub_type)
- return handler(match)
+ # quoting is done in handlers, as at least posargs handling is special:
+ # all of its arguments are inserted as separate parameters
+ return handler(match, quote)
+
+ def _replace_match_quote(self, match):
+ return self._replace_match(match, quote=True)
+ def _replace_match_no_quote(self, match):
+ return self._replace_match(match, quote=False)
- def _replace(self, x, rexpattern = re.compile("\{.+?\}")):
+ def _replace(self, x, rexpattern=RE_ITEM_REF, quote=False):
+ # XXX is rexpattern used by callers? can it be removed?
if '{' in x:
- return rexpattern.sub(self._sub, x)
+ if quote:
+ replace_func = self._replace_match_quote
+ else:
+ replace_func = self._replace_match_no_quote
+ return rexpattern.sub(replace_func, x)
return x
def _parse_command(self, command):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/tox/_pytestplugin.py new/tox-1.5.0/tox/_pytestplugin.py
--- old/tox-1.4.3/tox/_pytestplugin.py 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/tox/_pytestplugin.py 2013-06-22 15:00:49.000000000 +0200
@@ -262,7 +262,7 @@
name='%(name)s',
description='%(name)s project',
version='%(version)s',
- license='GPLv2 or later',
+ license='MIT',
platforms=['unix', 'win32'],
packages=['%(name)s', ],
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/tox/_venv.py new/tox-1.5.0/tox/_venv.py
--- old/tox-1.4.3/tox/_venv.py 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/tox/_venv.py 2013-06-22 15:00:49.000000000 +0200
@@ -74,21 +74,38 @@
p = cwd.join(name)
if p.check():
return str(p)
+ p = None
+ if venv:
+ p = py.path.local.sysfind(name, paths=[self.envconfig.envbindir])
+ if p is not None:
+ return p
p = py.path.local.sysfind(name)
if p is None:
- raise tox.exception.InvocationError("could not find executable %r"
- % (name,))
- if p.relto(self.envconfig.envdir):
- return p
+ raise tox.exception.InvocationError(
+ "could not find executable %r" % (name,))
+ # p is not found in virtualenv script/bin dir
if venv:
- self.session.report.warning(
- "test command found but not installed in testenv\n"
- " cmd: %s\n"
- " env: %s\n"
- "Maybe forgot to specify a dependency?" % (p,
- self.envconfig.envdir))
+ if not self.is_allowed_external(p):
+ self.session.report.warning(
+ "test command found but not installed in testenv\n"
+ " cmd: %s\n"
+ " env: %s\n"
+ "Maybe forgot to specify a dependency?" % (p,
+ self.envconfig.envdir))
return str(p) # will not be rewritten for reporting
+ def is_allowed_external(self, p):
+ tryadd = [""]
+ if sys.platform == "win32":
+ tryadd += [os.path.normcase(x)
+ for x in os.environ['PATHEXT'].split(os.pathsep)]
+ p = py.path.local(os.path.normcase(str(p)))
+ for x in self.envconfig.whitelist_externals:
+ for add in tryadd:
+ if p.fnmatch(x + add):
+ return True
+ return False
+
def _ispython3(self):
return "python3" in str(self.envconfig.basepython)
@@ -162,8 +179,10 @@
venvscript = path.rstrip("co")
#venvscript = py.path.local(tox.__file__).dirpath("virtualenv.py")
args = [config_interpreter, venvscript]
- if not self._ispython3() and self.envconfig.distribute:
- args.append('--distribute')
+ if self.envconfig.distribute:
+ args.append("--distribute")
+ else:
+ args.append("--setuptools")
if self.envconfig.sitepackages:
args.append('--system-site-packages')
#if sys.platform == "win32":
@@ -267,7 +286,8 @@
self.session.make_emptydir(self.envconfig.envtmpdir)
cwd = self.envconfig.changedir
for i, argv in enumerate(self.envconfig.commands):
- action.setactivity("runtests", "commands[%s]" % i)
+ message = "commands[%s] | %s" % (i, ' '.join(argv))
+ action.setactivity("runtests", message)
try:
self._pcall(argv, cwd=cwd, action=action, redirect=redirect)
except tox.exception.InvocationError:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/tox.egg-info/PKG-INFO new/tox-1.5.0/tox.egg-info/PKG-INFO
--- old/tox-1.4.3/tox.egg-info/PKG-INFO 2013-03-01 07:39:20.000000000 +0100
+++ new/tox-1.5.0/tox.egg-info/PKG-INFO 2013-06-22 15:00:49.000000000 +0200
@@ -1,33 +1,38 @@
Metadata-Version: 1.1
Name: tox
-Version: 1.4.3
+Version: 1.5.0
Summary: virtualenv-based automation of test activities
Home-page: http://tox.testrun.org/
Author: holger krekel
Author-email: holger(a)merlinux.eu
-License: GPLv2 or later
+License: http://opensource.org/licenses/MIT
Description:
What is Tox?
- ==========================
+ --------------------
- Tox as is a generic virtualenv management and test command line tool you can
- use for:
+ Tox as is a generic virtualenv_ management and test command line tool you can use for:
- * checking your package installs correctly with different
- Python versions and interpreters
+ * checking your package installs correctly with different Python versions and
+ interpreters
- * running your tests in each of the
- environments, configuring your test tool of choice
+ * running your tests in each of the environments, configuring your test tool of choice
- * acting as a frontend to Continuous Integration
- servers, greatly reducing boilerplate and merging
- CI and shell-based testing.
+ * acting as a frontend to Continuous Integration servers, greatly
+ reducing boilerplate and merging CI and shell-based testing.
- For more information, docs and many examples please checkout the `home page`_:
+ For more information and the repository please checkout:
- http://tox.testrun.org/
+ - homepage: http://tox.testrun.org
+
+ - repository: https://bitbucket.org/hpk42/tox
+
+ have fun,
+
+
+ have fun,
+
+ holger krekel, May 2013
- .. _`home page`: http://tox.testrun.org/
Platform: unix
Platform: linux
@@ -36,7 +41,7 @@
Platform: win32
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: MacOS :: MacOS X
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/tox.egg-info/SOURCES.txt new/tox-1.5.0/tox.egg-info/SOURCES.txt
--- old/tox-1.4.3/tox.egg-info/SOURCES.txt 2013-03-01 07:39:20.000000000 +0100
+++ new/tox-1.5.0/tox.egg-info/SOURCES.txt 2013-06-22 15:00:49.000000000 +0200
@@ -3,7 +3,7 @@
ISSUES.txt
LICENSE
MANIFEST.in
-README.txt
+README.rst
setup.py
tox.ini
toxbootstrap.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/tox.egg-info/requires.txt new/tox-1.5.0/tox.egg-info/requires.txt
--- old/tox-1.4.3/tox.egg-info/requires.txt 2013-03-01 07:39:20.000000000 +0100
+++ new/tox-1.5.0/tox.egg-info/requires.txt 2013-06-22 15:00:49.000000000 +0200
@@ -1,2 +1,2 @@
-virtualenv>=1.8.4
-py>=1.4.12
\ No newline at end of file
+virtualenv>=1.9.1
+py>=1.4.15
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/tox.ini new/tox-1.5.0/tox.ini
--- old/tox-1.4.3/tox.ini 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/tox.ini 2013-06-22 15:00:49.000000000 +0200
@@ -1,20 +1,22 @@
[tox]
envlist=py27,py26,py25,py32,py33,docs,pypy
-indexserver =
- testrun = http://pypi.testrun.org
- pypi = https://pypi.python.org/simple
[testenv:X]
commands=echo {posargs}
[testenv]
-commands=py.test --junitxml={envlogdir}/junit-{envname}.xml {posargs}
+commands=py.test --instafail --junitxml={envlogdir}/junit-{envname}.xml {posargs}
deps=pytest==2.3.4
+ pytest-instafail
+
+[testenv:py25]
+setenvs =
+ PIP_INSECURE=True
[testenv:docs]
basepython=python
changedir=doc
-deps=:pypi:sphinx
+deps=sphinx
{[testenv]deps}
commands=
py.test -v \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tox-1.4.3/toxbootstrap.py new/tox-1.5.0/toxbootstrap.py
--- old/tox-1.4.3/toxbootstrap.py 2013-03-01 07:39:14.000000000 +0100
+++ new/tox-1.5.0/toxbootstrap.py 2013-06-22 15:00:49.000000000 +0200
@@ -58,7 +58,7 @@
"""
-__version__ = '1.4.3.dev6'
+__version__ = '1.5.0'
import sys
import os
@@ -192,7 +192,7 @@
# XXX: we use --no-site-packages because: if tox is installed in global
# site-packages, then pip will not install it locally. ideal fix for
# this should be to first look for tox in the global scripts/ directory
- run('%s virtualenv.py --no-site-packages --distribute %s' %
+ run('%s virtualenv.py --no-site-packages --setuptools %s' %
(sys.executable, TENV))
logging.info("removing virtualenv.py script after bootstrap venv creation")
for x in ('', 'o', 'c'):
@@ -209,11 +209,6 @@
# install/upgrade tox itself
if USETOXDEV:
- if 'PIP_DOWNLOAD_CACHE' in os.environ:
- cache = ""
- else:
- cache = "--download-cache=_download"
- ensuredir('_download')
run('%s install -q -i http://pypi.testrun.org '
'--upgrade %s tox' % (pip, cache))
elif any([
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
29 Jun '13
Hello community,
here is the log from the commit of package python-sphinxcontrib-issuetracker for openSUSE:Factory checked in at 2013-06-29 14:34:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-sphinxcontrib-issuetracker (Old)
and /work/SRC/openSUSE:Factory/.python-sphinxcontrib-issuetracker.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-sphinxcontrib-issuetracker"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-sphinxcontrib-issuetracker/python-sphinxcontrib-issuetracker.changes 2013-01-20 08:18:21.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-sphinxcontrib-issuetracker.new/python-sphinxcontrib-issuetracker.changes 2013-06-29 14:34:56.000000000 +0200
@@ -1,0 +2,8 @@
+Tue Jun 25 11:47:11 UTC 2013 - dmueller(a)suse.com
+
+- update to 0.11:
+ - Send proper user agent in API requests
+ - #4: Respect Github rate limits
+ - #5: Fix compatibility with requests 1.0
+
+-------------------------------------------------------------------
New:
----
sphinxcontrib-issuetracker-0.11.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-sphinxcontrib-issuetracker.spec ++++++
--- /var/tmp/diff_new_pack.gdkdOs/_old 2013-06-29 14:34:57.000000000 +0200
+++ /var/tmp/diff_new_pack.gdkdOs/_new 2013-06-29 14:34:57.000000000 +0200
@@ -17,7 +17,7 @@
Name: python-sphinxcontrib-issuetracker
-Version: 0.10.1
+Version: 0.11
Release: 0
Url: http://packages.python.org/sphinxcontrib-issuetracker
Summary: Sphinx integration with different issuetrackers
@@ -29,8 +29,8 @@
BuildRequires: python-devel
BuildRequires: python-distribute
BuildRequires: python-requests
-Requires: python-Sphinx
-Requires: python-requests
+Requires: python-Sphinx >= 1.1
+Requires: python-requests >= 1.1
%if 0%{?suse_version} && 0%{?suse_version} <= 1110
%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
%else
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package python-py for openSUSE:Factory checked in at 2013-06-29 14:33:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-py (Old)
and /work/SRC/openSUSE:Factory/.python-py.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-py"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-py/python-py.changes 2013-06-05 13:35:55.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-py.new/python-py.changes 2013-06-29 14:33:51.000000000 +0200
@@ -1,0 +2,9 @@
+Tue Jun 25 11:45:11 UTC 2013 - dmueller(a)suse.com
+
+- update to 1.4.15:
+ - majorly speed up some common calling patterns with
+ LocalPath.listdir()/join/check/stat functions considerably.
+ - fix an edge case with fnmatch where a glob style pattern appeared
+ in an absolute path.
+
+-------------------------------------------------------------------
Old:
----
py-1.4.14.tar.gz
New:
----
py-1.4.15.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-py.spec ++++++
--- /var/tmp/diff_new_pack.kzwpX8/_old 2013-06-29 14:33:51.000000000 +0200
+++ /var/tmp/diff_new_pack.kzwpX8/_new 2013-06-29 14:33:51.000000000 +0200
@@ -17,7 +17,7 @@
Name: python-py
-Version: 1.4.14
+Version: 1.4.15
Release: 0
Summary: Library with cross-python path, ini-parsing, io, code, log facilities
License: MIT
++++++ py-1.4.14.tar.gz -> py-1.4.15.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py-1.4.14/CHANGELOG new/py-1.4.15/CHANGELOG
--- old/py-1.4.14/CHANGELOG 2013-05-07 10:40:23.000000000 +0200
+++ new/py-1.4.15/CHANGELOG 2013-06-21 16:36:31.000000000 +0200
@@ -1,3 +1,12 @@
+Changes between 1.4.14 and 1.4.15
+==================================================
+
+- majorly speed up some common calling patterns with
+ LocalPath.listdir()/join/check/stat functions considerably.
+
+- fix an edge case with fnmatch where a glob style pattern appeared
+ in an absolute path.
+
Changes between 1.4.13 and 1.4.14
==================================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py-1.4.14/PKG-INFO new/py-1.4.15/PKG-INFO
--- old/py-1.4.14/PKG-INFO 2013-05-07 10:40:24.000000000 +0200
+++ new/py-1.4.15/PKG-INFO 2013-06-21 16:36:31.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: py
-Version: 1.4.14
+Version: 1.4.15
Summary: library with cross-python path, ini-parsing, io, code, log facilities
Home-page: http://pylib.readthedocs.org/
Author: holger krekel, Ronny Pfannschmidt, Benjamin Peterson and others
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py-1.4.14/doc/install.txt new/py-1.4.15/doc/install.txt
--- old/py-1.4.14/doc/install.txt 2013-05-07 10:40:23.000000000 +0200
+++ new/py-1.4.15/doc/install.txt 2013-06-21 16:36:31.000000000 +0200
@@ -7,7 +7,7 @@
**PyPI name**: py_
-**Pythons**: 2.5, 2.6, 2.7, 3.0, 3.1.x, Jython-2.5.1, PyPy-1.3
+**Pythons**: 2.5, 2.6, 2.7, 3.2, 3.3, Jython-2.5.1, PyPy-2.0
**Operating systems**: Linux, Windows, OSX, Unix
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py-1.4.14/doc/log.txt new/py-1.4.15/doc/log.txt
--- old/py-1.4.14/doc/log.txt 2013-05-07 10:40:23.000000000 +0200
+++ new/py-1.4.15/doc/log.txt 2013-06-21 16:36:31.000000000 +0200
@@ -163,7 +163,7 @@
Each log producer may have at most one log consumer associated with
it. A log producer gets associated with a log consumer through a
-``py.log.set_consumer()`` call. That function accepts two arguments,
+``py.log.setconsumer()`` call. That function accepts two arguments,
the first identifying a producer (a tuple of keyword strings or a single
space-separated string of keywords), the second specifying the precise
consumer to use for that producer. Until this function is called for a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py-1.4.14/py/__init__.py new/py-1.4.15/py/__init__.py
--- old/py-1.4.14/py/__init__.py 2013-05-07 10:40:23.000000000 +0200
+++ new/py-1.4.15/py/__init__.py 2013-06-21 16:36:31.000000000 +0200
@@ -8,7 +8,7 @@
(c) Holger Krekel and others, 2004-2013
"""
-__version__ = '1.4.14'
+__version__ = '1.4.15'
from py import _apipkg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py-1.4.14/py/_path/common.py new/py-1.4.15/py/_path/common.py
--- old/py-1.4.14/py/_path/common.py 2013-05-07 10:40:23.000000000 +0200
+++ new/py-1.4.15/py/_path/common.py 2013-06-21 16:36:31.000000000 +0200
@@ -364,12 +364,14 @@
class FNMatcher:
def __init__(self, pattern):
self.pattern = pattern
+
def __call__(self, path):
pattern = self.pattern
if pattern.find(path.sep) == -1:
name = path.basename
else:
name = str(path) # path.strpath # XXX svn?
- pattern = '*' + path.sep + pattern
+ if not os.path.isabs(pattern):
+ pattern = '*' + path.sep + pattern
return py.std.fnmatch.fnmatch(name, pattern)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py-1.4.14/py/_path/local.py new/py-1.4.15/py/_path/local.py
--- old/py-1.4.14/py/_path/local.py 2013-05-07 10:40:23.000000000 +0200
+++ new/py-1.4.15/py/_path/local.py 2013-06-21 16:36:31.000000000 +0200
@@ -4,9 +4,18 @@
import sys, os, stat, re, atexit
import py
from py._path import common
+from stat import S_ISLNK, S_ISDIR, S_ISREG
+
+from os.path import normpath, isabs, exists, isdir, isfile
iswin32 = sys.platform == "win32" or (getattr(os, '_name', False) == 'nt')
+if sys.version_info > (3,0):
+ def map_as_list(func, iter):
+ return list(map(func, iter))
+else:
+ map_as_list = map
+
class Stat(object):
def __getattr__(self, name):
return getattr(self._osstatresult, "st_" + name)
@@ -33,14 +42,14 @@
return entry[0]
def isdir(self):
- return stat.S_ISDIR(self.mode)
+ return S_ISDIR(self._osstatresult.st_mode)
def isfile(self):
- return stat.S_ISREG(self.mode)
+ return S_ISREG(self._osstatresult.st_mode)
def islink(self):
st = self.path.lstat()
- return stat.S_ISLNK(st.mode)
+ return S_ISLNK(self._osstatresult.st_mode)
class PosixPath(common.PathBase):
def chown(self, user, group, rec=0):
@@ -112,17 +121,17 @@
return self._statcache
def dir(self):
- return stat.S_ISDIR(self._stat().mode)
+ return S_ISDIR(self._stat().mode)
def file(self):
- return stat.S_ISREG(self._stat().mode)
+ return S_ISREG(self._stat().mode)
def exists(self):
return self._stat()
def link(self):
st = self.path.lstat()
- return stat.S_ISLNK(st.mode)
+ return S_ISLNK(st.mode)
def __init__(self, path=None):
""" Initialize and return a local Path instance.
@@ -138,7 +147,7 @@
elif isinstance(path, common.PathBase):
self.strpath = path.strpath
elif isinstance(path, py.builtin._basestring):
- self.strpath = os.path.abspath(os.path.normpath(str(path)))
+ self.strpath = os.path.abspath(normpath(str(path)))
else:
raise ValueError("can only pass None, Path instances "
"or non-empty strings to LocalPath")
@@ -226,6 +235,9 @@
xxx ext
"""
obj = object.__new__(self.__class__)
+ if not kw:
+ obj.strpath = self.strpath
+ return obj
drive, dirname, basename, purebasename,ext = self._getbyspec(
"drive,dirname,basename,purebasename,ext")
if 'basename' in kw:
@@ -247,7 +259,7 @@
else:
kw.setdefault('dirname', dirname)
kw.setdefault('sep', self.sep)
- obj.strpath = os.path.normpath(
+ obj.strpath = normpath(
"%(dirname)s%(sep)s%(basename)s" % kw)
return obj
@@ -286,46 +298,69 @@
components. if abs=1 is used restart from root if any
of the args is an absolute path.
"""
- if not args:
- return self
- strpath = self.strpath
sep = self.sep
- strargs = [str(x) for x in args]
- if kwargs.get('abs', 0):
- for i in range(len(strargs)-1, -1, -1):
- if os.path.isabs(strargs[i]):
- strpath = strargs[i]
- strargs = strargs[i+1:]
+ strargs = map_as_list(str, args)
+ strpath = self.strpath
+ if kwargs.get('abs'):
+ newargs = []
+ for arg in reversed(strargs):
+ if isabs(arg):
+ strpath = arg
+ strargs = newargs
break
+ newargs.insert(0, arg)
for arg in strargs:
arg = arg.strip(sep)
if iswin32:
# allow unix style paths even on windows.
arg = arg.strip('/')
arg = arg.replace('/', sep)
- if arg:
- if not strpath.endswith(sep):
- strpath += sep
- strpath += arg
- obj = self.new()
- obj.strpath = os.path.normpath(strpath)
+ strpath = strpath + sep + arg
+ obj = object.__new__(self.__class__)
+ obj.strpath = normpath(strpath)
return obj
def open(self, mode='r'):
""" return an opened file with the given mode. """
return py.error.checked_call(open, self.strpath, mode)
+ def _fastjoin(self, name):
+ child = object.__new__(self.__class__)
+ child.strpath = self.strpath + self.sep + name
+ return child
+
+ _fastcheck = set("file dir link")
+ def check(self, **kw):
+ if not kw:
+ return exists(self.strpath)
+ if len(kw) == 1:
+ if "dir" in kw:
+ return not kw["dir"] ^ isdir(self.strpath)
+ if "file" in kw:
+ return not kw["file"] ^ isfile(self.strpath)
+ return super(LocalPath, self).check(**kw)
+
+ _patternchars = set("*?[" + os.path.sep)
def listdir(self, fil=None, sort=None):
""" list directory contents, possibly filter by the given fil func
and possibly sorted.
"""
+ if fil is None and sort is None:
+ names = py.error.checked_call(os.listdir, self.strpath)
+ return map_as_list(self._fastjoin, names)
if isinstance(fil, str):
+ if not self._patternchars.intersection(fil):
+ child = self._fastjoin(fil)
+ if os.path.exists(child.strpath):
+ return [child]
+ return []
fil = common.FNMatcher(fil)
+ names = py.error.checked_call(os.listdir, self.strpath)
res = []
- for name in py.error.checked_call(os.listdir, self.strpath):
- childurl = self.join(name)
- if fil is None or fil(childurl):
- res.append(childurl)
+ for name in names:
+ child = self._fastjoin(name)
+ if fil is None or fil(child):
+ res.append(child)
self._sortlist(res, sort)
return res
@@ -587,9 +622,9 @@
The process is directly invoked and not through a system shell.
"""
from subprocess import Popen, PIPE
- argv = map(str, argv)
+ argv = map_as_list(str, argv)
popen_opts['stdout'] = popen_opts['stderr'] = PIPE
- proc = Popen([str(self)] + list(argv), **popen_opts)
+ proc = Popen([str(self)] + argv, **popen_opts)
stdout, stderr = proc.communicate()
ret = proc.wait()
if py.builtin._isbytes(stdout):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py-1.4.14/py.egg-info/PKG-INFO new/py-1.4.15/py.egg-info/PKG-INFO
--- old/py-1.4.14/py.egg-info/PKG-INFO 2013-05-07 10:40:23.000000000 +0200
+++ new/py-1.4.15/py.egg-info/PKG-INFO 2013-06-21 16:36:31.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: py
-Version: 1.4.14
+Version: 1.4.15
Summary: library with cross-python path, ini-parsing, io, code, log facilities
Home-page: http://pylib.readthedocs.org/
Author: holger krekel, Ronny Pfannschmidt, Benjamin Peterson and others
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py-1.4.14/setup.py new/py-1.4.15/setup.py
--- old/py-1.4.14/setup.py 2013-05-07 10:40:23.000000000 +0200
+++ new/py-1.4.15/setup.py 2013-06-21 16:36:31.000000000 +0200
@@ -12,7 +12,7 @@
name='py',
description='library with cross-python path, ini-parsing, io, code, log facilities',
long_description = open('README.txt').read(),
- version='1.4.14',
+ version='1.4.15',
url='http://pylib.readthedocs.org/',
license='MIT license',
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py-1.4.14/testing/path/test_local.py new/py-1.4.15/testing/path/test_local.py
--- old/py-1.4.14/testing/path/test_local.py 2013-05-07 10:40:23.000000000 +0200
+++ new/py-1.4.15/testing/path/test_local.py 2013-06-21 16:36:31.000000000 +0200
@@ -221,6 +221,12 @@
# check that breadth comes last
assert l[0] == p1
+ def test_fnmatch_file_abspath(self, tmpdir):
+ b = tmpdir.join("a", "b")
+ assert b.fnmatch(os.sep.join("ab"))
+ pattern = os.sep.join([str(tmpdir), "*", "b"])
+ assert b.fnmatch(pattern)
+
def test_sysfind(self):
name = sys.platform == "win32" and "cmd" or "test"
x = py.path.local.sysfind(name)
@@ -454,6 +460,10 @@
p2 = p.__class__(str(p).upper())
assert p1.samefile(p2)
+def test_listdir_single_arg(tmpdir):
+ tmpdir.ensure("hello")
+ assert tmpdir.listdir("hello")[0].basename == "hello"
+
def test_mkdtemp_rootdir(tmpdir):
dtmp = local.mkdtemp(rootdir=tmpdir)
assert tmpdir.listdir() == [dtmp]
@@ -640,7 +650,7 @@
def test_join_to_root(self, path1):
root = path1.parts()[0]
assert len(str(root)) == 1
- assert str(root.join('a')) == '/a'
+ assert str(root.join('a')) == '//a' # posix allows two slashes
def test_join_root_to_root_with_no_abs(self, path1):
nroot = path1.join('/')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py-1.4.14/tox.ini new/py-1.4.15/tox.ini
--- old/py-1.4.14/tox.ini 2013-05-07 10:40:23.000000000 +0200
+++ new/py-1.4.15/tox.ini 2013-06-21 16:36:31.000000000 +0200
@@ -1,5 +1,5 @@
[tox]
-envlist=py26,py27,py31,py32,py33,py27-xdist,py25
+envlist=py26,py27,py32,py33,py27-xdist,py25
#indexserver=
# default=http://pypi.testrun.org
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package python-psycopg2 for openSUSE:Factory checked in at 2013-06-29 14:33:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-psycopg2 (Old)
and /work/SRC/openSUSE:Factory/.python-psycopg2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-psycopg2"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-psycopg2/python-psycopg2.changes 2013-04-24 16:11:47.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-psycopg2.new/python-psycopg2.changes 2013-06-29 14:33:46.000000000 +0200
@@ -1,0 +2,11 @@
+Tue Jun 25 11:41:28 UTC 2013 - dmueller(a)suse.com
+
+- update to 2.5.1:
+ - Fixed build on Solaris 10 and 11 where the round() function is already
+ declared (:ticket:`#146`).
+ - Fixed comparison of `Range` with non-range objects (:ticket:`#164`).
+ Thanks to Chris Withers for the patch.
+ - Fixed double-free on connection dealloc (:ticket:`#166`). Thanks to
+ Gangadharan S.A. for the report and fix suggestion.
+
+-------------------------------------------------------------------
Old:
----
psycopg2-2.5.tar.gz
New:
----
psycopg2-2.5.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-psycopg2.spec ++++++
--- /var/tmp/diff_new_pack.WDep8s/_old 2013-06-29 14:33:47.000000000 +0200
+++ /var/tmp/diff_new_pack.WDep8s/_new 2013-06-29 14:33:47.000000000 +0200
@@ -17,7 +17,7 @@
Name: python-psycopg2
-Version: 2.5
+Version: 2.5.1
Release: 0
License: LGPL-3.0+ and (LGPL-3.0+ or ZPL-2.0) and SUSE-GPL-2.0-with-openssl-exception
Summary: Python-PostgreSQL Database Adapter
++++++ psycopg2-2.5.tar.gz -> psycopg2-2.5.1.tar.gz ++++++
++++ 4801 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package python-pecan for openSUSE:Factory checked in at 2013-06-29 14:33:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pecan (Old)
and /work/SRC/openSUSE:Factory/.python-pecan.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pecan"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pecan/python-pecan.changes 2013-03-08 09:47:05.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-pecan.new/python-pecan.changes 2013-06-29 14:33:23.000000000 +0200
@@ -1,0 +2,6 @@
+Tue Jun 25 11:40:11 UTC 2013 - dmueller(a)suse.com
+
+- Update to version 0.3.0:
+ + New upstream release
+
+-------------------------------------------------------------------
Old:
----
pecan-0.2.1.tar.gz
New:
----
pecan-0.3.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pecan.spec ++++++
--- /var/tmp/diff_new_pack.Ze3imR/_old 2013-06-29 14:33:23.000000000 +0200
+++ /var/tmp/diff_new_pack.Ze3imR/_new 2013-06-29 14:33:23.000000000 +0200
@@ -17,7 +17,7 @@
Name: python-pecan
-Version: 0.2.1
+Version: 0.3.0
Release: 0
Summary: A WSGI object-dispatching web framework, designed to be lean and fast
License: BSD-3-Clause
@@ -35,10 +35,12 @@
#BuildRequires: python-gunicorn
#BuildRequires: python-simplegeneric >= 0.8
#BuildRequires: python-virtualenv
-Requires: python-Mako >= 0.4.0
-Requires: python-WebOb >= 1.2dev
-Requires: python-WebTest >= 1.3.1
-Requires: python-simplegeneric >= 0.8
+BuildRequires: python-six
+Requires: python-Mako >= 0.6.2
+Requires: python-MarkupSafe >= 0.15
+Requires: python-WebOb >= 1.2b3
+Requires: python-WebTest >= 1.3.3
+Requires: python-simplegeneric >= 0.8.1
Suggests: python-Jinja2
Suggests: python-Genshi
Suggests: python-gunicorn
++++++ pecan-0.2.1.tar.gz -> pecan-0.3.0.tar.gz ++++++
++++ 9019 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package python-Mako for openSUSE:Factory checked in at 2013-06-29 14:33:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Mako (Old)
and /work/SRC/openSUSE:Factory/.python-Mako.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Mako"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Mako/python-Mako.changes 2012-11-30 12:30:01.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-Mako.new/python-Mako.changes 2013-06-29 14:33:14.000000000 +0200
@@ -1,0 +2,48 @@
+Tue Jun 25 11:58:53 UTC 2013 - dmueller(a)suse.com
+
+- update to 0.8.1:
+ - [bug] Changed setup.py to skip installing markupsafe
+ if Python version is < 2.6 or is between 3.0 and
+ less than 3.3, as Markupsafe now only supports 2.6->2.X,
+ 3.3->3.X. [ticket:216]
+
+ - [bug] Fixed regression where "entity" filter wasn't
+ converted for py3k properly (added tests.)
+ [ticket:214]
+
+ - [bug] Fixed bug where mako-render script wasn't
+ compatible with Py3k. [ticket:212]
+
+ - [bug] Cleaned up all the various deprecation/
+ file warnings when running the tests under
+ various Pythons with warnings turned on.
+ [ticket:213]
+
+ - [feature] Performance improvement to the
+ "legacy" HTML escape feature, used for XML
+ escaping and when markupsafe isn't present,
+ courtesy George Xie.
+
+ - [bug] Fixed bug whereby an exception in Python 3
+ against a module compiled to the filesystem would
+ fail trying to produce a RichTraceback due to the
+ content being in bytes. [ticket:209]
+
+ - [bug] Change default for compile()->reserved_names
+ from tuple to frozenset, as this is expected to be
+ a set by default. [ticket:208]
+
+ - [feature] Code has been reworked to support Python 2.4->
+ Python 3.xx in place. 2to3 no longer needed.
+
+ - [feature] Added lexer_cls argument to Template,
+ TemplateLookup, allows alternate Lexer classes
+ to be used.
+
+ - [feature] Added future_imports parameter to Template
+ and TemplateLookup, renders the __future__ header
+ with desired capabilities at the top of the generated
+ template module. Courtesy Ben Trofatter.
+
+
+-------------------------------------------------------------------
Old:
----
Mako-0.7.3.tar.gz
New:
----
Mako-0.8.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-Mako.spec ++++++
--- /var/tmp/diff_new_pack.RoCm0D/_old 2013-06-29 14:33:15.000000000 +0200
+++ /var/tmp/diff_new_pack.RoCm0D/_new 2013-06-29 14:33:15.000000000 +0200
@@ -17,7 +17,7 @@
Name: python-Mako
-Version: 0.7.3
+Version: 0.8.1
Release: 0
Url: http://www.makotemplates.org/
Summary: A super-fast Python templating language
++++++ Mako-0.7.3.tar.gz -> Mako-0.8.1.tar.gz ++++++
++++ 6711 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package python-distribute for openSUSE:Factory checked in at 2013-06-29 14:33:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-distribute (Old)
and /work/SRC/openSUSE:Factory/.python-distribute.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-distribute"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-distribute/python-distribute.changes 2013-06-19 17:01:34.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-distribute.new/python-distribute.changes 2013-06-29 14:33:02.000000000 +0200
@@ -1,0 +2,7 @@
+Tue Jun 25 08:51:21 UTC 2013 - speilicke(a)suse.com
+
+- Only provide/obsolete setuptools up to version 0.6.45. Distribute merged
+ into setuptools-0.7.x. Thus, setuptools will raised from the grave and
+ obsolete this package instead
+
+-------------------------------------------------------------------
@@ -5 +12 @@
- * Issue #379: ``distribute_setup.py`` now traps VersionConflict as well,
+ * Issue #379: distribute_setup.py now traps VersionConflict as well,
@@ -7 +14 @@
- * ``distribute_setup.py`` has been updated to allow Setuptools 0.7 to
+ * distribute_setup.py has been updated to allow Setuptools 0.7 to
@@ -14,2 +21,2 @@
- the private method `_zip_directory_cache`.
- * Added a new function ``easy_install.get_win_launcher`` which may be used by
+ the private method _zip_directory_cache.
+ * Added a new function easy_install.get_win_launcher which may be used by
@@ -30,2 +37,2 @@
- in `this Microsoft article
- <http://technet.microsoft.com/en-us/library/cc709628%28WS.10%29.aspx>`_.
+ in this Microsoft article
+ <http://technet.microsoft.com/en-us/library/cc709628%28WS.10%29.aspx>_.
@@ -63 +70 @@
- * Issue #336: `setup.py` no longer masks failure exit code when tests fail.
+ * Issue #336: setup.py no longer masks failure exit code when tests fail.
@@ -71 +78 @@
- * Issue #335: Backed out `setup_requires` superceding installed requirements
+ * Issue #335: Backed out setup_requires superceding installed requirements
@@ -90 +97 @@
- * Issue #323: Allow `setup_requires` requirements to supercede installed
+ * Issue #323: Allow setup_requires requirements to supercede installed
@@ -112 +119 @@
- * If Sphinx is installed, the `upload_docs` command now runs `build_sphinx`
+ * If Sphinx is installed, the upload_docs command now runs build_sphinx
@@ -114 +121 @@
- * Issue #326: `upload_docs` provided mangled auth credentials under Python 3.
+ * Issue #326: upload_docs provided mangled auth credentials under Python 3.
@@ -131,2 +138,2 @@
- * Issue #218: Improved documentation on behavior of `package_data` and
- `include_package_data`. Files indicated by `package_data` are now included
+ * Issue #218: Improved documentation on behavior of package_data and
+ include_package_data. Files indicated by package_data are now included
@@ -134 +141 @@
- * `distribute_setup.py` now allows a `--download-base` argument for retrieving
+ * distribute_setup.py now allows a --download-base argument for retrieving
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-distribute.spec ++++++
--- /var/tmp/diff_new_pack.CzDQko/_old 2013-06-29 14:33:02.000000000 +0200
+++ /var/tmp/diff_new_pack.CzDQko/_new 2013-06-29 14:33:02.000000000 +0200
@@ -16,25 +16,22 @@
#
-%define modname distribute
-%define mod2nam setuptools
-Name: python-%{modname}
+Name: python-distribute
Version: 0.6.45
Release: 0
Url: http://packages.python.org/distribute
Summary: Easily download, build, install, upgrade, and uninstall Python packages
License: Python-2.0 or ZPL-2.0
Group: Development/Languages/Python
-Source: http://pypi.python.org/packages/source/d/%{modname}/%{modname}-%{version}.t…
+Source: http://pypi.python.org/packages/source/d/distribute/distribute-%{version}.t…
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: python-devel
-Provides: python-setuptools = %{version}
-Obsoletes: python-setuptools < %{version}
+Provides: python-setuptools = 0.6.45
+Obsoletes: python-setuptools < 0.6.45
%if 0%{?suse_version} && 0%{?suse_version} <= 1110
%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
%else
BuildArch: noarch
-%py_requires
%endif
%description
@@ -44,17 +41,17 @@
with Python module distributions.
%prep
-%setup -q -n %{modname}-%{version}
-rm -f %{modname}.egg-info/*.orig
-chmod -x {.,docs}/*.txt # Fix executable bits for documentation
+%setup -q -n distribute-%{version}
+#rm -f distribute.egg-info/*.orig
+#chmod -x {.,docs}/*.txt # Fix executable bits for documentation
%build
python setup.py build
%install
python setup.py install --prefix=%{_prefix} --root=%{buildroot}
-rm -rf %{buildroot}%{python_sitelib}/%{mod2nam}/tests # Don't install tests
-rm -rf %{buildroot}%{python_sitelib}/%{mod2nam}/*.exe # Remove unneeded files
+#rm -rf %{buildroot}%{python_sitelib}/setuptools/tests # Don't install tests
+#rm -rf %{buildroot}%{python_sitelib}/setuptools/*.exe # Remove unneeded files
## tests don't work without network access
##%if 0%{?suse_version} <= 1201
@@ -70,9 +67,9 @@
%{python_sitelib}/easy_install.py*
%{python_sitelib}/pkg_resources.py*
%{python_sitelib}/_markerlib/
-%{python_sitelib}/%{mod2nam}.pth
-%{python_sitelib}/%{mod2nam}/
-%{python_sitelib}/%{modname}-%{version}-py%{py_ver}.egg-info/
-%{python_sitelib}/%{mod2nam}-*-py%{py_ver}.egg-info
+%{python_sitelib}/setuptools.pth
+%{python_sitelib}/setuptools/
+%{python_sitelib}/distribute-%{version}-py%{py_ver}.egg-info/
+%{python_sitelib}/setuptools-*-py%{py_ver}.egg-info
%changelog
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package python-cliff for openSUSE:Factory checked in at 2013-06-29 14:32:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-cliff (Old)
and /work/SRC/openSUSE:Factory/.python-cliff.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-cliff"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-cliff/python-cliff.changes 2013-05-13 15:25:24.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-cliff.new/python-cliff.changes 2013-06-29 14:32:37.000000000 +0200
@@ -1,0 +2,6 @@
+Thu Jun 27 10:02:03 UTC 2013 - speilicke(a)suse.com
+
+- Update to version 1.4:
+ + Upstream provides no changelog
+
+-------------------------------------------------------------------
Old:
----
cliff-1.3.3.tar.gz
New:
----
cliff-1.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-cliff.spec ++++++
--- /var/tmp/diff_new_pack.TpFUoL/_old 2013-06-29 14:32:37.000000000 +0200
+++ /var/tmp/diff_new_pack.TpFUoL/_new 2013-06-29 14:32:37.000000000 +0200
@@ -17,7 +17,7 @@
Name: python-cliff
-Version: 1.3.3
+Version: 1.4
Release: 0
Url: https://github.com/dreamhost/cliff
Summary: Command Line Interface Formulation Framework
++++++ cliff-1.3.3.tar.gz -> cliff-1.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.3.3/MANIFEST.in new/cliff-1.4/MANIFEST.in
--- old/cliff-1.3.3/MANIFEST.in 2012-06-20 22:53:43.000000000 +0200
+++ new/cliff-1.4/MANIFEST.in 2013-06-11 19:53:50.000000000 +0200
@@ -1,5 +1,4 @@
include setup.py
-include distribute_setup.py
recursive-include docs *.rst *.py *.html *.css *.js *.png *.txt
recursive-include demoapp *.py
recursive-include tests *.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.3.3/PKG-INFO new/cliff-1.4/PKG-INFO
--- old/cliff-1.3.3/PKG-INFO 2013-05-02 20:23:39.000000000 +0200
+++ new/cliff-1.4/PKG-INFO 2013-06-11 20:05:50.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: cliff
-Version: 1.3.3
+Version: 1.4
Summary: Command Line Interface Formulation Framework
Home-page: https://github.com/dreamhost/cliff
Author: Doug Hellmann
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.3.3/announce.rst new/cliff-1.4/announce.rst
--- old/cliff-1.3.3/announce.rst 2013-04-02 21:55:37.000000000 +0200
+++ new/cliff-1.4/announce.rst 2013-06-11 20:04:38.000000000 +0200
@@ -1,6 +1,6 @@
-========================================================================
- cliff -- Command Line Interface Formulation Framework -- version 1.3.2
-========================================================================
+======================================================================
+ cliff -- Command Line Interface Formulation Framework -- version 1.4
+======================================================================
.. tags:: python cliff release DreamHost
@@ -11,15 +11,12 @@
What's New In This Release?
===========================
-- Add ``convert_underscores`` parameter to ``CommandManager``
- ``__init__`` method to allow underscores to be used in command
- names. This optional argument is defaulted to True to maintain
- current behavior. (contributed by Joe Server)
-- Use flake8_ for style checking.
-- Relax version requirement for PrettyTable dependency to allow point
- releases of 0.7.
-
-.. _flake8: https://pypi.python.org/pypi/flake8
+- Store a reference to the InteractiveApp on the App while in
+ interactive mode to allow commands to update the interactive
+ state. (Contributed by Tomaz Muraus)
+- Remove reliance on distribute, now that it has merged with
+ setuptools 0.7. Providing an explicit dependency on setuptools
+ breaks updates in some cases, so just fail if it isn't there.
Documentation
=============
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.3.3/cliff/app.py new/cliff-1.4/cliff/app.py
--- old/cliff-1.3.3/cliff/app.py 2013-03-16 18:57:02.000000000 +0100
+++ new/cliff-1.4/cliff/app.py 2013-05-31 21:19:25.000000000 +0200
@@ -73,6 +73,7 @@
self.interactive_app_factory = interactive_app_factory
self.parser = self.build_option_parser(description, version)
self.interactive_mode = False
+ self.interpreter = None
def build_option_parser(self, description, version,
argparse_kwargs=None):
@@ -224,12 +225,12 @@
return
def interact(self):
- interpreter = self.interactive_app_factory(self,
- self.command_manager,
- self.stdin,
- self.stdout,
- )
- interpreter.cmdloop()
+ self.interpreter = self.interactive_app_factory(self,
+ self.command_manager,
+ self.stdin,
+ self.stdout,
+ )
+ self.interpreter.cmdloop()
return 0
def run_subcommand(self, argv):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.3.3/cliff.egg-info/PKG-INFO new/cliff-1.4/cliff.egg-info/PKG-INFO
--- old/cliff-1.3.3/cliff.egg-info/PKG-INFO 2013-05-02 20:23:38.000000000 +0200
+++ new/cliff-1.4/cliff.egg-info/PKG-INFO 2013-06-11 20:05:49.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: cliff
-Version: 1.3.3
+Version: 1.4
Summary: Command Line Interface Formulation Framework
Home-page: https://github.com/dreamhost/cliff
Author: Doug Hellmann
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.3.3/cliff.egg-info/SOURCES.txt new/cliff-1.4/cliff.egg-info/SOURCES.txt
--- old/cliff-1.3.3/cliff.egg-info/SOURCES.txt 2013-05-02 20:23:38.000000000 +0200
+++ new/cliff-1.4/cliff.egg-info/SOURCES.txt 2013-06-11 20:05:49.000000000 +0200
@@ -5,7 +5,6 @@
Makefile
README.rst
announce.rst
-distribute_setup.py
setup.py
test-requirements.txt
tox.ini
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.3.3/cliff.egg-info/requires.txt new/cliff-1.4/cliff.egg-info/requires.txt
--- old/cliff-1.3.3/cliff.egg-info/requires.txt 2013-05-02 20:23:38.000000000 +0200
+++ new/cliff-1.4/cliff.egg-info/requires.txt 2013-06-11 20:05:49.000000000 +0200
@@ -1,4 +1,3 @@
-distribute
PrettyTable>=0.6,<0.8
cmd2>=0.6.4
pyparsing==1.5.7
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.3.3/distribute_setup.py new/cliff-1.4/distribute_setup.py
--- old/cliff-1.3.3/distribute_setup.py 2012-04-20 18:53:30.000000000 +0200
+++ new/cliff-1.4/distribute_setup.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,477 +0,0 @@
-#!python
-"""Bootstrap distribute installation
-
-If you want to use setuptools in your package's setup.py, just include this
-file in the same directory with it, and add this to the top of your setup.py::
-
- from distribute_setup import use_setuptools
- use_setuptools()
-
-If you want to require a specific version of setuptools, set a download
-mirror, or use an alternate download directory, you can do so by supplying
-the appropriate options to ``use_setuptools()``.
-
-This file can also be run as a script to install or upgrade setuptools.
-"""
-import os
-import sys
-import time
-import fnmatch
-import tempfile
-import tarfile
-from distutils import log
-
-try:
- from site import USER_SITE
-except ImportError:
- USER_SITE = None
-
-try:
- import subprocess
-
- def _python_cmd(*args):
- args = (sys.executable,) + args
- return subprocess.call(args) == 0
-
-except ImportError:
- # will be used for python 2.3
- def _python_cmd(*args):
- args = (sys.executable,) + args
- # quoting arguments if windows
- if sys.platform == 'win32':
- def quote(arg):
- if ' ' in arg:
- return '"%s"' % arg
- return arg
- args = [quote(arg) for arg in args]
- return os.spawnl(os.P_WAIT, sys.executable, *args) == 0
-
-DEFAULT_VERSION = "0.6.10"
-DEFAULT_URL = "http://pypi.python.org/packages/source/d/distribute/"
-SETUPTOOLS_FAKED_VERSION = "0.6c11"
-
-SETUPTOOLS_PKG_INFO = """\
-Metadata-Version: 1.0
-Name: setuptools
-Version: %s
-Summary: xxxx
-Home-page: xxx
-Author: xxx
-Author-email: xxx
-License: xxx
-Description: xxx
-""" % SETUPTOOLS_FAKED_VERSION
-
-
-def _install(tarball):
- # extracting the tarball
- tmpdir = tempfile.mkdtemp()
- log.warn('Extracting in %s', tmpdir)
- old_wd = os.getcwd()
- try:
- os.chdir(tmpdir)
- tar = tarfile.open(tarball)
- _extractall(tar)
- tar.close()
-
- # going in the directory
- subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])
- os.chdir(subdir)
- log.warn('Now working in %s', subdir)
-
- # installing
- log.warn('Installing Distribute')
- if not _python_cmd('setup.py', 'install'):
- log.warn('Something went wrong during the installation.')
- log.warn('See the error message above.')
- finally:
- os.chdir(old_wd)
-
-
-def _build_egg(egg, tarball, to_dir):
- # extracting the tarball
- tmpdir = tempfile.mkdtemp()
- log.warn('Extracting in %s', tmpdir)
- old_wd = os.getcwd()
- try:
- os.chdir(tmpdir)
- tar = tarfile.open(tarball)
- _extractall(tar)
- tar.close()
-
- # going in the directory
- subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])
- os.chdir(subdir)
- log.warn('Now working in %s', subdir)
-
- # building an egg
- log.warn('Building a Distribute egg in %s', to_dir)
- _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir)
-
- finally:
- os.chdir(old_wd)
- # returning the result
- log.warn(egg)
- if not os.path.exists(egg):
- raise IOError('Could not build the egg.')
-
-
-def _do_download(version, download_base, to_dir, download_delay):
- egg = os.path.join(to_dir, 'distribute-%s-py%d.%d.egg'
- % (version, sys.version_info[0], sys.version_info[1]))
- if not os.path.exists(egg):
- tarball = download_setuptools(version, download_base,
- to_dir, download_delay)
- _build_egg(egg, tarball, to_dir)
- sys.path.insert(0, egg)
- import setuptools
- setuptools.bootstrap_install_from = egg
-
-
-def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
- to_dir=os.curdir, download_delay=15, no_fake=True):
- # making sure we use the absolute path
- to_dir = os.path.abspath(to_dir)
- was_imported = 'pkg_resources' in sys.modules or \
- 'setuptools' in sys.modules
- try:
- try:
- import pkg_resources
- if not hasattr(pkg_resources, '_distribute'):
- if not no_fake:
- _fake_setuptools()
- raise ImportError
- except ImportError:
- return _do_download(version, download_base, to_dir, download_delay)
- try:
- pkg_resources.require("distribute>="+version)
- return
- except pkg_resources.VersionConflict:
- e = sys.exc_info()[1]
- if was_imported:
- sys.stderr.write(
- "The required version of distribute (>=%s) is not available,\n"
- "and can't be installed while this script is running. Please\n"
- "install a more recent version first, using\n"
- "'easy_install -U distribute'."
- "\n\n(Currently using %r)\n" % (version, e.args[0]))
- sys.exit(2)
- else:
- del pkg_resources, sys.modules['pkg_resources'] # reload ok
- return _do_download(version, download_base, to_dir,
- download_delay)
- except pkg_resources.DistributionNotFound:
- return _do_download(version, download_base, to_dir,
- download_delay)
- finally:
- if not no_fake:
- _create_fake_setuptools_pkg_info(to_dir)
-
-def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
- to_dir=os.curdir, delay=15):
- """Download distribute from a specified location and return its filename
-
- `version` should be a valid distribute version number that is available
- as an egg for download under the `download_base` URL (which should end
- with a '/'). `to_dir` is the directory where the egg will be downloaded.
- `delay` is the number of seconds to pause before an actual download
- attempt.
- """
- # making sure we use the absolute path
- to_dir = os.path.abspath(to_dir)
- try:
- from urllib.request import urlopen
- except ImportError:
- from urllib2 import urlopen
- tgz_name = "distribute-%s.tar.gz" % version
- url = download_base + tgz_name
- saveto = os.path.join(to_dir, tgz_name)
- src = dst = None
- if not os.path.exists(saveto): # Avoid repeated downloads
- try:
- log.warn("Downloading %s", url)
- src = urlopen(url)
- # Read/write all in one block, so we don't create a corrupt file
- # if the download is interrupted.
- data = src.read()
- dst = open(saveto, "wb")
- dst.write(data)
- finally:
- if src:
- src.close()
- if dst:
- dst.close()
- return os.path.realpath(saveto)
-
-
-def _patch_file(path, content):
- """Will backup the file then patch it"""
- existing_content = open(path).read()
- if existing_content == content:
- # already patched
- log.warn('Already patched.')
- return False
- log.warn('Patching...')
- _rename_path(path)
- f = open(path, 'w')
- try:
- f.write(content)
- finally:
- f.close()
- return True
-
-
-def _same_content(path, content):
- return open(path).read() == content
-
-def _no_sandbox(function):
- def __no_sandbox(*args, **kw):
- try:
- from setuptools.sandbox import DirectorySandbox
- def violation(*args):
- pass
- DirectorySandbox._old = DirectorySandbox._violation
- DirectorySandbox._violation = violation
- patched = True
- except ImportError:
- patched = False
-
- try:
- return function(*args, **kw)
- finally:
- if patched:
- DirectorySandbox._violation = DirectorySandbox._old
- del DirectorySandbox._old
-
- return __no_sandbox
-
-@_no_sandbox
-def _rename_path(path):
- new_name = path + '.OLD.%s' % time.time()
- log.warn('Renaming %s into %s', path, new_name)
- os.rename(path, new_name)
- return new_name
-
-def _remove_flat_installation(placeholder):
- if not os.path.isdir(placeholder):
- log.warn('Unkown installation at %s', placeholder)
- return False
- found = False
- for file in os.listdir(placeholder):
- if fnmatch.fnmatch(file, 'setuptools*.egg-info'):
- found = True
- break
- if not found:
- log.warn('Could not locate setuptools*.egg-info')
- return
-
- log.warn('Removing elements out of the way...')
- pkg_info = os.path.join(placeholder, file)
- if os.path.isdir(pkg_info):
- patched = _patch_egg_dir(pkg_info)
- else:
- patched = _patch_file(pkg_info, SETUPTOOLS_PKG_INFO)
-
- if not patched:
- log.warn('%s already patched.', pkg_info)
- return False
- # now let's move the files out of the way
- for element in ('setuptools', 'pkg_resources.py', 'site.py'):
- element = os.path.join(placeholder, element)
- if os.path.exists(element):
- _rename_path(element)
- else:
- log.warn('Could not find the %s element of the '
- 'Setuptools distribution', element)
- return True
-
-
-def _after_install(dist):
- log.warn('After install bootstrap.')
- placeholder = dist.get_command_obj('install').install_purelib
- _create_fake_setuptools_pkg_info(placeholder)
-
-@_no_sandbox
-def _create_fake_setuptools_pkg_info(placeholder):
- if not placeholder or not os.path.exists(placeholder):
- log.warn('Could not find the install location')
- return
- pyver = '%s.%s' % (sys.version_info[0], sys.version_info[1])
- setuptools_file = 'setuptools-%s-py%s.egg-info' % \
- (SETUPTOOLS_FAKED_VERSION, pyver)
- pkg_info = os.path.join(placeholder, setuptools_file)
- if os.path.exists(pkg_info):
- log.warn('%s already exists', pkg_info)
- return
-
- log.warn('Creating %s', pkg_info)
- f = open(pkg_info, 'w')
- try:
- f.write(SETUPTOOLS_PKG_INFO)
- finally:
- f.close()
-
- pth_file = os.path.join(placeholder, 'setuptools.pth')
- log.warn('Creating %s', pth_file)
- f = open(pth_file, 'w')
- try:
- f.write(os.path.join(os.curdir, setuptools_file))
- finally:
- f.close()
-
-def _patch_egg_dir(path):
- # let's check if it's already patched
- pkg_info = os.path.join(path, 'EGG-INFO', 'PKG-INFO')
- if os.path.exists(pkg_info):
- if _same_content(pkg_info, SETUPTOOLS_PKG_INFO):
- log.warn('%s already patched.', pkg_info)
- return False
- _rename_path(path)
- os.mkdir(path)
- os.mkdir(os.path.join(path, 'EGG-INFO'))
- pkg_info = os.path.join(path, 'EGG-INFO', 'PKG-INFO')
- f = open(pkg_info, 'w')
- try:
- f.write(SETUPTOOLS_PKG_INFO)
- finally:
- f.close()
- return True
-
-
-def _before_install():
- log.warn('Before install bootstrap.')
- _fake_setuptools()
-
-
-def _under_prefix(location):
- if 'install' not in sys.argv:
- return True
- args = sys.argv[sys.argv.index('install')+1:]
- for index, arg in enumerate(args):
- for option in ('--root', '--prefix'):
- if arg.startswith('%s=' % option):
- top_dir = arg.split('root=')[-1]
- return location.startswith(top_dir)
- elif arg == option:
- if len(args) > index:
- top_dir = args[index+1]
- return location.startswith(top_dir)
- elif option == '--user' and USER_SITE is not None:
- return location.startswith(USER_SITE)
- return True
-
-
-def _fake_setuptools():
- log.warn('Scanning installed packages')
- try:
- import pkg_resources
- except ImportError:
- # we're cool
- log.warn('Setuptools or Distribute does not seem to be installed.')
- return
- ws = pkg_resources.working_set
- try:
- setuptools_dist = ws.find(pkg_resources.Requirement.parse('setuptools',
- replacement=False))
- except TypeError:
- # old distribute API
- setuptools_dist = ws.find(pkg_resources.Requirement.parse('setuptools'))
-
- if setuptools_dist is None:
- log.warn('No setuptools distribution found')
- return
- # detecting if it was already faked
- setuptools_location = setuptools_dist.location
- log.warn('Setuptools installation detected at %s', setuptools_location)
-
- # if --root or --preix was provided, and if
- # setuptools is not located in them, we don't patch it
- if not _under_prefix(setuptools_location):
- log.warn('Not patching, --root or --prefix is installing Distribute'
- ' in another location')
- return
-
- # let's see if its an egg
- if not setuptools_location.endswith('.egg'):
- log.warn('Non-egg installation')
- res = _remove_flat_installation(setuptools_location)
- if not res:
- return
- else:
- log.warn('Egg installation')
- pkg_info = os.path.join(setuptools_location, 'EGG-INFO', 'PKG-INFO')
- if (os.path.exists(pkg_info) and
- _same_content(pkg_info, SETUPTOOLS_PKG_INFO)):
- log.warn('Already patched.')
- return
- log.warn('Patching...')
- # let's create a fake egg replacing setuptools one
- res = _patch_egg_dir(setuptools_location)
- if not res:
- return
- log.warn('Patched done.')
- _relaunch()
-
-
-def _relaunch():
- log.warn('Relaunching...')
- # we have to relaunch the process
- args = [sys.executable] + sys.argv
- sys.exit(subprocess.call(args))
-
-
-def _extractall(self, path=".", members=None):
- """Extract all members from the archive to the current working
- directory and set owner, modification time and permissions on
- directories afterwards. `path' specifies a different directory
- to extract to. `members' is optional and must be a subset of the
- list returned by getmembers().
- """
- import copy
- import operator
- from tarfile import ExtractError
- directories = []
-
- if members is None:
- members = self
-
- for tarinfo in members:
- if tarinfo.isdir():
- # Extract directories with a safe mode.
- directories.append(tarinfo)
- tarinfo = copy.copy(tarinfo)
- tarinfo.mode = 448 # decimal for oct 0700
- self.extract(tarinfo, path)
-
- # Reverse sort directories.
- if sys.version_info < (2, 4):
- def sorter(dir1, dir2):
- return cmp(dir1.name, dir2.name)
- directories.sort(sorter)
- directories.reverse()
- else:
- directories.sort(key=operator.attrgetter('name'), reverse=True)
-
- # Set correct owner, mtime and filemode on directories.
- for tarinfo in directories:
- dirpath = os.path.join(path, tarinfo.name)
- try:
- self.chown(tarinfo, dirpath)
- self.utime(tarinfo, dirpath)
- self.chmod(tarinfo, dirpath)
- except ExtractError:
- e = sys.exc_info()[1]
- if self.errorlevel > 1:
- raise
- else:
- self._dbg(1, "tarfile: %s" % e)
-
-
-def main(argv, version=DEFAULT_VERSION):
- """Install or upgrade setuptools and EasyInstall"""
- tarball = download_setuptools()
- _install(tarball)
-
-
-if __name__ == '__main__':
- main(sys.argv[1:])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.3.3/docs/source/history.rst new/cliff-1.4/docs/source/history.rst
--- old/cliff-1.3.3/docs/source/history.rst 2013-05-02 20:21:26.000000000 +0200
+++ new/cliff-1.4/docs/source/history.rst 2013-06-11 20:02:29.000000000 +0200
@@ -2,6 +2,15 @@
Release History
=================
+1.4
+
+- Store a reference to the InteractiveApp on the App while in
+ interactive mode to allow commands to update the interactive
+ state. (Contributed by Tomaz Muraus)
+- Remove reliance on distribute, now that it has merged with
+ setuptools 0.7. Providing an explicit dependency on setuptools
+ breaks updates in some cases, so just fail if it isn't there.
+
1.3.3
- Restore compatibility with prettytable < 0.7.2 by forcing no
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.3.3/setup.py new/cliff-1.4/setup.py
--- old/cliff-1.3.3/setup.py 2013-05-02 20:22:02.000000000 +0200
+++ new/cliff-1.4/setup.py 2013-06-11 20:02:32.000000000 +0200
@@ -3,11 +3,7 @@
PROJECT = 'cliff'
# Change docs/source/conf.py too!
-VERSION = '1.3.3'
-
-# Bootstrap installation of Distribute
-import distribute_setup
-distribute_setup.use_setuptools()
+VERSION = '1.4'
from setuptools import setup, find_packages
@@ -22,7 +18,6 @@
long_description = ''
install_requires = [
- 'distribute',
'PrettyTable>=0.6,<0.8',
'cmd2>=0.6.4',
]
@@ -37,7 +32,7 @@
install_requires.append('pyparsing>=2.0.0')
try:
- import argparse
+ import argparse # noqa
except ImportError:
install_requires.append('argparse')
@@ -52,13 +47,11 @@
'./dist', 'EGG-INFO', '*.egg-info')
-def find_package_data(
- where='.', package='',
- exclude=standard_exclude,
- exclude_directories=standard_exclude_directories,
- only_in_packages=True,
- show_ignored=False,
- ):
+def find_package_data(where='.', package='',
+ exclude=standard_exclude,
+ exclude_directories=standard_exclude_directories,
+ only_in_packages=True,
+ show_ignored=False):
"""
Return a dictionary suitable for use in ``package_data``
in a distutils ``setup.py`` file.
@@ -98,7 +91,7 @@
bad_name = False
for pattern in exclude_directories:
if (fnmatchcase(name, pattern)
- or fn.lower() == pattern.lower()):
+ or fn.lower() == pattern.lower()):
bad_name = True
if show_ignored:
print >> sys.stderr, (
@@ -123,7 +116,7 @@
bad_name = False
for pattern in exclude:
if (fnmatchcase(name, pattern)
- or fn.lower() == pattern.lower()):
+ or fn.lower() == pattern.lower()):
bad_name = True
if show_ignored:
print >> sys.stderr, (
@@ -185,12 +178,12 @@
'cliff.formatter.list': [
'table = cliff.formatters.table:TableFormatter',
'csv = cliff.formatters.commaseparated:CSVLister',
- ],
+ ],
'cliff.formatter.show': [
'table = cliff.formatters.table:TableFormatter',
'shell = cliff.formatters.shell:ShellFormatter',
- ],
- },
+ ],
+ },
zip_safe=False,
- )
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.3.3/tests/test_app.py new/cliff-1.4/tests/test_app.py
--- old/cliff-1.3.3/tests/test_app.py 2013-03-16 21:35:54.000000000 +0100
+++ new/cliff-1.4/tests/test_app.py 2013-05-31 21:19:25.000000000 +0200
@@ -46,7 +46,9 @@
app.interactive_app_factory = mock.MagicMock(
name='interactive_app_factory'
)
+ assert app.interpreter is None
app.run([])
+ assert app.interpreter is not None
app.interactive_app_factory.return_value.cmdloop.assert_called_once_with()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cliff-1.3.3/tox.ini new/cliff-1.4/tox.ini
--- old/cliff-1.3.3/tox.ini 2013-03-26 21:49:03.000000000 +0100
+++ new/cliff-1.4/tox.ini 2013-06-11 19:55:58.000000000 +0200
@@ -10,4 +10,4 @@
[testenv:style]
deps = flake8
-commands = flake8 cliff docs/source/conf.py tests
+commands = flake8 cliff docs/source/conf.py tests setup.py
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package python-bugzilla for openSUSE:Factory checked in at 2013-06-29 14:30:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-bugzilla (Old)
and /work/SRC/openSUSE:Factory/.python-bugzilla.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-bugzilla"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-bugzilla/python-bugzilla.changes 2013-06-05 13:35:17.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-bugzilla.new/python-bugzilla.changes 2013-06-29 14:30:30.000000000 +0200
@@ -1,0 +2,13 @@
+Thu Jun 27 16:29:47 UTC 2013 - jmatejek(a)suse.com
+
+- update to 0.9.0
+ * CVE-2013-2191: Switch to pycurl to get SSL host and cert validation
+ (fixes bnc#825876)
+ * bugzilla: modify: add --dependson (Don Zickus)
+ * bugzilla: new: add --groups option (Paul Frields)
+ * bugzilla: modify: Allow setting nearly every bug parameter
+- update to suse3 from gitorious
+ * remerged NovellBugzilla functionality
+ (upstream inclusion pending bnc#822053)
+
+-------------------------------------------------------------------
Old:
----
python-bugzilla-0.8.0suse2.tar.bz2
New:
----
python-bugzilla-0.9.0suse3.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-bugzilla.spec ++++++
--- /var/tmp/diff_new_pack.HCWujL/_old 2013-06-29 14:30:31.000000000 +0200
+++ /var/tmp/diff_new_pack.HCWujL/_new 2013-06-29 14:30:31.000000000 +0200
@@ -17,7 +17,7 @@
Name: python-bugzilla
-Version: 0.8.0suse2
+Version: 0.9.0suse3
Release: 0
Summary: Python library for bugzilla
License: GPL-2.0+
@@ -32,6 +32,7 @@
%else
BuildArch: noarch
%endif
+Requires: python-pycurl
Suggests: osc
%description
++++++ python-bugzilla-0.8.0suse2.tar.bz2 -> python-bugzilla-0.9.0suse3.tar.bz2 ++++++
++++ 2518 lines of diff (skipped)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0