Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 4 additions & 68 deletions pcapkit/const/arp/hardware.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@

"""

from aenum import IntEnum, extend_enum
from aenum import IntEnum

from pcapkit.corekit.enum import EnumRegistry

__all__ = ['Hardware']


class Hardware(IntEnum):
class Hardware(EnumRegistry, IntEnum):
"""[Hardware] Hardware Types [:rfc:`826`][:rfc:`5494`]"""

#: Reserved [:rfc:`5494`]
Expand Down Expand Up @@ -146,72 +148,6 @@ class Hardware(IntEnum):
#: Reserved [:rfc:`5494`]
Reserved_65535 = 65535

@staticmethod
def get(key: 'int | str', default: 'int' = -1) -> 'Hardware':
"""Backport support for original codes.

Args:
key: Key to get enum item.
default: Default value if not found. The placeholder ``-1`` stands
for *no default*, in which case an unresolvable key propagates
the lookup error instead of falling back.

:meta private:
"""
if isinstance(key, int):
try:
return Hardware(key)
except ValueError:
if default == -1:
raise
return Hardware(default)
try:
return Hardware[key] # type: ignore[misc]
except KeyError:
if default == -1:
raise
return Hardware(default)

@classmethod
def register(cls, value: 'int', name: 'str') -> 'Hardware':
"""Explicitly register a new member.

Unlike :meth:`get` and :meth:`_missing_`, which resolve a key or a
value without minting anything new, this is the caller-named entry
point that still grows the registry, via :func:`aenum.extend_enum`.

Args:
value: Value of the new member.
name: Name of the new member.

Returns:
The newly registered member.

"""
return extend_enum(cls, name, value)

@classmethod
def _unregistered_member(cls, value: 'int', name: 'str') -> 'Hardware':
"""Build a member absent from this registry's own lookup tables.

Used by :meth:`_missing_` for a bounded-but-unassigned value it
resolves without anyone asking for a name, so that such a lookup no
longer grows the registry -- contrast :meth:`register`, the explicit
path that still does.

Args:
value: The member's value.
name: The member's name.

Returns:
The unregistered member.

"""
obj = int.__new__(cls, value)
obj._name_ = name # pylint: disable=protected-access
obj._value_ = value # pylint: disable=protected-access
return obj

@classmethod
def _missing_(cls, value: 'int') -> 'Hardware':
"""Lookup function used when value is not found.
Expand Down
72 changes: 4 additions & 68 deletions pcapkit/const/arp/operation.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@

"""

from aenum import IntEnum, extend_enum
from aenum import IntEnum

from pcapkit.corekit.enum import EnumRegistry

__all__ = ['Operation']


class Operation(IntEnum):
class Operation(EnumRegistry, IntEnum):
"""[Operation] Operation Codes [:rfc:`826`][:rfc:`5494`]"""

#: Reserved [:rfc:`5494`]
Expand Down Expand Up @@ -99,72 +101,6 @@ class Operation(IntEnum):
#: Reserved [:rfc:`5494`]
Reserved_65535 = 65535

@staticmethod
def get(key: 'int | str', default: 'int' = -1) -> 'Operation':
"""Backport support for original codes.

Args:
key: Key to get enum item.
default: Default value if not found. The placeholder ``-1`` stands
for *no default*, in which case an unresolvable key propagates
the lookup error instead of falling back.

:meta private:
"""
if isinstance(key, int):
try:
return Operation(key)
except ValueError:
if default == -1:
raise
return Operation(default)
try:
return Operation[key] # type: ignore[misc]
except KeyError:
if default == -1:
raise
return Operation(default)

@classmethod
def register(cls, value: 'int', name: 'str') -> 'Operation':
"""Explicitly register a new member.

Unlike :meth:`get` and :meth:`_missing_`, which resolve a key or a
value without minting anything new, this is the caller-named entry
point that still grows the registry, via :func:`aenum.extend_enum`.

Args:
value: Value of the new member.
name: Name of the new member.

Returns:
The newly registered member.

"""
return extend_enum(cls, name, value)

@classmethod
def _unregistered_member(cls, value: 'int', name: 'str') -> 'Operation':
"""Build a member absent from this registry's own lookup tables.

Used by :meth:`_missing_` for a bounded-but-unassigned value it
resolves without anyone asking for a name, so that such a lookup no
longer grows the registry -- contrast :meth:`register`, the explicit
path that still does.

Args:
value: The member's value.
name: The member's name.

Returns:
The unregistered member.

"""
obj = int.__new__(cls, value)
obj._name_ = name # pylint: disable=protected-access
obj._value_ = value # pylint: disable=protected-access
return obj

@classmethod
def _missing_(cls, value: 'int') -> 'Operation':
"""Lookup function used when value is not found.
Expand Down
70 changes: 3 additions & 67 deletions pcapkit/const/esp/cipher.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@

