.. -*- coding: utf-8 -*- project logilab-common ====================== :creation date: 2006/09/26 a bunch of modules providing low level functionnalities shared among some python projects devel Please note that some of the modules have some extra dependencies. For instance, logilab.common.db will require a db-api 2.0 compliant database driver. Command line parsing modules require optik to be installed, if you're using python2.1 or 2.2. And mx.DateTime is also used by some modules. version 0.19.2 -------------- :publication date: 2006/09/25 :expected date: n/a version 0.19.3 -------------- bug fixes :publication date: 2006/10/03 :expected date: n/a ticket #900: textutils.normalise_[text|paragraph] crash with unsplitable word larger than the maximum line size ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved :: File ".../logilab/common/textutils.py", line 116, in normalize_text result.append(normalize_paragraph(text, line_len, indent)) File ".../logilab/common/textutils.py", line 155, in normalize_paragraph while text[pos] != ' ': IndexError: string index out of range ticket #899: missing pytest.bat ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.000 :state: resolved Running "setup.py install" in windows gives this error towards the end: error: file 'bin\pytest.bat' does not exist And bin\pytest.bat isn't included in this .tar.gz. version 0.20.0 -------------- :publication date: 2006/10/30 :expected date: n/a ticket #2716: [db] incorrect date handling ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved ticket #2709: backport dot backend from yams ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved ticket #2713: [db] methods on advanced helper to generate backup commands ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved ticket #2719: [configuration] basic deprecated config handling support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.500 :state: resolved version 0.20.1 -------------- :publication date: 2006/11/02 :expected date: n/a ticket #2734: [umessage] utilise get_charset au lieu de get_content_charset dans get_payload ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved du coup il tombe pas sur le bon encodage ticket #2730: [db] passer à psycopg2 par défaut ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.500 :state: resolved version 0.20.2 -------------- :publication date: 2006/11/03 :expected date: n/a version 0.21.0 -------------- pre 1.0 version :publication date: 2006/11/14 :expected date: n/a ticket #3021: warnings on deprecated stuff ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved so we can get a 1.0 soon ticket #3016: unknown encoding: unknown-8bit ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved Some mails have weird headers:: while processing /home/logilab/prive/depomail/SOPX01.mbox Traceback (most recent call last): File "/usr/bin/maboa-htmlize", line 13, in ? run() File "/usr/bin/maboa-htmlize", line 8, in run proc.process_mailbox(sys.argv[1]) File "hg_public/maboa/htmlize.py", line 161, in process_mailbox for dir_name, msg_filename, html, attachments in self._iterate_mailbox(mbox, indexer): File "hg_public/maboa/htmlize.py", line 120, in _iterate_mailbox msg_dict = self._msg_to_dict(message) File "hg_public/maboa/htmlize.py", line 89, in _msg_to_dict body.append(part.get_payload(decode=True)) File "hg_public/logilab/common/umessage.py", line 56, in get_payload return unicode(payload or '', message.get_content_charset() LookupError: unknown encoding: unknown-8bit maboa should not crash, but rather use a default encoding (e.g. iso-8859-1) in that case. Comments :: On 2006/11/10 11:38 - afayolle wrote : actually a problem in logilab-common ticket #3025: [db] psycopg2 mxDateTime adapters should only be registered if mxDateTime is available ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved ticket #3027: remove old deprecated functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved there are a lot of functions deprecated for a while there, it's now time to remove them. ticket #3023: cleanup __init__.py file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved move useful thinks in the package file into their own module. Deprecated functions which seems no more used. version 0.21.1 -------------- :publication date: 2006/12/21 :expected date: n/a ticket #3266: textutils.normalize_text doesn't deal correctly with ReST formatted text ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved should have an argument or another function dedicated to ReST text ticket #3197: OptionsManagerMixin __init__ isn't passing correctly its "version" argument ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved this result in the `--version` option missing in pylint for instance version 0.21.2 -------------- :publication date: 2007/02/05 :expected date: n/a ticket #3471: truncated text in ReST normalization ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved When normalizing ReST text, result is sometimes truncated version 0.21.4 -------------- bugfix release (most notably pytest fixes / improvements) :publication date: 2007/03/09 :expected date: n/a ticket #3621: pytest should have return status different than 0 if some test failed ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved currently you can't differentiate from the command line if all tests succeed or not ticket #3676: missing pytest --help / -t options ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.500 :state: resolved Marien Zwart said :: Because of the place option parsing happens pytest relies on there being exactly one directory called "test" or "tests" somewhere below the current directory. The "pytest" main script walks down from the current directory and calls testlib.main on every directory called test or tests it finds. This main function then (re)parses the arguments and runs the tests. This is especially annoying for --help (which does nothing if there is no test or tests dir below the current one) or -t (specify testdir explicitly, which does nothing if there is no test or tests dir below the current one and runs the tests more than once if there is more than one). version 0.22.0 -------------- :publication date: 2007/05/14 :expected date: n/a ticket #3882: shellutils.mv should use shutil.move instead of os.rename as default action ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved so it don't crash when moving to another disk/partition ticket #2681: --coverage option on pytest ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved which execute test under pycoverage, so we can afterwhat extract coverage information. Comments :: On 2007/06/08 12:14 - afayolle wrote : I goofed when validating this one: the feature is buggy, and I was testing with the dev. repo in my PYTHONPATH.... ticket #3879: deprecation: 'obsolete' decorator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved with an optional message explaining why version 0.22.1 -------------- Bug fix revision for 0.22 :publication date: 2007/06/18 :expected date: n/a ticket #3900: pytest and devtools dependency ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.000 :state: rejected pytest --coverage currently requires devtools to work, but devtools is not in Debian. The issue needs to be solved. version 0.22.2 -------------- :publication date: 2007/06/26 :expected date: n/a ticket #3978: new 'typechanged' action for configuration.read_old_config ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved version 0.23.0 -------------- :publication date: 2007/10/17 :expected date: n/a ticket #4306: more db extensions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.500 :state: resolved - mark support_users and support_groups methods as obsolete in favor of users_support and groups_support attributes - new ilike_support property on dbms helpers - extended db helper api - completed mysql support version 0.24.0 -------------- :publication date: 2007/10/30 :expected date: n/a ticket #4311: new adbh module containing advanced db helpers from the "db" module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.500 :state: resolved with support for registered procedures declaration version 0.25.0 -------------- :publication date: 2007/11/26 :expected date: n/a ticket #4325: logilab.common pas compatible avec python2.3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved This is what I get when upgrade logilab-common on debian. Paramétrage de python-logilab-common (0.24.0-1) ... INFO: using old version '/usr/bin/python2.3' Compiling /usr/lib/python2.3/site-packages/logilab/common/adbh.py ... File "/usr/lib/python2.3/site-packages/logilab/common/adbh.py", line 49 @classmethod ^ SyntaxError: invalid syntax pycentral: pycentral pkginstall: error byte-compiling files (51) pycentral pkginstall: error byte-compiling files (51) dpkg : erreur de traitement de python-logilab-common (--configure) : le sous-processus post-installation script a retourné une erreur de sortie d'état 1 [...] Des erreurs ont été rencontrées pendant l'exécution : python-logilab-common E: Sub-process /usr/bin/dpkg returned an error code (1) Comments :: On 2007/10/31 10:53 - afayolle wrote : renamed and changed severity, because we really want to keep compatible with python2.3 ticket #4380: adbh: function to list tables/indices of a database ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved version 0.25.1 -------------- :publication date: 2007/12/11 :expected date: n/a ticket #4414: various mysql/postgres fixes in db.py and adbh.py ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved * table argument of list_indices should be case insensitive (adbh) * MySQLDB return an array instance in some cases (db) ticket #3683: --profile option on pytest ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved displaying a profiling report after tests execution version 0.25.2 -------------- :publication date: 2007/12/20 :expected date: n/a ticket #4432: adbh: missing a "need_from_clause" attribute to indicate DBMS *requiring* something in the FROM clause ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved such as fu***** mysql. version 0.26.0 -------------- :publication date: 2008/01/07 :expected date: n/a ticket #4445: modutils: new LazyObject class ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved to support lazy loading of modules ticket #4453: db: binarywrap support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved version 0.26.1 -------------- Minor enhancement :publication date: 2008/01/10 :expected date: n/a ticket #4508: add man page for pytest ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved the pytest script does not have a man page. ticket #4519: textutils: infinite loop in normalize_text in some case ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved actually when an indent string containing space is given and text contains a non wrappable string longer the max line length. ticket #4323: pytest manpage missing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved write a manpage for pytest. a simple one will do. ticket #4501: optparser does not understand --version at top level ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved when calling a program using optparser with --version, it crashes with "unknown command", which is annoying when using e.g. help2man. version 0.27.0 -------------- :publication date: 2008/01/25 :expected date: n/a ticket #4616: interface: fix subinterface handling ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved ticket #4612: deprecation: new class_moved utility function ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved version 0.28.0 -------------- :publication date: 2008/02/06 :expected date: n/a ticket #4624: new `attrdict` and `nullobject` classes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved attrdict to make values of a dictionary appears as object's attribute, nullobject to be used as default marker, with false boolean value. ticket #4628: testlib: new `strict` argument to assertIsInstance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved triggering object is an instance of class but not a subclass ticket #4631: shellutils: new `chmod` function ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved as os.chmod but accepting login/group as argument, not only uid/gid version 0.28.1 -------------- :publication date: 2008/02/18 :expected date: n/a ticket #4702: testlib: fix generative tests description storage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved and they should be named so one can skip them easily ticket #4695: configuration: buggy merge_options, and should not pass key unrecognized to optparser ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved ticket #4699: modutils: includ Stefan Rank's patch to deal with 2.4 relative import ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved version 0.28.2 -------------- restore python2.3 compatibility :publication date: 2008/02/18 :expected date: n/a ticket #4724: testlib.py's genexp breaks python2.3 compat ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.000 :state: resolved * testlib.py uses genexps * testlib.py does not work with python2.3's TestSuite class version 0.29.1 -------------- * date: new nb_open_days function counting worked days between two date * adbh: add -p option to mysql commands to ask for password :publication date: 2008/03/24 :expected date: n/a version 0.30.0 -------------- :publication date: 2008/04/25 :expected date: n/a ticket #4841: db: remember logged user on the connection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved ticket #4866: clcommands: bash completion helpers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved * hiddens commands * generic ListCommandsCommand useful to build bash completion helpers ticket #4869: backport some part of the ChangeLog support from logilab.devtools ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved into a lgc.changelog module version 0.31.0 -------------- :publication date: 2008/05/08 :expected date: n/a ticket #4947: customisation with pytestconf.py ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved when pytest finds pytestconf.py it uses its content to customize the command-line parser and the test runner. version 0.32 ------------ :publication date: 2008/06/12 :expected date: n/a ticket #5243: add a new TestCase assertion (is and xml egal tuple) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved add an assertIS and a assertXMLEqualsTuple to logilab.common.unittest.TestCase ticket #5241: create an apply_unit function ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved create a function parsing value with unit. eg: 1m 45s -> 105s version 0.33.0 -------------- :publication date: 2008/06/27 :expected date: n/a ticket #4995: Un escaped rest output ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 1.000 :state: resolved The rest ouput don't escape special rest character resulting to a invalid rest output. Comments :: On 2008/06/24 12:25 - ocayrol wrote : This bug doesn't concern logilab-doctools but logilab-common (cf. Configuration.py). Thus, I've changed the bug affectation. version 0.34.0 -------------- :publication date: 2008/08/07 :expected date: n/a ticket #5742: fix progressbar ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.000 :state: resolved stop overflow, flicking and incorrect progress. ticket #5715: db: on queries like "SELECT 'a string'", postgres return 705 (aka 'unknown') type code ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved in that case we're expecting that the db adapters'process_value() method returns an unicode string, though this is not the case (yet) ticket #5747: add Decimal type ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.000 :state: resolved cf changelog messages. ticket #5745: various little pytest improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.000 :state: resolved cf commit messages. version 0.35.0 -------------- :publication date: 2008/09/10 :expected date: n/a ticket #5962: tags in testlib ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved add tags to tests and select by tags with pytest version 0.35.2 -------------- :publication date: 2008/10/01 :expected date: n/a ticket #6011: lgc.configuration ignore customized option values ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.000 :state: resolved Custom option values passed on the command line are ignored if the option has a default value. Comments :: On 2008/09/15 19:17 - adimascio wrote : It looks like the problem appeared with this `changeset`_ .. _changeset: http://www.logilab.org/cgi-bin/hgwebdir.cgi/logilab/common/rev/42c8cae57420 ticket #5979: broken debian package w/ py < 2.5 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved :: Compiling /usr/lib/python2.4/site-packages/logilab/common/context.py ... File "/usr/lib/python2.4/site-packages/logilab/common/context.py", line 9 yield path SyntaxError: 'yield' not allowed in a 'try' block with a 'finally' clause Comments :: On 2008/09/19 10:02 - sthenault wrote : module removed until a nicest way to deal with this is found ticket #5945: wrong edge proporties in graph.DotBackend ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved Edges without properties have same properties as the previous edge. This is an obvious DotBackend.emit_edge bug (see http://www.graphviz.org/doc/info/lang.html "Semantic Notes") ticket #3278: man page generation broken ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved optik specific substitution string for default value get inserted while it shouldn't. version 0.36.0 -------------- :publication date: 2008/10/30 :expected date: n/a ticket #4910: default values are missing in manpage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.500 :state: resolved The %default variables are not expanded in the pylint manpage. Check for '[current: %default]' entries. Comments :: On 2008/09/17 11:37 - eanclin wrote : also, --generate-man option should be hidden. ticket #3841: change cache.Cache implementation to inherit from dict ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.500 :state: resolved so : * we don't have to reimplement methods of the dictionnary interface which only delegate to the underlying dict * we don't get at some point errors like "Cache has no method pop" ticket #5555: --restart option on pytest ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 1.500 :state: resolved When a lot of tests fail, we often use pytest as follows:: $ pytest -x test_foo.py # fix the first failure, and rerun pytest: $ pytest -x test_foo.py # etc. For big test suites (or when running pytest on a whole project), it would be nice to have a ``--restart`` option that would restart on the first failure. ticket #4943: pytest color output ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.500 :state: resolved * use logilab.common.textutils to colorize pytest's output when stderr is a terminal (cf os.isatty()) ERROR: FAIL: and FAILED should appear ligthred * when run with option -i, pdb is started and pdb's list command outputs code in color. can this be configured ? * would outputing tracebacks in color be a good idea ? ticket #4932: pygmentize output of pytest ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.500 :state: resolved use pygments to output the tracebacks in colors when outputting to a terminal. ticket #3724: add require_version and require_module functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.500 :state: resolved It could be useful to have those 2 functions in order to declare that a test requires a specific version of python or a specfic module. If the requirement is not satisfied, the test would be skipped. In python >= 2.4, we would then be able to write :: @require_version('2.5') @require_module('mx.DateTime') def test_something(self): # ... version 0.36.1 -------------- :publication date: 2008/11/14 :expected date: n/a ticket #6528: [common.configuration] check_date checks for a password ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.500 :state: resolved Bug report and patch by Alain Barthes (thx): problem line 165 in configuration.py ticket #6592: incorrect edges syntax in dot file generation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.200 :state: resolved fix dot files' edge generation Before this patch, edges were defined using the following scheme : Node1 -> Node2 edge [attrs...] Node2 -> Node3 which `dot` understands as three instructions : Node1 -> Node2 ; edge [attr...]; Node2 -> Node3; which means that edge properties are applied to the Node2->Node3 edge rather than to the Node1->Node2 edge. The correct syntax is : Node1 -> Node2 [attr...]; Node2 -> Node3; ticket #6568: rename .restart to .pytest.restart ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.100 :state: resolved to avoid name clash with other tools ticket #6594: add common.shellutils.globfind() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.200 :state: resolved introduce shellutils.globfind as an alternative to find that accepts glob patterns (easier to have separate function for backward compatibility reasons) version 0.37.0 -------------- :publication date: 2008/12/09 :expected date: n/a ticket #6782: Implement a Priority Task Queue ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :state: resolved This class would be based on the standard ``Queue.Queue`` class. ticket #6778: add a new "time" option type in configuration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :state: resolved The option should be able to understand common time units such as ``ms``, ``s``, ``min``, ``h`` and ``d``. ticket #6780: add a "bytes" option type in configuration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :state: resolved The option should be able to understand common bytes units such as ``b``, ``kb``, ``mb``, ``gb`` and ``td``. ticket #6776: process management module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :state: resolved A proc module would provide : - provide some functions to analyze /proc (on linux) - resource control (memory / time / cpu time) version 0.37.1 -------------- :publication date: 2008/12/11 :expected date: n/a ticket #6809: contexts.py is syntactically incorrect wrt python2.4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.100 :state: resolved The current implementation of ``tempdir`` uses ``yield`` inside a try/finally block, which is incorrect in python2.4. ``tempdir`` should be implemented using the full context manager protocol (i.e. ``__enter__`` and ``__exit__``). version 0.37.2 -------------- :publication date: 2009/01/08 :expected date: n/a ticket #6913: bad type mapping from Datetime w/ mysql ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.100 :state: resolved should be datetime, not timestamp which is automatically updated on row writes ticket #6917: encoding support in configuration file generation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.200 :state: resolved right now crash if there is some non ascii unicode strings version 0.38.0 -------------- :publication date: 2009/01/26 :expected date: n/a ticket #5237: new specific options types in optik_ext for time/byte which understand associated units ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.000 :state: resolved using textutils.apply_units. ticket #4788: easy install ~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :state: resolved think about changing logilab-common layout and internal dev procedures to fit easy_install and PyPI. ticket #4993: [Category Name] may be case insensitive in configuration file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved in the current version of the logilab.devtools.configuration module, Category name are case sensitive. [Exemple Category] != [EXEMPLE CATEGORY] Making Category name case insensitive may avoid common mistake. Comments :: On 2008/10/16 18:18 - Unknown author wrote : i implemented a unit test trying to produce the error but i failed. try to get in touch with pyves to talk about it. version 0.38.1 -------------- :publication date: 2009/02/26 :expected date: n/a ticket #8134: new monkeypatch decorator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.100 :state: resolved version 0.39.0 -------------- :publication date: 2009/03/25 :expected date: n/a ticket #7915: ImportError: cannot import name SIGXCPU on windows ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved Reported by Sini Mäkelä, using 0.38.0 on Windows, python 2.5.2:: Traceback (most recent call last): File "c:\Python25\Scripts\pylint.bat", line 11, in from pylint import lint File "C:\Python25\Lib\site-packages\pylint\lint.py", line 31, in from pylint.checkers import utils File "C:\Python25\Lib\site-packages\pylint\checkers\__init__.py", line 40, in from logilab.astng.utils import ASTWalker File "C:\Python25\Lib\site-packages\logilab\astng\__init__.py", line 256, in List._proxied = MANAGER.astng_from_class(list) File "C:\Python25\Lib\site-packages\logilab\astng\manager.py", line 191, in astng_from_class modastng = self.astng_from_module_name(modname) File "C:\Python25\Lib\site-packages\logilab\astng\manager.py", line 142, in astng_from_module_name return self.astng_from_module(module, modname) File "C:\Python25\Lib\site-packages\logilab\astng\manager.py", line 176, in astng_from_module from logilab.astng.builder import ASTNGBuilder File "C:\Python25\Lib\site-packages\logilab\astng\builder.py", line 40, in from logilab.common.fileutils import norm_read File "c:\python25\lib\site-packages\logilab\common\fileutils.py", line 25, in from logilab.common.shellutils import find File "C:\Python25\Lib\site-packages\logilab\common\shellutils.py", line 23, in from logilab.common.proc import ProcInfo, NoSuchProcess File "C:\Python25\Lib\site-packages\logilab\common\proc.py", line 115, in from signal import signal, SIGXCPU, SIGKILL, SIGUSR2, SIGUSR1 ImportError: cannot import name SIGXCPU Comments :: On 2009/02/03 12:10 - afayolle wrote : Changing line 115 of logilab/common/proc.py to:: from signal import * should be enough to get pylint to run. The change was probably introduced for apycot which does not run on Windows anyway. > On 2009/02/09 23:14 - anon wrote : > two more lines that need to be changed to get it to run on Windows: > > from signal import * > > from os import * > > from threading import Timer, currentThread, Thread, Event > > from time import time > > # from resource import getrlimit, setrlimit, RLIMIT_CPU, RLIMIT_AS On 2009/02/26 11:50 - anon wrote : issue not fixed in 0.38.1 > On 2009/02/26 12:25 - sthenault wrote : > gasp, that's true 0.38.1 did not include the patch fixing this... ticket #8430: testlib: allows to skip a module by raising TestSkipped from module import ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.200 :state: resolved ticket #8589: migrate debian packaging to python-support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.250 :state: resolved reuse version 0.38.1-1 that Sandro Tosi put in debian. ticket #8423: add flag to db module telling if we want to use mx.DateTime or datetime ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.200 :state: resolved ticket #8427: testlib: option to have cProfile reports ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.200 :state: resolved version 0.39.1 -------------- :publication date: 2009/04/08 :expected date: n/a ticket #6760: maboa crashes on unknown encoding ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 1.000 :state: resolved On maboa-htmlize I get the following :: while processing XXXX.mdir Traceback (most recent call last): File "/usr/bin/maboa-htmlize", line 22, in run(mbox,target_dir) File "/usr/bin/maboa-htmlize", line 10, in run proc.process_mailbox(mbox) File "/usr/lib/python2.5/site-packages/maboa/htmlize.py", line 195, in process_mailbox for dir_name, msg_filename, html, attachments in self._iterate_mailbox(mbox, indexer): File "/usr/lib/python2.5/site-packages/maboa/htmlize.py", line 155, in _iterate_mailbox msg_dict = self._msg_to_dict(message) File "/usr/lib/python2.5/site-packages/maboa/htmlize.py", line 105, in _msg_to_dict dico['from'] = mangle_addr(message.get('From','')) File "/usr/lib/python2.5/site-packages/logilab/common/umessage.py", line 52, in get return decode_QP(value) File "/usr/lib/python2.5/site-packages/logilab/common/umessage.py", line 24, in decode_QP parts.append(unicode(decoded, charset, 'replace')) LookupError: unknown encoding: Comments :: On 2009/03/30 12:30 - anon wrote : The cron that runs every day sends us this error... any idea of when this bug could be fixed ? On 2009/04/08 14:02 - Unknown author wrote : It's actually a problem in umessage.py. The ``decode_QP`` function doesn't handle encoded lines with no charset definition version 0.40.0 -------------- :publication date: 2009/05/14 :expected date: n/a ticket #9162: new module with some sphinx utilities ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.500 :state: resolved ticket #9166: use a global variable to control mx datetime / py datetime usage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.500 :state: resolved considered by umessage and db version 0.40.1 -------------- :publication date: 2009/06/03 :expected date: n/a ticket #9229: lgc.date doesn't work with python's datetime module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.250 :state: resolved lgc.date functions should be able to work with both mx.DateTime and python's datetime module. version 0.41.0 -------------- :publication date: 2009/06/03 :expected date: n/a ticket #9242: adbh: new methods ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.200 :state: resolved adbh: new alter_column_support flag, sql_set_null_allowed and sql_change_col_type methods ticket #9244: modutils: new extrapath argument to modpath_from_file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.300 :state: resolved param extrapath: optional extra search path, with path as key and package name for the path as value. This is usually useful to handle package splited in multiple directories using __path__ trick. version 0.42.0 -------------- :publication date: 2009/07/02 :expected date: n/a ticket #9561: adbh: fix default set_null_allowed implementation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.100 :state: resolved ticket #9554: new module for Pyro utilities ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.500 :state: resolved factorize common pyro stuff (objects [un]registration...) ticket #9558: adbh: new case_sensitive resource descriptor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.010 :state: resolved version 0.43.0 -------------- :publication date: 2009/07/22 :expected date: n/a ticket #8130: ubuntu upgrade bug ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.100 :state: rejected cf http://forum.ubuntu-fr.org/viewtopic.php?id=217871 ticket #9143: remaining junk in site-packages after python-central to python-support migration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.200 :state: resolved .pyc files and buggy symlinks are left. :: rm -rf /usr/lib/python*/site-packages/logilab* fixes the pb (though we may miss some other python-central generated files) ticket #9766: add dbf read support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.100 :state: resolved Use dbf.py from http://www.physics.ox.ac.uk/users/santoso/Software.Repository.html and thank Yusdi Santoso. ticket #9764: add title to shellutils.ProgressBar ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.100 :state: resolved add option title to ProgressBar so that it can print some text before the bar itself. ticket #9796: add shellutils.confirm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.100 :state: resolved move cubicweb.toolsutils.confirm() to logilab.common.shellutils version 0.44.0 -------------- :publication date: 2009/08/07 :expected date: n/a ticket #6613: arguments of options are broken ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.200 :state: rejected arguments of options are broken, seemlingly due by appling some lower() on the argument values; example pylint :: $ pylint --disable-checker=W0704 [...] Exception: no checker named w0704 this might be related to implementation of : #4993: [Category Name] may be case insensitive in configuration file ticket #9606: pytest: wrong tb when error under assertRaises ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.500 :state: resolved :: syt@scorpius:~/src/fcubicweb/cubes/vcsfile/test$ pytest unittest_write.py error_new_file -x ======================== unittest_write.py ========================= E ====================================================================== ERROR: test_error_new_file (unittest_write.HGSourceWriteTC) ---------------------------------------------------------------------- Traceback (most recent call last) File "/home/syt/src/fcubicweb/cubes/vcsfile/test/unittest_write.py", line 185, in test_error_new_file {'repo': self.repoeid, 'dir': u'dir1', 'name': u'tutu.txt'}) TypeError: __init__() takes exactly 2 arguments (3 given) while the expected tb is:: syt@scorpius:~/src/fcubicweb/cubes/vcsfile/test$ pytest unittest_write.py error_new_file -x ======================== unittest_write.py ========================= E ====================================================================== ERROR: test_error_new_file (unittest_write.HGSourceWriteTC) ---------------------------------------------------------------------- Traceback (most recent call last) File "/home/syt/src/fcubicweb/cubes/vcsfile/test/unittest_write.py", line 184, in test_error_new_file 'WHERE R eid %(repo)s', {'repo': self.repoeid, 'dir': u'dir1', 'name': u'tutu.txt'}) File "/home/syt/src/logilab/common/pytest.py", line 168, in not_covered return func(*args, **kwargs) File "/home/syt/src/fcubicweb/cubicweb/devtools/apptest.py", line 131, in execute return self.env.execute(*args, **kwargs) File "/home/syt/src/fcubicweb/cubicweb/devtools/_apptest.py", line 160, in execute return self.cnx.cursor(req).execute(unicode(rql), args, eidkey) File "/home/syt/src/fcubicweb/cubicweb/dbapi.py", line 586, in execute parameters, eid_key, build_descr) File "/home/syt/src/fcubicweb/cubicweb/server/repository.py", line 592, in execute build_descr) File "/home/syt/src/fcubicweb/cubicweb/devtools/__init__.py", line 268, in new_execute rset = base_execute(*args, **kwargs) File "/home/syt/src/fcubicweb/cubicweb/server/querier.py", line 649, in execute results = plan.execute() File "/home/syt/src/fcubicweb/cubicweb/server/querier.py", line 161, in execute result = step.execute() File "/home/syt/src/fcubicweb/cubicweb/server/ssplanner.py", line 427, in execute result = self.plan.insert_entity_defs() File "/home/syt/src/fcubicweb/cubicweb/server/querier.py", line 492, in insert_entity_defs for edef in row]) File "/home/syt/src/fcubicweb/cubicweb/server/repository.py", line 998, in glob_add_entity self.hm.call_hooks('before_add_entity', etype, session, entity) File "/home/syt/src/fcubicweb/cubicweb/server/hooksmanager.py", line 112, in call_hooks hook(*args, **kwargs) File "/home/syt/src/fcubicweb/cubes/vcsfile/hooks.py", line 205, in call CheckVersionedFileOp(session, entity) TypeError: __init__() takes exactly 2 arguments (3 given) problem seems in testlib around: .. sourcecode:: python # count number of relevant levels in the traceback: skip first since # it's our own _proceed function, and then start counting, using # unittest's heuristic nb_frames_skipped = self._count_relevant_tb_levels(tb.tb_next) for index, (frame, filename, lineno, funcname, ctx, ctxindex) in enumerate(frames): if not (0 < index <= nb_frames_skipped): continue ticket #9877: add a module to read dbf file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 1.000 :state: resolved dbf is a fox pro database format. ticket #9864: shellutils: class RawInput to supersede confirm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.200 :state: resolved shellutils.confirm is too limited. implement RawInput. version 0.45.0 -------------- :publication date: 2009/08/26 :expected date: n/a ticket #10009: Add function for XML processing instruction parsing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.100 :state: resolved This function already exists in the version of `pybill` currently in development. version 0.45.1 -------------- :publication date: 2009/10/07 :expected date: n/a ticket #18349: configuration: make Method usable as 'callback' value ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.100 :state: resolved ticket #8849: Using plugins, options and .pylintrc crashes PyLint ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.500 :state: resolved Laurent reported on python-projects I am trying to create a plugin that declares its own options for use with the .pylintrc file. This only works when the plugin is auto-loaded from the pylint.checkers package. When the plugin is outside pylint.checkers (given by .pylintrc's load-plugins), I get the traceback:: Traceback (most recent call last): File "D:\Apps\Python26\lib\runpy.py", line 121, in _run_module_as_main "__main__", fname, loader, pkg_name) File "D:\Apps\Python26\lib\runpy.py", line 34, in _run_code exec code in run_globals File "D:\Apps\Python26\lib\site-packages\pylint-0.18.0-py2.6.egg\pylint\lint.py", line 932, in Run(sys.argv[1:]) File "D:\Apps\Python26\lib\site-packages\pylint-0.18.0-py2.6.egg\pylint\lint.py", line 854, in __init__ linter.load_plugin_modules(plugins) File "D:\Apps\Python26\lib\site-packages\pylint-0.18.0-py2.6.egg\pylint\lint.py", line 300, in load_plugin_modules module.register(self) File "custom.py", line 15, in register linter.register_checker(CustomChecker(linter)) File "D:\Apps\Python26\lib\site-packages\pylint-0.18.0-py2.6.egg\pylint\lint.py", line 346, in register_checker self.register_options_provider(checker) File "d:\apps\python26\lib\site-packages\logilab_common-0.39.0-py2.6.egg\logilab\common\configuration.py", line 385, in register_options_provider non_group_spec_options, provider) File "d:\apps\python26\lib\site-packages\logilab_common-0.39.0-py2.6.egg\logilab\common\configuration.py", line 403, in add_option_group self._config_parser.add_section(group_name) File "D:\Apps\Python26\lib\ConfigParser.py", line 245, in add_section raise DuplicateSectionError(section) ConfigParser.DuplicateSectionError: Section 'CUSTOMCHECK' already exists To recreate this configuration: 1. Create the module custom.py, in a package other than pylint.checkers 2. In this module, declare a checker with custom options: .. sourcecode:: python from pylint.checkers import BaseChecker from pylint.interfaces import IASTNGChecker class CustomChecker(BaseChecker): __implements__ = IASTNGChecker name = 'customcheck' priority = -1 options = ( ('custom', {'default': ('value', ), 'type': 'csv', 'metavar': '', 'help': 'Custom option' }), ) def register(linter): print 'Registering custom checker' linter.register_checker(CustomChecker(linter)) 3. Create a custom.pylintrc file, that uses, loads and declares the checker's section:: [MASTER] load-plugins=custom [MESSAGE CONTROL] enable-checker=customcheck [CUSTOMCHECK] custom=v1,v2 4. Launch PyLint:: python -m pylint.lint --rcfile=custom.pylintrc custom.py Analysis: This happens because, in lint.py, class Run, method __init__: a. Internal plugins are loaded (using linter.load_plugin_modules(self._plugins) b. The .pylintrc file is loaded (using linter.read_config_file(), this overrides already declared contents) c. External plugins are loaded (using linter.load_plugin_modules(plugins)). This last step fails, as logilab-common is trying to (re-)add a section that already exists in the config file, loaded in b. ticket #18347: configuration: proper bytes and time option types support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.200 :state: resolved ticket #10065: add diff_colorize_ansi() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.100 :state: resolved add diff_corolize_ansi(lines, lines) to logilab.common.textutils version 0.45.2 -------------- :publication date: 2009/11/23 :expected date: n/a ticket #18960: fix spelling mistakes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.100 :state: resolved http://lists.logilab.org/pipermail/python-projects/2009-November/002101.html version 0.46.0 -------------- :publication date: 2009/12/23 :expected date: n/a ticket #19442: SQL Server support in logilab.common.db and adbh ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 2.000 :state: resolved Use pyodbc to access SQLServer version 0.46.1 -------------- :publication date: 2010/02/05 :expected date: n/a version 0.47.0 -------------- :publication date: 2010/02/10 :expected date: n/a ticket #19687: support backup and restore with SQL Server ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 1.000 :state: resolved update adbh.py to support backup and restore on SQLServer. Comments :: On 2010/01/18 17:16 - afayolle wrote : a bit tricky since the interface is different: SqlServer uses TransactSQL for this rather than an external command. > On 2010/01/19 09:45 - afayolle wrote : > actually, I was too fast in closing this one ticket #20322: adbh: new sql_rename_col method ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.200 :state: resolved since syntax differs accross dbms ticket #20318: get back date utility functions from cw ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.500 :state: resolved trying to make python datetime module usable in real world... ticket #20320: deprecation: deprecated now takes an optional 'stacklevel' argument, default to 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.100 :state: resolved version 0.48.0 -------------- :publication date: 2010/02/17 :expected date: n/a ticket #20649: various logilab.common.db fixes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 5.000 :state: resolved ticket #20651: fix logilab.common.date mxdatetime support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.200 :state: resolved recent changes broke mxdatetime compatibility ticket #20648: generative test should not be interrupted by self.skip() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.500 :state: resolved Make it possible to skip a InnerTest-based generative test alone, without skipping the whole test. Decide later if innerSkip should replace skip or not. version 0.48.1 -------------- :publication date: 2010/02/26 :expected date: n/a ticket #20722: adbh: unable to specify db port on [backup|restore]_commands ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.200 :state: resolved ticket #20847: fix date processing for SQLServer 2005 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.100 :state: resolved bug : datetime is a subclass of date, so isinstance was returning true for datetime instances (and we were losing the time part for all datetime attributes) version 0.49.0 -------------- :publication date: 2010/03/17 :expected date: n/a ticket #20987: "pytest -x" go to the next test directory when an error/failure is encountered ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.300 :state: resolved (when there are multiple test directories, such as in cw). It should stop on the first failure. ticket #20403: reorganize (or maybe even split out) lgc.db and lgc.adbh ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :state: resolved These two modules are growing, and they are starting to beg for a refactoring. I'd like to, when I get some time for this, turn them into a dbapi package (either a subpackage of lgc or a separate project), with separate modules for the different backends we support, so that navigation in the code becomes manageable. Comments :: On 2010/02/11 10:19 - afayolle wrote : actually, this seems to be the scope of `logilab-database`_. I'll keep the code in logilab-common as this project is alive and logilab-database is not yet. .. _logilab-database: http://www.logilab.org/project/logilab-database On 2010/02/11 10:47 - sthenault wrote : +1 for logilab.db version 0.50.0 -------------- bugfix :publication date: 2010/04/20 :expected date: n/a ticket #23389: @cached decorator hides the original function's docstring ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.100 :state: resolved hence impairing sphinx ability to properly include them using autoclass/autoxxx directives ticket #23467: configuration: support for multiple providers with the same name ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.500 :state: resolved so we can split pylint checkers into smaller chunks ticket #23465: graph: support for generating html map file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.200 :state: resolved version 0.50.1 -------------- :publication date: 2010/04/26 :expected date: n/a ticket #23809: fix debian packaging ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.200 :state: done - fix some packaging bugs on version detection - update Logilab's debian/rules from Debian files - change LICENSE to LGPL2 everywhere version 0.50.2 -------------- :publication date: 2010/05/21 :expected date: n/a ticket #24450: optik_ext import breaks optparse ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.200 :state: resolved after optik_ext is imported, some stuff is overridden in the optparse module and this breaks help generation of "normal" optparse scripts:: File "/usr/lib/python2.5/optparse.py", line 1617, in format_option_help result.append(OptionContainer.format_option_help(self, formatter)) File "/home/alf/cubicweb/logilab/common/optik_ext.py", line 277, in format_option_help if option.level <= outputlevel and not option.help is SUPPRESS_HELP: AttributeError: Option instance has no attribute 'level' Comments :: On 2010/05/18 04:19 - anon wrote : Same issue with paver and logilab_common-0.50.1:: $ paver help Traceback (most recent call last): File "../workspace/.buildout/eggs/Paver-1.0.2-py2.6.egg/paver/tasks.py", line 170, in _run_task return do_task() File "../workspace/.buildout/eggs/Paver-1.0.2-py2.6.egg/paver/tasks.py", line 167, in do_task return func(**kw) File "../workspace/.buildout/eggs/Paver-1.0.2-py2.6.egg/paver/tasks.py", line 543, in help help_function() File "/usr/lib/python2.6/optparse.py", line 1664, in print_help file.write(self.format_help().encode(encoding, "replace")) File "/usr/lib/python2.6/optparse.py", line 1644, in format_help result.append(self.format_option_help(formatter)) File "/usr/lib/python2.6/optparse.py", line 1624, in format_option_help result.append(OptionContainer.format_option_help(self, formatter)) File "../workspace/.buildout/eggs/logilab_common-0.50.1-py2.6.egg/logilab/common/optik_ext.py", line 264, in format_option_help if option.level <= outputlevel and not option.help is SUPPRESS_HELP: AttributeError: Option instance has no attribute 'level' On 2010/05/18 04:38 - anon wrote : Basic NOP ... in ./eggs/logilab_common-0.50.1-py2.6.egg/logilab/common/optik_ext.py Changed line 264 from:: if option.level <= outputlevel and not option.help is SUPPRESS_HELP: To:: if getattr(option,'level',0) <= outputlevel) and not option.help is SUPPRESS_HELP: On 2010/05/18 04:42 - anon wrote : Turns out afayolle already fixed this in http://www.logilab.org/cgi-bin/hgwebdir.cgi/logilab/common/rev/d706bd7eabcf . Any ETA on 0.50.2? ticket #32717: modutils: is_standard_module false negative ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.200 :state: resolved with from module import something where something is not a sub-module version 0.50.3 -------------- :publication date: 2010/06/07 :expected date: n/a ticket #33180: 0.50.2 - test suite fails ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.000 :state: resolved the test suite fails for 0.50.2 with these errors: ==================== unittest_configuration.py ===================== .........E... ====================================================================== ERROR: test_manpage (unittest_configuration.ConfigurationTC) ---------------------------------------------------------------------- Traceback (most recent call last) File "/home/morph/deb/build-area/logilab- common-0.50.2/test/unittest_configuration.py", line 292, in test_manpage self.cfg.generate_manpage(__pkginfo__, stream=StringIO()) File "/home/morph/deb/build-area/logilab- common-0.50.2/build/lib/logilab/common/configuration.py", line 576, in generate_manpage section, stream=stream or sys.stdout) File "/home/morph/deb/build-area/logilab- common-0.50.2/build/lib/logilab/common/optik_ext.py", line 377, in generate_manpage print >> stream, formatter.format_head(optparser, pkginfo, section) File "/home/morph/deb/build-area/logilab- common-0.50.2/build/lib/logilab/common/optik_ext.py", line 320, in format_head short_desc = self.format_short_description(pgm, pkginfo.short_desc) AttributeError: 'module' object has no attribute 'short_desc' ===================== unittest_deprecation.py ====================== ...E ====================================================================== ERROR: test_moved (unittest_deprecation.RawInputTC) ---------------------------------------------------------------------- Traceback (most recent call last) File "/home/morph/deb/build-area/logilab- common-0.50.2/test/unittest_deprecation.py", line 73, in test_moved any_func() File "/home/morph/deb/build-area/logilab- common-0.50.2/build/lib/logilab/common/deprecation.py", line 113, in callnew m = load_module_from_name(modpath) File "/home/morph/deb/build-area/logilab- common-0.50.2/build/lib/logilab/common/modutils.py", line 113, in load_module_from_name return load_module_from_modpath(dotted_name.split('.'), path, use_sys) File "/home/morph/deb/build-area/logilab- common-0.50.2/build/lib/logilab/common/modutils.py", line 152, in load_module_from_modpath mp_file, mp_filename, mp_desc = find_module(part, path) ImportError: No module named test It would be extra cool if you could provide a patch to apply against 0.50.2 so that I can upload the debian package (I'm currently waiting since this failure). Else, a .3 release might be nice aswell :) Regards, Sandro Comments :: On 2010/06/04 18:10 - stosi wrote : the commit 1150:d347bb3985e4 fixes the "AttributeError: 'module' object has no attribute 'short_desc'" but not the "ImportError: No module named test " error > On 2010/06/04 18:56 - nchauvat wrote : > http://www.logilab.org/projectenvironment/logilab-common%20tests/quick shows > the test failures. ticket #33179: Test suite repeatably fail when run on 2010-05-24 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.000 :state: resolved logilab-common v0.50.1 and .2 When test suite is executed and date is 2010-05-24 (you can replicate changing the date of your machine) it fails with: ========================= unittest_date.py ========================= ..............F....................F..... ====================================================================== FAIL: test_open_days_now_now (unittest_date.DateTC) ---------------------------------------------------------------------- Traceback (most recent call last) File "/tmp/buildd/logilab-common-0.50.2/test/unittest_date.py", line 115, in test_open_days_now_now self.assertOpenDays(x, x, 0) File "/tmp/buildd/logilab-common-0.50.2/test/unittest_date.py", line 80, in assertOpenDays self.assertEquals(got, expected) File "/usr/lib/python2.5/unittest.py", line 334, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: -1 != 0 ====================================================================== FAIL: test_open_days_now_now (unittest_date.MxDateTC) ---------------------------------------------------------------------- Traceback (most recent call last) File "/tmp/buildd/logilab-common-0.50.2/test/unittest_date.py", line 115, in test_open_days_now_now self.assertOpenDays(x, x, 0) File "/tmp/buildd/logilab-common-0.50.2/test/unittest_date.py", line 80, in assertOpenDays self.assertEquals(got, expected) File "/usr/lib/python2.5/unittest.py", line 334, in failUnlessEqual (msg or '%r != %r' % (first, second)) AssertionError: -1 != 0 I've tried to test with date set to 2010-05-25 (yesterday), 2010-05-26 (today), 2010-05-31 (the next monday), 2010-06-24 (the 24th day of the next month) but all of them were executed just fine. Regards, Sandro ticket #24332: add option splitlines to testlib.assertTextEquals ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.200 :state: resolved for the cases when it is useful. assertLinesEquals already has one. version 0.51.0 -------------- :publication date: 2010/08/26 :expected date: n/a ticket #35331: String exception removed from Python >= 2.6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.000 :state: validation pending Hello, in Python versions >= 2.6, string exceptions have been removed. In logilab-common there is one of them you might want to address: testlib.py: raise "Error while reading \ This comes from a rather fast check, you might also want to give it a deeper look. Thanks in advance, Sandro ticket #38194: cleanup clcommands api and deprecate optparser ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 1.000 :state: validation pending ticket #9044: short documentation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.200 :state: validation pending Add a short list to describe briefly each module of logilab.common (description list generated by epydoc for instance). ticket #38197: minor api enhancements ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 1.000 :state: validation pending * hg: new module regrouping some mercurial utility functions * textutils: new split_url_or_path and text_to_dict functions * logging_ext: - init_log now accept optionaly any arbitrary handler - threshold default to DEBUG if debug flag is true and no threshold specified * date: new ustrftime implementation working around datetime limitaion on dates < 1900 ticket #7131: update daemon.py ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 0.300 :state: validation pending update options handling, logging and refactor to be usable by apycotbot/server.py and cubicweb/server/server.py at least (and check its usage in other active projects) version 0.51.1 -------------- :expected date: n/a ticket #6509: new options without [yn] in contradiction with option names ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 1.000 :state: open w options without [yn] in are contradiction with option names and option help messages; example:: pylint --help [...] -r, --reports Tells wether to display a full report or only the messages [current: yes] but:: pylint --reports disables the reports ! also, the ancient use '-yn' is broken ... Comments :: On 2008/11/06 10:49 - afayolle wrote : The traditionnal way of handling these options is to use --no-reports to replace --report n and to keep --reports to mean --reports y. Using the presence of the option to toggle the value is confusing. On 2008/11/11 02:40 - anon wrote : The =[yn] syntax should still be supported for compatibility reasons, to avoid breaking fex Eclipse+pydev usage of pylint. On 2008/11/14 13:06 - nchauvat wrote : I am backing out 692:8c66ea05839d to return to the previous behavior. Next time we will do it right. ticket #8967: modutils _xmlplus detection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.300 :state: open detected by launching pylint on a module using xml.etree result is the same whether pyxml is installed or not. Good:: >>> print xml.__path__ ['/usr/lib/python2.5/xml'] >>> print xml.etree.__path__ ['/usr/lib/python2.5/xml/etree'] >>> print xml.etree.__file__ /usr/lib/python2.5/xml/etree/__init__.pyc Bad:: >>> print xml.__path__ ['/usr/lib/python2.5/site-packages/_xmlplus', '/usr/lib/python2.5/xml'] >>> print xml.etree.__path__ ['/usr/lib/python2.5/xml/etree'] >>> print xml.etree.__file__ /usr/lib/python2.5/xml/etree/__init__.pyc ticket #18966: weird behaviour of lgc.date.nb_open_days() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :state: open # I comment here since I cannot create tickets. # The bug: # logilab.common.date.nb_open_days() is broken # How to reproduce: from datetime import datetime from logilab.common.date import nb_open_days date = datetime(2009, 11, 22, 0, 0, 0, 0) # Sunday print nb_open_days(date, date) # -1 date1 = datetime(2009, 11, 29, 0, 0, 0, 0) # Sunday date2 = datetime(2009, 11, 30, 0, 0, 0, 0) # Sunday + 1 print nb_open_days(date1, date2) # -1 date1 = datetime(2009, 12, 31, 0, 0, 0, 0) # not a working day date2 = datetime(2010, 1, 1, 0, 0, 0, 0) # happy new year and not a working day print nb_open_days(date1, date2) # 1 ticket #19129: --color broken on multi-line statement ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :state: open the IPython colorizer failed to parse partial of multi-line statement that may occurs in test failure traceback. Red error statement are inserted ticket #6675: default values for store_* are not honored ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: bug :load: 0.500 :state: open configuration module stores by default the complementary value at the startup but the python documentation says that we can do that indifferently : http://docs.python.org/library/optparse.html#default-values In specification this is equivalent:: parser.add_option("-v", action="store_true", dest="verbose") parser.add_option("-q", action="store_false", dest="verbose", default=True) and :: parser.add_option("-v", action="store_true", dest="verbose", default=True) parser.add_option("-q", action="store_false", dest="verbose") But with configuration.py:: self.options = ( ('quiet', {'action': 'store_false', 'dest' : "verbose", }), ('verbose', {'action': 'store_true', 'dest' : "verbose", 'default': True, }), ) The default True value will not be honored because overwritten by the verbose option. version 1.0.0 ------------- :expected date: n/a ticket #19647: support python3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :state: open required to be able to run pylint on python3 ticket #9384: adapt to unittest2 / discover ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 5.000 :state: open It looks like http://pypi.python.org/pypi/discover will be part of the stdlib for python2.7 and python3.2. I suppose that would deprecate logilab.common.testlib's own test discovery mechanism. Comments :: On 2010/03/09 15:48 - adimascio wrote : http://pypi.python.org/pypi/unittest2 is the new unittest implementation, available for python2.7 and python3.2 and usable as a standalone module for prior versions. ticket #2402: cleanup unused module and get a 1.0 out ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :type: enhancement :load: 1.000 :state: open pending deprecated modules: * astutils: move to astng * bind (never been used) * html: deprecated * interface: deprecated, use zope.interface or similar * logger/logservice: use logging module * monclient/monserver: move to its own package if used * patricia (never been used) * twisted_distutils (not used anymore) * visitor? useless but used ? Comments :: On 2006/11/08 15:22 - sthenault wrote : interface won't be deprecated yet since it's to widely used in our projects, and I don't want to make most of them depends on zope.interface. On 2010/08/26 09:45 - sthenault wrote : This has been partly done. See lgc README file for more info