Skip to content

Python 3.12 removed SafeConfigParser #5

@bsdice

Description

@bsdice

Hi,

since Python 3.2 SafeConfigParser has been deprecated, removed now in Python 3.12. Compare: https://github.com/python/cpython/blob/v3.11.1/Lib/configparser.py#L1242-L1252

$ blink
Traceback (most recent call last):
  File "/usr/bin/blink", line 67, in <module>
    from blink import Blink
  File "/usr/lib/python3.12/site-packages/blink/__init__.py", line 15, in <module>
    from sipsimple.application import SIPApplication
  File "/usr/lib/python3.12/site-packages/sipsimple/application.py", line 27, in <module>
    from sipsimple.account import AccountManager
  File "/usr/lib/python3.12/site-packages/sipsimple/account/__init__.py", line 33, in <module>
    from sipsimple.payloads.messagesummary import MessageSummary
  File "/usr/lib/python3.12/site-packages/sipsimple/payloads/messagesummary.py", line 9, in <module>
    from application.configuration.datatypes import Boolean
  File "/usr/lib/python3.12/site-packages/application/configuration/__init__.py", line 6, in <module>
    from configparser import SafeConfigParser, NoSectionError
ImportError: cannot import name 'SafeConfigParser' from 'configparser' (/usr/lib/python3.12/configparser.py). Did you mean: 'RawConfigParser'?

Possible fix:

diff -Nurp python3-application-release-3.0.6.old/application/configuration/__init__.py python3-application-release-3.0.6/application/configuration/__init__.py
--- python3-application-release-3.0.6.old/application/configuration/__init__.py	2023-03-09 17:34:56.000000000 +0100
+++ python3-application-release-3.0.6/application/configuration/__init__.py	2024-05-12 00:19:22.077135411 +0200
@@ -3,7 +3,7 @@
 
 import os
 
-from configparser import SafeConfigParser, NoSectionError
+from configparser import ConfigParser, NoSectionError
 from inspect import isclass
 from itertools import chain
 from types import BuiltinFunctionType
@@ -37,7 +37,7 @@ class ConfigFile(object):
         instance = cls.instances.get(filename, None)
         if instance is None or instance.files != files or instance.timestamp < timestamp:
             instance = object.__new__(cls)
-            instance.parser = SafeConfigParser()
+            instance.parser = ConfigParser()
             instance.parser.optionxform = lambda x: x.replace('-', '_')
             instance.files = instance.parser.read(files)
             instance.filename = filename

Thank you

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions