diff --git a/pcapkit/foundation/extraction.py b/pcapkit/foundation/extraction.py index 9460a1fe8..ed0f9d669 100644 --- a/pcapkit/foundation/extraction.py +++ b/pcapkit/foundation/extraction.py @@ -59,7 +59,7 @@ from pcapkit.foundation.traceflow.tcp import TCP as TCP_TraceFlow from pcapkit.protocols.misc.pcap.frame import Frame from pcapkit.protocols.misc.pcapng import PCAPNG - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase #: Every key registered in :attr:`Extractor.__output__` and in #: :attr:`TraceFlowBase.__output__ @@ -82,7 +82,7 @@ Packet = Union[Frame, PCAPNG, ScapyPacket, DPKTPacket, PySharkPacket, PCAPFilePacket, tuple[float, bytes]] - Protocols = Union[str, Protocol, Type[Protocol]] + Protocols = Union[str, ProtocolBase, Type[ProtocolBase]] VerboseHandler = Callable[['Extractor', Packet], Any] __all__ = ['Extractor'] diff --git a/pcapkit/foundation/registry/protocols.py b/pcapkit/foundation/registry/protocols.py index 775fc9a89..33f6cf728 100644 --- a/pcapkit/foundation/registry/protocols.py +++ b/pcapkit/foundation/registry/protocols.py @@ -33,7 +33,7 @@ from pcapkit.protocols.link.link import Link from pcapkit.protocols.misc.pcap.frame import Frame from pcapkit.protocols.misc.pcapng import PCAPNG -from pcapkit.protocols.protocol import ProtocolBase as Protocol +from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.application.httpv2 import FrameType as Schema_HTTP_FrameType from pcapkit.protocols.schema.internet.hip import Parameter as Schema_HIP_Parameter from pcapkit.protocols.schema.internet.hopopt import Option as Schema_HOPOPT_Option @@ -144,7 +144,7 @@ # NOTE: pcapkit.protocols.__proto__ -def register_protocol(protocol: 'Type[Protocol]') -> 'None': +def register_protocol(protocol: 'Type[ProtocolBase]') -> 'None': """Registered protocol class. The protocol class must be a subclass of @@ -213,7 +213,7 @@ class under two codes, a supported and documented thing to do, reaches same class under the same name is silent. """ - if not issubclass(protocol, Protocol): + if not issubclass(protocol, ProtocolBase): raise RegistryError(f'protocol must be a Protocol subclass, not {protocol!r}') name = protocol.__name__.upper() @@ -249,7 +249,7 @@ class under two codes, a supported and documented thing to do, reaches #: hand, moved into one table so :func:`register_protocol_code` can consult #: it. ``LinkType`` naming two classes is deliberate, not ambiguous -- #: :func:`register_linktype` already fans out to both. -_CODE_DESTINATIONS: 'dict[type, tuple[Type[Protocol], ...]]' = { +_CODE_DESTINATIONS: 'dict[type, tuple[Type[ProtocolBase], ...]]' = { Enum_EtherType: (Link,), Enum_TransType: (Internet,), Enum_PayloadProtocolIdentifier: (SCTP,), @@ -257,7 +257,7 @@ class under two codes, a supported and documented thing to do, reaches } -def _iter_code_targets(code: 'Any') -> 'Iterator[tuple[Type[Protocol], Any]]': +def _iter_code_targets(code: 'Any') -> 'Iterator[tuple[Type[ProtocolBase], Any]]': """Flatten a ``code=`` argument into ``(destination, key)`` pairs. Args: @@ -300,7 +300,7 @@ def _iter_code_targets(code: 'Any') -> 'Iterator[tuple[Type[Protocol], Any]]': f'explicit destination, e.g. code={{TCP: {code!r}}}') -def register_protocol_code(protocol: 'Type[Protocol]', code: 'Any') -> 'None': +def register_protocol_code(protocol: 'Type[ProtocolBase]', code: 'Any') -> 'None': r"""Register ``protocol`` into the next-layer dispatch registry (or registries) named by ``code``. @@ -377,12 +377,12 @@ def register_protocol_code(protocol: 'Type[Protocol]', code: 'Any') -> 'None': @overload -def register_linktype(code: 'LinkType', module: 'ModuleDescriptor[Protocol] | Type[Protocol]') -> 'None': ... +def register_linktype(code: 'LinkType', module: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]') -> 'None': ... @overload def register_linktype(code: 'LinkType', module: 'str', class_: 'str') -> 'None': ... -def register_linktype(code: 'LinkType', module: 'str | ModuleDescriptor[Protocol] | Type[Protocol]', +def register_linktype(code: 'LinkType', module: 'str | ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]', class_: 'str' = NULL) -> 'None': r"""Register a new protocol class. @@ -408,7 +408,7 @@ def register_linktype(code: 'LinkType', module: 'str | ModuleDescriptor[Protocol """ if isinstance(module, str): - module = cast('ModuleDescriptor[Protocol]', ModuleDescriptor(module, class_)) + module = cast('ModuleDescriptor[ProtocolBase]', ModuleDescriptor(module, class_)) Frame.register(code, module) PCAPNG.register(code, module) @@ -421,13 +421,13 @@ def register_linktype(code: 'LinkType', module: 'str | ModuleDescriptor[Protocol @overload -def register_pcap(code: 'LinkType', module: 'ModuleDescriptor[Protocol] | Type[Protocol]') -> 'None': ... +def register_pcap(code: 'LinkType', module: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]') -> 'None': ... @overload def register_pcap(code: 'LinkType', module: 'str', class_: 'str') -> 'None': ... # NOTE: pcapkit.protocols.misc.pcap.frame.Frame.__proto__ -def register_pcap(code: 'LinkType', module: 'str | ModuleDescriptor[Protocol] | Type[Protocol]', +def register_pcap(code: 'LinkType', module: 'str | ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]', class_: 'str' = NULL) -> 'None': r"""Register a new protocol class. @@ -446,7 +446,7 @@ def register_pcap(code: 'LinkType', module: 'str | ModuleDescriptor[Protocol] | """ if isinstance(module, str): - module = cast('ModuleDescriptor[Protocol]', ModuleDescriptor(module, class_)) + module = cast('ModuleDescriptor[ProtocolBase]', ModuleDescriptor(module, class_)) Frame.register(code, module) logger.debug('registered PCAP linktype protocol: %s', code.name) @@ -458,13 +458,13 @@ def register_pcap(code: 'LinkType', module: 'str | ModuleDescriptor[Protocol] | @overload -def register_pcapng(code: 'LinkType', module: 'ModuleDescriptor[Protocol] | Type[Protocol]') -> 'None': ... +def register_pcapng(code: 'LinkType', module: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]') -> 'None': ... @overload def register_pcapng(code: 'LinkType', module: 'str', class_: 'str') -> 'None': ... # NOTE: pcapkit.protocols.misc.pcapng.PCAPNG.__proto__ -def register_pcapng(code: 'LinkType', module: 'str | ModuleDescriptor[Protocol] | Type[Protocol]', +def register_pcapng(code: 'LinkType', module: 'str | ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]', class_: 'str' = NULL) -> 'None': r"""Register a new protocol class. @@ -483,7 +483,7 @@ def register_pcapng(code: 'LinkType', module: 'str | ModuleDescriptor[Protocol] """ if isinstance(module, str): - module = cast('ModuleDescriptor[Protocol]', ModuleDescriptor(module, class_)) + module = cast('ModuleDescriptor[ProtocolBase]', ModuleDescriptor(module, class_)) PCAPNG.register(code, module) logger.debug('registered PCAP-NG linktype protocol: %s', code.name) @@ -500,13 +500,13 @@ def register_pcapng(code: 'LinkType', module: 'str | ModuleDescriptor[Protocol] @overload -def register_ethertype(code: 'EtherType', module: 'ModuleDescriptor[Protocol] | Type[Protocol]') -> 'None': ... +def register_ethertype(code: 'EtherType', module: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]') -> 'None': ... @overload def register_ethertype(code: 'EtherType', module: 'str', class_: 'str') -> 'None': ... # NOTE: pcapkit.protocols.link.link.Link.__proto__ -def register_ethertype(code: 'EtherType', module: 'str | ModuleDescriptor[Protocol] | Type[Protocol]', +def register_ethertype(code: 'EtherType', module: 'str | ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]', class_: 'str' = NULL) -> 'None': r"""Register a new protocol class. @@ -525,7 +525,7 @@ def register_ethertype(code: 'EtherType', module: 'str | ModuleDescriptor[Protoc """ if isinstance(module, str): - module = cast('ModuleDescriptor[Protocol]', ModuleDescriptor(module, class_)) + module = cast('ModuleDescriptor[ProtocolBase]', ModuleDescriptor(module, class_)) Link.register(code, module) logger.debug('registered ethertype protocol: %s', code.name) @@ -542,13 +542,13 @@ def register_ethertype(code: 'EtherType', module: 'str | ModuleDescriptor[Protoc @overload -def register_transtype(code: 'TransType', module: 'ModuleDescriptor[Protocol] | Type[Protocol]') -> 'None': ... +def register_transtype(code: 'TransType', module: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]') -> 'None': ... @overload def register_transtype(code: 'TransType', module: 'str', class_: 'str') -> 'None': ... # NOTE: pcapkit.protocols.internet.internet.Internet.__proto__ -def register_transtype(code: 'TransType', module: 'str | ModuleDescriptor[Protocol] | Type[Protocol]', +def register_transtype(code: 'TransType', module: 'str | ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]', class_: 'str' = NULL) -> 'None': r"""Register a new protocol class. @@ -567,7 +567,7 @@ def register_transtype(code: 'TransType', module: 'str | ModuleDescriptor[Protoc """ if isinstance(module, str): - module = cast('ModuleDescriptor[Protocol]', ModuleDescriptor(module, class_)) + module = cast('ModuleDescriptor[ProtocolBase]', ModuleDescriptor(module, class_)) Internet.register(code, module) logger.debug('registered transtype protocol: %s', code.name) @@ -784,16 +784,16 @@ def register_mh_extension(code: 'MH_CGAExtension', meth: 'str | tuple[MH_Extensi @overload -def register_apptype(code: 'int', module: 'ModuleDescriptor[Protocol] | Type[Protocol]', *, proto: 'TransportProtocol | str') -> 'None': ... +def register_apptype(code: 'int', module: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]', *, proto: 'TransportProtocol | str') -> 'None': ... @overload -def register_apptype(code: 'Enum_AppType', module: 'ModuleDescriptor[Protocol] | Type[Protocol]', *, proto: 'TransportProtocol | str' = ...) -> 'None': ... +def register_apptype(code: 'Enum_AppType', module: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]', *, proto: 'TransportProtocol | str' = ...) -> 'None': ... @overload def register_apptype(code: 'int', module: 'str', class_: 'str', *, proto: 'TransportProtocol | str') -> 'None': ... @overload def register_apptype(code: 'Enum_AppType', module: 'str', class_: 'str', *, proto: 'TransportProtocol | str' = ...) -> 'None': ... -def register_apptype(code: 'int | Enum_AppType', module: 'str | ModuleDescriptor[Protocol] | Type[Protocol]', +def register_apptype(code: 'int | Enum_AppType', module: 'str | ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]', class_: 'str' = NULL, *, proto: 'TransportProtocol | str' = NULL) -> 'None': r"""Register a new protocol class. @@ -833,13 +833,13 @@ def register_apptype(code: 'int | Enum_AppType', module: 'str | ModuleDescriptor proto = code.proto code = code.port if isinstance(module, str): - module = cast('ModuleDescriptor[Protocol]', ModuleDescriptor(module, class_)) + module = cast('ModuleDescriptor[ProtocolBase]', ModuleDescriptor(module, class_)) _reg = False if isinstance(proto, str): proto = TransportProtocol.get(proto.lower()) - for test, cls in cast('dict[TransportProtocol, Type[Protocol]]', { + for test, cls in cast('dict[TransportProtocol, Type[ProtocolBase]]', { TransportProtocol.tcp: TCP, TransportProtocol.udp: UDP, }).items(): @@ -860,13 +860,13 @@ def register_apptype(code: 'int | Enum_AppType', module: 'str | ModuleDescriptor @overload -def register_tcp(code: 'int | Enum_AppType', module: 'ModuleDescriptor[Protocol] | Type[Protocol]') -> 'None': ... +def register_tcp(code: 'int | Enum_AppType', module: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]') -> 'None': ... @overload def register_tcp(code: 'int | Enum_AppType', module: 'str', class_: 'str') -> 'None': ... # NOTE: pcapkit.protocols.transport.tcp.TCP.__proto__ -def register_tcp(code: 'int | Enum_AppType', module: 'str | ModuleDescriptor[Protocol] | Type[Protocol]', +def register_tcp(code: 'int | Enum_AppType', module: 'str | ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]', class_: 'str' = NULL) -> 'None': r"""Register a new protocol class. @@ -887,7 +887,7 @@ def register_tcp(code: 'int | Enum_AppType', module: 'str | ModuleDescriptor[Pro if isinstance(code, Enum_AppType): code = code.port if isinstance(module, str): - module = cast('ModuleDescriptor[Protocol]', ModuleDescriptor(module, class_)) + module = cast('ModuleDescriptor[ProtocolBase]', ModuleDescriptor(module, class_)) TCP.register(code, module) logger.debug('registered TCP port: %s', code) @@ -949,13 +949,13 @@ def register_tcp_mp_option(code: 'TCP_MPTCPOption', meth: 'str | tuple[TCP_MPOpt @overload -def register_udp(code: 'int | Enum_AppType', module: 'ModuleDescriptor[Protocol] | Type[Protocol]') -> 'None': ... +def register_udp(code: 'int | Enum_AppType', module: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]') -> 'None': ... @overload def register_udp(code: 'int | Enum_AppType', module: 'str', class_: 'str') -> 'None': ... # NOTE: pcapkit.protocols.transport.udp.UDP.__proto__ -def register_udp(code: 'int | Enum_AppType', module: 'str | ModuleDescriptor[Protocol] | Type[Protocol]', +def register_udp(code: 'int | Enum_AppType', module: 'str | ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]', class_: 'str' = NULL) -> 'None': r"""Register a new protocol class. @@ -976,7 +976,7 @@ def register_udp(code: 'int | Enum_AppType', module: 'str | ModuleDescriptor[Pro if isinstance(code, Enum_AppType): code = code.port if isinstance(module, str): - module = cast('ModuleDescriptor[Protocol]', ModuleDescriptor(module, class_)) + module = cast('ModuleDescriptor[ProtocolBase]', ModuleDescriptor(module, class_)) UDP.register(code, module) logger.debug('registered UDP port: %s', code) @@ -988,13 +988,13 @@ def register_udp(code: 'int | Enum_AppType', module: 'str | ModuleDescriptor[Pro @overload -def register_sctp(code: 'int | SCTP_PayloadProtocolIdentifier', module: 'ModuleDescriptor[Protocol] | Type[Protocol]') -> 'None': ... +def register_sctp(code: 'int | SCTP_PayloadProtocolIdentifier', module: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]') -> 'None': ... @overload def register_sctp(code: 'int | SCTP_PayloadProtocolIdentifier', module: 'str', class_: 'str') -> 'None': ... # NOTE: pcapkit.protocols.transport.sctp.SCTP.__proto__ -def register_sctp(code: 'int | SCTP_PayloadProtocolIdentifier', module: 'str | ModuleDescriptor[Protocol] | Type[Protocol]', +def register_sctp(code: 'int | SCTP_PayloadProtocolIdentifier', module: 'str | ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]', class_: 'str' = NULL) -> 'None': r"""Register a new protocol class. @@ -1020,7 +1020,7 @@ def register_sctp(code: 'int | SCTP_PayloadProtocolIdentifier', module: 'str | M """ if isinstance(module, str): - module = cast('ModuleDescriptor[Protocol]', ModuleDescriptor(module, class_)) + module = cast('ModuleDescriptor[ProtocolBase]', ModuleDescriptor(module, class_)) SCTP.register(code, module) logger.debug('registered SCTP payload protocol identifier: %s', code) diff --git a/pcapkit/foundation/traceflow/traceflow.py b/pcapkit/foundation/traceflow/traceflow.py index 82a37966a..b45bf42ba 100644 --- a/pcapkit/foundation/traceflow/traceflow.py +++ b/pcapkit/foundation/traceflow/traceflow.py @@ -48,7 +48,7 @@ from typing_extensions import Literal, Self from pcapkit.corekit.infoclass import Info - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase CallbackFn = Callable[[_IT], None] @@ -65,7 +65,7 @@ class TraceFlowMeta(abc.ABCMeta): #: Protocol name of current object. __protocol_name__: 'str' #: Protocol of current object. - __protocol_type__: 'Type[Protocol]' + __protocol_type__: 'Type[ProtocolBase]' @property def name(cls) -> 'str': @@ -75,7 +75,7 @@ def name(cls) -> 'str': return cls.__name__ @property - def protocol(cls) -> 'Type[Protocol]': + def protocol(cls) -> 'Type[ProtocolBase]': """Protocol of current object.""" if hasattr(cls, '__protocol_type__'): return cls.__protocol_type__ @@ -131,7 +131,7 @@ class TraceFlowBase(Generic[_DT, _BT, _IT, _PT], metaclass=TraceFlowMeta): #: Protocol name of current reassembly object. __protocol_name__: 'str' #: Protocol of current reassembly object. - __protocol_type__: 'Type[Protocol]' + __protocol_type__: 'Type[ProtocolBase]' #: List of callback functions upon reassembled datagram. __callback_fn__: 'list[CallbackFn]' @@ -179,7 +179,7 @@ def name(self) -> 'str': return type(self).name # type: ignore[return-value] @property - def protocol(self) -> 'Type[Protocol]': + def protocol(self) -> 'Type[ProtocolBase]': """Protocol of current flow tracing object. Note: diff --git a/pcapkit/protocols/application/application.py b/pcapkit/protocols/application/application.py index b00fe99ac..ac55744a0 100644 --- a/pcapkit/protocols/application/application.py +++ b/pcapkit/protocols/application/application.py @@ -16,8 +16,7 @@ from pcapkit.corekit.protochain import ProtoChain from pcapkit.protocols.misc.null import NoPayload -from pcapkit.protocols.protocol import _PT, _ST -from pcapkit.protocols.protocol import ProtocolBase as Protocol +from pcapkit.protocols.protocol import _PT, _ST, ProtocolBase from pcapkit.utilities.exceptions import IntError, UnsupportedCall if TYPE_CHECKING: @@ -28,7 +27,7 @@ __all__ = ['Application'] -class Application(Protocol[_PT, _ST], Generic[_PT, _ST]): # pylint: disable=abstract-method +class Application(ProtocolBase[_PT, _ST], Generic[_PT, _ST]): # pylint: disable=abstract-method """Abstract base class for transport layer protocol family.""" ########################################################################## diff --git a/pcapkit/protocols/data/data.py b/pcapkit/protocols/data/data.py index eb1a35e1d..7f142dc8c 100644 --- a/pcapkit/protocols/data/data.py +++ b/pcapkit/protocols/data/data.py @@ -10,7 +10,7 @@ if TYPE_CHECKING: from typing import Type - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase class Data(Info): @@ -22,4 +22,4 @@ class Data(Info): #: Next field name, i.e., the name of the payload field. __next_name__: 'str' #: Next field type, i.e., the type of the payload field. - __next_type__: 'Type[Protocol]' + __next_type__: 'Type[ProtocolBase]' diff --git a/pcapkit/protocols/internet/ah.py b/pcapkit/protocols/internet/ah.py index 49157561d..8dcad7e9d 100644 --- a/pcapkit/protocols/internet/ah.py +++ b/pcapkit/protocols/internet/ah.py @@ -40,7 +40,7 @@ from typing_extensions import Literal from pcapkit.corekit.protochain import ProtoChain - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.schema import Schema __all__ = ['AH'] @@ -65,7 +65,7 @@ def length(self) -> 'int': return self._info.length @property - def payload(self) -> 'Protocol | NoReturn': + def payload(self) -> 'ProtocolBase | NoReturn': """Payload of current instance. Raises: @@ -160,7 +160,7 @@ def make(self, spi: 'int' = 0, seq: 'int' = 0, icv: 'bytes' = b'', - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_AH': """Make (construct) packet data. diff --git a/pcapkit/protocols/internet/esp.py b/pcapkit/protocols/internet/esp.py index 73753d28e..d997dd869 100644 --- a/pcapkit/protocols/internet/esp.py +++ b/pcapkit/protocols/internet/esp.py @@ -192,7 +192,7 @@ from aenum import IntEnum as AenumEnum from typing_extensions import Literal - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase #: Cached :mod:`cryptography` primitives, c.f. :func:`load_cryptography`. #: :data:`NotImplemented` means the import has not been attempted yet, and @@ -1149,7 +1149,7 @@ def make(self, iv: 'Optional[bytes]' = None, pad_len: 'Optional[int]' = None, icv: 'bytes' = b'', - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_ESP': """Make (construct) packet data. @@ -1319,7 +1319,7 @@ def _make_data(cls, data: 'Data_ESP') -> 'dict[str, Any]': # type: ignore[overr } @staticmethod - def _payload_bytes(payload: 'bytes | Protocol | Schema') -> 'bytes': + def _payload_bytes(payload: 'bytes | ProtocolBase | Schema') -> 'bytes': """Render ``payload`` as :obj:`bytes`. Args: diff --git a/pcapkit/protocols/internet/hip.py b/pcapkit/protocols/internet/hip.py index 77738eda7..e929057b1 100644 --- a/pcapkit/protocols/internet/hip.py +++ b/pcapkit/protocols/internet/hip.py @@ -222,7 +222,7 @@ from pcapkit.const.hip.transport import Transport as Enum_Transport from pcapkit.corekit.protochain import ProtoChain from pcapkit.protocols.data.internet.hip import Parameter as Data_Parameter - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.internet.hip import Parameter as Schema_Parameter Parameter = OrderedMultiDict[Enum_Parameter, Data_Parameter] @@ -451,7 +451,7 @@ def length(self) -> 'int': return self._info.length @property - def payload(self) -> 'Protocol | NoReturn': + def payload(self) -> 'ProtocolBase | NoReturn': """Payload of current instance. Raises: @@ -580,7 +580,7 @@ def make(self, shit: 'int' = 0, rhit: 'int' = 0, parameters: 'Optional[list[Schema_Parameter | tuple[Enum_Parameter, dict[str, Any]] | bytes] | Parameter]' = None, # pylint: disable=line-too-long - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_HIP': """Make (construct) packet data. diff --git a/pcapkit/protocols/internet/hopopt.py b/pcapkit/protocols/internet/hopopt.py index b10118173..751063142 100644 --- a/pcapkit/protocols/internet/hopopt.py +++ b/pcapkit/protocols/internet/hopopt.py @@ -107,7 +107,7 @@ from pcapkit.protocols.data.internet.hopopt import Option as Data_Option from pcapkit.protocols.data.internet.hopopt import QuickStartOption as Data_QuickStartOption from pcapkit.protocols.data.internet.hopopt import SMFDPDOption as Data_SMFDPDOption - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.internet.hopopt import Option as Schema_Option from pcapkit.protocols.schema.internet.hopopt import QuickStartOption as Schema_QuickStartOption from pcapkit.protocols.schema.internet.hopopt import SMFDPDOption as Schema_SMFDPDOption @@ -228,7 +228,7 @@ def length(self) -> 'int': return self._info.length @property - def payload(self) -> 'Protocol | NoReturn': + def payload(self) -> 'ProtocolBase | NoReturn': """Payload of current instance. Raises: @@ -314,7 +314,7 @@ def make(self, next_namespace: 'Optional[dict[str, int] | dict[int, str] | Type[StdlibEnum] | Type[AenumEnum]]' = None, # pylint: disable=line-too-long next_reversed: 'bool' = False, options: 'Optional[list[Schema_Option | tuple[Enum_Option, dict[str, Any]] | bytes] | Option]' = None, # pylint: disable=line-too-long - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_HOPOPT': """Make (construct) packet data. diff --git a/pcapkit/protocols/internet/internet.py b/pcapkit/protocols/internet/internet.py index a98d91093..514afca93 100644 --- a/pcapkit/protocols/internet/internet.py +++ b/pcapkit/protocols/internet/internet.py @@ -17,8 +17,7 @@ from pcapkit.const.reg.transtype import TransType as Enum_TransType from pcapkit.corekit.module import ModuleDescriptor from pcapkit.corekit.protochain import ProtoChain -from pcapkit.protocols.protocol import _PT, _ST -from pcapkit.protocols.protocol import ProtocolBase as Protocol +from pcapkit.protocols.protocol import _PT, _ST, ProtocolBase from pcapkit.utilities.decorators import beholder from pcapkit.utilities.exceptions import RegistryError from pcapkit.utilities.warnings import RegistryWarning, warn @@ -31,7 +30,7 @@ __all__ = ['Internet'] -class Internet(Protocol[_PT, _ST], Generic[_PT, _ST]): # pylint: disable=abstract-method +class Internet(ProtocolBase[_PT, _ST], Generic[_PT, _ST]): # pylint: disable=abstract-method """Abstract base class for internet layer protocol family. This class currently supports parsing of the following protocols, which are @@ -85,7 +84,7 @@ class Internet(Protocol[_PT, _ST], Generic[_PT, _ST]): # pylint: disable=abstra #: Layer of protocol. __layer__ = 'Internet' # type: Literal['Internet'] - #: DefaultDict[int, ModuleDescriptor[Protocol] | ~typing.Type[Protocol]]: Protocol index mapping for decoding next layer, + #: DefaultDict[int, ModuleDescriptor[ProtocolBase] | ~typing.Type[ProtocolBase]]: Protocol index mapping for decoding next layer, #: c.f. :meth:`self._decode_next_layer ` #: & :meth:`self._import_next_layer `. __proto__ = collections.defaultdict( @@ -133,7 +132,7 @@ def layer(self) -> 'Literal["Internet"]': ########################################################################## @classmethod - def register(cls, code: 'Enum_TransType', protocol: 'ModuleDescriptor[Protocol] | Type[Protocol]') -> 'None': # type: ignore[override] + def register(cls, code: 'Enum_TransType', protocol: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]') -> 'None': # type: ignore[override] r"""Register a new protocol class. Notes: @@ -161,7 +160,7 @@ def register(cls, code: 'Enum_TransType', protocol: 'ModuleDescriptor[Protocol] """ if isinstance(protocol, ModuleDescriptor): protocol = protocol.klass - if not issubclass(protocol, Protocol): + if not issubclass(protocol, ProtocolBase): raise RegistryError(f'protocol must be a Protocol subclass, not {protocol!r}') incumbent = cls.__proto__.get(code) if incumbent is not None and incumbent is not protocol: @@ -213,7 +212,7 @@ def _decode_next_layer(self, dict_: '_PT', proto: 'Optional[int]' = None, # pyl be included when :meth:`Info.to_dict ` is called. """ - next_ = cast('Protocol', # type: ignore[redundant-cast] + next_ = cast('ProtocolBase', # type: ignore[redundant-cast] self._import_next_layer(proto, length, packet=packet, version=version, payload=payload)) # type: ignore[arg-type,misc,call-arg] info, chain = next_.info, next_.protochain @@ -240,7 +239,7 @@ def _decode_next_layer(self, dict_: '_PT', proto: 'Optional[int]' = None, # pyl @beholder # type: ignore[arg-type] def _import_next_layer(self, proto: 'int', length: 'Optional[int]' = None, *, # pylint: disable=arguments-differ packet: 'Optional[dict[str, Any]]' = None, version: 'Literal[4, 6]' = 4, - extension: 'bool' = False, payload: 'Optional[bytes]' = None) -> 'Protocol': + extension: 'bool' = False, payload: 'Optional[bytes]' = None) -> 'ProtocolBase': """Import next layer extractor. Arguments: @@ -257,7 +256,7 @@ def _import_next_layer(self, proto: 'int', length: 'Optional[int]' = None, *, # """ if TYPE_CHECKING: - protocol: 'Type[Protocol]' + protocol: 'Type[ProtocolBase]' if payload is None: file_ = self.__header__.get_payload() diff --git a/pcapkit/protocols/internet/ipv4.py b/pcapkit/protocols/internet/ipv4.py index c034e9796..dc0883aee 100644 --- a/pcapkit/protocols/internet/ipv4.py +++ b/pcapkit/protocols/internet/ipv4.py @@ -113,7 +113,7 @@ from typing_extensions import Literal from pcapkit.protocols.data.internet.ipv4 import Option as Data_Option - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.internet.ipv4 import Option as Schema_Option Option = OrderedMultiDict[Enum_OptionNumber, Data_Option] @@ -363,7 +363,7 @@ def make(self, src: 'IPv4Address | str | int | bytes' = '127.0.0.1', dst: 'IPv4Address | str | int | bytes' = '0.0.0.0', # nosec: B104 options: 'Optional[list[Schema_Option | tuple[Enum_OptionNumber, dict[str, Any]] | bytes] | Option]' = None, # pylint: disable=line-too-long - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_IPv4': """Make (construct) packet data. diff --git a/pcapkit/protocols/internet/ipv6.py b/pcapkit/protocols/internet/ipv6.py index ea41e5f5c..100d90992 100644 --- a/pcapkit/protocols/internet/ipv6.py +++ b/pcapkit/protocols/internet/ipv6.py @@ -46,7 +46,7 @@ from aenum import IntEnum as AenumEnum from typing_extensions import Literal - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.schema import Schema __all__ = ['IPv6'] @@ -88,7 +88,7 @@ def dst(self) -> 'IPv6Address': return self._info.dst @property - def extension_headers(self) -> 'OrderedMultiDict[Enum_ExtensionHeader, Protocol]': + def extension_headers(self) -> 'OrderedMultiDict[Enum_ExtensionHeader, ProtocolBase]': """IPv6 extension header records.""" return self._exthdr @@ -172,7 +172,7 @@ def make(self, hop_limit: 'int' = 64, # reasonable default src: 'IPv6Address | str | bytes | int' = '::1', dst: 'IPv6Address | str | bytes | int' = '::', - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_IPv6': """Make (construct) packet data. @@ -304,7 +304,7 @@ def _decode_next_layer(self, ipv6: 'Data_IPv6', proto: 'Optional[int]' = None, """ #: Extension headers. - self._exthdr = OrderedMultiDict() # type: OrderedMultiDict[Enum_ExtensionHeader, Protocol] # pylint: disable=attribute-defined-outside-init + self._exthdr = OrderedMultiDict() # type: OrderedMultiDict[Enum_ExtensionHeader, ProtocolBase] # pylint: disable=attribute-defined-outside-init hdr_len = self.length # header length raw_len = ipv6.payload # payload length @@ -372,7 +372,7 @@ def _decode_next_layer(self, ipv6: 'Data_IPv6', proto: 'Optional[int]' = None, @beholder # type: ignore[arg-type] def _import_next_layer(self, proto: 'int', length: 'Optional[int]' = None, *, # pylint: disable=arguments-differ packet: 'Optional[dict[str, Any]]' = None, version: 'Literal[4, 6]' = 4, - extension: 'bool' = False, payload: 'Optional[bytes]' = None) -> 'Protocol': + extension: 'bool' = False, payload: 'Optional[bytes]' = None) -> 'ProtocolBase': """Import next layer extractor. Arguments: @@ -389,7 +389,7 @@ def _import_next_layer(self, proto: 'int', length: 'Optional[int]' = None, *, # """ if TYPE_CHECKING: - protocol: 'Type[Protocol]' + protocol: 'Type[ProtocolBase]' if payload is None: file_ = self.__header__.get_payload() diff --git a/pcapkit/protocols/internet/ipv6_frag.py b/pcapkit/protocols/internet/ipv6_frag.py index a8788e701..27c798cbd 100644 --- a/pcapkit/protocols/internet/ipv6_frag.py +++ b/pcapkit/protocols/internet/ipv6_frag.py @@ -40,7 +40,7 @@ from typing_extensions import Literal from pcapkit.corekit.protochain import ProtoChain - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.schema import Schema __all__ = ['IPv6_Frag'] @@ -70,7 +70,7 @@ def length(self) -> 'Literal[8]': return 8 @property - def payload(self) -> 'Protocol | NoReturn': + def payload(self) -> 'ProtocolBase | NoReturn': """Payload of current instance. Raises: @@ -161,7 +161,7 @@ def make(self, offset: 'int' = 0, mf: 'bool' = False, id: 'int' = 0, - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_IPv6_Frag': """Make (construct) packet data. diff --git a/pcapkit/protocols/internet/ipv6_opts.py b/pcapkit/protocols/internet/ipv6_opts.py index af6894648..6d3db2385 100644 --- a/pcapkit/protocols/internet/ipv6_opts.py +++ b/pcapkit/protocols/internet/ipv6_opts.py @@ -110,7 +110,7 @@ from pcapkit.protocols.data.internet.ipv6_opts import Option as Data_Option from pcapkit.protocols.data.internet.ipv6_opts import QuickStartOption as Data_QuickStartOption from pcapkit.protocols.data.internet.ipv6_opts import SMFDPDOption as Data_SMFDPDOption - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.internet.ipv6_opts import Option as Schema_Option from pcapkit.protocols.schema.internet.ipv6_opts import \ QuickStartOption as Schema_QuickStartOption @@ -238,7 +238,7 @@ def length(self) -> 'int': return self._info.length @property - def payload(self) -> 'Protocol | NoReturn': + def payload(self) -> 'ProtocolBase | NoReturn': """Payload of current instance. Raises: @@ -325,7 +325,7 @@ def make(self, next_namespace: 'Optional[dict[str, int] | dict[int, str] | Type[StdlibEnum] | Type[AenumEnum]]' = None, # pylint: disable=line-too-long next_reversed: 'bool' = False, options: 'Optional[list[Schema_Option | tuple[Enum_Option, dict[str, Any]] | bytes] | Option]' = None, # pylint: disable=line-too-long - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_IPv6_Opts': """Make (construct) packet data. diff --git a/pcapkit/protocols/internet/ipv6_route.py b/pcapkit/protocols/internet/ipv6_route.py index 70b18e55a..7a5be1d8a 100644 --- a/pcapkit/protocols/internet/ipv6_route.py +++ b/pcapkit/protocols/internet/ipv6_route.py @@ -57,7 +57,7 @@ from typing_extensions import Literal from pcapkit.corekit.protochain import ProtoChain - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.internet.ipv6_route import RoutingType as Schema_RoutingType TypeParser = Callable[[Schema_RoutingType, NamedArg(Schema_IPv6_Route, 'header')], Data_IPv6_Route] @@ -132,7 +132,7 @@ def length(self) -> 'int': return self._info.length @property - def payload(self) -> 'Protocol | NoReturn': + def payload(self) -> 'ProtocolBase | NoReturn': """Payload of current instance. Raises: @@ -264,7 +264,7 @@ def make(self, type_reversed: 'bool' = False, seg_left: 'int' = 0, data: 'bytes | Data_IPv6_Route | Schema_RoutingType | dict[str, Any]' = b'\x00\x00\x00\x00', - payload: 'Protocol | Schema | bytes' = b'', + payload: 'ProtocolBase | Schema | bytes' = b'', **kwargs: 'Any') -> 'Schema_IPv6_Route': """Make (construct) packet data. diff --git a/pcapkit/protocols/internet/ipx.py b/pcapkit/protocols/internet/ipx.py index e1ae5855b..29b2182a2 100644 --- a/pcapkit/protocols/internet/ipx.py +++ b/pcapkit/protocols/internet/ipx.py @@ -42,7 +42,7 @@ from aenum import IntEnum as AenumEnum from typing_extensions import Literal - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.schema import Schema __all__ = ['IPX'] @@ -120,7 +120,7 @@ def make(self, type_reversed: 'bool' = False, dst: 'bytes' = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', src: 'bytes' = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_IPX': """Make (construct) packet data. diff --git a/pcapkit/protocols/internet/mh.py b/pcapkit/protocols/internet/mh.py index 5cd1918f1..713bcb7ac 100644 --- a/pcapkit/protocols/internet/mh.py +++ b/pcapkit/protocols/internet/mh.py @@ -504,7 +504,7 @@ from pcapkit.corekit.multidict import OrderedMultiDict from pcapkit.corekit.protochain import ProtoChain from pcapkit.protocols.data.internet.mh import Option as Data_Option - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.internet.mh import Option as Schema_Option from pcapkit.protocols.schema.internet.mh import Packet as Schema_Packet from pcapkit.protocols.schema.schema import Schema @@ -1283,7 +1283,7 @@ def length(self) -> 'int': return self._info.length @property - def payload(self) -> 'Protocol | NoReturn': + def payload(self) -> 'ProtocolBase | NoReturn': """Payload of current instance. Raises: @@ -1407,7 +1407,7 @@ def make(self, type_reversed: 'bool' = False, chksum: 'bytes' = b'', data: 'bytes | Data_MH | Schema_Packet | dict[str, Any]' = b'\x00\x00', # minimum length - payload: 'Protocol | Schema | bytes' = b'', + payload: 'ProtocolBase | Schema | bytes' = b'', **kwargs: 'Any') -> 'Schema_MH': """Make (construct) packet data. diff --git a/pcapkit/protocols/link/arp.py b/pcapkit/protocols/link/arp.py index a06b66c8f..50f5da67d 100644 --- a/pcapkit/protocols/link/arp.py +++ b/pcapkit/protocols/link/arp.py @@ -63,7 +63,7 @@ from aenum import IntEnum as AenumEnum from typing_extensions import Literal - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.schema import Schema __all__ = ['ARP', 'InARP'] @@ -224,7 +224,7 @@ def make(self, *, spa: 'IPv4Address | IPv6Address | str | bytes | bytearray' = '0.0.0.0', # nosec: B104 tha: 'str | bytes | bytearray' = '00:00:00:00:00:00', tpa: 'IPv4Address | IPv6Address | str | bytes | bytearray' = '0.0.0.0', # nosec: B104 - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_ARP': """Make (construct) packet data. diff --git a/pcapkit/protocols/link/ethernet.py b/pcapkit/protocols/link/ethernet.py index 1da115e7b..bafc94269 100644 --- a/pcapkit/protocols/link/ethernet.py +++ b/pcapkit/protocols/link/ethernet.py @@ -44,7 +44,7 @@ from aenum import IntEnum as AenumEnum from typing_extensions import Literal - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.schema import Schema __all__ = ['Ethernet'] @@ -144,7 +144,7 @@ def make(self, type_default: 'Optional[int]' = None, type_namespace: 'Optional[dict[str, int] | dict[int, str] | Type[StdlibEnum] | Type[AenumEnum]]' = None, # pylint: disable=line-too-long type_reversed: 'bool' = False, - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_Ethernet': """Make (construct) packet data. diff --git a/pcapkit/protocols/link/l2tpv2.py b/pcapkit/protocols/link/l2tpv2.py index 4c58fad5c..ff05dea41 100644 --- a/pcapkit/protocols/link/l2tpv2.py +++ b/pcapkit/protocols/link/l2tpv2.py @@ -67,7 +67,7 @@ from aenum import IntEnum as AenumEnum from typing_extensions import Literal - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.schema import Schema __all__ = ['L2TPv2'] @@ -254,7 +254,7 @@ def make(self, ns: 'Optional[int]' = None, nr: 'Optional[int]' = None, offset: 'Optional[int]' = None, - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_L2TP': # pylint: disable=unused-argument """Make (construct) packet data. diff --git a/pcapkit/protocols/link/link.py b/pcapkit/protocols/link/link.py index 7732e3066..2e761824d 100644 --- a/pcapkit/protocols/link/link.py +++ b/pcapkit/protocols/link/link.py @@ -21,8 +21,7 @@ from pcapkit.const.reg.ethertype import EtherType as Enum_EtherType from pcapkit.corekit.module import ModuleDescriptor -from pcapkit.protocols.protocol import _PT, _ST -from pcapkit.protocols.protocol import ProtocolBase as Protocol +from pcapkit.protocols.protocol import _PT, _ST, ProtocolBase from pcapkit.utilities.exceptions import RegistryError from pcapkit.utilities.warnings import RegistryWarning, warn @@ -34,7 +33,7 @@ __all__ = ['Link'] -class Link(Protocol[_PT, _ST], Generic[_PT, _ST]): # pylint: disable=abstract-method +class Link(ProtocolBase[_PT, _ST], Generic[_PT, _ST]): # pylint: disable=abstract-method """Abstract base class for link layer protocol family. This class currently supports parsing of the following protocols, which are @@ -70,7 +69,7 @@ class Link(Protocol[_PT, _ST], Generic[_PT, _ST]): # pylint: disable=abstract-m #: Layer of protocol. __layer__ = 'Link' # type: Literal['Link'] - #: DefaultDict[int, ModuleDescriptor[Protocol] | ~typing.Type[Protocol]]: Protocol index mapping for decoding next layer, + #: DefaultDict[int, ModuleDescriptor[ProtocolBase] | ~typing.Type[ProtocolBase]]: Protocol index mapping for decoding next layer, #: c.f. :meth:`self._decode_next_layer ` #: & :meth:`self._import_next_layer `. __proto__ = collections.defaultdict( @@ -96,7 +95,7 @@ class Link(Protocol[_PT, _ST], Generic[_PT, _ST]): # pylint: disable=abstract-m # c.f., https://en.wikipedia.org/wiki/EtherType#Values 0x8137: ModuleDescriptor('pcapkit.protocols.internet.ipx', 'IPX'), }, - ) # type: DefaultDict[int | Enum_EtherType, ModuleDescriptor[Protocol] | Type[Protocol]] + ) # type: DefaultDict[int | Enum_EtherType, ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]] ########################################################################## # Properties. @@ -113,7 +112,7 @@ def layer(self) -> 'Literal["Link"]': ########################################################################## @classmethod - def register(cls, code: 'Enum_EtherType', protocol: 'ModuleDescriptor[Protocol] | Type[Protocol]') -> 'None': # type: ignore[override] + def register(cls, code: 'Enum_EtherType', protocol: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]') -> 'None': # type: ignore[override] r"""Register a new protocol class. Notes: @@ -141,7 +140,7 @@ def register(cls, code: 'Enum_EtherType', protocol: 'ModuleDescriptor[Protocol] """ if isinstance(protocol, ModuleDescriptor): protocol = protocol.klass - if not issubclass(protocol, Protocol): + if not issubclass(protocol, ProtocolBase): raise RegistryError(f'protocol must be a Protocol subclass, not {protocol!r}') incumbent = cls.__proto__.get(code) if incumbent is not None and incumbent is not protocol: diff --git a/pcapkit/protocols/link/ospf.py b/pcapkit/protocols/link/ospf.py index 02d67a6f8..9438cad27 100644 --- a/pcapkit/protocols/link/ospf.py +++ b/pcapkit/protocols/link/ospf.py @@ -60,7 +60,7 @@ from aenum import IntEnum as AenumEnum from typing_extensions import Literal - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.schema import Schema __all__ = ['OSPF'] @@ -208,7 +208,7 @@ def make(self, auth_type_namespace: 'Optional[dict[str, int] | dict[int, str] | Type[StdlibEnum] | Type[AenumEnum]]' = None, # pylint: disable=line-too-long auth_type_reversed: 'bool' = False, auth_data: 'bytes | Schema_CrytographicAuthentication | Data_CrytographicAuthentication' = b'\x00\x00\x00\x00\x00\x00\x00\x00', - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_OSPF': """Make (construct) packet data. diff --git a/pcapkit/protocols/link/vlan.py b/pcapkit/protocols/link/vlan.py index 812f5b290..a9a5db0e9 100644 --- a/pcapkit/protocols/link/vlan.py +++ b/pcapkit/protocols/link/vlan.py @@ -68,7 +68,7 @@ from aenum import IntEnum as AenumEnum from typing_extensions import Literal - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.link.vlan import TCIType from pcapkit.protocols.schema.schema import Schema @@ -177,7 +177,7 @@ def make(self, type_default: 'Optional[int]' = None, type_namespace: 'Optional[dict[str, int] | dict[int, str] | Type[StdlibEnum] | Type[AenumEnum]]' = None, # pylint: disable=line-too-long type_reversed: 'bool' = False, - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_VLAN': """Make (construct) packet data. diff --git a/pcapkit/protocols/misc/null.py b/pcapkit/protocols/misc/null.py index 6a13295aa..3c6c84769 100644 --- a/pcapkit/protocols/misc/null.py +++ b/pcapkit/protocols/misc/null.py @@ -15,7 +15,7 @@ from typing import TYPE_CHECKING, overload from pcapkit.protocols.data.misc.null import NoPayload as Data_NoPayload -from pcapkit.protocols.protocol import ProtocolBase as Protocol +from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.misc.null import NoPayload as Schema_NoPayload from pcapkit.utilities.exceptions import UnsupportedCall @@ -27,7 +27,7 @@ __all__ = ['NoPayload'] -class NoPayload(Protocol[Data_NoPayload, Schema_NoPayload], +class NoPayload(ProtocolBase[Data_NoPayload, Schema_NoPayload], schema=Schema_NoPayload, data=Data_NoPayload): """This class implements no-payload protocol.""" diff --git a/pcapkit/protocols/misc/pcap/frame.py b/pcapkit/protocols/misc/pcap/frame.py index a39f234b7..e28de84ff 100644 --- a/pcapkit/protocols/misc/pcap/frame.py +++ b/pcapkit/protocols/misc/pcap/frame.py @@ -34,7 +34,7 @@ from pcapkit.corekit.module import ModuleDescriptor from pcapkit.protocols.data.misc.pcap.frame import Frame as Data_Frame from pcapkit.protocols.data.misc.pcap.frame import FrameInfo as Data_FrameInfo -from pcapkit.protocols.protocol import ProtocolBase as Protocol +from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.misc.pcap.frame import Frame as Schema_Frame from pcapkit.utilities.compat import localcontext from pcapkit.utilities.exceptions import RegistryError, UnsupportedCall, stacklevel @@ -56,7 +56,7 @@ py37 = ((version_info := sys.version_info).major >= 3 and version_info.minor >= 7) -class Frame(Protocol[Data_Frame, Schema_Frame], +class Frame(ProtocolBase[Data_Frame, Schema_Frame], schema=Schema_Frame, data=Data_Frame): """Per packet frame header extractor. @@ -82,7 +82,7 @@ class Frame(Protocol[Data_Frame, Schema_Frame], # Defaults. ########################################################################## - #: DefaultDict[Enum_LinkType, ModuleDescriptor[Protocol] | ~typing.Type[Protocol]]: Protocol index mapping for + #: DefaultDict[Enum_LinkType, ModuleDescriptor[ProtocolBase] | ~typing.Type[ProtocolBase]]: Protocol index mapping for #: decoding next layer, c.f. :meth:`self._decode_next_layer ` #: & :meth:`self._import_next_layer `. #: The values should be a tuple representing the module name and class name, or @@ -94,7 +94,7 @@ class Frame(Protocol[Data_Frame, Schema_Frame], Enum_LinkType.IPV4: ModuleDescriptor('pcapkit.protocols.internet', 'IPv4'), Enum_LinkType.IPV6: ModuleDescriptor('pcapkit.protocols.internet', 'IPv6'), }, - ) # type: DefaultDict[Enum_LinkType | int, ModuleDescriptor[Protocol] | Type[Protocol]] + ) # type: DefaultDict[Enum_LinkType | int, ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]] ########################################################################## # Properties. @@ -120,7 +120,7 @@ def header(self) -> 'Data_Header': ########################################################################## @classmethod - def register(cls, code: 'Enum_LinkType', protocol: 'ModuleDescriptor[Protocol] | Type[Protocol]') -> 'None': # type: ignore[override] + def register(cls, code: 'Enum_LinkType', protocol: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]') -> 'None': # type: ignore[override] r"""Register a new protocol class. Notes: @@ -148,7 +148,7 @@ def register(cls, code: 'Enum_LinkType', protocol: 'ModuleDescriptor[Protocol] | """ if isinstance(protocol, ModuleDescriptor): protocol = protocol.klass - if not issubclass(protocol, Protocol): + if not issubclass(protocol, ProtocolBase): raise RegistryError(f'protocol must be a Protocol subclass, not {protocol!r}') incumbent = cls.__proto__.get(code) if incumbent is not None and incumbent is not protocol: @@ -156,7 +156,7 @@ def register(cls, code: 'Enum_LinkType', protocol: 'ModuleDescriptor[Protocol] | f'{incumbent!r} with {protocol!r}', RegistryWarning) cls.__proto__[code] = protocol - def index(self, name: 'str | Protocol | Type[Protocol]') -> 'int': + def index(self, name: 'str | ProtocolBase | Type[ProtocolBase]') -> 'int': """Call :meth:`ProtoChain.index `. Args: @@ -355,7 +355,7 @@ def make(self, ts_usec: 'Optional[int]' = None, incl_len: 'Optional[int]' = None, orig_len: 'Optional[int]' = None, - packet: 'bytes | Protocol | Schema' = b'', + packet: 'bytes | ProtocolBase | Schema' = b'', nanosecond: 'bool' = False, **kwargs: 'Any') -> 'Schema_Frame': """Make frame packet data. @@ -546,7 +546,7 @@ def _decode_next_layer(self, dict_: 'Data_Frame', proto: 'Optional[int]' = None, protocol chain of the current packet (frame). """ - next_ = cast('Protocol', self._import_next_layer(proto, length, packet=packet)) # type: ignore[misc,call-arg,redundant-cast] + next_ = cast('ProtocolBase', self._import_next_layer(proto, length, packet=packet)) # type: ignore[misc,call-arg,redundant-cast] info, chain = next_.info, next_.protochain # make next layer protocol name diff --git a/pcapkit/protocols/misc/pcap/header.py b/pcapkit/protocols/misc/pcap/header.py index ca30bb9b3..714fc9526 100644 --- a/pcapkit/protocols/misc/pcap/header.py +++ b/pcapkit/protocols/misc/pcap/header.py @@ -33,7 +33,7 @@ from pcapkit.corekit.version import VersionInfo from pcapkit.protocols.data.misc.pcap.header import Header as Data_Header from pcapkit.protocols.data.misc.pcap.header import MagicNumber as Data_MagicNumber -from pcapkit.protocols.protocol import ProtocolBase as Protocol +from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.misc.pcap.header import Header as Schema_Header from pcapkit.utilities.exceptions import EndianError, FileError, UnsupportedCall @@ -59,7 +59,7 @@ } -class Header(Protocol[Data_Header, Schema_Header], +class Header(ProtocolBase[Data_Header, Schema_Header], schema=Schema_Header, data=Data_Header): """PCAP file global header extractor.""" diff --git a/pcapkit/protocols/misc/pcapng.py b/pcapkit/protocols/misc/pcapng.py index 5b9fe9bb2..40789cf45 100644 --- a/pcapkit/protocols/misc/pcapng.py +++ b/pcapkit/protocols/misc/pcapng.py @@ -106,7 +106,7 @@ from pcapkit.protocols.data.misc.pcapng import ZigBeeAPSKey as Data_ZigBeeAPSKey from pcapkit.protocols.data.misc.pcapng import ZigBeeNWKKey as Data_ZigBeeNWKKey from pcapkit.protocols.data.protocol import Packet as Data_Packet -from pcapkit.protocols.protocol import ProtocolBase as Protocol +from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.misc.pcapng import PCAPNG as Schema_PCAPNG from pcapkit.protocols.schema.misc.pcapng import BlockType as Schema_BlockType from pcapkit.protocols.schema.misc.pcapng import CommentOption as Schema_CommentOption @@ -293,7 +293,7 @@ class WireGuardKeyLabel(StrEnum): PRESHARED_KEY = 'PRESHARED_KEY' -class PCAPNG(Protocol[Data_PCAPNG, Schema_PCAPNG], +class PCAPNG(ProtocolBase[Data_PCAPNG, Schema_PCAPNG], schema=Schema_PCAPNG, data=Data_PCAPNG): """PCAP-NG file block extractor. @@ -549,7 +549,7 @@ class PCAPNG(Protocol[Data_PCAPNG, Schema_PCAPNG], # Defaults. ########################################################################## - #: DefaultDict[Enum_LinkType, ModuleDescriptor[Protocol] | ~typing.Type[Protocol]]: Protocol index mapping for + #: DefaultDict[Enum_LinkType, ModuleDescriptor[ProtocolBase] | ~typing.Type[ProtocolBase]]: Protocol index mapping for #: decoding next layer, c.f. :meth:`self._decode_next_layer ` #: & :meth:`self._import_next_layer `. #: The values should be a tuple representing the module name and class name, @@ -561,7 +561,7 @@ class PCAPNG(Protocol[Data_PCAPNG, Schema_PCAPNG], Enum_LinkType.IPV4: ModuleDescriptor('pcapkit.protocols.internet', 'IPv4'), Enum_LinkType.IPV6: ModuleDescriptor('pcapkit.protocols.internet', 'IPv6'), }, - ) # type: DefaultDict[Enum_LinkType | int, ModuleDescriptor[Protocol] | Type[Protocol]] + ) # type: DefaultDict[Enum_LinkType | int, ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]] #: DefaultDict[Enum_BlockType, str | tuple[BlockParser, BlockConstructor]]: Block #: type to method mapping. Method names are expected to be referred @@ -854,7 +854,7 @@ def block(self) -> 'Enum_BlockType': ########################################################################## @classmethod - def register(cls, code: 'Enum_LinkType', protocol: 'ModuleDescriptor[Protocol] | Type[Protocol]') -> 'None': # type: ignore[override] + def register(cls, code: 'Enum_LinkType', protocol: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]') -> 'None': # type: ignore[override] r"""Register a new protocol class. Notes: @@ -883,7 +883,7 @@ def register(cls, code: 'Enum_LinkType', protocol: 'ModuleDescriptor[Protocol] | """ if isinstance(protocol, ModuleDescriptor): protocol = protocol.klass - if not issubclass(protocol, Protocol): + if not issubclass(protocol, ProtocolBase): raise RegistryError(f'protocol must be a Protocol subclass, not {protocol!r}') incumbent = cls.__proto__.get(code) if incumbent is not None and incumbent is not protocol: @@ -944,7 +944,7 @@ def register_secrets(cls, code: 'Enum_SecretsType', meth: 'str | tuple[SecretsPa warn(f'PCAP-NG: [Secrets {code}] decryption secrets already registered', RegistryWarning) cls.__secrets__[code] = meth - def index(self, name: 'str | Protocol | Type[Protocol]') -> 'int': + def index(self, name: 'str | ProtocolBase | Type[ProtocolBase]') -> 'int': """Call :meth:`ProtoChain.index `. Args: @@ -1680,7 +1680,7 @@ def _decode_next_layer(self, dict_: 'Data_PCAPNG', proto: 'Optional[int]' = None protocol chain of the current packet (frame). """ - next_ = cast('Protocol', self._import_next_layer(proto, length, packet=packet)) # type: ignore[misc,call-arg,redundant-cast] + next_ = cast('ProtocolBase', self._import_next_layer(proto, length, packet=packet)) # type: ignore[misc,call-arg,redundant-cast] info, chain = next_.info, next_.protochain # make next layer protocol name @@ -3710,7 +3710,7 @@ def _make_block_epb(self, block: 'Optional[Data_EnhancedPacketBlock]' = None, *, timestamp: 'Optional[dt_type | int | float | Decimal]' = None, captured_len: 'Optional[int]' = None, original_len: 'Optional[int]' = None, - packet_data: 'bytes | Protocol | Schema' = b'', + packet_data: 'bytes | ProtocolBase | Schema' = b'', options: 'Optional[Option | list[Schema_Option | tuple[Enum_OptionType, dict[str, Any]] | bytes]]' = None, **kwargs: 'Any') -> 'Schema_EnhancedPacketBlock': """Make PCAP-NG enhanced packet block (EPB). @@ -3766,7 +3766,7 @@ def _make_block_epb(self, block: 'Optional[Data_EnhancedPacketBlock]' = None, *, def _make_block_spb(self, block: 'Optional[Data_SimplePacketBlock]' = None, *, original_len: 'Optional[int]' = None, - packet_data: 'bytes | Protocol | Schema' = b'', + packet_data: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_SimplePacketBlock': """Make PCAP-NG simple packet block (SPB). @@ -4042,7 +4042,7 @@ def _make_block_packet(self, block: 'Optional[Data_PacketBlock]' = None, *, timestamp: 'Optional[dt_type | int | float | Decimal]' = None, captured_len: 'Optional[int]' = None, original_len: 'Optional[int]' = None, - packet_data: 'bytes | Protocol | Schema' = b'', + packet_data: 'bytes | ProtocolBase | Schema' = b'', options: 'Optional[Option | list[Schema_Option | tuple[Enum_OptionType, dict[str, Any]] | bytes]]' = None, **kwargs: 'Any') -> 'Schema_PacketBlock': """Make PCAP-NG packet block (obsolete). diff --git a/pcapkit/protocols/misc/raw.py b/pcapkit/protocols/misc/raw.py index 92a2b3daf..48a1a04c9 100644 --- a/pcapkit/protocols/misc/raw.py +++ b/pcapkit/protocols/misc/raw.py @@ -16,7 +16,7 @@ from pcapkit.corekit.protochain import ProtoChain from pcapkit.protocols.data.misc.raw import Raw as Data_Raw from pcapkit.protocols.misc.null import NoPayload -from pcapkit.protocols.protocol import ProtocolBase as Protocol +from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.misc.raw import Raw as Schema_Raw from pcapkit.utilities.exceptions import UnsupportedCall @@ -28,7 +28,7 @@ __all__ = ['Raw'] -class Raw(Protocol[Data_Raw, Schema_Raw], +class Raw(ProtocolBase[Data_Raw, Schema_Raw], schema=Schema_Raw, data=Data_Raw): """This class implements universal unknown protocol.""" diff --git a/pcapkit/protocols/schema/internet/ah.py b/pcapkit/protocols/schema/internet/ah.py index 0c5b73d41..5bc31837d 100644 --- a/pcapkit/protocols/schema/internet/ah.py +++ b/pcapkit/protocols/schema/internet/ah.py @@ -13,7 +13,7 @@ __all__ = ['AH'] if TYPE_CHECKING: - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase @schema_final @@ -37,4 +37,4 @@ class AH(Schema): if TYPE_CHECKING: def __init__(self, next: 'Enum_TransType', len: 'int', spi: 'int', seq: 'int', - icv: 'bytes', payload: 'bytes | Protocol | Schema') -> 'None': ... + icv: 'bytes', payload: 'bytes | ProtocolBase | Schema') -> 'None': ... diff --git a/pcapkit/protocols/schema/internet/esp.py b/pcapkit/protocols/schema/internet/esp.py index 00603a2fe..5f3566d91 100644 --- a/pcapkit/protocols/schema/internet/esp.py +++ b/pcapkit/protocols/schema/internet/esp.py @@ -11,7 +11,7 @@ __all__ = ['ESP'] if TYPE_CHECKING: - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase @schema_final @@ -43,4 +43,4 @@ class ESP(Schema): if TYPE_CHECKING: def __init__(self, spi: 'int', seq: 'int', - payload: 'bytes | Protocol | Schema') -> 'None': ... + payload: 'bytes | ProtocolBase | Schema') -> 'None': ... diff --git a/pcapkit/protocols/schema/internet/hip.py b/pcapkit/protocols/schema/internet/hip.py index 34c5d05e8..1cbf14789 100644 --- a/pcapkit/protocols/schema/internet/hip.py +++ b/pcapkit/protocols/schema/internet/hip.py @@ -64,7 +64,7 @@ from pcapkit.corekit.fields.field import FieldBase as Field from pcapkit.protocols.data.internet.hip import EncryptedParameter as Data_EncryptedParameter from pcapkit.protocols.data.internet.hip import HIPCipherParameter as Data_HIPCipherParameter - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase if SPHINX_TYPE_CHECKING: # pragma: no cover from typing_extensions import Literal, TypedDict @@ -1644,4 +1644,4 @@ class HIP(Schema): def __init__(self, next: 'Enum_TransType', len: 'int', pkt: 'PacketType', ver: 'VersionType', checksum: 'bytes', control: 'ControlsType', shit: 'int', rhit: 'int', param: 'bytes | list[bytes | Parameter]', - payload: 'bytes | Protocol | Schema') -> 'None': ... + payload: 'bytes | ProtocolBase | Schema') -> 'None': ... diff --git a/pcapkit/protocols/schema/internet/hopopt.py b/pcapkit/protocols/schema/internet/hopopt.py index 1b7553cc9..5215c46b2 100644 --- a/pcapkit/protocols/schema/internet/hopopt.py +++ b/pcapkit/protocols/schema/internet/hopopt.py @@ -41,7 +41,7 @@ from typing import Any, DefaultDict, Optional, Type from pcapkit.corekit.fields.field import FieldBase as Field - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase if SPHINX_TYPE_CHECKING: # pragma: no cover from typing_extensions import TypedDict @@ -798,4 +798,4 @@ class HOPOPT(Schema): if TYPE_CHECKING: def __init__(self, next: 'Enum_TransType', len: 'int', options: 'bytes | list[bytes | Option]', - payload: 'bytes | Protocol | Schema') -> 'None': ... + payload: 'bytes | ProtocolBase | Schema') -> 'None': ... diff --git a/pcapkit/protocols/schema/internet/ipv4.py b/pcapkit/protocols/schema/internet/ipv4.py index 1c6e9978d..ca9b9b176 100644 --- a/pcapkit/protocols/schema/internet/ipv4.py +++ b/pcapkit/protocols/schema/internet/ipv4.py @@ -42,7 +42,7 @@ from typing import Any, DefaultDict, Optional, Type from pcapkit.corekit.fields.field import FieldBase as Field - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase if SPHINX_TYPE_CHECKING: # pragma: no cover from typing_extensions import TypedDict @@ -744,4 +744,4 @@ class IPv4(Schema): def __init__(self, vihl: 'VerIHLField', tos: 'ToSField', length: 'int', id: 'int', flags: 'Flags', ttl: 'int', proto: 'Enum_TransType', chksum: 'bytes', src: 'IPv4Address | str | bytes | int', dst: 'IPv4Address | str | bytes | int', - options: 'list[Option | bytes] | bytes', payload: 'bytes | Protocol | Schema') -> 'None': ... + options: 'list[Option | bytes] | bytes', payload: 'bytes | ProtocolBase | Schema') -> 'None': ... diff --git a/pcapkit/protocols/schema/internet/ipv6.py b/pcapkit/protocols/schema/internet/ipv6.py index 10190a271..507080319 100644 --- a/pcapkit/protocols/schema/internet/ipv6.py +++ b/pcapkit/protocols/schema/internet/ipv6.py @@ -17,7 +17,7 @@ if TYPE_CHECKING: from ipaddress import IPv6Address - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase if SPHINX_TYPE_CHECKING: # pragma: no cover from typing_extensions import TypedDict @@ -68,4 +68,4 @@ class IPv6(Schema): def __init__(self, hextet: 'IPv6Hextet', length: 'int', next: 'Enum_TransType', limit: 'int', src: 'IPv6Address | bytes | str | int', dst: 'IPv6Address | bytes | str | int', - payload: 'bytes | Protocol | Schema') -> None: ... + payload: 'bytes | ProtocolBase | Schema') -> None: ... diff --git a/pcapkit/protocols/schema/internet/ipv6_frag.py b/pcapkit/protocols/schema/internet/ipv6_frag.py index c5a766bd7..a5ec8ffe8 100644 --- a/pcapkit/protocols/schema/internet/ipv6_frag.py +++ b/pcapkit/protocols/schema/internet/ipv6_frag.py @@ -15,7 +15,7 @@ if TYPE_CHECKING: from typing_extensions import TypedDict - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase class Flags(TypedDict): """Fragment offset and flags.""" @@ -45,4 +45,4 @@ class IPv6_Frag(Schema): payload: 'bytes' = PayloadField() if TYPE_CHECKING: - def __init__(self, next:'Enum_TransType', flags: 'Flags', id: 'int', payload: 'bytes | Schema | Protocol') -> 'None': ... + def __init__(self, next:'Enum_TransType', flags: 'Flags', id: 'int', payload: 'bytes | Schema | ProtocolBase') -> 'None': ... diff --git a/pcapkit/protocols/schema/internet/ipv6_opts.py b/pcapkit/protocols/schema/internet/ipv6_opts.py index 1226f3c6f..2f01bfcd0 100644 --- a/pcapkit/protocols/schema/internet/ipv6_opts.py +++ b/pcapkit/protocols/schema/internet/ipv6_opts.py @@ -41,7 +41,7 @@ from typing import Any, DefaultDict, Optional, Type from pcapkit.corekit.fields.field import FieldBase as Field - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase if SPHINX_TYPE_CHECKING: # pragma: no cover from typing_extensions import TypedDict @@ -803,4 +803,4 @@ class IPv6_Opts(Schema): if TYPE_CHECKING: def __init__(self, next: 'Enum_TransType', len: 'int', options: 'bytes | list[bytes | Option]', - payload: 'bytes | Protocol | Schema') -> 'None': ... + payload: 'bytes | ProtocolBase | Schema') -> 'None': ... diff --git a/pcapkit/protocols/schema/internet/ipv6_route.py b/pcapkit/protocols/schema/internet/ipv6_route.py index d1631821f..f480cebb1 100644 --- a/pcapkit/protocols/schema/internet/ipv6_route.py +++ b/pcapkit/protocols/schema/internet/ipv6_route.py @@ -27,7 +27,7 @@ from typing import Any, Optional from pcapkit.corekit.fields.field import FieldBase as Field - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase if SPHINX_TYPE_CHECKING: # pragma: no cover from typing_extensions import TypedDict @@ -134,7 +134,7 @@ class IPv6_Route(Schema): if TYPE_CHECKING: def __init__(self, next: 'Enum_TransType', length: 'int', type: 'Enum_Routing', - seg_left: 'int', data: 'bytes | RoutingType', payload: 'Protocol | Schema | bytes') -> 'None': ... + seg_left: 'int', data: 'bytes | RoutingType', payload: 'ProtocolBase | Schema | bytes') -> 'None': ... class RoutingType(EnumSchema[Enum_Routing]): diff --git a/pcapkit/protocols/schema/internet/ipx.py b/pcapkit/protocols/schema/internet/ipx.py index 17c6fd33f..79fa2017e 100644 --- a/pcapkit/protocols/schema/internet/ipx.py +++ b/pcapkit/protocols/schema/internet/ipx.py @@ -13,7 +13,7 @@ __all__ = ['IPX'] if TYPE_CHECKING: - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase @schema_final @@ -37,4 +37,4 @@ class IPX(Schema): if TYPE_CHECKING: def __init__(self, chksum: 'bytes', len: 'int', count: 'int', type: 'Enum_Packet', - dst: 'bytes', src: 'bytes', payload: 'bytes | Protocol | Schema') -> 'None': ... + dst: 'bytes', src: 'bytes', payload: 'bytes | ProtocolBase | Schema') -> 'None': ... diff --git a/pcapkit/protocols/schema/internet/mh.py b/pcapkit/protocols/schema/internet/mh.py index ea66b5ce1..60ef14c64 100644 --- a/pcapkit/protocols/schema/internet/mh.py +++ b/pcapkit/protocols/schema/internet/mh.py @@ -134,7 +134,7 @@ from typing import Any, Optional from pcapkit.corekit.fields.field import FieldBase as Field - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase if SPHINX_TYPE_CHECKING: # pragma: no cover from typing_extensions import TypedDict @@ -574,7 +574,7 @@ class MH(Schema): if TYPE_CHECKING: def __init__(self, next: 'Enum_TransType | int', length: 'int', type: 'Enum_Packet | int', - chksum: 'bytes', data: 'Packet | bytes', payload: 'bytes | Protocol | Schema') -> 'None': ... + chksum: 'bytes', data: 'Packet | bytes', payload: 'bytes | ProtocolBase | Schema') -> 'None': ... class Option(EnumSchema[Enum_Option]): diff --git a/pcapkit/protocols/schema/link/arp.py b/pcapkit/protocols/schema/link/arp.py index 69f3dd814..f3f1ac762 100644 --- a/pcapkit/protocols/schema/link/arp.py +++ b/pcapkit/protocols/schema/link/arp.py @@ -15,7 +15,7 @@ __all__ = ['ARP'] if TYPE_CHECKING: - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase @schema_final @@ -36,4 +36,4 @@ class ARP(Schema): if TYPE_CHECKING: def __init__(self, htype: 'int', ptype: 'int', hlen: 'int', plen: 'int', oper: 'int', sha: 'bytes', spa: 'bytes', tha: 'bytes', - tpa: 'bytes', payload: 'bytes | Protocol | Schema') -> 'None': ... + tpa: 'bytes', payload: 'bytes | ProtocolBase | Schema') -> 'None': ... diff --git a/pcapkit/protocols/schema/link/ethernet.py b/pcapkit/protocols/schema/link/ethernet.py index f36e92fbe..861907e09 100644 --- a/pcapkit/protocols/schema/link/ethernet.py +++ b/pcapkit/protocols/schema/link/ethernet.py @@ -15,7 +15,7 @@ if TYPE_CHECKING: from typing import Any - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase def callback_payload(self: 'PayloadField', packet: 'dict[str, Any]') -> 'None': @@ -68,4 +68,4 @@ class Ethernet(Schema): if TYPE_CHECKING: def __init__(self, dst: 'bytes', src: 'bytes', type: 'Enum_EtherType', - payload: 'bytes | Protocol | Schema') -> 'None': ... + payload: 'bytes | ProtocolBase | Schema') -> 'None': ... diff --git a/pcapkit/protocols/schema/link/l2tp.py b/pcapkit/protocols/schema/link/l2tp.py index 30d40f28a..e391d030e 100644 --- a/pcapkit/protocols/schema/link/l2tp.py +++ b/pcapkit/protocols/schema/link/l2tp.py @@ -15,7 +15,7 @@ if TYPE_CHECKING: from typing import Optional - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase if SPHINX_TYPE_CHECKING: # pragma: no cover from typing_extensions import Literal, TypedDict @@ -85,4 +85,4 @@ class L2TP(Schema): if TYPE_CHECKING: def __init__(self, flags: 'FlagsType', length: 'Optional[int]', tunnel_id: 'int', session_id: 'int', ns: 'Optional[int]', nr: 'Optional[int]', - offset: 'Optional[int]', payload: 'bytes | Protocol | Schema') -> 'None': ... + offset: 'Optional[int]', payload: 'bytes | ProtocolBase | Schema') -> 'None': ... diff --git a/pcapkit/protocols/schema/link/ospf.py b/pcapkit/protocols/schema/link/ospf.py index 01da361af..c2f6cab9f 100644 --- a/pcapkit/protocols/schema/link/ospf.py +++ b/pcapkit/protocols/schema/link/ospf.py @@ -19,7 +19,7 @@ from typing import Any from pcapkit.corekit.fields.field import FieldBase as Field - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase def ospf_auth_data_selector(pkt: 'dict[str, Any]') -> 'Field': @@ -87,4 +87,4 @@ def __init__(self, version: 'int', type: 'Enum_Packet', length: 'int', area_id: 'IPv4Address | bytes | str | int', checksum: 'bytes', auth_type: 'Enum_Authentication', auth_data: 'bytes | CrytographicAuthentication', - payload: 'bytes | Protocol | Schema') -> 'None': ... + payload: 'bytes | ProtocolBase | Schema') -> 'None': ... diff --git a/pcapkit/protocols/schema/link/vlan.py b/pcapkit/protocols/schema/link/vlan.py index ea6f2bc6c..7a27e4bb1 100644 --- a/pcapkit/protocols/schema/link/vlan.py +++ b/pcapkit/protocols/schema/link/vlan.py @@ -23,7 +23,7 @@ __all__ = ['VLAN', 'TCI'] if TYPE_CHECKING: - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase if SPHINX_TYPE_CHECKING: # pragma: no cover from typing_extensions import TypedDict @@ -74,4 +74,4 @@ class VLAN(Schema): if TYPE_CHECKING: def __init__(self, tci: 'TCIType', type: 'Enum_EtherType', - payload: 'bytes | Protocol | Schema') -> 'None': ... + payload: 'bytes | ProtocolBase | Schema') -> 'None': ... diff --git a/pcapkit/protocols/schema/misc/pcap/frame.py b/pcapkit/protocols/schema/misc/pcap/frame.py index 1bff3d2c5..ffd0a8381 100644 --- a/pcapkit/protocols/schema/misc/pcap/frame.py +++ b/pcapkit/protocols/schema/misc/pcap/frame.py @@ -15,7 +15,7 @@ from typing import Any from pcapkit.corekit.fields.numbers import NumberField as Field - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase def byteorder_callback(field: 'Field', packet: 'dict[str, Any]') -> 'None': @@ -62,4 +62,4 @@ class Frame(Schema): if TYPE_CHECKING: def __init__(self, ts_sec: 'int', ts_usec: 'int', incl_len: 'int', - orig_len: 'int', packet: 'bytes | Protocol | Schema') -> 'None': ... + orig_len: 'int', packet: 'bytes | ProtocolBase | Schema') -> 'None': ... diff --git a/pcapkit/protocols/schema/misc/pcapng.py b/pcapkit/protocols/schema/misc/pcapng.py index 1b977082a..d4b644e6d 100644 --- a/pcapkit/protocols/schema/misc/pcapng.py +++ b/pcapkit/protocols/schema/misc/pcapng.py @@ -67,7 +67,7 @@ from pcapkit.corekit.fields.field import FieldBase as Field from pcapkit.protocols.misc.pcapng import TLSKeyLabel, WireGuardKeyLabel - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase if SPHINX_TYPE_CHECKING: # pragma: no cover from typing_extensions import TypedDict @@ -1351,7 +1351,7 @@ class EnhancedPacketBlock(BlockType, code=Enum_BlockType.Enhanced_Packet_Block): if TYPE_CHECKING: def __init__(self, length: 'int', interface_id: 'int', timestamp_high: 'int', timestamp_low: 'int', captured_len: 'int', original_len: 'int', - packet_data: 'bytes | Protocol | Schema', + packet_data: 'bytes | ProtocolBase | Schema', options: 'list[Option | bytes] | bytes', length2: 'int') -> 'None': ... @@ -1375,7 +1375,7 @@ class SimplePacketBlock(BlockType, code=Enum_BlockType.Simple_Packet_Block): if TYPE_CHECKING: def __init__(self, length: 'int', original_len: 'int', - packet_data: 'bytes | Protocol | Schema', + packet_data: 'bytes | ProtocolBase | Schema', length2: 'int') -> 'None': ... @@ -2196,5 +2196,5 @@ class PacketBlock(BlockType, code=Enum_BlockType.Packet_Block): if TYPE_CHECKING: def __init__(self, length: 'int', interface_id: 'int', drop_count: 'int', timestamp_high: 'int', timestamp_low: 'int', captured_length: 'int', - original_length: 'int', packet_data: 'bytes | Protocol | Schema', + original_length: 'int', packet_data: 'bytes | ProtocolBase | Schema', options: 'list[Option | bytes] | bytes', length2: 'int') -> 'None': ... diff --git a/pcapkit/protocols/schema/misc/raw.py b/pcapkit/protocols/schema/misc/raw.py index 560384079..3f1637bb7 100644 --- a/pcapkit/protocols/schema/misc/raw.py +++ b/pcapkit/protocols/schema/misc/raw.py @@ -10,7 +10,7 @@ __all__ = ['Raw'] if TYPE_CHECKING: - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase @schema_final @@ -21,4 +21,4 @@ class Raw(Schema): packet: 'bytes' = PayloadField(length=lambda x: x['__length__'], default=b'') if TYPE_CHECKING: - def __init__(self, packet: 'bytes | Schema | Protocol') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements + def __init__(self, packet: 'bytes | Schema | ProtocolBase') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements diff --git a/pcapkit/protocols/schema/transport/sctp.py b/pcapkit/protocols/schema/transport/sctp.py index 978ce017e..b97b53dff 100644 --- a/pcapkit/protocols/schema/transport/sctp.py +++ b/pcapkit/protocols/schema/transport/sctp.py @@ -50,7 +50,7 @@ from ipaddress import IPv4Address, IPv6Address from typing import Any, Callable - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase if SPHINX_TYPE_CHECKING: # pragma: no cover from typing_extensions import TypedDict diff --git a/pcapkit/protocols/schema/transport/tcp.py b/pcapkit/protocols/schema/transport/tcp.py index 87d035e8f..1fdbb04a6 100644 --- a/pcapkit/protocols/schema/transport/tcp.py +++ b/pcapkit/protocols/schema/transport/tcp.py @@ -44,7 +44,7 @@ from typing import Any, DefaultDict, Optional, Type from pcapkit.corekit.fields.field import FieldBase as Field - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase if SPHINX_TYPE_CHECKING: # pragma: no cover from typing_extensions import TypedDict @@ -1106,4 +1106,4 @@ class TCP(Schema): if TYPE_CHECKING: def __init__(self, srcport: 'Enum_AppType | int', dstport: 'Enum_AppType | int', seq: 'int', ack: 'int', offset: 'OffsetFlag', flags: 'Flags', window: 'int', checksum: 'bytes', - urgent: 'int', options: 'list[Option | bytes] | bytes', payload: 'bytes | Protocol | Schema') -> 'None': ... + urgent: 'int', options: 'list[Option | bytes] | bytes', payload: 'bytes | ProtocolBase | Schema') -> 'None': ... diff --git a/pcapkit/protocols/schema/transport/udp.py b/pcapkit/protocols/schema/transport/udp.py index 50299cfa4..2f5f4c593 100644 --- a/pcapkit/protocols/schema/transport/udp.py +++ b/pcapkit/protocols/schema/transport/udp.py @@ -16,7 +16,7 @@ if TYPE_CHECKING: from typing import Any - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase class PortEnumField(EnumField): @@ -87,4 +87,4 @@ class UDP(Schema): if TYPE_CHECKING: def __init__(self, srcport: 'Enum_AppType | int', dstport: 'Enum_AppType | int', len: 'int', - checksum: 'bytes', payload: 'bytes | Schema | Protocol') -> 'None': ... + checksum: 'bytes', payload: 'bytes | Schema | ProtocolBase') -> 'None': ... diff --git a/pcapkit/protocols/transport/sctp.py b/pcapkit/protocols/transport/sctp.py index ff2a5ec33..b60ace5aa 100644 --- a/pcapkit/protocols/transport/sctp.py +++ b/pcapkit/protocols/transport/sctp.py @@ -170,7 +170,7 @@ from pcapkit.protocols.data.transport.sctp import Chunk as Data_Chunk from pcapkit.protocols.data.transport.sctp import ErrorCause as Data_ErrorCause from pcapkit.protocols.data.transport.sctp import Parameter as Data_Parameter - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.transport.sctp import Chunk as Schema_Chunk from pcapkit.protocols.schema.transport.sctp import ErrorCause as Schema_ErrorCause from pcapkit.protocols.schema.transport.sctp import Parameter as Schema_Parameter @@ -343,7 +343,7 @@ class SCTP(Transport[Data_SCTP, Schema_SCTP], #: Payload protocol identifier of the first DATA chunk found in the packet. _ppid = None # type: Optional[Enum_PayloadProtocolIdentifier] - #: DefaultDict[int, ModuleDescriptor[Protocol] | ~typing.Type[Protocol]]: Protocol + #: DefaultDict[int, ModuleDescriptor[ProtocolBase] | ~typing.Type[ProtocolBase]]: Protocol #: index mapping for decoding next layer, c.f. #: :meth:`self._decode_next_layer ` #: & :meth:`self._import_next_layer `. @@ -363,7 +363,7 @@ class SCTP(Transport[Data_SCTP, Schema_SCTP], Enum_PayloadProtocolIdentifier.PayloadProtocolIdentifier_3GPP_NG_Application_Protocol: ModuleDescriptor('pcapkit.protocols.application.ngap', 'NGAP'), # NGAP Enum_PayloadProtocolIdentifier.PayloadProtocolIdentifier_3GPP_NGAP_over_DTLS_over_SCTP: ModuleDescriptor('pcapkit.protocols.application.ngap', 'NGAP'), # NGAP over DTLS }, - ) # type: DefaultDict[int, ModuleDescriptor[Protocol] | Type[Protocol]] + ) # type: DefaultDict[int, ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]] #: DefaultDict[Enum_Chunk, str | tuple[ChunkParser, ChunkConstructor]]: Chunk #: type to method mapping, c.f. :meth:`_read_sctp_chunks` and @@ -590,7 +590,7 @@ def make(self, return schema @classmethod - def register(cls, code: 'Enum_PayloadProtocolIdentifier | int', protocol: 'ModuleDescriptor[Protocol] | Type[Protocol]') -> 'None': # type: ignore[override] # pylint: disable=line-too-long + def register(cls, code: 'Enum_PayloadProtocolIdentifier | int', protocol: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]') -> 'None': # type: ignore[override] # pylint: disable=line-too-long r"""Register a new protocol class for a payload protocol identifier. Notes: diff --git a/pcapkit/protocols/transport/tcp.py b/pcapkit/protocols/transport/tcp.py index 5df9b6613..fcc61de9e 100644 --- a/pcapkit/protocols/transport/tcp.py +++ b/pcapkit/protocols/transport/tcp.py @@ -150,7 +150,7 @@ from pcapkit.protocols.data.transport.tcp import MPTCP as Data_MPTCP from pcapkit.protocols.data.transport.tcp import MPTCPJoin as Data_MPTCPJoin from pcapkit.protocols.data.transport.tcp import Option as Data_Option - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.transport.tcp import MPTCP as Schema_MPTCP from pcapkit.protocols.schema.transport.tcp import Flags as Schema_Flags from pcapkit.protocols.schema.transport.tcp import MPTCPJoin as Schema_MPTCPJoin @@ -307,7 +307,7 @@ class TCP(Transport[Data_TCP, Schema_TCP], # Defaults. ########################################################################## - #: DefaultDict[int, ModuleDescriptor[Protocol] | ~typing.Type[Protocol]]: Protocol + #: DefaultDict[int, ModuleDescriptor[ProtocolBase] | ~typing.Type[ProtocolBase]]: Protocol #: index mapping for decoding next layer, c.f. #: :meth:`self._decode_next_layer ` #: & :meth:`self._import_next_layer `. @@ -526,7 +526,7 @@ def make(self, checksum: 'bytes' = b'\x00\x00', urgent: 'int' = 0, options: 'Optional[list[Schema_Option | tuple[Enum_Option, dict[str, Any]] | bytes] | Option]' = None, # pylint: disable=line-too-long - payload: 'bytes | Protocol | Schema' = b'', + payload: 'bytes | ProtocolBase | Schema' = b'', **kwargs: 'Any') -> 'Schema_TCP': """Make (construct) packet data. diff --git a/pcapkit/protocols/transport/transport.py b/pcapkit/protocols/transport/transport.py index b22da886e..11353f6d0 100644 --- a/pcapkit/protocols/transport/transport.py +++ b/pcapkit/protocols/transport/transport.py @@ -17,8 +17,7 @@ from pcapkit.const.reg.apptype import AppType as Enum_AppType from pcapkit.corekit.module import ModuleDescriptor -from pcapkit.protocols.protocol import _PT, _ST -from pcapkit.protocols.protocol import ProtocolBase as Protocol +from pcapkit.protocols.protocol import _PT, _ST, ProtocolBase from pcapkit.utilities.exceptions import RegistryError, StructError, UnsupportedCall, stacklevel from pcapkit.utilities.logging import DEVMODE, get_logger from pcapkit.utilities.warnings import RegistryWarning, warn @@ -38,14 +37,14 @@ logger = get_logger(__name__) -class Transport(Protocol[_PT, _ST], Generic[_PT, _ST]): # pylint: disable=abstract-method +class Transport(ProtocolBase[_PT, _ST], Generic[_PT, _ST]): # pylint: disable=abstract-method """Abstract base class for transport layer protocol family.""" if TYPE_CHECKING: #: Protocol index mapping for decoding next layer, #: c.f. :meth:`self._decode_next_layer ` #: & :meth:`self._import_next_layer `. - __proto__: 'DefaultDict[int, ModuleDescriptor[Protocol] | Type[Protocol]]' + __proto__: 'DefaultDict[int, ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]]' ########################################################################## # Defaults. @@ -69,7 +68,7 @@ def layer(self) -> 'Literal["Transport"]': ########################################################################## @classmethod - def register(cls, code: 'int', protocol: 'ModuleDescriptor[Protocol] | Type[Protocol]') -> 'None': + def register(cls, code: 'int', protocol: 'ModuleDescriptor[ProtocolBase] | Type[ProtocolBase]') -> 'None': """Register a new protocol class. Notes: @@ -112,7 +111,7 @@ def register(cls, code: 'int', protocol: 'ModuleDescriptor[Protocol] | Type[Prot if isinstance(protocol, ModuleDescriptor): protocol = protocol.klass - if not issubclass(protocol, Protocol): + if not issubclass(protocol, ProtocolBase): raise RegistryError(f'protocol must be a Protocol subclass, not {protocol!r}') incumbent = cls.__proto__.get(code) if incumbent is not None and incumbent is not protocol: @@ -121,7 +120,7 @@ def register(cls, code: 'int', protocol: 'ModuleDescriptor[Protocol] | Type[Prot cls.__proto__[code] = protocol @classmethod - def analyze(cls, ports: 'tuple[int, int]', payload: 'bytes', **kwargs: 'Any') -> 'Protocol': # type: ignore[override] # pylint: disable=arguments-renamed + def analyze(cls, ports: 'tuple[int, int]', payload: 'bytes', **kwargs: 'Any') -> 'ProtocolBase': # type: ignore[override] # pylint: disable=arguments-renamed """Analyse packet payload. Args: diff --git a/pcapkit/protocols/transport/udp.py b/pcapkit/protocols/transport/udp.py index 9f5fec7ff..772876bb7 100644 --- a/pcapkit/protocols/transport/udp.py +++ b/pcapkit/protocols/transport/udp.py @@ -38,7 +38,7 @@ from typing_extensions import Literal from pcapkit.const.reg.apptype import AppType as Enum_AppType - from pcapkit.protocols.protocol import ProtocolBase as Protocol + from pcapkit.protocols.protocol import ProtocolBase from pcapkit.protocols.schema.schema import Schema __all__ = ['UDP'] @@ -81,7 +81,7 @@ class UDP(Transport[Data_UDP, Schema_UDP], # Defaults. ########################################################################## - #: DefaultDict[int, ModuleDescriptor[Protocol] | ~typing.Type[Protocol]]: Protocol + #: DefaultDict[int, ModuleDescriptor[ProtocolBase] | ~typing.Type[ProtocolBase]]: Protocol #: index mapping for decoding next layer, c.f. #: :meth:`self._decode_next_layer ` #: & :meth:`self._import_next_layer `. @@ -184,7 +184,7 @@ def make(self, srcport: 'Enum_AppType | int' = 0, dstport: 'Enum_AppType | int' = 0, checksum: 'bytes' = b'\x00\x00', - payload: 'bytes | Schema | Protocol' = b'', + payload: 'bytes | Schema | ProtocolBase' = b'', **kwargs: 'Any') -> 'Schema_UDP': """Make (construct) packet data. diff --git a/tests/test_base_class_contract.py b/tests/test_base_class_contract.py index 7d2e55757..d59fdfea6 100644 --- a/tests/test_base_class_contract.py +++ b/tests/test_base_class_contract.py @@ -32,12 +32,13 @@ built-ins for three years). These two tests replace the convention with something that fails. -The sweep is complete but the migration is not: 28 of the 82 sites are renamed, -and the other 54 sit in paths that open pull requests own -- see -:data:`PENDING_ALIAS_PATHS`, which is the whole of the remaining work and -shrinks to nothing as those land. The four non-``protocols`` families -(``Engine`` 8 sites, ``Reassembly`` 3, ``Dumper`` 2, ``TraceFlow`` 2) are -finished; every one of the 54 outstanding is a ``ProtocolBase`` site. +The sweep and the migration are both complete: all 82 sites are renamed, the +last 54 (all ``ProtocolBase``, across ``pcapkit/protocols/`` and three +``pcapkit/foundation/`` modules) having landed in #514 part (c) once #726 and +#742 merged. :data:`PENDING_ALIAS_PATHS` is therefore empty -- its intended end +state -- and :func:`is_pending` is trivially ``False`` for every path; the dict +stays as a mechanism rather than being deleted, in case a future ``*Base`` +family needs the same transitional carve-out. :class:`RegistrationGateTests` is a regression pin, not a new behaviour. Every assertion in it already held before part (c), because parts (a) and (b) @@ -108,13 +109,10 @@ #: the alias comes out and the entry goes with it. **An empty dict is the end #: state**, and :meth:`BaseClassAliasTests.test_no_library_module_imports_a_base_under_its_public_name` #: fails on an entry that has stopped matching anything, so a stale promise -#: cannot sit here unnoticed once its pull request merges. -PENDING_ALIAS_PATHS = { - 'pcapkit/protocols/': 726, - 'pcapkit/foundation/registry/protocols.py': 726, - 'pcapkit/foundation/extraction.py': 742, - 'pcapkit/foundation/traceflow/traceflow.py': 742, -} +#: cannot sit here unnoticed once its pull request merges. #514 part (c) landed +#: the last 54 sites, so this is now empty and every alias check below runs +#: unconditionally. +PENDING_ALIAS_PATHS = {} # type: dict[str, int] def is_pending(rel: 'str') -> 'bool':