python issue30681 is fixed with Python 3.10
This commit is contained in:
@@ -12,6 +12,7 @@
|
|||||||
# along with pyquarantine. If not, see <http://www.gnu.org/licenses/>.
|
# along with pyquarantine. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
from sys import version_info
|
||||||
import encodings
|
import encodings
|
||||||
|
|
||||||
|
|
||||||
@@ -150,27 +151,45 @@ def get_obs_local_part(value):
|
|||||||
setattr(email._header_value_parser, "get_obs_local_part", get_obs_local_part)
|
setattr(email._header_value_parser, "get_obs_local_part", get_obs_local_part)
|
||||||
|
|
||||||
|
|
||||||
# https://bugs.python.org/issue30681
|
#######################################
|
||||||
|
# add charset alias for windows-874 #
|
||||||
|
#######################################
|
||||||
#
|
#
|
||||||
# fix: https://github.com/python/cpython/pull/22090
|
# https://bugs.python.org/issue17254
|
||||||
|
#
|
||||||
|
# fix: https://github.com/python/cpython/pull/10237
|
||||||
|
|
||||||
import email.errors
|
aliases = encodings.aliases.aliases
|
||||||
from email.errors import HeaderDefect
|
|
||||||
|
for alias in ["windows-874", "windows_874"]:
|
||||||
|
if alias not in aliases:
|
||||||
|
aliases[alias] = "cp874"
|
||||||
|
|
||||||
|
setattr(encodings.aliases, "aliases", aliases)
|
||||||
|
|
||||||
|
|
||||||
class InvalidDateDefect(HeaderDefect):
|
if version_info.major == 3 and version_info.minor < 10:
|
||||||
|
# https://bugs.python.org/issue30681
|
||||||
|
#
|
||||||
|
# fix: https://github.com/python/cpython/pull/22090
|
||||||
|
|
||||||
|
import email.errors
|
||||||
|
from email.errors import HeaderDefect
|
||||||
|
|
||||||
|
|
||||||
|
class InvalidDateDefect(HeaderDefect):
|
||||||
"""Header has unparseable or invalid date"""
|
"""Header has unparseable or invalid date"""
|
||||||
|
|
||||||
|
|
||||||
setattr(email.errors, "InvalidDateDefect", InvalidDateDefect)
|
setattr(email.errors, "InvalidDateDefect", InvalidDateDefect)
|
||||||
|
|
||||||
|
|
||||||
import email.utils
|
import email.utils
|
||||||
from email.utils import _parsedate_tz
|
from email.utils import _parsedate_tz
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
|
|
||||||
def parsedate_to_datetime(data):
|
def parsedate_to_datetime(data):
|
||||||
parsed_date_tz = _parsedate_tz(data)
|
parsed_date_tz = _parsedate_tz(data)
|
||||||
if parsed_date_tz is None:
|
if parsed_date_tz is None:
|
||||||
raise ValueError('Invalid date value or format "%s"' % str(data))
|
raise ValueError('Invalid date value or format "%s"' % str(data))
|
||||||
@@ -181,14 +200,14 @@ def parsedate_to_datetime(data):
|
|||||||
tzinfo=datetime.timezone(datetime.timedelta(seconds=tz)))
|
tzinfo=datetime.timezone(datetime.timedelta(seconds=tz)))
|
||||||
|
|
||||||
|
|
||||||
setattr(email.utils, "parsedate_to_datetime", parsedate_to_datetime)
|
setattr(email.utils, "parsedate_to_datetime", parsedate_to_datetime)
|
||||||
|
|
||||||
|
|
||||||
import email.headerregistry
|
import email.headerregistry
|
||||||
from email import utils, _header_value_parser as parser
|
from email import utils, _header_value_parser as parser
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def parse(cls, value, kwds):
|
def parse(cls, value, kwds):
|
||||||
if not value:
|
if not value:
|
||||||
kwds['defects'].append(errors.HeaderMissingRequiredValue())
|
kwds['defects'].append(errors.HeaderMissingRequiredValue())
|
||||||
kwds['datetime'] = None
|
kwds['datetime'] = None
|
||||||
@@ -209,21 +228,4 @@ def parse(cls, value, kwds):
|
|||||||
kwds['parse_tree'] = cls.value_parser(kwds['decoded'])
|
kwds['parse_tree'] = cls.value_parser(kwds['decoded'])
|
||||||
|
|
||||||
|
|
||||||
setattr(email.headerregistry.DateHeader, "parse", parse)
|
setattr(email.headerregistry.DateHeader, "parse", parse)
|
||||||
|
|
||||||
|
|
||||||
#######################################
|
|
||||||
# add charset alias for windows-874 #
|
|
||||||
#######################################
|
|
||||||
#
|
|
||||||
# https://bugs.python.org/issue17254
|
|
||||||
#
|
|
||||||
# fix: https://github.com/python/cpython/pull/10237
|
|
||||||
|
|
||||||
aliases = encodings.aliases.aliases
|
|
||||||
|
|
||||||
for alias in ["windows-874", "windows_874"]:
|
|
||||||
if alias not in aliases:
|
|
||||||
aliases[alias] = "cp874"
|
|
||||||
|
|
||||||
setattr(encodings.aliases, "aliases", aliases)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user