/usr/lib/python3.9/site-packages/dns
# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license """Serial Number Arthimetic from RFC 1982""" class Serial: def __init__(self, value: int, bits: int = 32): self.value = value % 2**bits self.bits = bits def __repr__(self): return f"dns.serial.Serial({self.value}, {self.bits})" def __eq__(self, other): if isinstance(other, int): other = Serial(other, self.bits) elif not isinstance(other, Serial) or other.bits != self.bits: return NotImplemented return self.value == other.value def __ne__(self, other): if isinstance(other, int): other = Serial(other, self.bits) elif not isinstance(other, Serial) or other.bits != self.bits: return NotImplemented return self.value != other.value def __lt__(self, other): if isinstance(other, int): other = Serial(other, self.bits) elif not isinstance(other, Serial) or other.bits != self.bits: return NotImplemented if self.value < other.value and other.value - self.value < 2 ** (self.bits - 1): return True elif self.value > other.value and self.value - other.value > 2 ** ( self.bits - 1 ): return True else: return False def __le__(self, other): return self == other or self < other def __gt__(self, other): if isinstance(other, int): other = Serial(other, self.bits) elif not isinstance(other, Serial) or other.bits != self.bits: return NotImplemented if self.value < other.value and other.value - self.value > 2 ** (self.bits - 1): return True elif self.value > other.value and self.value - other.value < 2 ** ( self.bits - 1 ): return True else: return False def __ge__(self, other): return self == other or self > other def __add__(self, other): v = self.value if isinstance(other, Serial): delta = other.value elif isinstance(other, int): delta = other else: raise ValueError if abs(delta) > (2 ** (self.bits - 1) - 1): raise ValueError v += delta v = v % 2**self.bits return Serial(v, self.bits) def __iadd__(self, other): v = self.value if isinstance(other, Serial): delta = other.value elif isinstance(other, int): delta = other else: raise ValueError if abs(delta) > (2 ** (self.bits - 1) - 1): raise ValueError v += delta v = v % 2**self.bits self.value = v return self def __sub__(self, other): v = self.value if isinstance(other, Serial): delta = other.value elif isinstance(other, int): delta = other else: raise ValueError if abs(delta) > (2 ** (self.bits - 1) - 1): raise ValueError v -= delta v = v % 2**self.bits return Serial(v, self.bits) def __isub__(self, other): v = self.value if isinstance(other, Serial): delta = other.value elif isinstance(other, int): delta = other else: raise ValueError if abs(delta) > (2 ** (self.bits - 1) - 1): raise ValueError v -= delta v = v % 2**self.bits self.value = v return self
.
Edit
..
Edit
__init__.py
Edit
__pycache__
Edit
_asyncbackend.py
Edit
_asyncio_backend.py
Edit
_ddr.py
Edit
_features.py
Edit
_immutable_ctx.py
Edit
asyncbackend.py
Edit
asyncquery.py
Edit
asyncresolver.py
Edit
dnssec.py
Edit
dnssecalgs
Edit
dnssectypes.py
Edit
e164.py
Edit
edns.py
Edit
entropy.py
Edit
enum.py
Edit
exception.py
Edit
flags.py
Edit
grange.py
Edit
immutable.py
Edit
inet.py
Edit
ipv4.py
Edit
ipv6.py
Edit
message.py
Edit
name.py
Edit
namedict.py
Edit
nameserver.py
Edit
node.py
Edit
opcode.py
Edit
query.py
Edit
quic
Edit
rcode.py
Edit
rdata.py
Edit
rdataclass.py
Edit
rdataset.py
Edit
rdatatype.py
Edit
rdtypes
Edit
renderer.py
Edit
resolver.py
Edit
reversename.py
Edit
rrset.py
Edit
serial.py
Edit
set.py
Edit
tokenizer.py
Edit
transaction.py
Edit
tsig.py
Edit
tsigkeyring.py
Edit
ttl.py
Edit
update.py
Edit
version.py
Edit
versioned.py
Edit
win32util.py
Edit
wire.py
Edit
xfr.py
Edit
zone.py
Edit
zonefile.py
Edit
zonetypes.py
Edit