From b76654275514db71343c086947320ede6305dc4c Mon Sep 17 00:00:00 2001 From: David Jacobs Date: Fri, 6 Jun 2025 09:40:53 -0400 Subject: [PATCH] Fix payload ordering and remove deprecated sys.exc_clear --- apns.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/apns.py b/apns.py index 33655b1..f1853ea 100644 --- a/apns.py +++ b/apns.py @@ -33,6 +33,7 @@ import select import time import collections, itertools +from collections import OrderedDict import logging import threading try: @@ -225,11 +226,11 @@ def _connect(self): break except SSLError as ex: if ex.args[0] == SSL_ERROR_WANT_READ: - sys.exc_clear() + continue elif ex.args[0] == SSL_ERROR_WANT_WRITE: - sys.exc_clear() + continue else: - raise + raise self.connection_alive = True _logger.debug("%s APNS connection established" % self.__class__.__name__) @@ -320,7 +321,11 @@ def __init__(self, alert=None, badge=None, sound=None, category=None, custom=Non def dict(self): """Returns the payload as a regular Python dictionary""" - d = {} + d = OrderedDict() + if self.sound: + d['sound'] = self.sound + if self.badge is not None: + d['badge'] = int(self.badge) if self.alert: # Alert can be either a string or a PayloadAlert # object @@ -328,10 +333,6 @@ def dict(self): d['alert'] = self.alert.dict() else: d['alert'] = self.alert - if self.sound: - d['sound'] = self.sound - if self.badge is not None: - d['badge'] = int(self.badge) if self.category: d['category'] = self.category