From 6cd048ebb917a1aa6e474e1d2f57d6b6260c49ed2b3e4dab996e2b8d9f4144ce Mon Sep 17 00:00:00 2001 From: Steve Kowalik Date: Tue, 9 Jan 2024 03:43:33 +0000 Subject: [PATCH] - Add patch support-python312.patch: * Support Python 3.12 by using non-removed assertion functions. - Switch to autosetup and pyproject macros. - Correct URL. - Stop using greedy globs in %files. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Parsley?expand=0&rev=18 --- python-Parsley.changes | 9 ++++ python-Parsley.spec | 20 +++++--- support-python312.patch | 105 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 128 insertions(+), 6 deletions(-) create mode 100644 support-python312.patch diff --git a/python-Parsley.changes b/python-Parsley.changes index 0c559a7..19b44f2 100644 --- a/python-Parsley.changes +++ b/python-Parsley.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Tue Jan 9 03:38:03 UTC 2024 - Steve Kowalik + +- Add patch support-python312.patch: + * Support Python 3.12 by using non-removed assertion functions. +- Switch to autosetup and pyproject macros. +- Correct URL. +- Stop using greedy globs in %files. + ------------------------------------------------------------------- Fri May 5 12:13:25 UTC 2023 - Johannes Kastl diff --git a/python-Parsley.spec b/python-Parsley.spec index 4160834..eb7a9be 100644 --- a/python-Parsley.spec +++ b/python-Parsley.spec @@ -1,7 +1,7 @@ # # spec file for package python-Parsley # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # Copyright (c) 2013 LISA GmbH, Bingen, Germany. # # All modifications and additions to the file contributed by third parties @@ -25,11 +25,15 @@ Version: 1.3 Release: 0 Summary: PEG algorithm based parser generator License: MIT -URL: https://github.com/washort/parsley +URL: https://github.com/pyga/parsley Source: https://files.pythonhosted.org/packages/source/P/%{modname}/%{modname}-%{version}.tar.gz +# PATCH-FIX-UPSTREAM gh#pyga/parsley#82 +Patch0: support-python312.patch BuildRequires: %{python_module Twisted} +BuildRequires: %{python_module pip} BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: python-rpm-macros Requires(post): update-alternatives @@ -52,17 +56,17 @@ as yacc, bison or PLY. The binaries are prefixed with parsley-. %prep -%setup -q -n %{modname}-%{version} +%autosetup -p1 -n %{modname}-%{version} # Remove with bump, missing fixtures rm -f ometa/test/test_vm_builder.py %build export LANG=en_US.UTF-8 -%python_build +%pyproject_wheel %install export LANG=en_US.UTF-8 -%python_install +%pyproject_install mkdir %{buildroot}/%{_bindir} # rename binaries in order to avoid name clashes with other system packages for f in {generate_parser,stage}; do @@ -93,6 +97,10 @@ export LANG=en_US.UTF-8 %doc NEWS PKG-INFO README %python_alternative %{_bindir}/parsley-stage %python_alternative %{_bindir}/parsley-generate_parser -%{python_sitelib}/* +%{python_sitelib}/parsley.py +%pycache_only %{python_sitelib}/__pycache__/parsley.*.py* +%{python_sitelib}/terml +%{python_sitelib}/ometa +%{python_sitelib}/Parsley-%{version}.dist-info %changelog diff --git a/support-python312.patch b/support-python312.patch new file mode 100644 index 0000000..dfa2035 --- /dev/null +++ b/support-python312.patch @@ -0,0 +1,105 @@ +From f0ad2f6c0c7ce15336f6a3adc3708f4a5a9757c6 Mon Sep 17 00:00:00 2001 +From: Steve Kowalik +Date: Tue, 9 Jan 2024 14:27:30 +1100 +Subject: [PATCH] Fix deprecated assertions + +Python 3.1 and Python 3.2 deprecated a large amount of assertions, and +have finally been removed in Python 3.12. Move to the "new" function +names. + +Fixes #80 +--- + ometa/test/test_builder.py | 2 +- + ometa/test/test_protocol.py | 12 ++++++------ + ometa/test/test_pymeta.py | 4 ++-- + ometa/test/test_runtime.py | 4 ++-- + 4 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/ometa/test/test_builder.py b/ometa/test/test_builder.py +index b02656e..5cfbe72 100644 +--- a/ometa/test/test_builder.py ++++ b/ometa/test/test_builder.py +@@ -325,7 +325,7 @@ def test_markAsTree(self): + x = t.Rule("foo", t.List( + t.Exactly("x"))) + g = t.Grammar("TestGrammar", True, [x]) +- self.assert_("\n tree = True\n" in writePython(g, "")) ++ self.assertIn("\n tree = True\n", writePython(g, "")) + + + def test_rule(self): +diff --git a/ometa/test/test_protocol.py b/ometa/test/test_protocol.py +index a052da4..67001f8 100644 +--- a/ometa/test/test_protocol.py ++++ b/ometa/test/test_protocol.py +@@ -90,7 +90,7 @@ def test_parserPassed(self): + def test_connectionEstablishes(self): + """prepareParsing is called on the receiver after connection establishment.""" + self.protocol.makeConnection(None) +- self.assert_(self.protocol.receiver.connected) ++ self.assertTrue(self.protocol.receiver.connected) + + def test_basicParsing(self): + """Rules can be parsed multiple times for the same effect.""" +@@ -161,10 +161,10 @@ def test_parseFailure(self): + transport = FakeTransport() + self.protocol.makeConnection(transport) + self.protocol.dataReceived('b') +- self.failIfEqual(self.protocol.receiver.lossReason, None) ++ self.assertIsNotNone(self.protocol.receiver.lossReason) + self.assertTrue( + isinstance(self.protocol.receiver.lossReason.value, ParseError)) +- self.assert_(transport.aborted) ++ self.assertTrue(transport.aborted) + + def test_exceptionsRaisedFromReceiver(self): + """ +@@ -174,10 +174,10 @@ def test_exceptionsRaisedFromReceiver(self): + transport = FakeTransport() + self.protocol.makeConnection(transport) + self.protocol.dataReceived('e') +- self.failIfEqual(self.protocol.receiver.lossReason, None) ++ self.assertIsNotNone(self.protocol.receiver.lossReason) + self.assertTrue( + isinstance(self.protocol.receiver.lossReason.value, SomeException)) +- self.assert_(transport.aborted) ++ self.assertTrue(transport.aborted) + + def test_dataIgnoredAfterDisconnection(self): + """After connectionLost is called, all incoming data is ignored.""" +@@ -187,4 +187,4 @@ def test_dataIgnoredAfterDisconnection(self): + self.protocol.connectionLost(reason) + self.protocol.dataReceived('d') + self.assertEqual(self.protocol.receiver.lossReason, reason) +- self.assert_(not transport.aborted) ++ self.assertFalse(transport.aborted) +diff --git a/ometa/test/test_pymeta.py b/ometa/test/test_pymeta.py +index ed7e57f..e8a6b91 100644 +--- a/ometa/test/test_pymeta.py ++++ b/ometa/test/test_pymeta.py +@@ -1138,8 +1138,8 @@ def test_brokenGrammar(self): + """ + e = self.assertRaises(ParseError, OMeta.makeGrammar, grammar, + "Foo") +- self.assertEquals(e.position, 57) +- self.assertEquals(e.error, [("message", "end of input")]) ++ self.assertEqual(e.position, 57) ++ self.assertEqual(e.error, [("message", "end of input")]) + + + def test_subclassing(self): +diff --git a/ometa/test/test_runtime.py b/ometa/test/test_runtime.py +index 957f3bc..ecbbacb 100644 +--- a/ometa/test/test_runtime.py ++++ b/ometa/test/test_runtime.py +@@ -54,8 +54,8 @@ def test_exactlyFail(self): + data = "foo" + o = OMetaBase(data) + exc = self.assertRaises(ParseError, o.rule_exactly, "g") +- self.assertEquals(exc.args[1], expected(None, "g")) +- self.assertEquals(exc.args[0], 0) ++ self.assertEqual(exc.args[1], expected(None, "g")) ++ self.assertEqual(exc.args[0], 0) + + +