airbyte-internal-ops 0.4.2__py3-none-any.whl → 0.5.0__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.
Files changed (53) hide show
  1. {airbyte_internal_ops-0.4.2.dist-info → airbyte_internal_ops-0.5.0.dist-info}/METADATA +1 -1
  2. {airbyte_internal_ops-0.4.2.dist-info → airbyte_internal_ops-0.5.0.dist-info}/RECORD +13 -52
  3. airbyte_ops_mcp/cli/cloud.py +27 -0
  4. airbyte_ops_mcp/cloud_admin/api_client.py +473 -0
  5. airbyte_ops_mcp/cloud_admin/models.py +56 -0
  6. airbyte_ops_mcp/mcp/cloud_connector_versions.py +460 -0
  7. airbyte_ops_mcp/mcp/prerelease.py +5 -44
  8. airbyte_ops_mcp/regression_tests/ci_output.py +8 -4
  9. airbyte_ops_mcp/regression_tests/http_metrics.py +21 -2
  10. airbyte_ops_mcp/regression_tests/models.py +6 -0
  11. airbyte_ops_mcp/telemetry.py +162 -0
  12. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/.gitignore +0 -1
  13. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/README.md +0 -420
  14. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/__init__.py +0 -2
  15. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/__init__.py +0 -1
  16. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/backends/__init__.py +0 -8
  17. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/backends/base_backend.py +0 -16
  18. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/backends/duckdb_backend.py +0 -87
  19. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/backends/file_backend.py +0 -165
  20. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/connection_objects_retrieval.py +0 -377
  21. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/connector_runner.py +0 -247
  22. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/errors.py +0 -7
  23. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/evaluation_modes.py +0 -25
  24. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/hacks.py +0 -23
  25. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/json_schema_helper.py +0 -384
  26. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/mitm_addons.py +0 -37
  27. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/models.py +0 -595
  28. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/proxy.py +0 -207
  29. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/secret_access.py +0 -47
  30. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/segment_tracking.py +0 -45
  31. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/utils.py +0 -214
  32. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/conftest.py.disabled +0 -751
  33. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/consts.py +0 -4
  34. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/poetry.lock +0 -4480
  35. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/pytest.ini +0 -9
  36. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/__init__.py +0 -1
  37. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/test_check.py +0 -61
  38. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/test_discover.py +0 -117
  39. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/test_read.py +0 -627
  40. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/test_spec.py +0 -43
  41. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/report.py +0 -542
  42. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/stash_keys.py +0 -38
  43. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/templates/__init__.py +0 -0
  44. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/templates/private_details.html.j2 +0 -305
  45. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/templates/report.html.j2 +0 -515
  46. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/utils.py +0 -187
  47. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/__init__.py +0 -0
  48. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/test_check.py +0 -61
  49. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/test_discover.py +0 -217
  50. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/test_read.py +0 -177
  51. airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/test_spec.py +0 -631
  52. {airbyte_internal_ops-0.4.2.dist-info → airbyte_internal_ops-0.5.0.dist-info}/WHEEL +0 -0
  53. {airbyte_internal_ops-0.4.2.dist-info → airbyte_internal_ops-0.5.0.dist-info}/entry_points.txt +0 -0
@@ -1,305 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Test Report</title>
7
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/tokyo-night-dark.min.css">
8
- <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
9
-
10
- <script>
11
- hljs.highlightAll();
12
- function copyToClipboard(elementId) {
13
- var toCopy = document.getElementById(elementId).innerText;
14
- navigator.clipboard.writeText(toCopy);
15
- }
16
- function refreshPage() {
17
- {% if not fully_generated %}
18
- window.location.reload();
19
- {% else %}
20
- console.log("Report is fully generated");
21
- {% endif %}
22
- }
23
-
24
- setInterval(refreshPage, 10000);
25
- </script>
26
- <style>
27
- body {
28
- font-family: -apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
29
- background-color: #0d1117;
30
- color: #c9d1d9;
31
- padding: 16px;
32
- font-size: 14px;
33
- }
34
-
35
- a {
36
- color: #4493f8;
37
- text-decoration: underline;
38
- text-underline-offset: .2rem;
39
- }
40
-
41
- button {
42
- border: 1px solid #30363d;
43
- background-color: #1a1c26;
44
- padding: 5px;
45
- cursor: pointer;
46
- opacity: 0.7;
47
- border-radius: 5px;
48
- transition: opacity 0.5s;
49
- }
50
-
51
- button:hover {
52
- opacity: 1;
53
- }
54
-
55
- section {
56
- margin-bottom: 30px;
57
- border: 1px solid #30363d;
58
- border-radius: 6px;
59
- }
60
-
61
- h1 {
62
- font-optical-sizing: auto;
63
- font-weight: 600;
64
- font-size: 2rem;
65
- }
66
-
67
- h2 {
68
- font-size: 1.5rem;
69
- font-optical-sizing: auto;
70
- font-weight: 600;
71
- margin: 0;
72
- display: block;
73
- background-color: #161b22;
74
- padding-left: 15px;
75
- padding-top: 10px;
76
- padding-bottom: 10px;
77
- border-bottom: 1px solid #30363d;
78
- }
79
-
80
- h3 {
81
- font-size: 1.25rem;
82
- font-optical-sizing: auto;
83
- font-weight: 600;
84
- margin: 0;
85
- margin-top: 15px;
86
- margin-bottom: 15px;
87
- }
88
-
89
- h4 {
90
- font-size: 1rem;
91
- font-optical-sizing: auto;
92
- font-weight: 600;
93
- margin: 0;
94
- margin-top: 15px;
95
- }
96
-
97
- ul {
98
- list-style: none;
99
- padding: 0;
100
- }
101
-
102
- li {
103
- margin-bottom: 15px;
104
- }
105
-
106
- table {
107
- border-collapse: collapse;
108
- margin-top: 15px;
109
- width: 100%;
110
- }
111
-
112
- th, td {
113
- border: 1px solid #30363d;
114
- padding: 8px;
115
- text-align: left;
116
- min-width: 15px;
117
- max-width: 400px;
118
- overflow-x: auto;
119
- scrollbar-color: hotpink #0d1116;
120
- }
121
-
122
- th {
123
- text-align: center;
124
- }
125
-
126
- code {
127
- border: 1px solid #30363d;
128
- border-radius: 6px;
129
- max-height: 500px;
130
- scrollbar-color: hotpink #1a1b26;
131
- white-space: pre-wrap;
132
- }
133
-
134
- .monospace {
135
- font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;
136
- margin: 0;
137
- font-size: 85%;
138
- color: #fff;
139
- }
140
-
141
- .test-name {
142
- font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;
143
- font-size: 1.15rem
144
- }
145
-
146
- .metric {
147
- text-align: center;
148
- }
149
-
150
- .highlighted {
151
- background-color: #212c36;
152
- }
153
-
154
- .container {
155
- max-width: 1280px;
156
- margin-right: auto;
157
- margin-left: auto;
158
- }
159
-
160
- .section_content {
161
- padding: 15px;
162
- }
163
-
164
- .no-border {
165
- border: none;
166
- }
167
-
168
- .full-width {
169
- width: 100%;
170
- }
171
-
172
- .test-result {
173
- margin-top: 15px;
174
- border-bottom: 1px solid #30363d;
175
- }
176
-
177
- .loader {
178
- width: 20px;
179
- height: 20px;
180
- border: 2px solid #FFF;
181
- border-radius: 50%;
182
- display: inline-block;
183
- position: relative;
184
- box-sizing: border-box;
185
- animation: rotation 1s linear infinite;
186
- margin-right: 10px;
187
- }
188
-
189
- .loader::after,
190
- .loader::before {
191
- content: '';
192
- box-sizing: border-box;
193
- position: absolute;
194
- left: 0;
195
- top: 0;
196
- background: #FF3D00;
197
- width: 6px;
198
- height: 6px;
199
- transform: translate(150%, 150%);
200
- border-radius: 50%;
201
- }
202
-
203
- .loader::before {
204
- left: auto;
205
- top: auto;
206
- right: 0;
207
- bottom: 0;
208
- transform: translate(-150%, -150%);
209
- }
210
-
211
- .clipped {
212
- max-height: 500px;
213
- overflow-y: auto;
214
- scrollbar-color: hotpink #0d1116;
215
- }
216
-
217
- .testDescription {
218
- color: #9c9c9c;
219
- }
220
-
221
- .secondaryButton {
222
- font-size: 0.75rem;
223
- padding: 2px 10px;
224
- }
225
-
226
- @keyframes rotation {
227
- 0% {
228
- transform: rotate(0deg);
229
- }
230
- 100% {
231
- transform: rotate(360deg);
232
- }
233
- }
234
- </style>
235
- </head>
236
- <body>
237
- <div class="container">
238
- <h1 style="text-align: center;">Live test private details</h1>
239
- <section>
240
- <h2>Context</h2>
241
- <div class="section_content">
242
- <ul>
243
- <li>Tester: <span class="monospace">{{ user }}</span></li>
244
- <li>Test date: <span class="monospace">{{ test_date }}</span></li>
245
- <li>Connector image: <span class="monospace">{{ connector_image }}</span></li>
246
- <li>Control version: <span class="monospace">{{ control_version }}</span></li>
247
- <li>Target version: <span class="monospace">{{ target_version }}</span></li>
248
- </ul>
249
- </div>
250
- </section>
251
- <section>
252
- <h2>Connections used for testing</h2>
253
- {% for connection_objects in all_connection_objects %}
254
- <div class="section_content">
255
- <h3>Details for {{ connection_objects['hashed_connection_id'] }} </h3>
256
- <ul>
257
- <li><b><a href="{{connection_objects["url"]}}" target="_blank">Connection in Airbyte Cloud</a></b></li>
258
- <li>Workpace ID: {{ connection_objects['workspace_id'] }}</li>
259
- <li>Connection ID: {{ connection_objects['connection_id']}}</li>
260
- </ul>
261
- <h3>Source configuration <button class="monospace secondaryButton" onclick="copyToClipboard('config')">📋 copy</button></h3>
262
- <p class="testDescription">The configuration object taken from the given connection that was passed to each version of the connector during the test.</p>
263
- <pre><code class="language-json" id="config">{{ connection_objects['source_config'] }}</code></pre>
264
- </div>
265
- {% endfor %}
266
- </section>
267
- <section>
268
- {% if not fully_generated %}
269
- <h2><span class="loader"></span>Requested URLs</h2>
270
- {% else%}
271
- <h2>Requested URLs</h2>
272
- {% endif %}
273
- <div class="section_content">
274
- {% for command, flows in requested_urls_per_command.items() %}
275
- <h3>{{ command.value.upper() }}</h3>
276
- {% if flows %}
277
- <div class="clipped">
278
- <table class="full-width">
279
- <thead>
280
- <tr>
281
- <th class="no-border"></th>
282
- <th>Control URL</th>
283
- <th>Target URL</th>
284
- </tr>
285
- </thead>
286
- <tbody>
287
- {% for index, control_url, target_url in flows %}
288
- <tr>
289
- <td class="monospace highlighted metric">{{ index }}</td>
290
- <td class="monospace">{{ control_url }}</td>
291
- <td class="monospace">{{ target_url }}</td>
292
- </tr>
293
- {% endfor %}
294
- </tbody>
295
- </table>
296
- </div>
297
- {% else %}
298
- <p>No URLs requested</p>
299
- {% endif %}
300
- {% endfor%}
301
- </div>
302
- </section>
303
- </div>
304
- </body>
305
- </html>