Skip to content

Commit 9bb4b34

Browse files
committed
revised protocol registries (added schema registration to APIs)
1 parent 4ec4546 commit 9bb4b34

File tree

13 files changed

+337
-143
lines changed

13 files changed

+337
-143
lines changed

docs/source/pcapkit/protocols/application/httpv2.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,12 @@ Auxiliary Functions
209209

210210
.. autofunction:: pcapkit.protocols.schema.application.httpv2.http_frame_selector
211211

212+
Miscellaneous Data
213+
~~~~~~~~~~~~~~~~~~
214+
215+
.. autodata:: pcapkit.protocols.schema.application.httpv2.MAP_HTTP_FRAME
216+
:no-value:
217+
212218
Data Models
213219
-----------
214220

docs/source/pcapkit/protocols/internet/ipv6_route.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,12 @@ Auxiliary Functions
114114

115115
.. autofunction:: pcapkit.protocols.schema.internet.ipv6_route.ipv6_route_data_selector
116116

117+
Miscellaneous Data
118+
~~~~~~~~~~~~~~~~~~
119+
120+
.. autodata:: pcapkit.protocols.schema.internet.ipv6_route.MAP_IPV6_ROUTE_DATA
121+
:no-value:
122+
117123
Data Models
118124
-----------
119125

docs/source/pcapkit/protocols/internet/mh.rst

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,50 @@ Header Schemas
369369
:param \*args: Arbitrary positional arguments.
370370
:param \*\*kwargs: Arbitrary keyword arguments.
371371

372+
Type Stubs
373+
~~~~~~~~~~
374+
375+
.. autoclass:: pcapkit.protocols.schema.internet.mh.ANSIKeyLengthTest
376+
:members:
377+
:show-inheritance:
378+
379+
:param \*args: Arbitrary positional arguments.
380+
:param \*\*kwargs: Arbitrary keyword arguments.
381+
382+
.. autoclass:: pcapkit.protocols.schema.internet.mh.MultiPrefixExtensionFlags
383+
:members:
384+
:show-inheritance:
385+
386+
:param \*args: Arbitrary positional arguments.
387+
:param \*\*kwargs: Arbitrary keyword arguments.
388+
389+
.. autoclass:: pcapkit.protocols.schema.internet.mh.BindingUpdateMessageFlags
390+
:members:
391+
:show-inheritance:
392+
393+
:param \*args: Arbitrary positional arguments.
394+
:param \*\*kwargs: Arbitrary keyword arguments.
395+
396+
.. autoclass:: pcapkit.protocols.schema.internet.mh.BindingAcknowledgementMessageFlags
397+
:members:
398+
:show-inheritance:
399+
400+
:param \*args: Arbitrary positional arguments.
401+
:param \*\*kwargs: Arbitrary keyword arguments.
402+
403+
Auxiliary Functions
404+
~~~~~~~~~~~~~~~~~~~
405+
406+
.. autofunction:: pcapkit.protocols.schema.internet.mh.mh_opt_registry
407+
.. autofunction:: pcapkit.protocols.schema.internet.mh.mh_data_selector
408+
.. autofunction:: pcapkit.protocols.schema.internet.mh.mh_id_selector
409+
410+
Miscellaneous Data
411+
~~~~~~~~~~~~~~~~~~
412+
413+
.. autodata:: pcapkit.protocols.schema.internet.mh.MAP_MH_DATA
414+
:no-value:
415+
372416
Data Models
373417
-----------
374418

docs/source/pcapkit/protocols/misc/pcapng.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -737,6 +737,15 @@ Auxiliary Functions
737737
.. autofunction:: pcapkit.protocols.schema.misc.pcapng.pcapng_block_selector
738738
.. autofunction:: pcapkit.protocols.schema.misc.pcapng.dsb_secrets_selector
739739

740+
Miscellaneous Data
741+
~~~~~~~~~~~~~~~~~~
742+
743+
.. autodata:: pcapkit.protocols.schema.misc.pcapng.MAP_PCAPNG_BLOCK
744+
:no-value:
745+
746+
.. autodata:: pcapkit.protocols.schema.misc.pcapng.MAP_DSB_SECRETS
747+
:no-value:
748+
740749
Data Models
741750
-----------
742751

