Hello community,

here is the log from the commit of package python3-logilab-common for 
openSUSE:Factory checked in at 2014-02-24 15:53:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-logilab-common (Old)
 and      /work/SRC/openSUSE:Factory/.python3-logilab-common.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python3-logilab-common"

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python3-logilab-common/python3-logilab-common.changes
    2013-11-23 08:14:54.000000000 +0100
+++ 
/work/SRC/openSUSE:Factory/.python3-logilab-common.new/python3-logilab-common.changes
       2014-02-24 15:53:17.000000000 +0100
@@ -1,0 +2,17 @@
+Mon Feb 24 10:40:11 UTC 2014 - [email protected]
+
+- Do not requires explicitely python3
+- Use source from indicated Url
+
+-------------------------------------------------------------------
+Sun Feb 23 16:55:55 UTC 2014 - [email protected]
+
+- update to version 0.61.0, below are the changed taken from Changelog
+   * pdf_ext: removed, it had no known users (CVE-2014-1838)
+   * shellutils: fix tempfile issue in Execute, and deprecate it
+     (CVE-2014-1839)
+   * pytest: use 'env' to run the python interpreter
+   * graph: ensure output is ordered on node and graph ids (#202314)
+
+
+-------------------------------------------------------------------

Old:
----
  logilab-common-0.60.0.tar.gz

New:
----
  logilab-common-0.61.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python3-logilab-common.spec ++++++
--- /var/tmp/diff_new_pack.rg3zQd/_old  2014-02-24 15:53:18.000000000 +0100
+++ /var/tmp/diff_new_pack.rg3zQd/_new  2014-02-24 15:53:18.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python3-logilab-common
 #
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,17 +17,15 @@
 
 
 Name:           python3-logilab-common
-Version:        0.60.0
+Version:        0.61.0
 Release:        0
 Url:            http://www.logilab.org/projects/common/
 Summary:        Python lowlevel functionality shared by logilab projects
 License:        LGPL-2.1+
 Group:          Development/Languages/Python
 Source:         
http://download.logilab.org/pub/common/logilab-common-%{version}.tar.gz
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  python3-2to3
 BuildRequires:  python3-devel
-Requires:       python3 >= %{py3_ver}
 BuildArch:      noarch
 
 %description

++++++ logilab-common-0.60.0.tar.gz -> logilab-common-0.61.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/ChangeLog 
new/logilab-common-0.61.0/ChangeLog
--- old/logilab-common-0.60.0/ChangeLog 2013-07-26 12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/ChangeLog 2014-02-11 16:02:26.000000000 +0100
@@ -1,6 +1,34 @@
 ChangeLog for logilab.common
 ============================
 
+2014-02-11  --  0.61.0
+   * pdf_ext: removed, it had no known users (CVE-2014-1838)
+
+   * shellutils: fix tempfile issue in Execute, and deprecate it
+     (CVE-2014-1839)
+
+   * pytest: use 'env' to run the python interpreter
+
+   * graph: ensure output is ordered on node and graph ids (#202314)
+
+
+2013-16-12  --  0.60.1
+    * modutils:
+
+      * don't propagate IOError when package's __init__.py file doesn't
+         exist (#174606)
+
+      * ensure file is closed, may cause pb depending on the interpreter, eg
+       pypy) (#180876)
+  
+      * fix support for `extend_path` based nested namespace packages ;
+       Report and patch by John Johnson (#177651)
+
+    * fix some cases of failing python3 install on windows platform / cross
+     compilation (#180836)
+
+
+
 2013-07-26  --  0.60.0
     * configuration: rename option_name method into option_attrname (#140667)
 
@@ -8,10 +36,9 @@
 
     * modutils:
 
-      - fix typo causing name error in python3 / bad message in python2
+        - fix typo causing name error in python3 / bad message in python2
        (#136037)
-
-      - fix python3.3 crash in file_from_modpath due to implementation
+        - fix python3.3 crash in file_from_modpath due to implementation
         change of imp.find_module wrt builtin modules (#137244)
 
     * testlib: use assertCountEqual instead of 
assertSameElements/assertItemsEqual
@@ -30,10 +57,9 @@
 
     * registry:
 
-      - select_or_none should not silent ObjectNotFound exception
+        - select_or_none should not silent ObjectNotFound exception
         (closes #119819)
-
-      - remove 2 accidentally introduced tabs breaking python 3 compat
+        - remove 2 accidentally introduced tabs breaking python 3 compat
         (closes #117580)
 
     * fix umessages test w/ python 3 and LC_ALL=C (closes #119967, report and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/PKG-INFO 
new/logilab-common-0.61.0/PKG-INFO
--- old/logilab-common-0.60.0/PKG-INFO  2013-07-26 12:18:55.000000000 +0200
+++ new/logilab-common-0.61.0/PKG-INFO  2014-02-11 16:02:31.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: logilab-common
-Version: 0.60.0
+Version: 0.61.0
 Summary: collection of low-level Python packages and modules used by Logilab 
projects
 Home-page: http://www.logilab.org/project/logilab-common
 Author: Logilab
@@ -131,8 +131,6 @@
         
         * `hg`, some Mercurial_ utility functions.
         
-        * `pdf_ext`, pdf and fdf file manipulations, with pdftk.
-        
         * `pyro_ext`, some Pyro_ utility functions.
         
         * `sphinx_ext`, Sphinx_ plugin defining a `autodocstring` directive.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/README 
new/logilab-common-0.61.0/README
--- old/logilab-common-0.60.0/README    2013-07-26 12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/README    2014-02-11 16:02:26.000000000 +0100
@@ -123,8 +123,6 @@
 
 * `hg`, some Mercurial_ utility functions.
 
-* `pdf_ext`, pdf and fdf file manipulations, with pdftk.
-
 * `pyro_ext`, some Pyro_ utility functions.
 
 * `sphinx_ext`, Sphinx_ plugin defining a `autodocstring` directive.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/__pkginfo__.py 
new/logilab-common-0.61.0/__pkginfo__.py
--- old/logilab-common-0.60.0/__pkginfo__.py    2013-07-26 12:18:50.000000000 
+0200
+++ new/logilab-common-0.61.0/__pkginfo__.py    2014-02-11 16:02:26.000000000 
+0100
@@ -25,7 +25,7 @@
 subpackage_of = 'logilab'
 subpackage_master = True
 
-numversion = (0, 60, 0)
+numversion = (0, 61, 0)
 version = '.'.join([str(num) for num in numversion])
 
 license = 'LGPL' # 2.1 or later
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/bin/pytest 
new/logilab-common-0.61.0/bin/pytest
--- old/logilab-common-0.60.0/bin/pytest        2013-07-26 12:18:50.000000000 
+0200
+++ new/logilab-common-0.61.0/bin/pytest        2014-02-11 16:02:26.000000000 
+0100
@@ -1,4 +1,4 @@
-#!/usr/bin/python -u
+#!/usr/bin/env python
 
 import warnings
 warnings.simplefilter('default', DeprecationWarning)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/date.py 
new/logilab-common-0.61.0/date.py
--- old/logilab-common-0.60.0/date.py   2013-07-26 12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/date.py   2014-02-11 16:02:26.000000000 +0100
@@ -188,8 +188,8 @@
     end = todate(end)
     if incmonth:
         while begin < end:
-            begin = next_month(begin, incmonth)
             yield begin
+            begin = next_month(begin, incmonth)
     else:
         incr = get_step(begin, incday or 1)
         while begin < end:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/deprecation.py 
new/logilab-common-0.61.0/deprecation.py
--- old/logilab-common-0.60.0/deprecation.py    2013-07-26 12:18:50.000000000 
+0200
+++ new/logilab-common-0.61.0/deprecation.py    2014-02-11 16:02:26.000000000 
+0100
@@ -80,7 +80,7 @@
             if '%s' in message:
                 message %= func.func_name
             def wrapped(*args, **kwargs):
-                self.warn(version, message, stacklevel)
+                self.warn(version, message, stacklevel+1)
                 return func(*args, **kwargs)
             return wrapped
         return decorator
@@ -92,7 +92,7 @@
             def __call__(cls, *args, **kwargs):
                 msg = getattr(cls, "__deprecation_warning__",
                               "%(cls)s is deprecated") % {'cls': cls.__name__}
-                self.warn(version, msg)
+                self.warn(version, msg, stacklevel=3)
                 return type.__call__(cls, *args, **kwargs)
         return metaclass
 
@@ -129,7 +129,7 @@
                 """FIXME: There might be a better way to handle old/new-style 
class
                 """
                 def __init__(self, *args, **kwargs):
-                    self.warn(version, message)
+                    self.warn(version, message, stacklevel=3)
                     new_class.__init__(self, *args, **kwargs)
             return DeprecatedClass
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/graph.py 
new/logilab-common-0.61.0/graph.py
--- old/logilab-common-0.60.0/graph.py  2013-07-26 12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/graph.py  2014-02-11 16:02:26.000000000 +0100
@@ -134,14 +134,14 @@
         """
         attrs = ['%s="%s"' % (prop, value) for prop, value in props.items()]
         n_from, n_to = normalize_node_id(name1), normalize_node_id(name2)
-        self.emit('%s -> %s [%s];' % (n_from, n_to, ", ".join(attrs)) )
+        self.emit('%s -> %s [%s];' % (n_from, n_to, ', '.join(sorted(attrs))) )
 
     def emit_node(self, name, **props):
         """emit a node with given properties.
         node properties: see http://www.graphviz.org/doc/info/attrs.html
         """
         attrs = ['%s="%s"' % (prop, value) for prop, value in props.items()]
-        self.emit('%s [%s];' % (normalize_node_id(name), ", ".join(attrs)))
+        self.emit('%s [%s];' % (normalize_node_id(name), ', 
'.join(sorted(attrs))))
 
 def normalize_node_id(nid):
     """Returns a suitable DOT node id for `nid`."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/modutils.py 
new/logilab-common-0.61.0/modutils.py
--- old/logilab-common-0.60.0/modutils.py       2013-07-26 12:18:50.000000000 
+0200
+++ new/logilab-common-0.61.0/modutils.py       2014-02-11 16:02:26.000000000 
+0100
@@ -27,6 +27,8 @@
 :type BUILTIN_MODULES: dict
 :var BUILTIN_MODULES: dictionary with builtin module names has key
 """
+from __future__ import with_statement
+
 __docformat__ = "restructuredtext en"
 
 import sys
@@ -656,14 +658,19 @@
                                                           '.'.join(imported)))
             # XXX guess if package is using pkgutil.extend_path by looking for
             # those keywords in the first four Kbytes
-            data = open(join(mp_filename, '__init__.py')).read(4096)
-            if 'pkgutil' in data and 'extend_path' in data:
-                # extend_path is called, search sys.path for module/packages 
of this name
-                # see pkgutil.extend_path documentation
-                path = [join(p, modname) for p in sys.path
-                        if isdir(join(p, modname))]
-            else:
+            try:
+                with open(join(mp_filename, '__init__.py')) as stream:
+                    data = stream.read(4096)
+            except IOError:
                 path = [mp_filename]
+            else:
+                if 'pkgutil' in data and 'extend_path' in data:
+                    # extend_path is called, search sys.path for 
module/packages
+                    # of this name see pkgutil.extend_path documentation
+                    path = [join(p, *imported) for p in sys.path
+                            if isdir(join(p, *imported))]
+                else:
+                    path = [mp_filename]
     return mtype, mp_filename
 
 def _is_python_file(filename):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/pdf_ext.py 
new/logilab-common-0.61.0/pdf_ext.py
--- old/logilab-common-0.60.0/pdf_ext.py        2013-07-26 12:18:50.000000000 
+0200
+++ new/logilab-common-0.61.0/pdf_ext.py        1970-01-01 01:00:00.000000000 
+0100
@@ -1,111 +0,0 @@
-# copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
-# contact http://www.logilab.fr/ -- mailto:[email protected]
-#
-# This file is part of logilab-common.
-#
-# logilab-common is free software: you can redistribute it and/or modify it 
under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation, either version 2.1 of the License, or (at your option) 
any
-# later version.
-#
-# logilab-common is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License 
along
-# with logilab-common.  If not, see <http://www.gnu.org/licenses/>.
-"""Manipulate pdf and fdf files (pdftk recommended).
-
-Notes regarding pdftk, pdf forms and fdf files (form definition file)
-fields names can be extracted with:
-
-    pdftk orig.pdf generate_fdf output truc.fdf
-
-to merge fdf and pdf:
-
-    pdftk orig.pdf fill_form test.fdf output result.pdf [flatten]
-
-without flatten, one could further edit the resulting form.
-with flatten, everything is turned into text.
-
-
-
-
-"""
-__docformat__ = "restructuredtext en"
-# XXX seems very unix specific
-# TODO: check availability of pdftk at import
-
-
-import os
-
-HEAD="""%FDF-1.2
-%\xE2\xE3\xCF\xD3
-1 0 obj
-<<
-/FDF
-<<
-/Fields [
-"""
-
-TAIL="""]
->>
->>
-endobj
-trailer
-
-<<
-/Root 1 0 R
->>
-%%EOF
-"""
-
-def output_field( f ):
-    return "\xfe\xff" + "".join( [ "\x00"+c for c in f ] )
-
-def extract_keys(lines):
-    keys = []
-    for line in lines:
-        if line.startswith('/V'):
-            pass #print 'value',line
-        elif line.startswith('/T'):
-            key = line[7:-2]
-            key = ''.join(key.split('\x00'))
-            keys.append( key )
-    return keys
-
-def write_field(out, key, value):
-    out.write("<<\n")
-    if value:
-        out.write("/V (%s)\n" %value)
-    else:
-        out.write("/V /\n")
-    out.write("/T (%s)\n" % output_field(key) )
-    out.write(">> \n")
-
-def write_fields(out, fields):
-    out.write(HEAD)
-    for (key, value, comment) in fields:
-        write_field(out, key, value)
-        write_field(out, key+"a", value) # pour copie-carbone sur autres pages
-    out.write(TAIL)
-
-def extract_keys_from_pdf(filename):
-    # what about using 'pdftk filename dump_data_fields' and parsing the 
output ?
-    os.system('pdftk %s generate_fdf output /tmp/toto.fdf' % filename)
-    lines = file('/tmp/toto.fdf').readlines()
-    return extract_keys(lines)
-
-
-def fill_pdf(infile, outfile, fields):
-    write_fields(file('/tmp/toto.fdf', 'w'), fields)
-    os.system('pdftk %s fill_form /tmp/toto.fdf output %s flatten' % (infile, 
outfile))
-
-def testfill_pdf(infile, outfile):
-    keys = extract_keys_from_pdf(infile)
-    fields = []
-    for key in keys:
-        fields.append( (key, key, '') )
-    fill_pdf(infile, outfile, fields)
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/setup.py 
new/logilab-common-0.61.0/setup.py
--- old/logilab-common-0.60.0/setup.py  2013-07-26 12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/setup.py  2014-02-11 16:02:26.000000000 +0100
@@ -139,11 +139,12 @@
                 shutil.copytree(directory, dest)
                 if sys.version_info >= (3, 0):
                     # process manually python file in include_dirs (test data)
-                    from subprocess import check_call
+                    from distutils.util import run_2to3
                     # brackets are NOT optional here for py3k compat
                     print('running 2to3 on', dest)
-                    # Needs `shell=True` to run on Windows.
-                    check_call(['2to3', '-wn', dest], 
shell=sys.platform=='win32')
+                    run_2to3([dest])
+
+
 
 
 def install(**kwargs):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/shellutils.py 
new/logilab-common-0.61.0/shellutils.py
--- old/logilab-common-0.60.0/shellutils.py     2013-07-26 12:18:50.000000000 
+0200
+++ new/logilab-common-0.61.0/shellutils.py     2014-02-11 16:02:26.000000000 
+0100
@@ -31,11 +31,13 @@
 import errno
 import string
 import random
+import subprocess
 from os.path import exists, isdir, islink, basename, join
 
 from logilab.common import STD_BLACKLIST, _handle_blacklist
 from logilab.common.compat import raw_input
 from logilab.common.compat import str_to_bytes
+from logilab.common.deprecation import deprecated
 
 try:
     from logilab.common.proc import ProcInfo, NoSuchProcess
@@ -224,20 +226,17 @@
             outfile.write(zfobj.read(name))
             outfile.close()
 
+@deprecated('Use subprocess.Popen instead')
 class Execute:
     """This is a deadlock safe version of popen2 (no stdin), that returns
     an object with errorlevel, out and err.
     """
 
     def __init__(self, command):
-        outfile = tempfile.mktemp()
-        errfile = tempfile.mktemp()
-        self.status = os.system("( %s ) >%s 2>%s" %
-                                (command, outfile, errfile)) >> 8
-        self.out = open(outfile, "r").read()
-        self.err = open(errfile, "r").read()
-        os.remove(outfile)
-        os.remove(errfile)
+        cmd = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, 
stderr=subprocess.PIPE)
+        self.out, self.err = cmd.communicate()
+        self.status = os.WEXITSTATUS(cmd.returncode)
+
 
 def acquire_lock(lock_file, max_try=10, delay=10, max_delay=3600):
     """Acquire a lock represented by a file on the file system
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/table.py 
new/logilab-common-0.61.0/table.py
--- old/logilab-common-0.60.0/table.py  2013-07-26 12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/table.py  2014-02-11 16:02:26.000000000 +0100
@@ -48,6 +48,8 @@
         else:
             return list(self) == list(other)
 
+    __hash__ = object.__hash__
+
     def __ne__(self, other):
         return not self == other
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/tasksqueue.py 
new/logilab-common-0.61.0/tasksqueue.py
--- old/logilab-common-0.60.0/tasksqueue.py     2013-07-26 12:18:50.000000000 
+0200
+++ new/logilab-common-0.61.0/tasksqueue.py     2014-02-11 16:02:26.000000000 
+0100
@@ -94,5 +94,7 @@
     def __eq__(self, other):
         return self.id == other.id
 
+    __hash__ = object.__hash__
+
     def merge(self, other):
         pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/test/unittest_configuration.py 
new/logilab-common-0.61.0/test/unittest_configuration.py
--- old/logilab-common-0.60.0/test/unittest_configuration.py    2013-07-26 
12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/test/unittest_configuration.py    2014-02-11 
16:02:26.000000000 +0100
@@ -18,6 +18,7 @@
 import tempfile
 import os
 from os.path import join, dirname, abspath
+import re
 
 from cStringIO import StringIO
 from sys import version_info
@@ -32,13 +33,13 @@
 
 OPTIONS = [('dothis', {'type':'yn', 'action': 'store', 'default': True, 
'metavar': '<y or n>'}),
            ('value', {'type': 'string', 'metavar': '<string>', 'short': 'v'}),
-           ('multiple', {'type': 'csv', 'default': ('yop', 'yep'),
+           ('multiple', {'type': 'csv', 'default': ['yop', 'yep'],
                          'metavar': '<comma separated values>',
                          'help': 'you can also document the option'}),
            ('number', {'type': 'int', 'default':2, 'metavar':'<int>', 'help': 
'boom'}),
            ('choice', {'type': 'choice', 'default':'yo', 'choices': ('yo', 
'ye'),
                        'metavar':'<yo|ye>'}),
-           ('multiple-choice', {'type': 'multiple_choice', 'default':('yo', 
'ye'),
+           ('multiple-choice', {'type': 'multiple_choice', 'default':['yo', 
'ye'],
                                 'choices': ('yo', 'ye', 'yu', 'yi', 'ya'),
                                 'metavar':'<yo|ye>'}),
            ('named', {'type':'named', 'default':Method('get_named'),
@@ -63,10 +64,10 @@
         cfg = self.cfg
         self.assertEqual(cfg['dothis'], True)
         self.assertEqual(cfg['value'], None)
-        self.assertEqual(cfg['multiple'], ('yop', 'yep'))
+        self.assertEqual(cfg['multiple'], ['yop', 'yep'])
         self.assertEqual(cfg['number'], 2)
         self.assertEqual(cfg['choice'], 'yo')
-        self.assertEqual(cfg['multiple-choice'], ('yo', 'ye'))
+        self.assertEqual(cfg['multiple-choice'], ['yo', 'ye'])
         self.assertEqual(cfg['named'], {'key': 'val'})
 
     def test_base(self):
@@ -207,9 +208,12 @@
         f = tempfile.mktemp()
         stream = open(f, 'w')
         try:
+            self.cfg['dothis'] = False
+            self.cfg['multiple'] = ["toto", "tata"]
+            self.cfg['number'] = 3
             cfg.generate_config(stream)
             stream.close()
-            new_cfg = MyConfiguration(name='testloop', options=OPTIONS)
+            new_cfg = MyConfiguration(name='test', options=OPTIONS)
             new_cfg.load_file_configuration(f)
             self.assertEqual(cfg['dothis'], new_cfg['dothis'])
             self.assertEqual(cfg['multiple'], new_cfg['multiple'])
@@ -234,18 +238,19 @@
         # it is not unlikely some optik/optparse versions do print -v<string>
         # so accept both
         help = help.replace(' -v <string>, ', ' -v<string>, ')
+        help = re.sub('[ ]*(\r?\n)', '\\1', help)
         USAGE = """Usage: Just do it ! (tm)
 
 Options:
   -h, --help            show this help message and exit
-  --dothis=<y or n>     
+  --dothis=<y or n>
   -v<string>, --value=<string>
   --multiple=<comma separated values>
                         you can also document the option [current: yop,yep]
   --number=<int>        boom [current: 2]
-  --choice=<yo|ye>      
+  --choice=<yo|ye>
   --multiple-choice=<yo|ye>
-  --named=<key=val>     
+  --named=<key=val>
 
   Agroup:
     --diffgroup=<key=val>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/test/unittest_date.py 
new/logilab-common-0.61.0/test/unittest_date.py
--- old/logilab-common-0.60.0/test/unittest_date.py     2013-07-26 
12:18:50.000000000 +0200
+++ new/logilab-common-0.61.0/test/unittest_date.py     2014-02-11 
16:02:26.000000000 +0100
@@ -138,6 +138,13 @@
         date = ticks2datetime(ticks)
         self.assertEqual(ustrftime(date, '%Y-%m-%d'), u'1899-12-31')
 
+    def test_month(self):
+        """enumerate months"""
+        r = list(date_range(self.datecls(2006, 5, 6), self.datecls(2006, 8, 
27),
+                            incmonth=True))
+        expected = [self.datecls(2006, 5, 6), self.datecls(2006, 6, 1), 
self.datecls(2006, 7, 1), self.datecls(2006, 8, 1)]
+        self.assertListEqual(expected, r)
+
 
 class MxDateTC(DateTC):
     datecls = mxDate
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/logilab-common-0.60.0/testlib.py 
new/logilab-common-0.61.0/testlib.py
--- old/logilab-common-0.60.0/testlib.py        2013-07-26 12:18:50.000000000 
+0200
+++ new/logilab-common-0.61.0/testlib.py        2014-02-11 16:02:26.000000000 
+0100
@@ -550,6 +550,9 @@
             func(*args, **kwargs)
         except (KeyboardInterrupt, SystemExit):
             raise
+        except unittest.SkipTest, e:
+            self._addSkip(result, str(e))
+            return False
         except:
             result.addError(self, self.__exc_info())
             return False
@@ -1187,6 +1190,9 @@
         assertItemsEqual = unittest.TestCase.assertCountEqual
     else:
         assertCountEqual = unittest.TestCase.assertItemsEqual
+        if sys.version_info < (2,7):
+            def assertIsNotNone(self, value, *args, **kwargs):
+                self.assertNotEqual(None, value, *args, **kwargs)
 
 TestCase.assertItemsEqual = deprecated('assertItemsEqual is deprecated, use 
assertCountEqual')(
     TestCase.assertItemsEqual)

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to