diff options
author | Aarni Koskela <akx@iki.fi> | 2022-05-10 15:36:47 +0300 |
---|---|---|
committer | Aarni Koskela <akx@iki.fi> | 2022-05-10 15:00:24 +0200 |
commit | 40059883cc260af890bcc81a1a21c0f84781857f (patch) | |
tree | 605a7c0ac23b1f593adfe46680c0a37a1437ad12 /babel | |
parent | 5e37cea3e41e5f6915468147a0e250ba3d270ad8 (diff) | |
download | babel-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.py | 12 |
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': |