docs/source/pcapkit/protocols/transport/tcp.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,12 @@ Auxiliary Functions
530530
.. autofunction:: pcapkit.protocols.schema.transport.tcp.mptcp_data_selector
531531
.. autofunction:: pcapkit.protocols.schema.transport.tcp.mptcp_add_address_selector
532532

533+
Miscellaneous Data
534+
~~~~~~~~~~~~~~~~~~
535+
536+
.. autodata:: pcapkit.protocols.schema.transport.tcp.MAP_MPTCP_DATA
537+
:no-value:
538+
533539
Data Models
534540
-----------
535541

pcapkit/corekit/fields/collections.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import copy
55
import io
6-
from typing import TYPE_CHECKING, TypeVar, cast
6+
from typing import TYPE_CHECKING, Generic, TypeVar, cast
77

88
from pcapkit.corekit.fields.field import _Field
99
from pcapkit.corekit.multidict import OrderedMultiDict
@@ -25,9 +25,10 @@
2525
from pcapkit.protocols.schema.schema import Schema
2626

2727
_TL = TypeVar('_TL', 'Schema', '_Field', 'bytes')
28+
_TS = TypeVar('_TS', bound='Schema')
2829

2930

30-
class ListField(_Field[List[_TL]]):
31+
class ListField(_Field[List[_TL]], Generic[_TL]):
3132
"""Field list for protocol fields.
3233
3334
Args:
@@ -160,7 +161,7 @@ def unpack(self, buffer: 'bytes | IO[bytes]', packet: 'dict[str, Any]') -> 'byte
160161
return temp
161162

162163

163-
class OptionField(ListField):
164+
class OptionField(ListField, Generic[_TS]):
164165
"""Field list for protocol options.
165166
166167
Args:
@@ -181,7 +182,7 @@ class OptionField(ListField):
181182
"""
182183

183184
@property
184-
def base_schema(self) -> 'Type[Schema]':
185+
def base_schema(self) -> 'Type[_TS]':
185186
"""Base schema."""
186187
return self._base_schema
187188

@@ -191,7 +192,7 @@ def type_name(self) -> 'str':
191192
return self._type_name
192193

193194
@property
194-
def registry(self) -> 'defaultdict[int | StdlibEnum | AenumEnum, Type[Schema]]':
195+
def registry(self) -> 'defaultdict[int | StdlibEnum | AenumEnum, Type[_TS]]':
195196
"""Option registry."""
196197
return self._registry
197198

@@ -206,9 +207,9 @@ def option_padding(self) -> 'int':
206207
return self._option_padding
207208

208209
def __init__(self, length: 'int | Callable[[dict[str, Any]], int]' = lambda _: -1,
209-
base_schema: 'Optional[Type[Schema]]' = None,
210+
base_schema: 'Optional[Type[_TS]]' = None,
210211
type_name: 'str' = 'type',
211-
registry: 'Optional[defaultdict[int | StdlibEnum | AenumEnum, Type[Schema]]]' = None,
212+
registry: 'Optional[defaultdict[int | StdlibEnum | AenumEnum, Type[_TS]]]' = None,
212213
eool: 'Optional[int | StdlibEnum | AenumEnum]' = None,
213214
callback: 'Callable[[Self, dict[str, Any]], None]' = lambda *_: None) -> 'None':
214215
super().__init__(length, None, callback)
@@ -228,7 +229,7 @@ def __init__(self, length: 'int | Callable[[dict[str, Any]], int]' = lambda _: -
228229
raise FieldValueError('Field <option> has no registry.')
229230
self._registry = registry
230231

231-
def unpack(self, buffer: 'bytes | IO[bytes]', packet: 'dict[str, Any]') -> 'list[Schema]':
232+
def unpack(self, buffer: 'bytes | IO[bytes]', packet: 'dict[str, Any]') -> 'list[_TS]':
232233
"""Unpack field value from :obj:`bytes`.
233234
234235
Args:
@@ -256,7 +257,7 @@ def unpack(self, buffer: 'bytes | IO[bytes]', packet: 'dict[str, Any]') -> 'list
256257
new_packet = packet.copy()
257258
new_packet[self.name] = OrderedMultiDict()
258259

259-
temp = [] # type: list[Schema]
260+
temp = [] # type: list[_TS]
260261
while length > 0:
261262
# unpack option type using base schema
262263
meta = self._base_schema.unpack(file, length, packet) # type: ignore[call-arg,misc,var-annotated]

0 commit comments

Comments
 (0)