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,60 @@
|
|
|
1
|
+
"""Utility functions for working with connectors."""
|
|
2
|
+
|
|
3
|
+
from collections.abc import AsyncIterator
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
async def save_download(
|
|
8
|
+
download_iterator: AsyncIterator[bytes],
|
|
9
|
+
path: str | Path,
|
|
10
|
+
*,
|
|
11
|
+
overwrite: bool = False,
|
|
12
|
+
) -> Path:
|
|
13
|
+
"""Save a download iterator to a file.
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
download_iterator: AsyncIterator[bytes] from a download operation
|
|
17
|
+
path: File path where content should be saved
|
|
18
|
+
overwrite: Whether to overwrite existing file (default: False)
|
|
19
|
+
|
|
20
|
+
Returns:
|
|
21
|
+
Absolute Path to the saved file
|
|
22
|
+
|
|
23
|
+
Raises:
|
|
24
|
+
FileExistsError: If file exists and overwrite=False
|
|
25
|
+
OSError: If file cannot be written
|
|
26
|
+
|
|
27
|
+
Example:
|
|
28
|
+
>>> from .utils import save_download
|
|
29
|
+
>>>
|
|
30
|
+
>>> # Download and save a file
|
|
31
|
+
>>> result = await connector.download_article_attachment(id="123")
|
|
32
|
+
>>> file_path = await save_download(result, "./downloads/attachment.pdf")
|
|
33
|
+
>>> print(f"Downloaded to {file_path}")
|
|
34
|
+
Downloaded to /absolute/path/to/downloads/attachment.pdf
|
|
35
|
+
>>>
|
|
36
|
+
>>> # Overwrite existing file
|
|
37
|
+
>>> file_path = await save_download(result, "./downloads/attachment.pdf", overwrite=True)
|
|
38
|
+
"""
|
|
39
|
+
# Convert to Path object
|
|
40
|
+
file_path = Path(path).expanduser().resolve()
|
|
41
|
+
|
|
42
|
+
# Check if file exists
|
|
43
|
+
if file_path.exists() and not overwrite:
|
|
44
|
+
raise FileExistsError(f"File already exists: {file_path}. Use overwrite=True to replace it.")
|
|
45
|
+
|
|
46
|
+
# Create parent directories if needed
|
|
47
|
+
file_path.parent.mkdir(parents=True, exist_ok=True)
|
|
48
|
+
|
|
49
|
+
# Stream content to file
|
|
50
|
+
try:
|
|
51
|
+
with open(file_path, "wb") as f:
|
|
52
|
+
async for chunk in download_iterator:
|
|
53
|
+
f.write(chunk)
|
|
54
|
+
except Exception as e:
|
|
55
|
+
# Clean up partial file on error
|
|
56
|
+
if file_path.exists():
|
|
57
|
+
file_path.unlink()
|
|
58
|
+
raise OSError(f"Failed to write file {file_path}: {e}") from e
|
|
59
|
+
|
|
60
|
+
return file_path
|