| 38 | |
| 39 | |
| 40 | def _set_property(name: str, doc: str | None = None) -> property: |
| 41 | def fget(self: Response) -> HeaderSet: |
| 42 | def on_update(header_set: HeaderSet) -> None: |
| 43 | if not header_set and name in self.headers: |
| 44 | del self.headers[name] |
| 45 | elif header_set: |
| 46 | self.headers[name] = header_set.to_header() |
| 47 | |
| 48 | return parse_set_header(self.headers.get(name), on_update) |
| 49 | |
| 50 | def fset( |
| 51 | self: Response, |
| 52 | value: None | (str | dict[str, str | int] | t.Iterable[str]), |
| 53 | ) -> None: |
| 54 | if not value: |
| 55 | del self.headers[name] |
| 56 | elif isinstance(value, str): |
| 57 | self.headers[name] = value |
| 58 | else: |
| 59 | self.headers[name] = dump_header(value) |
| 60 | |
| 61 | return property(fget, fset, doc=doc) |
| 62 | |
| 63 | |
| 64 | class Response: |