Package: python-debian Version: 0.1.21 Severity: normal Tags: patch Deb822.__init__ says: :param sequence: a string, or any any object that returns a line of input each time, normally a file(). Alternately, sequence can be a dict that contains the initial key-value pairs.
and iter_paragraphs says: :param sequence: same as in __init__. However, it breaks with a single string. Even the test suite passes a list of strings. Attached patch adds quick-and-dirty support for a single string.
diff --git a/lib/debian/deb822.py b/lib/debian/deb822.py index 4c5b74e..c4ad14c 100644 --- a/lib/debian/deb822.py +++ b/lib/debian/deb822.py @@ -308,6 +308,9 @@ class Deb822(Deb822Dict): necessary in order to properly interpret the strings.) """ + if isinstance(sequence, basestring): + sequence = sequence.splitlines() + if _have_apt_pkg and use_apt_pkg and isinstance(sequence, file): parser = apt_pkg.TagFile(sequence) for section in parser: diff --git a/tests/test_deb822.py b/tests/test_deb822.py index c3806bd..8f23e78 100755 --- a/tests/test_deb822.py +++ b/tests/test_deb822.py @@ -821,6 +821,16 @@ Description: python modules to work with Debian-related data formats UNPARSED_PARAGRAPHS_WITH_COMMENTS.splitlines(), use_apt_pkg=False)) self._test_iter_paragraphs_comments(paragraphs) + def test_iter_paragraphs_string_comments_use_apt_pkg(self): + paragraphs = list(deb822.Deb822.iter_paragraphs( + UNPARSED_PARAGRAPHS_WITH_COMMENTS, use_apt_pkg=True)) + self._test_iter_paragraphs_comments(paragraphs) + + def test_iter_paragraphs_string_comments_native(self): + paragraphs = list(deb822.Deb822.iter_paragraphs( + UNPARSED_PARAGRAPHS_WITH_COMMENTS, use_apt_pkg=False)) + self._test_iter_paragraphs_comments(paragraphs) + class TestPkgRelations(unittest.TestCase):