diff --git a/fix-312.patch b/fix-312.patch
new file mode 100644
index 0000000..b2edf88
--- /dev/null
+++ b/fix-312.patch
@@ -0,0 +1,99 @@
+Index: smartypants.py-2.0.1/tests/test_cli.py
+===================================================================
+--- smartypants.py-2.0.1.orig/tests/test_cli.py
++++ smartypants.py-2.0.1/tests/test_cli.py
+@@ -35,7 +35,7 @@ class TestCLI(unittest.TestCase):
+ E = '“foobar”'
+
+ output = self._p([sys.executable, CLI_SCRIPT], T)
+- self.assertEquals(output, E)
++ self.assertEqual(output, E)
+
+ def test_pipe_attr(self):
+
+@@ -43,11 +43,11 @@ class TestCLI(unittest.TestCase):
+
+ E = T
+ output = self._p([sys.executable, CLI_SCRIPT, '--attr', '0'], T)
+- self.assertEquals(output, E)
++ self.assertEqual(output, E)
+
+ E = """"foo" “bar”"""
+ output = self._p([sys.executable, CLI_SCRIPT, '--attr', 'b'], T)
+- self.assertEquals(output, E)
++ self.assertEqual(output, E)
+
+ def test_skipped_elements(self):
+
+@@ -55,19 +55,19 @@ class TestCLI(unittest.TestCase):
+
+ E = '“foo” “bar”'
+ output = self._p([sys.executable, CLI_SCRIPT], T)
+- self.assertEquals(output, E)
++ self.assertEqual(output, E)
+
+ E = '"foo" “bar”'
+ output = self._p([sys.executable, CLI_SCRIPT, '--skip', 'a'], T)
+- self.assertEquals(output, E)
++ self.assertEqual(output, E)
+
+ E = '“foo” "bar"'
+ output = self._p([sys.executable, CLI_SCRIPT, '--skip', 'b'], T)
+- self.assertEquals(output, E)
++ self.assertEqual(output, E)
+
+ E = T
+ output = self._p([sys.executable, CLI_SCRIPT, '--skip', 'a,b'], T)
+- self.assertEquals(output, E)
++ self.assertEqual(output, E)
+
+ def test_file(self):
+
+@@ -82,4 +82,4 @@ class TestCLI(unittest.TestCase):
+ output = self._p([sys.executable, CLI_SCRIPT, F])
+ finally:
+ os.remove(F)
+- self.assertEquals(output, E)
++ self.assertEqual(output, E)
+Index: smartypants.py-2.0.1/smartypants.py
+===================================================================
+--- smartypants.py-2.0.1.orig/smartypants.py
++++ smartypants.py-2.0.1/smartypants.py
+@@ -268,13 +268,13 @@ def smartypants(text, attr=None):
+ if do_quotes:
+ if t == "'":
+ # Special case: single-character ' token
+- if re.match("\S", prev_token_last_char):
++ if re.match(r"\S", prev_token_last_char):
+ t = "’"
+ else:
+ t = "‘"
+ elif t == '"':
+ # Special case: single-character " token
+- if re.match("\S", prev_token_last_char):
++ if re.match(r"\S", prev_token_last_char):
+ t = "”"
+ else:
+ t = "“"
+Index: smartypants.py-2.0.1/tests/test.py
+===================================================================
+--- smartypants.py-2.0.1.orig/tests/test.py
++++ smartypants.py-2.0.1/tests/test.py
+@@ -24,7 +24,7 @@ class SmartyPantsTestCase(unittest.TestC
+
+ T = sp(TEXT)
+ E = '“foo” -- bar'
+- self.assertEquals(T, E)
++ self.assertEqual(T, E)
+
+ attr = Attr.q | Attr.d
+ Attr.default = attr
+@@ -32,7 +32,7 @@ class SmartyPantsTestCase(unittest.TestC
+
+ T = sp(TEXT)
+ E = '“foo” — bar'
+- self.assertEquals(T, E)
++ self.assertEqual(T, E)
+
+ def test_dates(self):
+
diff --git a/python-smartypants.changes b/python-smartypants.changes
index e3b3bfa..5746e53 100644
--- a/python-smartypants.changes
+++ b/python-smartypants.changes
@@ -1,3 +1,8 @@
+-------------------------------------------------------------------
+Mon Sep 25 08:24:56 UTC 2023 - Ondřej Súkup
+
+- add fix-312.patch to fix python3.12 build
+
-------------------------------------------------------------------
Fri Apr 21 12:34:12 UTC 2023 - Dirk Müller
diff --git a/python-smartypants.spec b/python-smartypants.spec
index adccc63..bb8a81c 100644
--- a/python-smartypants.spec
+++ b/python-smartypants.spec
@@ -1,7 +1,7 @@
#
# spec file for package python-smartypants
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,7 +16,6 @@
#
-%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%{?sle15_python_module_pythons}
Name: python-smartypants
Version: 2.0.1
@@ -26,7 +25,8 @@ License: BSD-3-Clause
Group: Development/Languages/Python
URL: https://github.com/leohemsted/smartypants.py
Source: https://github.com/leohemsted/smartypants.py/archive/v%{version}.tar.gz#/smartypants-%{version}.tar.gz
-Patch1: use-sys-executable.patch
+Patch0: use-sys-executable.patch
+Patch1: fix-312.patch
BuildRequires: %{python_module docutils}
BuildRequires: %{python_module pygments}
BuildRequires: %{python_module setuptools}
@@ -44,8 +44,7 @@ which translates plain ASCII punctuation characters into smart
typographic punctuation HTML entities.
%prep
-%setup -q -n smartypants.py-%{version}
-%patch1 -p1
+%autosetup -p1 -n smartypants.py-%{version}
%build
%python_build
@@ -70,6 +69,8 @@ typographic punctuation HTML entities.
%license COPYING
%doc README.rst docs/*.rst
%python_alternative %{_bindir}/smartypants
-%{python_sitelib}/*
+%{python_sitelib}/smartypants.py
+%{python_sitelib}/smartypants-%{version}*-info
+%pycache_only %{python_sitelib}/__pycache__/*
%changelog