From 9a86e8cd248176856509f141e72494e97a9424f2 Mon Sep 17 00:00:00 2001 From: Thomas Oettli Date: Mon, 11 Dec 2023 17:56:43 +0100 Subject: [PATCH] require at least python 3.10 and remove old runtime patch --- pyquarantine/_runtime_patches.py | 63 -------------------------------- setup.py | 2 +- 2 files changed, 1 insertion(+), 64 deletions(-) diff --git a/pyquarantine/_runtime_patches.py b/pyquarantine/_runtime_patches.py index 8f55080..7d59ce7 100644 --- a/pyquarantine/_runtime_patches.py +++ b/pyquarantine/_runtime_patches.py @@ -166,66 +166,3 @@ for alias in ["windows-874", "windows_874"]: aliases[alias] = "cp874" setattr(encodings.aliases, "aliases", aliases) - - -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""" - - - setattr(email.errors, "InvalidDateDefect", InvalidDateDefect) - - - import email.utils - from email.utils import _parsedate_tz - import datetime - - - def parsedate_to_datetime(data): - parsed_date_tz = _parsedate_tz(data) - if parsed_date_tz is None: - raise ValueError('Invalid date value or format "%s"' % str(data)) - *dtuple, tz = parsed_date_tz - if tz is None: - return datetime.datetime(*dtuple[:6]) - return datetime.datetime(*dtuple[:6], - tzinfo=datetime.timezone(datetime.timedelta(seconds=tz))) - - - setattr(email.utils, "parsedate_to_datetime", parsedate_to_datetime) - - - import email.headerregistry - from email import utils, _header_value_parser as parser - - @classmethod - def parse(cls, value, kwds): - if not value: - kwds['defects'].append(errors.HeaderMissingRequiredValue()) - kwds['datetime'] = None - kwds['decoded'] = '' - kwds['parse_tree'] = parser.TokenList() - return - if isinstance(value, str): - kwds['decoded'] = value - try: - value = utils.parsedate_to_datetime(value) - except ValueError: - kwds['defects'].append(errors.InvalidDateDefect('Invalid date value or format')) - kwds['datetime'] = None - kwds['parse_tree'] = parser.TokenList() - return - kwds['datetime'] = value - kwds['decoded'] = utils.format_datetime(kwds['datetime']) - kwds['parse_tree'] = cls.value_parser(kwds['decoded']) - - - setattr(email.headerregistry.DateHeader, "parse", parse) diff --git a/setup.py b/setup.py index 496b018..4857170 100644 --- a/setup.py +++ b/setup.py @@ -49,5 +49,5 @@ setup(name = "pyquarantine", ) ], install_requires = ["pymilter >= 1.5", "jsonschema", "netaddr", "beautifulsoup4[lxml]", "peewee"], - python_requires = ">=3.9" + python_requires = ">=3.10" )