airbyte-agent-greenhouse 0.17.48__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- airbyte_agent_greenhouse/__init__.py +105 -0
- airbyte_agent_greenhouse/_vendored/__init__.py +1 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/__init__.py +82 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/auth_strategies.py +1120 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/auth_template.py +135 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/cloud_utils/__init__.py +5 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/cloud_utils/client.py +213 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/connector_model_loader.py +965 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/constants.py +78 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/exceptions.py +23 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/executor/__init__.py +31 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/executor/hosted_executor.py +196 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/executor/local_executor.py +1724 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/executor/models.py +190 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/extensions.py +693 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/http/__init__.py +37 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/http/adapters/__init__.py +9 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/http/adapters/httpx_adapter.py +251 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/http/config.py +98 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/http/exceptions.py +119 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/http/protocols.py +114 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/http/response.py +104 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/http_client.py +693 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/introspection.py +262 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/logging/__init__.py +11 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/logging/logger.py +273 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/logging/types.py +93 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/observability/__init__.py +11 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/observability/config.py +179 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/observability/models.py +19 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/observability/redactor.py +81 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/observability/session.py +103 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/performance/__init__.py +6 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/performance/instrumentation.py +57 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/performance/metrics.py +93 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/schema/__init__.py +75 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/schema/base.py +164 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/schema/components.py +239 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/schema/connector.py +120 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/schema/extensions.py +230 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/schema/operations.py +146 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/schema/security.py +223 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/secrets.py +182 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/telemetry/__init__.py +10 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/telemetry/config.py +32 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/telemetry/events.py +59 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/telemetry/tracker.py +155 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/types.py +245 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/utils.py +60 -0
- airbyte_agent_greenhouse/_vendored/connector_sdk/validation.py +828 -0
- airbyte_agent_greenhouse/connector.py +1391 -0
- airbyte_agent_greenhouse/connector_model.py +2356 -0
- airbyte_agent_greenhouse/models.py +281 -0
- airbyte_agent_greenhouse/types.py +136 -0
- airbyte_agent_greenhouse-0.17.48.dist-info/METADATA +116 -0
- airbyte_agent_greenhouse-0.17.48.dist-info/RECORD +57 -0
- airbyte_agent_greenhouse-0.17.48.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"""HTTP response wrapper providing a consistent interface across HTTP clients."""
|
|
2
|
+
|
|
3
|
+
import json as json_module
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class HTTPResponse:
|
|
8
|
+
"""Wrapper for HTTP responses that provides a consistent interface.
|
|
9
|
+
|
|
10
|
+
This class wraps responses from any HTTP client (httpx, aiohttp, etc.) and
|
|
11
|
+
provides a standard interface that the SDK can rely on.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
def __init__(
|
|
15
|
+
self,
|
|
16
|
+
status_code: int,
|
|
17
|
+
headers: dict[str, str],
|
|
18
|
+
content: bytes,
|
|
19
|
+
_original_response: Any | None = None,
|
|
20
|
+
) -> None:
|
|
21
|
+
"""Initialize an HTTP response wrapper.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
status_code: The HTTP status code (e.g., 200, 404, 500)
|
|
25
|
+
headers: Response headers as a dictionary
|
|
26
|
+
content: Raw response body as bytes
|
|
27
|
+
_original_response: Optional original response object from the underlying client
|
|
28
|
+
"""
|
|
29
|
+
self._status_code = status_code
|
|
30
|
+
self._headers = headers
|
|
31
|
+
self._content = content
|
|
32
|
+
self._original_response = _original_response
|
|
33
|
+
self._text_cache: str | None = None
|
|
34
|
+
self._json_cache: Any | None = None
|
|
35
|
+
self._json_parsed = False
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def status_code(self) -> int:
|
|
39
|
+
"""The HTTP status code of the response."""
|
|
40
|
+
return self._status_code
|
|
41
|
+
|
|
42
|
+
@property
|
|
43
|
+
def headers(self) -> dict[str, str]:
|
|
44
|
+
"""The response headers as a dictionary."""
|
|
45
|
+
return self._headers
|
|
46
|
+
|
|
47
|
+
async def text(self) -> str:
|
|
48
|
+
"""Get the response body as text.
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
The response body decoded as a string.
|
|
52
|
+
"""
|
|
53
|
+
if self._text_cache is None:
|
|
54
|
+
self._text_cache = self._content.decode("utf-8", errors="replace")
|
|
55
|
+
return self._text_cache
|
|
56
|
+
|
|
57
|
+
async def json(self) -> Any:
|
|
58
|
+
"""Parse the response body as JSON.
|
|
59
|
+
|
|
60
|
+
Returns:
|
|
61
|
+
The parsed JSON data (dict, list, or primitive).
|
|
62
|
+
|
|
63
|
+
Raises:
|
|
64
|
+
ValueError: If the response body is not valid JSON.
|
|
65
|
+
"""
|
|
66
|
+
if not self._json_parsed:
|
|
67
|
+
try:
|
|
68
|
+
text = await self.text()
|
|
69
|
+
self._json_cache = json_module.loads(text)
|
|
70
|
+
except json_module.JSONDecodeError as e:
|
|
71
|
+
raise ValueError(f"Invalid JSON in response: {e}") from e
|
|
72
|
+
finally:
|
|
73
|
+
self._json_parsed = True
|
|
74
|
+
return self._json_cache
|
|
75
|
+
|
|
76
|
+
def raise_for_status(self) -> None:
|
|
77
|
+
"""Raise an exception if the response status indicates an error.
|
|
78
|
+
|
|
79
|
+
Raises:
|
|
80
|
+
HTTPStatusError: For 4xx or 5xx status codes.
|
|
81
|
+
"""
|
|
82
|
+
if 400 <= self._status_code < 600:
|
|
83
|
+
# NOTE: Import here intentionally to avoid circular import.
|
|
84
|
+
# exceptions.py imports HTTPResponse for type hints.
|
|
85
|
+
from .exceptions import HTTPStatusError
|
|
86
|
+
|
|
87
|
+
raise HTTPStatusError(
|
|
88
|
+
status_code=self._status_code,
|
|
89
|
+
message=f"HTTP {self._status_code} error",
|
|
90
|
+
response=self,
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
@property
|
|
94
|
+
def original_response(self) -> Any | None:
|
|
95
|
+
"""Get the original response object from the underlying HTTP client.
|
|
96
|
+
|
|
97
|
+
This is provided for advanced use cases but should generally not be needed.
|
|
98
|
+
Returns None if the original response was not provided.
|
|
99
|
+
"""
|
|
100
|
+
return self._original_response
|
|
101
|
+
|
|
102
|
+
def __repr__(self) -> str:
|
|
103
|
+
"""String representation of the response."""
|
|
104
|
+
return f"HTTPResponse(status_code={self.status_code})"
|