Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-bibtexparser for
openSUSE:Factory checked in at 2026-04-29 19:19:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-bibtexparser (Old)
and /work/SRC/openSUSE:Factory/.python-bibtexparser.new.30200 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-bibtexparser"
Wed Apr 29 19:19:36 2026 rev:12 rq:1349935 version:1.4.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-bibtexparser/python-bibtexparser.changes
2026-01-29 17:49:02.867785356 +0100
+++
/work/SRC/openSUSE:Factory/.python-bibtexparser.new.30200/python-bibtexparser.changes
2026-04-29 19:21:18.853609892 +0200
@@ -1,0 +2,9 @@
+Tue Apr 28 13:01:26 UTC 2026 - John Paul Adrian Glaubitz
<[email protected]>
+
+- Update to 1.4.4
+ * Use modern names for pyparsing methods (new minimum pyparsing
+ version is 3.0.0) by @jennifer-richards in (#512)
+- Drop support-new-pyparsing.patch, merged upstream
+- Use Python 3.11 on SLE-15 by default
+
+-------------------------------------------------------------------
Old:
----
python-bibtexparser-1.4.3.tar.gz
support-new-pyparsing.patch
New:
----
python-bibtexparser-1.4.4.tar.gz
----------(Old B)----------
Old: version is 3.0.0) by @jennifer-richards in (#512)
- Drop support-new-pyparsing.patch, merged upstream
- Use Python 3.11 on SLE-15 by default
----------(Old E)----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-bibtexparser.spec ++++++
--- /var/tmp/diff_new_pack.g73VQq/_old 2026-04-29 19:21:19.373631176 +0200
+++ /var/tmp/diff_new_pack.g73VQq/_new 2026-04-29 19:21:19.373631176 +0200
@@ -16,15 +16,14 @@
#
+%{?sle15_python_module_pythons}
Name: python-bibtexparser
-Version: 1.4.3
+Version: 1.4.4
Release: 0
Summary: Bibtex parser for python
License: BSD-3-Clause OR LGPL-3.0-only
URL: https://github.com/sciunto-org/python-bibtexparser
Source:
https://github.com/sciunto-org/python-bibtexparser/archive/v%{version}.tar.gz#/python-bibtexparser-%{version}.tar.gz
-# PATCH-FIX-UPSTREAM gh#sciunto-org/python-bibtexparser#512
-Patch0: support-new-pyparsing.patch
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
++++++ python-bibtexparser-1.4.3.tar.gz -> python-bibtexparser-1.4.4.tar.gz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-bibtexparser-1.4.3/CHANGELOG
new/python-bibtexparser-1.4.4/CHANGELOG
--- old/python-bibtexparser-1.4.3/CHANGELOG 2024-12-19 21:34:44.000000000
+0100
+++ new/python-bibtexparser-1.4.4/CHANGELOG 2026-01-29 19:51:16.000000000
+0100
@@ -1,3 +1,7 @@
+--- for changelog >1.4.0, check the github release page
+---- https://github.com/sciunto-org/python-bibtexparser/releases
+
+
v1.4.0
======
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-bibtexparser-1.4.3/bibtexparser/__init__.py
new/python-bibtexparser-1.4.4/bibtexparser/__init__.py
--- old/python-bibtexparser-1.4.3/bibtexparser/__init__.py 2024-12-19
21:34:44.000000000 +0100
+++ new/python-bibtexparser-1.4.4/bibtexparser/__init__.py 2026-01-29
19:51:16.000000000 +0100
@@ -25,7 +25,7 @@
'loads', 'load', 'dumps', 'dump', 'bibdatabase',
'bparser', 'bwriter', 'bibtexexpression', 'latexenc', 'customization',
]
-__version__ = '1.4.3'
+__version__ = '1.4.4'
from . import bibdatabase, bibtexexpression, bparser, bwriter, latexenc,
customization
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-bibtexparser-1.4.3/bibtexparser/bibtexexpression.py
new/python-bibtexparser-1.4.4/bibtexparser/bibtexexpression.py
--- old/python-bibtexparser-1.4.3/bibtexparser/bibtexexpression.py
2024-12-19 21:34:44.000000000 +0100
+++ new/python-bibtexparser-1.4.4/bibtexparser/bibtexexpression.py
2026-01-29 19:51:16.000000000 +0100
@@ -29,7 +29,7 @@
"""Register a callback on expression parsing with the adequate message."""
def action(s, l, t):
log_func("Found {}: {}".format(expr.resultsName, t))
- expr.addParseAction(action)
+ expr.add_parse_action(action)
# Parse action helpers
@@ -111,7 +111,7 @@
# String names
string_name = pp.Word(pp.alphanums + '_-:')('StringName')
self.set_string_name_parse_action(lambda s, l, t: None)
- string_name.addParseAction(self._string_name_parse_action)
+ string_name.add_parse_action(self._string_name_parse_action)
# Values inside bibtex fields
# Values can be integer or string expressions. The latter may use
@@ -123,27 +123,27 @@
# Braced values: braced values can contain nested (but balanced) braces
braced_value_content = pp.CharsNotIn('{}')
braced_value = pp.Forward() # Recursive definition for nested braces
- braced_value <<= pp.originalTextFor(
+ braced_value <<= pp.original_text_for(
'{' + pp.ZeroOrMore(braced_value | braced_value_content) + '}'
)('BracedValue')
- braced_value.setParseAction(remove_braces)
+ braced_value.set_parse_action(remove_braces)
# TODO add ignore for "\}" and "\{" ?
# TODO @ are not parsed by bibtex in braces
# Quoted values: may contain braced content with balanced braces
- brace_in_quoted = pp.nestedExpr('{', '}', ignoreExpr=None)
+ brace_in_quoted = pp.nested_expr('{', '}', ignore_expr=None)
text_in_quoted = pp.CharsNotIn('"{}')
# (quotes should be escaped by braces in quoted value)
- quoted_value = pp.originalTextFor(
+ quoted_value = pp.original_text_for(
'"' + pp.ZeroOrMore(text_in_quoted | brace_in_quoted) + '"'
)('QuotedValue')
- quoted_value.addParseAction(pp.removeQuotes)
+ quoted_value.add_parse_action(pp.remove_quotes)
# String expressions
- string_expr = pp.delimitedList(
+ string_expr = pp.DelimitedList(
(quoted_value | braced_value | string_name), delim='#'
)('StringExpression')
- string_expr.addParseAction(self._string_expr_parse_action)
+ string_expr.add_parse_action(self._string_expr_parse_action)
value = (integer | string_expr)('Value')
@@ -151,7 +151,7 @@
# @EntryType { ...
entry_type = (pp.Suppress('@') + pp.Word(pp.alphas))('EntryType')
- entry_type.setParseAction(first_token)
+ entry_type.set_parse_action(first_token)
# Entry key: any character up to a ',' without leading and trailing
# spaces. Also exclude spaces and prevent it from being empty.
@@ -175,20 +175,20 @@
msg="Whitespace not allowed in citekeys.")
return key
- key.setParseAction(citekeyParseAction)
+ key.set_parse_action(citekeyParseAction)
# Field name: word of letters, digits, dashes and underscores
field_name = pp.Word(pp.alphanums + '_-().+')('FieldName')
- field_name.setParseAction(first_token)
+ field_name.set_parse_action(first_token)
# Field: field_name = value
field = pp.Group(field_name + pp.Suppress('=') + value)('Field')
- field.setParseAction(field_to_pair)
+ field.set_parse_action(field_to_pair)
# List of fields: comma separeted fields
- field_list = (pp.delimitedList(field) + pp.Suppress(pp.Optional(','))
+ field_list = (pp.DelimitedList(field) + pp.Suppress(pp.Optional(','))
)('Fields')
- field_list.setParseAction(
+ field_list.set_parse_action(
lambda s, l, t: {k: v for (k, v) in reversed(t.get('Fields'))})
# Entry: type, key, and fields
@@ -204,10 +204,10 @@
) | pp.StringEnd()
self.explicit_comment = (
pp.Suppress(comment_line_start) +
- pp.originalTextFor(pp.SkipTo(not_an_implicit_comment),
- asString=True))('ExplicitComment')
- self.explicit_comment.addParseAction(remove_trailing_newlines)
- self.explicit_comment.addParseAction(remove_braces)
+ pp.original_text_for(pp.SkipTo(not_an_implicit_comment),
+ as_string=True))('ExplicitComment')
+ self.explicit_comment.add_parse_action(remove_trailing_newlines)
+ self.explicit_comment.add_parse_action(remove_braces)
# Previous implementation included comment until next '}'.
# This is however not inline with bibtex behavior that is to only
# ignore until EOL. Brace stipping is arbitrary here but avoids
@@ -219,10 +219,10 @@
raise pp.ParseException("Match must not be empty.")
# Implicit comments: not anything else
- self.implicit_comment = pp.originalTextFor(
- pp.SkipTo(not_an_implicit_comment).setParseAction(mustNotBeEmpty),
- asString=True)('ImplicitComment')
- self.implicit_comment.addParseAction(remove_trailing_newlines)
+ self.implicit_comment = pp.original_text_for(
+
pp.SkipTo(not_an_implicit_comment).set_parse_action(mustNotBeEmpty),
+ as_string=True)('ImplicitComment')
+ self.implicit_comment.add_parse_action(remove_trailing_newlines)
# String definition
self.string_def = (pp.Suppress(string_def_start) + in_braces_or_pars(
@@ -274,5 +274,13 @@
def _string_expr_parse_action(self, s, l, t):
return BibDataStringExpression.expression_if_needed(t)
+ def parse_file(self, file_obj):
+ """Execute parse expression on a file object"""
+ return self.main_expression.parse_file(file_obj, parse_all=True)
+
def parseFile(self, file_obj):
- return self.main_expression.parseFile(file_obj, parseAll=True)
+ """Execute parse expression on a file object
+
+ Alias for parse_file()
+ """
+ return self.parse_file(file_obj)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-bibtexparser-1.4.3/bibtexparser/bparser.py
new/python-bibtexparser-1.4.4/bibtexparser/bparser.py
--- old/python-bibtexparser-1.4.3/bibtexparser/bparser.py 2024-12-19
21:34:44.000000000 +0100
+++ new/python-bibtexparser-1.4.4/bibtexparser/bparser.py 2026-01-29
19:51:16.000000000 +0100
@@ -159,7 +159,7 @@
bibtex_file_obj = self._bibtex_file_obj(bibtex_str)
try:
- self._expr.parseFile(bibtex_file_obj)
+ self._expr.parse_file(bibtex_file_obj)
except self._expr.ParseException as exc:
logger.error("Could not parse properly, starting at %s", exc.line)
if not partial:
@@ -198,20 +198,20 @@
self._expr.add_log_function(logger.debug)
# Set actions
- self._expr.entry.addParseAction(
+ self._expr.entry.add_parse_action(
lambda s, l, t: self._add_entry(
t.get('EntryType'), t.get('Key'), t.get('Fields'))
)
- self._expr.implicit_comment.addParseAction(
+ self._expr.implicit_comment.add_parse_action(
lambda s, l, t: self._add_comment(t[0])
)
- self._expr.explicit_comment.addParseAction(
+ self._expr.explicit_comment.add_parse_action(
lambda s, l, t: self._add_comment(t[0])
)
- self._expr.preamble_decl.addParseAction(
+ self._expr.preamble_decl.add_parse_action(
lambda s, l, t: self._add_preamble(t[0])
)
- self._expr.string_def.addParseAction(
+ self._expr.string_def.add_parse_action(
lambda s, l, t: self._add_string(t['StringName'].name,
t['StringValue'])
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-bibtexparser-1.4.3/bibtexparser/tests/test_bibtexexpression.py
new/python-bibtexparser-1.4.4/bibtexparser/tests/test_bibtexexpression.py
--- old/python-bibtexparser-1.4.3/bibtexparser/tests/test_bibtexexpression.py
2024-12-19 21:34:44.000000000 +0100
+++ new/python-bibtexparser-1.4.4/bibtexparser/tests/test_bibtexexpression.py
2026-01-29 19:51:16.000000000 +0100
@@ -14,90 +14,90 @@
self.expr = BibtexExpression()
def test_minimal(self):
- result = self.expr.entry.parseString('@journal{key, name = 123 }')
+ result = self.expr.entry.parse_string('@journal{key, name = 123 }')
self.assertEqual(result.get('EntryType'), 'journal')
self.assertEqual(result.get('Key'), 'key')
self.assertEqual(result.get('Fields'), {'name': '123'})
def test_capital_type(self):
- result = self.expr.entry.parseString('@JOURNAL{key, name = 123 }')
+ result = self.expr.entry.parse_string('@JOURNAL{key, name = 123 }')
self.assertEqual(result.get('EntryType'), 'JOURNAL')
def test_capital_key(self):
- result = self.expr.entry.parseString('@journal{KEY, name = 123 }')
+ result = self.expr.entry.parse_string('@journal{KEY, name = 123 }')
self.assertEqual(result.get('Key'), 'KEY')
def test_braced(self):
- result = self.expr.entry.parseString('@journal{key, name = {abc} }')
+ result = self.expr.entry.parse_string('@journal{key, name = {abc} }')
self.assertEqual(result.get('Fields'), {'name': 'abc'})
def test_braced_with_new_line(self):
- result = self.expr.entry.parseString(
+ result = self.expr.entry.parse_string(
'@journal{key, name = {abc\ndef} }')
self.assertEqual(result.get('Fields'), {'name': 'abc\ndef'})
def test_braced_unicode(self):
- result = self.expr.entry.parseString(
+ result = self.expr.entry.parse_string(
'@journal{key, name = {àbcđéf} }')
self.assertEqual(result.get('Fields'), {'name': 'àbcđéf'})
def test_quoted(self):
- result = self.expr.entry.parseString('@journal{key, name = "abc" }')
+ result = self.expr.entry.parse_string('@journal{key, name = "abc" }')
self.assertEqual(result.get('Fields'), {'name': 'abc'})
def test_quoted_with_new_line(self):
- result = self.expr.entry.parseString(
+ result = self.expr.entry.parse_string(
'@journal{key, name = "abc\ndef" }')
self.assertEqual(result.get('Fields'), {'name': 'abc\ndef'})
def test_quoted_with_unicode(self):
- result = self.expr.entry.parseString(
+ result = self.expr.entry.parse_string(
'@journal{key, name = "àbcđéf" }')
self.assertEqual(result.get('Fields'), {'name': 'àbcđéf'})
def test_entry_declaration_after_space(self):
- self.expr.entry.parseString(' @journal{key, name = {abcd}}')
+ self.expr.entry.parse_string(' @journal{key, name = {abcd}}')
def test_entry_declaration_no_key(self):
with self.assertRaises(self.expr.ParseException):
- self.expr.entry.parseString('@misc{name = {abcd}}')
+ self.expr.entry.parse_string('@misc{name = {abcd}}')
def test_entry_declaration_no_key_new_line(self):
with self.assertRaises(self.expr.ParseException):
- self.expr.entry.parseString('@misc{\n name = {abcd}}')
+ self.expr.entry.parse_string('@misc{\n name = {abcd}}')
def test_entry_declaration_no_key_comma(self):
with self.assertRaises(self.expr.ParseException):
- self.expr.entry.parseString('@misc{, \nname = {abcd}}')
+ self.expr.entry.parse_string('@misc{, \nname = {abcd}}')
def test_entry_declaration_no_key_keyvalue_without_space(self):
with self.assertRaises(self.expr.ParseException):
- self.expr.entry.parseString('@misc{\nname=aaa}')
+ self.expr.entry.parse_string('@misc{\nname=aaa}')
def test_entry_declaration_key_with_whitespace(self):
with self.assertRaises(self.expr.ParseException):
- self.expr.entry.parseString('@misc{ xx yy, \n name = aaa}')
+ self.expr.entry.parse_string('@misc{ xx yy, \n name = aaa}')
def test_string_declaration_after_space(self):
- self.expr.string_def.parseString(' @string{ name = {abcd}}')
+ self.expr.string_def.parse_string(' @string{ name = {abcd}}')
def test_preamble_declaration_after_space(self):
- self.expr.preamble_decl.parseString(' @preamble{ "blah blah " }')
+ self.expr.preamble_decl.parse_string(' @preamble{ "blah blah " }')
def test_declaration_after_space(self):
keys = []
- self.expr.entry.addParseAction(
+ self.expr.entry.add_parse_action(
lambda s, l, t: keys.append(t.get('Key'))
)
- self.expr.main_expression.parseString(' @journal{key, name = {abcd}}')
+ self.expr.main_expression.parse_string(' @journal{key, name = {abcd}}')
self.assertEqual(keys, ['key'])
def test_declaration_after_space_and_comment(self):
keys = []
- self.expr.entry.addParseAction(
+ self.expr.entry.add_parse_action(
lambda s, l, t: keys.append(t.get('Key'))
)
- self.expr.main_expression.parseString(
+ self.expr.main_expression.parse_string(
'% Implicit comment\n @article{key, name={abcd}}'
)
self.assertEqual(keys, ['key'])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-bibtexparser-1.4.3/requirements.txt
new/python-bibtexparser-1.4.4/requirements.txt
--- old/python-bibtexparser-1.4.3/requirements.txt 2024-12-19
21:34:44.000000000 +0100
+++ new/python-bibtexparser-1.4.4/requirements.txt 2026-01-29
19:51:16.000000000 +0100
@@ -1 +1 @@
-pyparsing>=2.0.3
+pyparsing>=3.0.0