Source code for pcapkit.protocols.link.link

# -*- coding: utf-8 -*-
# mypy: disable-error-code=dict-item
"""Base Protocol
===================

.. module:: pcapkit.protocols.link.link

:mod:`pcapkit.protocols.link.link` contains
:class:`~pcapkit.protocols.link.link.Link`,
which is a base class for link layer protocols, e.g.
:class:`~pcapkit.protocols.link.arp.protocol.ARP`/:class:`~pcapkit.protocols.link.inarp.protocol.InARP`,
:class:`~pcapkit.protocols.link.ethernet.protocol.Ethernet`,
:class:`~pcapkit.protocols.link.frad.protocol.FRAD`,
:class:`~pcapkit.protocols.link.ieee802_11.protocol.IEEE802_11`,
:class:`~pcapkit.protocols.link.l2tp.protocol.L2TP`,
:class:`~pcapkit.protocols.link.loopback.protocol.Loopback`,
:class:`~pcapkit.protocols.link.radiotap.protocol.Radiotap` and
:class:`~pcapkit.protocols.link.vlan.protocol.VLAN`.

"""
import collections
from typing import TYPE_CHECKING, Generic

from pcapkit.const.reg.ethertype import EtherType as Enum_EtherType
from pcapkit.corekit.module import ModuleDescriptor
from pcapkit.corekit.schema.shortread import keep_short_read, replay_short_read
from pcapkit.protocols.protocol import _PT, _ST, ProtocolBase
from pcapkit.utilities.warnings import RegistryWarning, warn

if TYPE_CHECKING:
    from typing import IO, Any, ClassVar, DefaultDict, Optional, Type

    from typing_extensions import Literal, Self

    from pcapkit.corekit.enum import EnumRegistry

__all__ = ['Link']