summaryrefslogtreecommitdiff
path: root/babel
diff options
context:
space:
mode:
authorAarni Koskela <akx@iki.fi>2022-05-10 15:36:47 +0300
committerAarni Koskela <akx@iki.fi>2022-05-10 15:00:24 +0200
commit40059883cc260af890bcc81a1a21c0f84781857f (patch)
tree605a7c0ac23b1f593adfe46680c0a37a1437ad12 /babel
parent5e37cea3e41e5f6915468147a0e250ba3d270ad8 (diff)
downloadbabel-40059883cc260af890bcc81a1a21c0f84781857f.tar.gz
Use email.Message for pofile header parsing
cgi.parse_header is due to be deprecated Fixes #873
Diffstat (limited to 'babel')
-rw-r--r--babel/messages/catalog.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/babel/messages/catalog.py b/babel/messages/catalog.py
index 564b2c7..e43a28c 100644
--- a/babel/messages/catalog.py
+++ b/babel/messages/catalog.py
@@ -10,7 +10,6 @@
import re
-from cgi import parse_header
from collections import OrderedDict
from datetime import datetime, time as time_
from difflib import get_close_matches
@@ -225,6 +224,13 @@ DEFAULT_HEADER = u"""\
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#"""
+def parse_separated_header(value: str):
+ # Adapted from https://peps.python.org/pep-0594/#cgi
+ from email.message import Message
+ m = Message()
+ m['content-type'] = value
+ return dict(m.get_params())
+
class Catalog:
"""Representation of a message catalog."""
@@ -424,11 +430,11 @@ class Catalog:
elif name == 'language-team':
self.language_team = value
elif name == 'content-type':
- mimetype, params = parse_header(value)
+ params = parse_separated_header(value)
if 'charset' in params:
self.charset = params['charset'].lower()
elif name == 'plural-forms':
- _, params = parse_header(' ;' + value)
+ params = parse_separated_header(' ;' + value)
self._num_plurals = int(params.get('nplurals', 2))
self._plural_expr = params.get('plural', '(n != 1)')
elif name == 'pot-creation-date':