20 lines
511 B
Python
20 lines
511 B
Python
from __future__ import annotations
|
|
|
|
from threading import local
|
|
from typing import Any, Callable
|
|
|
|
from attrs import frozen
|
|
|
|
|
|
@frozen
|
|
class AttributeOverride:
|
|
omit_if_default: bool | None = None
|
|
rename: str | None = None
|
|
omit: bool | None = None # Omit the field completely.
|
|
struct_hook: Callable[[Any, Any], Any] | None = None # Structure hook to use.
|
|
unstruct_hook: Callable[[Any], Any] | None = None # Structure hook to use.
|
|
|
|
|
|
neutral = AttributeOverride()
|
|
already_generating = local()
|