(headers: HeadersLike, header: str)
| 371 | |
| 372 | |
| 373 | def get_required_header(headers: HeadersLike, header: str) -> str: |
| 374 | lower_header = header.lower() |
| 375 | if is_mapping_t(headers): |
| 376 | # mypy doesn't understand the type narrowing here |
| 377 | for k, v in headers.items(): # type: ignore |
| 378 | if k.lower() == lower_header and isinstance(v, str): |
| 379 | return v |
| 380 | |
| 381 | # to deal with the case where the header looks like Stainless-Event-Id |
| 382 | intercaps_header = re.sub(r"([^\w])(\w)", lambda pat: pat.group(1) + pat.group(2).upper(), header.capitalize()) |
| 383 | |
| 384 | for normalized_header in [header, lower_header, header.upper(), intercaps_header]: |
| 385 | value = headers.get(normalized_header) |
| 386 | if value: |
| 387 | return value |
| 388 | |
| 389 | raise ValueError(f"Could not find {header} header") |
| 390 | |
| 391 | |
| 392 | def get_async_library() -> str: |
nothing calls this directly
no test coverage detected