1818"""Abstract Syntax Tree (AST) data structures for CDDL definitions."""
1919
2020from dataclasses import dataclass , field
21- from typing import Optional , List , Union
2221
2322
2423@dataclass
@@ -27,18 +26,18 @@ class CddlField:
2726 name : str
2827 type : "CddlType"
2928 optional : bool = False
30- description : Optional [ str ] = None
29+ description : str | None = None
3130
3231
3332@dataclass
3433class CddlType :
3534 """Base class for all CDDL type definitions."""
3635 name : str
3736 base_type : str = "unknown" # Type category: ref, string, number, etc.
38- module : Optional [ str ] = None # e.g., "session", "network"
39- description : Optional [ str ] = None
40- reference : Optional [ str ] = None # For type references
41- value : Optional [ str ] = None # For literal values
37+ module : str | None = None # e.g., "session", "network"
38+ description : str | None = None
39+ reference : str | None = None # For type references
40+ value : str | None = None # For literal values
4241 is_primitive : bool = False # Whether this is a primitive type
4342
4443
@@ -51,55 +50,55 @@ class CddlPrimitiveType(CddlType):
5150@dataclass
5251class CddlObject (CddlType ):
5352 """Represents a CDDL object type with fields."""
54- fields : List [CddlField ] = field (default_factory = list )
53+ fields : list [CddlField ] = field (default_factory = list )
5554 extensible : bool = False # Whether object allows additional fields
5655
5756
5857@dataclass
5958class CddlEnum (CddlType ):
6059 """Represents a CDDL enum type with string values."""
61- values : List [str ] = field (default_factory = list )
60+ values : list [str ] = field (default_factory = list )
6261
6362
6463@dataclass
6564class CddlUnionVariant :
6665 """Represents one variant in a union type."""
6766 index : int = 0 # Index in union
68- type : Optional [ CddlType ] = None # The type for this variant
69- discriminator_field : Optional [ str ] = None # For tagged unions
70- discriminator_value : Optional [ str ] = None # Value of discriminator field
67+ type : CddlType | None = None # The type for this variant
68+ discriminator_field : str | None = None # For tagged unions
69+ discriminator_value : str | None = None # Value of discriminator field
7170
7271
7372@dataclass
7473class CddlUnion (CddlType ):
7574 """Represents a CDDL union type (multiple possible types)."""
76- variants : List [CddlUnionVariant ] = field (default_factory = list )
75+ variants : list [CddlUnionVariant ] = field (default_factory = list )
7776
7877
7978@dataclass
8079class CddlArray (CddlType ):
8180 """Represents a CDDL array type."""
82- item_type : Optional [ CddlType ] = None
81+ item_type : CddlType | None = None
8382
8483
8584@dataclass
8685class CddlCommand (CddlType ):
8786 """Represents a WebDriver BiDi command."""
8887 method : str = "" # e.g., "session.new"
89- params : Optional [ CddlObject ] = None
90- result : Optional [ CddlObject ] = None
88+ params : CddlObject | None = None
89+ result : CddlObject | None = None
9190
9291
9392@dataclass
9493class CddlModule :
9594 """Represents a module grouping (e.g., all session.* types)."""
9695 name : str # e.g., "session", "network"
9796 types : dict = field (default_factory = dict ) # Dict[name, CddlType]
98- commands : List [CddlCommand ] = field (default_factory = list )
97+ commands : list [CddlCommand ] = field (default_factory = list )
9998
10099
101100@dataclass
102101class CddlSpecification :
103102 """Root node representing entire CDDL specification."""
104- modules : List [CddlModule ] = field (default_factory = list )
103+ modules : list [CddlModule ] = field (default_factory = list )
105104 types : dict = field (default_factory = dict ) # Dict[name, CddlType] - Global types
0 commit comments