1 new commit in py:
https://bitbucket.org/hpk42/py/changeset/8af99f47795c/ changeset: 8af99f47795c user: hpk42 date: 2012-06-08 16:55:05 summary: change iniconfig behaviour to only recognise comment chars if they start the line affected #: 5 files diff -r 6be37b7cb55c6ac1da9e9afa4dbbae6c1f499fd2 -r 8af99f47795c5549af4f83f525904c778a036a04 CHANGELOG --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +Changes between 1.4.8 and 1.4.9.DEV +================================================== + +- changed iniconfig parsing to better conform, now the chars ";" + and "#" only mark a comment at the stripped start of a line + Changes between 1.4.7 and 1.4.8 ================================================== diff -r 6be37b7cb55c6ac1da9e9afa4dbbae6c1f499fd2 -r 8af99f47795c5549af4f83f525904c778a036a04 py/__init__.py --- a/py/__init__.py +++ b/py/__init__.py @@ -8,7 +8,7 @@ (c) Holger Krekel and others, 2004-2010 """ -__version__ = '1.4.8' +__version__ = '1.4.9.dev1' from py import _apipkg diff -r 6be37b7cb55c6ac1da9e9afa4dbbae6c1f499fd2 -r 8af99f47795c5549af4f83f525904c778a036a04 py/_iniconfig.py --- a/py/_iniconfig.py +++ b/py/_iniconfig.py @@ -5,6 +5,8 @@ __all__ = ['IniConfig', 'ParseError'] +COMMENTCHARS = "#;" + class ParseError(Exception): def __init__(self, path, lineno, msg): Exception.__init__(self, path, lineno, msg) @@ -101,15 +103,21 @@ return result def _parseline(self, line, lineno): - # comments - line = line.split('#')[0].rstrip() - line = line.split(';')[0].rstrip() # blank lines + if iscommentline(line): + line = "" + else: + line = line.rstrip() if not line: return None, None # section - if line[0] == '[' and line[-1] == ']': - return line[1:-1], None + if line[0] == '[': + realline = line + for c in COMMENTCHARS: + line = line.split(c)[0].rstrip() + if line[-1] == "]": + return line[1:-1], None + return None, realline.strip() # value elif not line[0].isspace(): try: @@ -148,3 +156,7 @@ def __contains__(self, arg): return arg in self.sections + +def iscommentline(line): + c = line.lstrip()[:1] + return c in COMMENTCHARS diff -r 6be37b7cb55c6ac1da9e9afa4dbbae6c1f499fd2 -r 8af99f47795c5549af4f83f525904c778a036a04 setup.py --- a/setup.py +++ b/setup.py @@ -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.8', + version='1.4.9.dev1', url='http://pylib.org', license='MIT license', platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'], diff -r 6be37b7cb55c6ac1da9e9afa4dbbae6c1f499fd2 -r 8af99f47795c5549af4f83f525904c778a036a04 testing/test_iniconfig.py --- a/testing/test_iniconfig.py +++ b/testing/test_iniconfig.py @@ -1,5 +1,7 @@ import py +import pytest from py._iniconfig import IniConfig, ParseError, __all__ as ALL +from py._iniconfig import iscommentline from textwrap import dedent def pytest_generate_tests(metafunc): @@ -57,7 +59,7 @@ [] ), 'comment on value': ( - 'value = 1 # comment', + 'value = 1', [(0, None, 'value', '1')] ), @@ -69,10 +71,6 @@ '; comment', [] ), - 'comment2 on value': ( - 'value = 1 ; comment', - [(0, None, 'value', '1')] - ), 'comment2 on section': ( '[section] ;comment', @@ -100,7 +98,7 @@ ), } - + def parse(input): # only for testing purposes - _parse() does not use state except path ini = object.__new__(IniConfig) @@ -184,7 +182,7 @@ assert config.lineof('section2') == 3 assert config.lineof('section', 'value') == 2 assert config.lineof('section2','value') == 5 - + assert config['section'].lineof('value') == 2 assert config['section2'].lineof('value') == 5 @@ -288,3 +286,14 @@ def test_api_import(): assert ALL == ['IniConfig', 'ParseError'] + +@pytest.mark.parametrize("line", [ + "#qwe", + " #qwe", + ";qwe", + " ;qwe", +]) +def test_iscommentline_true(line): + assert iscommentline(line) + + Repository URL: https://bitbucket.org/hpk42/py/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. _______________________________________________ py-svn mailing list py-svn@codespeak.net http://codespeak.net/mailman/listinfo/py-svn