Skip to content
Snippets Groups Projects
Commit 7212be6f authored by Bruce Flynn's avatar Bruce Flynn
Browse files

Fix cmp for py3

parent dfdc0232
No related branches found
No related tags found
No related merge requests found
......@@ -8,18 +8,22 @@
4. Write
"""
import os
import logging
import os
from collections import deque, OrderedDict
from functools import total_ordering
LOG = logging.getLogger(__name__)
VIIRS_APID_ORDER = (826, 821) + tuple(range(800,821)) + tuple(range(822,826))
VIIRS_APID_ORDER = (826, 821) + tuple(range(800, 821)) + tuple(range(822, 826))
@total_ordering
class _Ptr(object):
"""
Represents one or more packets that share the same time timecode and apid.
"""
def __init__(self, fobj, timecode, apid, offset, size):
self.fobj = fobj
self.timecode = timecode
......@@ -30,17 +34,22 @@ class _Ptr(object):
def __repr__(self):
attrs = ' '.join(
'{}={}'.format(k, v)
for k, v in sorted(vars(self).items())
if not k.startswith('_'))
'{}={}'.format(k, v)
for k, v in sorted(vars(self).items())
if not k.startswith('_'))
return '<{:s} {:s}>'.format(self.__class__.__name__, attrs)
def __cmp__(self, that):
return cmp(
(self.timecode, self.apid),
(that.timecode, that.apid)
)
def __eq__(self, that):
return (self.timecode.day_segmented_timecode(), self.apid) \
== (that.timecode.day_segmented_timecode(), that.apid)
def __ne__(self, that):
return not self == that
def __lt__(self, that):
return (self.timecode.day_segmented_timecode(), self.apid) \
< (that.timecode.day_segmented_timecode(), that.apid)
# instances with same timecode/apid/size will compare the same
def __hash__(self):
......
from operator import eq, lt, gt
import pytest
from edosl0util import merge, headers
class Test_Ptr:
@pytest.mark.parametrize(
'd1,d2,op',
[
[(0, 0), (0, 0), eq],
[(1, 0), (0, 0), gt],
[(0, 1), (0, 0), gt],
[(1, 1), (0, 0), gt],
[(0, 0), (1, 0), lt],
[(0, 0), (0, 1), lt],
[(0, 0), (1, 1), lt],
])
def test_ordering(self, d1, d2, op):
time1, apid1 = d1
ptr1 = merge._Ptr(open('/dev/null', 'r'),
headers.DaySegmentedTimecode(time1, 0, 0),
apid1, 0, 0)
time2, apid2 = d2
ptr2 = merge._Ptr(open('/dev/null', 'r'),
headers.DaySegmentedTimecode(time2, 0, 0),
apid2, 0, 0)
assert op(ptr1, ptr2)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment