diff --git a/do-not-always-use-cgi-module.patch b/do-not-always-use-cgi-module.patch new file mode 100644 index 0000000..8da80e4 --- /dev/null +++ b/do-not-always-use-cgi-module.patch @@ -0,0 +1,56 @@ +From 77053ce944c11b1bae67cee387275e9f36d8d049 Mon Sep 17 00:00:00 2001 +From: Oleg Broytman +Date: Fri, 10 Nov 2023 18:17:15 +0300 +Subject: [PATCH] Protect `import cgi` + +Module `cgi` was declared obsolete in Python 3.11 +and will be removed in 3.13. + +Fixes: #175. +--- + src/formencode/validators.py | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/src/formencode/validators.py b/src/formencode/validators.py +index f2011b4..6f272b7 100644 +--- a/src/formencode/validators.py ++++ b/src/formencode/validators.py +@@ -5,7 +5,10 @@ + Validator/Converters for use with FormEncode. + """ + +-import cgi ++try: ++ import cgi ++except ImportError: # Python >= 3.13 ++ cgi = None + import re + import warnings + from encodings import idna +@@ -1772,7 +1775,7 @@ class FieldStorageUploadConverter(FancyValidator): + no upload was given). + """ + def _convert_to_python(self, value, state=None): +- if isinstance(value, cgi.FieldStorage): ++ if cgi and isinstance(value, cgi.FieldStorage): + if getattr(value, 'filename', None): + return value + raise Invalid('invalid', value, state) +@@ -1780,7 +1783,7 @@ def _convert_to_python(self, value, state=None): + return value + + def is_empty(self, value): +- if isinstance(value, cgi.FieldStorage): ++ if cgi and isinstance(value, cgi.FieldStorage): + return not bool(getattr(value, 'filename', None)) + return FancyValidator.is_empty(self, value) + +@@ -1825,7 +1828,7 @@ def _convert_to_python(self, value, state): + upload = value.get(self.upload_key) + static = value.get(self.static_key, '').strip() + filename = content = None +- if isinstance(upload, cgi.FieldStorage): ++ if cgi and isinstance(upload, cgi.FieldStorage): + filename = upload.filename + content = upload.value + elif isinstance(upload, str) and upload: diff --git a/python-FormEncode.changes b/python-FormEncode.changes index 2ccc8f3..00c0006 100644 --- a/python-FormEncode.changes +++ b/python-FormEncode.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Tue Sep 10 04:11:22 UTC 2024 - Steve Kowalik + +- Add patch do-not-always-use-cgi-module.patch: + * Support Python 3.13 by making use of cgi optional. +- Switch to autosetup macro. + ------------------------------------------------------------------- Tue Apr 16 13:25:39 UTC 2024 - Markéta Machová diff --git a/python-FormEncode.spec b/python-FormEncode.spec index b0b1c16..a533d42 100644 --- a/python-FormEncode.spec +++ b/python-FormEncode.spec @@ -22,9 +22,11 @@ Version: 2.1.0 Release: 0 Summary: HTML form validation, generation, and conversion package License: Python-2.0 -Group: Development/Languages/Python URL: https://formencode.org Source: https://files.pythonhosted.org/packages/source/F/FormEncode/FormEncode-%{version}.tar.gz +# PATCH-FIX-UPSTREAM gh#formencode/formencode#176 +Patch0: do-not-always-use-cgi-module.patch +BuildRequires: %{python_module base >= 3.7} BuildRequires: %{python_module dnspython} BuildRequires: %{python_module pip} BuildRequires: %{python_module pycountry} @@ -43,7 +45,7 @@ a declarative form of defining the validation, and decoupled processes for filling and generating forms. %prep -%setup -q -n FormEncode-%{version} +%autosetup -p1 -n FormEncode-%{version} %build %pyproject_wheel @@ -71,6 +73,6 @@ python2_flags="--version" %license LICENSE.txt %doc README.rst %{python_sitelib}/formencode -%{python_sitelib}/FormEncode-%{version}*-info +%{python_sitelib}/FormEncode-%{version}.dist-info %changelog