from aenum import IntEnum, extend_enum

from pcapkit.corekit.enum import EnumRegistry

__all__ = ['Cipher']


class Cipher(IntEnum):
class Cipher(EnumRegistry, IntEnum):
"""[Cipher] Transform Type 1 - Encryption Algorithm Transform IDs"""

#: Reserved [:rfc:`7296`]
Expand Down Expand Up @@ -216,72 +218,6 @@ class Cipher(IntEnum):
#: Alias of :attr:`Cipher.ENCR_MAGMA_MGM_MAC_KTREE`.
MAGMA_MGM_MAC_KTREE = 35

@staticmethod
def get(key: 'int | str', default: 'int' = -1) -> 'Cipher':
"""Backport support for original codes.

Args:
key: Key to get enum item.
default: Default value if not found. The placeholder ``-1`` stands
for *no default*, in which case an unresolvable key propagates
the lookup error instead of falling back.

:meta private:
"""
if isinstance(key, int):
try:
return Cipher(key)
except ValueError:
if default == -1:
raise
return Cipher(default)
try:
return Cipher[key] # type: ignore[misc]
except KeyError:
if default == -1:
raise
return Cipher(default)

@classmethod
def register(cls, value: 'int', name: 'str') -> 'Cipher':
"""Explicitly register a new member.

Unlike :meth:`get` and :meth:`_missing_`, which resolve a key or a
value without minting anything new, this is the caller-named entry
point that still grows the registry, via :func:`aenum.extend_enum`.

Args:
value: Value of the new member.
name: Name of the new member.

Returns:
The newly registered member.

"""
return extend_enum(cls, name, value)

@classmethod
def _unregistered_member(cls, value: 'int', name: 'str') -> 'Cipher':
"""Build a member absent from this registry's own lookup tables.

Used by :meth:`_missing_` for a bounded-but-unassigned value it
resolves without anyone asking for a name, so that such a lookup no
longer grows the registry -- contrast :meth:`register`, the explicit
path that still does.

Args:
value: The member's value.
name: The member's name.

Returns:
The unregistered member.

"""
obj = int.__new__(cls, value)
obj._name_ = name # pylint: disable=protected-access
obj._value_ = value # pylint: disable=protected-access
return obj

@classmethod
def _missing_(cls, value: 'int') -> 'Cipher':
"""Lookup function used when value is not found.
Expand Down
70 changes: 3 additions & 67 deletions pcapkit/const/esp/integrity.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@

from aenum import IntEnum, extend_enum

from pcapkit.corekit.enum import EnumRegistry

__all__ = ['Integrity']


class Integrity(IntEnum):
class Integrity(EnumRegistry, IntEnum):
"""[Integrity] Transform Type 3 - Integrity Algorithm Transform IDs"""

#: NONE [:rfc:`7296`]
Expand Down Expand Up @@ -105,72 +107,6 @@ class Integrity(IntEnum):
#: Alias of :attr:`Integrity.AUTH_HMAC_SHA2_512_256`.
HMAC_SHA2_512_256 = 14

@staticmethod
def get(key: 'int | str', default: 'int' = -1) -> 'Integrity':
"""Backport support for original codes.

Args:
key: Key to get enum item.
default: Default value if not found. The placeholder ``-1`` stands
for *no default*, in which case an unresolvable key propagates
the lookup error instead of falling back.

:meta private:
"""
if isinstance(key, int):
try:
return Integrity(key)
except ValueError:
if default == -1:
raise
return Integrity(default)
try:
return Integrity[key] # type: ignore[misc]
except KeyError:
if default == -1:
raise
return Integrity(default)

@classmethod
def register(cls, value: 'int', name: 'str') -> 'Integrity':
"""Explicitly register a new member.

Unlike :meth:`get` and :meth:`_missing_`, which resolve a key or a
value without minting anything new, this is the caller-named entry
point that still grows the registry, via :func:`aenum.extend_enum`.

Args:
value: Value of the new member.
name: Name of the new member.

Returns:
The newly registered member.

"""
return extend_enum(cls, name, value)

@classmethod
def _unregistered_member(cls, value: 'int', name: 'str') -> 'Integrity':
"""Build a member absent from this registry's own lookup tables.

Used by :meth:`_missing_` for a bounded-but-unassigned value it
resolves without anyone asking for a name, so that such a lookup no
longer grows the registry -- contrast :meth:`register`, the explicit
path that still does.

Args:
value: The member's value.
name: The member's name.

Returns:
The unregistered member.

"""
obj = int.__new__(cls, value)
obj._name_ = name # pylint: disable=protected-access
obj._value_ = value # pylint: disable=protected-access
return obj

@classmethod
def _missing_(cls, value: 'int') -> 'Integrity':
"""Lookup function used when value is not found.
Expand Down
Loading
Loading