Skip to content

Commit 8c1ca40

Browse files
author
Matt Sokoloff
committed
updated ndjson fetching to include latest helper functions
1 parent 8169d0a commit 8c1ca40

File tree

2 files changed

+71
-64
lines changed

2 files changed

+71
-64
lines changed

examples/model_assisted_labeling/debugging_mal.ipynb

Lines changed: 41 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,20 @@
5959
},
6060
{
6161
"cell_type": "code",
62-
"execution_count": null,
62+
"execution_count": 1,
6363
"id": "dimensional-celebrity",
6464
"metadata": {},
65-
"outputs": [],
65+
"outputs": [
66+
{
67+
"name": "stdout",
68+
"output_type": "stream",
69+
"text": [
70+
"zsh:1: command not found: pip\n",
71+
"zsh:1: command not found: pip\n",
72+
"zsh:1: command not found: pip\n"
73+
]
74+
}
75+
],
6676
"source": [
6777
"!pip install labelbox\n",
6878
"!pip install ndjson\n",
@@ -71,7 +81,7 @@
7181
},
7282
{
7383
"cell_type": "code",
74-
"execution_count": 6,
84+
"execution_count": 2,
7585
"id": "american-confusion",
7686
"metadata": {},
7787
"outputs": [],
@@ -89,7 +99,7 @@
8999
},
90100
{
91101
"cell_type": "code",
92-
"execution_count": 2,
102+
"execution_count": 3,
93103
"id": "indoor-pharmacy",
94104
"metadata": {},
95105
"outputs": [],
@@ -102,7 +112,7 @@
102112
},
103113
{
104114
"cell_type": "code",
105-
"execution_count": 3,
115+
"execution_count": 4,
106116
"id": "healthy-perry",
107117
"metadata": {},
108118
"outputs": [],
@@ -112,7 +122,7 @@
112122
},
113123
{
114124
"cell_type": "code",
115-
"execution_count": 4,
125+
"execution_count": 5,
116126
"id": "instrumental-ontario",
117127
"metadata": {},
118128
"outputs": [],
@@ -126,7 +136,7 @@
126136
},
127137
{
128138
"cell_type": "code",
129-
"execution_count": 7,
139+
"execution_count": 6,
130140
"id": "particular-blocking",
131141
"metadata": {},
132142
"outputs": [],
@@ -143,7 +153,7 @@
143153
},
144154
{
145155
"cell_type": "code",
146-
"execution_count": 8,
156+
"execution_count": 7,
147157
"id": "cross-assumption",
148158
"metadata": {},
149159
"outputs": [],
@@ -160,17 +170,17 @@
160170
},
161171
{
162172
"cell_type": "code",
163-
"execution_count": 9,
173+
"execution_count": 8,
164174
"id": "monetary-catalyst",
165175
"metadata": {},
166176
"outputs": [
167177
{
168178
"data": {
169179
"text/plain": [
170-
"'ckmtsvzx421fb0y62bbsmbavz'"
180+
"'ckmunvlqt4w9u0y625l7cd7zq'"
171181
]
172182
},
173-
"execution_count": 9,
183+
"execution_count": 8,
174184
"metadata": {},
175185
"output_type": "execute_result"
176186
}
@@ -181,7 +191,7 @@
181191
},
182192
{
183193
"cell_type": "code",
184-
"execution_count": 10,
194+
"execution_count": 9,
185195
"id": "designing-cricket",
186196
"metadata": {},
187197
"outputs": [
@@ -192,14 +202,14 @@
192202
"traceback": [
193203
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
194204
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
195-
"\u001b[0;32m~/Library/Python/3.8/lib/python/site-packages/labelbox/schema/bulk_import_request.py\u001b[0m in \u001b[0;36m_validate_ndjson\u001b[0;34m(lines, project)\u001b[0m\n\u001b[1;32m 346\u001b[0m \u001b[0mannotation\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mNDAnnotation\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 347\u001b[0;31m \u001b[0mannotation\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidate_instance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata_row_ids\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeature_schemas\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 348\u001b[0m \u001b[0muuid\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mannotation\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muuid\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
196-
"\u001b[0;32m~/Library/Python/3.8/lib/python/site-packages/labelbox/schema/bulk_import_request.py\u001b[0m in \u001b[0;36mvalidate_instance\u001b[0;34m(self, valid_datarows, valid_feature_schemas)\u001b[0m\n\u001b[1;32m 545\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidate_feature_schemas\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalid_feature_schemas\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 546\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidate_datarow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalid_datarows\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 547\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
197-
"\u001b[0;32m~/Library/Python/3.8/lib/python/site-packages/labelbox/schema/bulk_import_request.py\u001b[0m in \u001b[0;36mvalidate_datarow\u001b[0;34m(self, valid_datarows)\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataRow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mid\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mvalid_datarows\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 529\u001b[0;31m raise ValueError(\n\u001b[0m\u001b[1;32m 530\u001b[0m \u001b[0;34mf\"datarow {self.dataRow.id} is not attached to the specified project\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
205+
"\u001b[0;32m~/Library/Python/3.8/lib/python/site-packages/labelbox/schema/bulk_import_request.py\u001b[0m in \u001b[0;36m_validate_ndjson\u001b[0;34m(lines, project)\u001b[0m\n\u001b[1;32m 401\u001b[0m \u001b[0mannotation\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mNDAnnotation\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 402\u001b[0;31m \u001b[0mannotation\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidate_instance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata_row_ids\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeature_schemas\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 403\u001b[0m \u001b[0muuid\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mannotation\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muuid\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
206+
"\u001b[0;32m~/Library/Python/3.8/lib/python/site-packages/labelbox/schema/bulk_import_request.py\u001b[0m in \u001b[0;36mvalidate_instance\u001b[0;34m(self, valid_datarows, valid_feature_schemas)\u001b[0m\n\u001b[1;32m 600\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidate_feature_schemas\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalid_feature_schemas\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 601\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidate_datarow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalid_datarows\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 602\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
207+
"\u001b[0;32m~/Library/Python/3.8/lib/python/site-packages/labelbox/schema/bulk_import_request.py\u001b[0m in \u001b[0;36mvalidate_datarow\u001b[0;34m(self, valid_datarows)\u001b[0m\n\u001b[1;32m 583\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataRow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mid\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mvalid_datarows\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 584\u001b[0;31m raise ValueError(\n\u001b[0m\u001b[1;32m 585\u001b[0m \u001b[0;34mf\"datarow {self.dataRow.id} is not attached to the specified project\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
198208
"\u001b[0;31mValueError\u001b[0m: datarow cjxav4aa07r1g0dsq70t9eveg is not attached to the specified project",
199209
"\nThe above exception was the direct cause of the following exception:\n",
200210
"\u001b[0;31mMALValidationError\u001b[0m Traceback (most recent call last)",
201-
"\u001b[0;32m<ipython-input-10-9b20d211103c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0m_validate_ndjson\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mpoly_example\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproject\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
202-
"\u001b[0;32m~/Library/Python/3.8/lib/python/site-packages/labelbox/schema/bulk_import_request.py\u001b[0m in \u001b[0;36m_validate_ndjson\u001b[0;34m(lines, project)\u001b[0m\n\u001b[1;32m 353\u001b[0m \u001b[0muids\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muuid\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 354\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mpydantic\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mValidationError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 355\u001b[0;31m raise labelbox.exceptions.MALValidationError(\n\u001b[0m\u001b[1;32m 356\u001b[0m f\"Invalid NDJson on line {idx}\") from e\n\u001b[1;32m 357\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
211+
"\u001b[0;32m<ipython-input-9-9b20d211103c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0m_validate_ndjson\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mpoly_example\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproject\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
212+
"\u001b[0;32m~/Library/Python/3.8/lib/python/site-packages/labelbox/schema/bulk_import_request.py\u001b[0m in \u001b[0;36m_validate_ndjson\u001b[0;34m(lines, project)\u001b[0m\n\u001b[1;32m 408\u001b[0m \u001b[0muids\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muuid\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 409\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mpydantic\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mValidationError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 410\u001b[0;31m raise labelbox.exceptions.MALValidationError(\n\u001b[0m\u001b[1;32m 411\u001b[0m f\"Invalid NDJson on line {idx}\") from e\n\u001b[1;32m 412\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
203213
"\u001b[0;31mMALValidationError\u001b[0m: Invalid NDJson on line 0('Invalid NDJson on line 0', None)"
204214
]
205215
}
@@ -222,7 +232,7 @@
222232
},
223233
{
224234
"cell_type": "code",
225-
"execution_count": 11,
235+
"execution_count": 10,
226236
"id": "thick-juvenile",
227237
"metadata": {},
228238
"outputs": [],
@@ -242,43 +252,31 @@
242252
},
243253
{
244254
"cell_type": "code",
245-
"execution_count": 12,
255+
"execution_count": 11,
246256
"id": "stock-correction",
247257
"metadata": {},
248258
"outputs": [
249259
{
250-
"data": {
251-
"text/plain": [
252-
"[{'uuid': '1b5762e9-416c-44cf-9a5f-07effb51f863',\n",
253-
" 'dataRow': {'id': 'cjxav4aa07r1g0dsq70t9eveg'},\n",
254-
" 'status': 'FAILURE',\n",
255-
" 'errors': [{'name': 'DataRowNotFound',\n",
256-
" 'message': 'dataRow.id cjxav4aa07r1g0dsq70t9eveg invalid',\n",
257-
" 'additionalInfo': None}]},\n",
258-
" {'uuid': '1b5762e9-416c-44cf-9a5f-07effb51f863',\n",
259-
" 'dataRow': {'id': 'cjxav4aa07r1g0dsq70t9eveg'},\n",
260-
" 'status': 'FAILURE',\n",
261-
" 'errors': [{'name': 'DataRowNotFound',\n",
262-
" 'message': 'dataRow.id cjxav4aa07r1g0dsq70t9eveg invalid',\n",
263-
" 'additionalInfo': None},\n",
264-
" {'name': 'GeometryInvalid',\n",
265-
" 'message': 'Invalid geometry: Each linear ring must contain at least 4 positions',\n",
266-
" 'additionalInfo': None}]}]"
267-
]
268-
},
269-
"execution_count": 12,
270-
"metadata": {},
271-
"output_type": "execute_result"
260+
"name": "stdout",
261+
"output_type": "stream",
262+
"text": [
263+
"{'uuid': '1b5762e9-416c-44cf-9a5f-07effb51f863', 'dataRow': {'id': 'cjxav4aa07r1g0dsq70t9eveg'}, 'status': 'FAILURE', 'errors': [{'name': 'DataRowNotFound', 'message': 'dataRow.id cjxav4aa07r1g0dsq70t9eveg invalid', 'additionalInfo': None}]}\n",
264+
"{'uuid': '1b5762e9-416c-44cf-9a5f-07effb51f863', 'dataRow': {'id': 'cjxav4aa07r1g0dsq70t9eveg'}, 'status': 'FAILURE', 'errors': [{'name': 'DataRowNotFound', 'message': 'dataRow.id cjxav4aa07r1g0dsq70t9eveg invalid', 'additionalInfo': None}, {'name': 'GeometryInvalid', 'message': 'Invalid geometry: Each linear ring must contain at least 4 positions', 'additionalInfo': None}]}\n"
265+
]
272266
}
273267
],
274268
"source": [
275269
"# Let's check the status:\n",
276-
"ndjson.loads(requests.get(bulk_import_request.status_file_url).text)"
270+
"for status in bulk_import_request.statuses:\n",
271+
" print(status)\n",
272+
" \n",
273+
"for error in bulk_import_request.errors:\n",
274+
" print(error)"
277275
]
278276
},
279277
{
280278
"cell_type": "code",
281-
"execution_count": 13,
279+
"execution_count": null,
282280
"id": "square-david",
283281
"metadata": {},
284282
"outputs": [],

examples/model_assisted_labeling/mal_introduction.ipynb

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
},
4747
{
4848
"cell_type": "code",
49-
"execution_count": null,
49+
"execution_count": 2,
5050
"id": "guided-arthritis",
5151
"metadata": {},
5252
"outputs": [],
@@ -64,7 +64,7 @@
6464
},
6565
{
6666
"cell_type": "code",
67-
"execution_count": null,
67+
"execution_count": 3,
6868
"id": "agricultural-happening",
6969
"metadata": {},
7070
"outputs": [],
@@ -77,7 +77,7 @@
7777
},
7878
{
7979
"cell_type": "code",
80-
"execution_count": null,
80+
"execution_count": 4,
8181
"id": "preliminary-benchmark",
8282
"metadata": {},
8383
"outputs": [],
@@ -107,7 +107,7 @@
107107
},
108108
{
109109
"cell_type": "code",
110-
"execution_count": 34,
110+
"execution_count": 5,
111111
"id": "advanced-trash",
112112
"metadata": {},
113113
"outputs": [],
@@ -157,7 +157,7 @@
157157
},
158158
{
159159
"cell_type": "code",
160-
"execution_count": 22,
160+
"execution_count": 6,
161161
"id": "framed-gateway",
162162
"metadata": {},
163163
"outputs": [],
@@ -188,7 +188,7 @@
188188
},
189189
{
190190
"cell_type": "code",
191-
"execution_count": 23,
191+
"execution_count": 7,
192192
"id": "collaborative-lawyer",
193193
"metadata": {},
194194
"outputs": [],
@@ -207,23 +207,14 @@
207207
},
208208
{
209209
"cell_type": "code",
210-
"execution_count": 24,
210+
"execution_count": 8,
211211
"id": "duplicate-initial",
212212
"metadata": {},
213-
"outputs": [
214-
{
215-
"name": "stdout",
216-
"output_type": "stream",
217-
"text": [
218-
"{\"uuid\": \"fd14e9ef-6bf9-4300-bf2a-7e85f4f0b009\", \"schemaId\": \"ckmui64il0s4d0y5rfjvd8v4v\", \"dataRow\": {\"id\": \"ckmui63lo49gd0y62fampaew4\"}, \"bbox\": {\"top\": 30, \"left\": 30, \"height\": 200, \"width\": 200}}\n"
219-
]
220-
}
221-
],
213+
"outputs": [],
222214
"source": [
223215
"with open(\"/tmp/example.ndjson\") as file:\n",
224216
" content = file.read()\n",
225-
"response = client.upload_data(content = content, sign = True)\n",
226-
"ndjson_url = response.json()['data']"
217+
"ndjson_url = client.upload_data(content = content, sign = True)"
227218
]
228219
},
229220
{
@@ -252,7 +243,6 @@
252243
"metadata": {},
253244
"outputs": [],
254245
"source": [
255-
"annotations = [{}]\n",
256246
"upload_job = project.upload_annotations(\n",
257247
" name=\"upload_py_object_job\",\n",
258248
" annotations=annotations\n",
@@ -306,7 +296,7 @@
306296
"source": [
307297
"upload_job = project.upload_annotations(\n",
308298
" name=\"upload_remote_ndjson_job\",\n",
309-
" annotations=file_data['uploadFile']['url'])"
299+
" annotations=ndjson_url)"
310300
]
311301
},
312302
{
@@ -324,8 +314,11 @@
324314
}
325315
],
326316
"source": [
327-
"#Wait for the jobs to finish\n",
317+
"# Wait for the jobs to finish\n",
328318
"upload_job.wait_until_done()\n",
319+
"#See https://github.com/Labelbox/labelbox-python/blob/develop/labelbox/schema/enums.py\n",
320+
"# for possible states\n",
321+
"print(\"State\", upload_job.state)\n",
329322
"print(\"Visit the following and click start labeling to see the uploaded example:\", f\"https://app.labelbox.com/projects/{project.uid}\")"
330323
]
331324
},
@@ -369,6 +362,22 @@
369362
"!wget -O- --user-agent='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36' \\\n",
370363
" $upload_file_url | cat"
371364
]
365+
},
366+
{
367+
"cell_type": "code",
368+
"execution_count": null,
369+
"id": "welsh-nutrition",
370+
"metadata": {},
371+
"outputs": [],
372+
"source": [
373+
"# Error for each annotation that failed. \n",
374+
"# Empty list means that there were no errors\n",
375+
"print(\"Errors:\", upload_job.errors) \n",
376+
"# Status for each ndjson annotation\n",
377+
"print(\"Statuses\", upload_job.statuses)\n",
378+
"# The ndjson you uploaded\n",
379+
"print(\"inputs\", upload_job.inputs)"
380+
]
372381
}
373382
],
374383
"metadata": {

0 commit comments

Comments
 (0)