Finds the file_identifier value in flatbuffer schemas.
| 99 | |
| 100 | |
| 101 | class _SchemaFileIdentifierGetter: |
| 102 | """Finds the file_identifier value in flatbuffer schemas.""" |
| 103 | |
| 104 | def __init__(self) -> None: |
| 105 | self.file_identifier: Optional[bytes] = None |
| 106 | |
| 107 | def __call__(self, schema: bytes) -> bytes: |
| 108 | identifiers = re.findall(rb'file_identifier\s+"([^"]+)"', schema) |
| 109 | for file_identifier in identifiers: |
| 110 | if len(file_identifier) != 4: |
| 111 | raise ValueError( |
| 112 | f"Invalid file_identifier length {len(file_identifier)} in schema" |
| 113 | ) |
| 114 | if self.file_identifier is None: |
| 115 | self.file_identifier = file_identifier |
| 116 | elif self.file_identifier != file_identifier: |
| 117 | raise ValueError( |
| 118 | f"Mismatched file_identifier {file_identifier} != {self.file_identifier}" |
| 119 | ) |
| 120 | return schema |
| 121 | |
| 122 | |
| 123 | class _ResourceFiles: |