A context for handling validated encoding processes.
| 372 | |
| 373 | |
| 374 | class EncodeContext(ValidationContext): |
| 375 | """A context for handling validated encoding processes.""" |
| 376 | source: Any |
| 377 | converter: XMLSchemaConverter |
| 378 | |
| 379 | _arguments = EncodeArguments |
| 380 | |
| 381 | __slots__ = ('unordered', 'untyped_data', 'indent', 'etree_element_class') |
| 382 | |
| 383 | def __init__(self, |
| 384 | source: Any, |
| 385 | converter: Optional[XMLSchemaConverter] = None, |
| 386 | unordered: bool = False, |
| 387 | untyped_data: bool = False, |
| 388 | **kwargs: Any) -> None: |
| 389 | |
| 390 | if not isinstance(converter, XMLSchemaConverter): |
| 391 | converter = XMLSchemaConverter(**kwargs) |
| 392 | |
| 393 | self.unordered = unordered |
| 394 | self.untyped_data = untyped_data |
| 395 | self.indent = converter.indent |
| 396 | self.etree_element_class = converter.etree_element_class |
| 397 | |
| 398 | super().__init__(source, converter, **kwargs) |
| 399 | |
| 400 | def encode_error(self, |
| 401 | validation: str, |
| 402 | validator: 'XsdValidator', |
| 403 | obj: Any, |
| 404 | encoder: Any, |
| 405 | error: Union[str, Exception]) -> XMLSchemaValidationError: |
| 406 | |
| 407 | error = XMLSchemaEncodeError( |
| 408 | validator=validator, |
| 409 | obj=obj, |
| 410 | encoder=encoder, |
| 411 | reason=str(error), |
| 412 | source=self.source, |
| 413 | namespaces=self.namespaces, |
| 414 | ) |
| 415 | return self.raise_or_collect(validation, error) |
| 416 | |
| 417 | def create_element(self, tag: str) -> ElementType: |
| 418 | """ |
| 419 | Create an ElementTree's Element using converter setting. |
| 420 | |
| 421 | :param tag: the Element tag string. |
| 422 | """ |
| 423 | if self.etree_element_class is Element: |
| 424 | return Element(tag) |
| 425 | else: |
| 426 | nsmap = {prefix if prefix else None: uri |
| 427 | for prefix, uri in self.namespaces.items() if uri} |
| 428 | try: |
| 429 | return self.etree_element_class( |
| 430 | tag, None, nsmap # type: ignore[call-arg, arg-type] |
| 431 | ) |
no outgoing calls
no test coverage detected
searching dependent graphs…