|
432 | 432 | " credentials=credentials,\n",
|
433 | 433 | ")"
|
434 | 434 | ]
|
| 435 | + }, |
| 436 | + { |
| 437 | + "cell_type": "code", |
| 438 | + "execution_count": 12, |
| 439 | + "id": "8f2394ac", |
| 440 | + "metadata": {}, |
| 441 | + "outputs": [], |
| 442 | + "source": [ |
| 443 | + "import json" |
| 444 | + ] |
| 445 | + }, |
| 446 | + { |
| 447 | + "cell_type": "code", |
| 448 | + "execution_count": 13, |
| 449 | + "id": "589378e2", |
| 450 | + "metadata": {}, |
| 451 | + "outputs": [ |
| 452 | + { |
| 453 | + "ename": "JSONDecodeError", |
| 454 | + "evalue": "Invalid control character at: line 6 column 46 (char 179)", |
| 455 | + "output_type": "error", |
| 456 | + "traceback": [ |
| 457 | + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", |
| 458 | + "\u001b[1;31mJSONDecodeError\u001b[0m Traceback (most recent call last)", |
| 459 | + "Cell \u001b[1;32mIn[13], line 16\u001b[0m\n\u001b[0;32m 1\u001b[0m bq_credentials \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\"\"\u001b[39m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;124m{\u001b[39m\n\u001b[0;32m 3\u001b[0m \u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtype\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m: \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mservice_account\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m,\u001b[39m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[38;5;124m}\u001b[39m\n\u001b[0;32m 15\u001b[0m \u001b[38;5;124m\"\"\"\u001b[39m\n\u001b[1;32m---> 16\u001b[0m bq_credentials \u001b[38;5;241m=\u001b[39m \u001b[43mjson\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloads\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbq_credentials\u001b[49m\u001b[43m)\u001b[49m\n", |
| 460 | + "File \u001b[1;32m~\\anaconda3\\Lib\\json\\__init__.py:346\u001b[0m, in \u001b[0;36mloads\u001b[1;34m(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)\u001b[0m\n\u001b[0;32m 341\u001b[0m s \u001b[38;5;241m=\u001b[39m s\u001b[38;5;241m.\u001b[39mdecode(detect_encoding(s), \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msurrogatepass\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 343\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m object_hook \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[0;32m 344\u001b[0m parse_int \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m parse_float \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[0;32m 345\u001b[0m parse_constant \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m object_pairs_hook \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m kw):\n\u001b[1;32m--> 346\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_default_decoder\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdecode\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 347\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 348\u001b[0m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;241m=\u001b[39m JSONDecoder\n", |
| 461 | + "File \u001b[1;32m~\\anaconda3\\Lib\\json\\decoder.py:337\u001b[0m, in \u001b[0;36mJSONDecoder.decode\u001b[1;34m(self, s, _w)\u001b[0m\n\u001b[0;32m 332\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mdecode\u001b[39m(\u001b[38;5;28mself\u001b[39m, s, _w\u001b[38;5;241m=\u001b[39mWHITESPACE\u001b[38;5;241m.\u001b[39mmatch):\n\u001b[0;32m 333\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Return the Python representation of ``s`` (a ``str`` instance\u001b[39;00m\n\u001b[0;32m 334\u001b[0m \u001b[38;5;124;03m containing a JSON document).\u001b[39;00m\n\u001b[0;32m 335\u001b[0m \n\u001b[0;32m 336\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 337\u001b[0m obj, end \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mraw_decode\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43midx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m_w\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mend\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 338\u001b[0m end \u001b[38;5;241m=\u001b[39m _w(s, end)\u001b[38;5;241m.\u001b[39mend()\n\u001b[0;32m 339\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m end \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mlen\u001b[39m(s):\n", |
| 462 | + "File \u001b[1;32m~\\anaconda3\\Lib\\json\\decoder.py:353\u001b[0m, in \u001b[0;36mJSONDecoder.raw_decode\u001b[1;34m(self, s, idx)\u001b[0m\n\u001b[0;32m 344\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Decode a JSON document from ``s`` (a ``str`` beginning with\u001b[39;00m\n\u001b[0;32m 345\u001b[0m \u001b[38;5;124;03ma JSON document) and return a 2-tuple of the Python\u001b[39;00m\n\u001b[0;32m 346\u001b[0m \u001b[38;5;124;03mrepresentation and the index in ``s`` where the document ended.\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 350\u001b[0m \n\u001b[0;32m 351\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 352\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 353\u001b[0m obj, end \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mscan_once\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43midx\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 354\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n\u001b[0;32m 355\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m JSONDecodeError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mExpecting value\u001b[39m\u001b[38;5;124m\"\u001b[39m, s, err\u001b[38;5;241m.\u001b[39mvalue) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m\n", |
| 463 | + "\u001b[1;31mJSONDecodeError\u001b[0m: Invalid control character at: line 6 column 46 (char 179)" |
| 464 | + ] |
| 465 | + } |
| 466 | + ], |
| 467 | + "source": [ |
| 468 | + "bq_credentials = \"\"\"\n", |
| 469 | + "{\n", |
| 470 | + " \"type\": \"service_account\",\n", |
| 471 | + " \"project_id\": \"sipa-adv-c-roberto\",\n", |
| 472 | + " \"private_key_id\": \"876ad52d3ab1986becae68062b203d4546bd85ef\",\n", |
| 473 | + " \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDD4LnzefsyaYQK\\nmrEUxc7nwSywziFYaJCikTWnpMwGq63nJm0VlFOAHTQ+Bms1ctgN9sr3zR9T/1bY\\nbw6Cds4oAsTkZXDYippi8uRUvpLZtuQjUejEZISRXFZ3Yeeqq6hZrSrYR9f27IV0\\niBLRmiIICrsMh0N4LWnYuRU+IDJEfgovGw1B86YdYqN8wBFh/T+ewFnjEetv98Pr\\nojmRBas1/L4TI31C1shcbjTCcxxgfM/tURoDSRGQtlZVg+BLwsD+jO6/8I27B1+d\\nVDMcHKPfDbRxzJgKgGDRl6c1PbfEvF9Hx3P8dkz0UFbxN29mY+ZIEogdkbkqPn6W\\nTvd+ug/tAgMBAAECggEAHbo8Nm+3mCvL4pkeEW9A6srWR8IM7QA3nTiJCleYMFX7\\nV1atXQZNEuc7v8MVH8A9eocPQEL1A3g/26qlKtcxjAB5lckwcmi8rBI9ZYAjxN99\\nKcAbYbz4op//LnChKnWRYATIORlUNTEpwukI5B8ulYZdY3Ye3v0TcJUMXIih4GN1\\nkvMCHzaK3EBo6xXQMs9jY/UQm67OD7eDA9o333bqTevlz0VNhi/zUhsB5DsofhrI\\naYOTcrmWrzk6l/J8q5AOiXxHbFnxyvvVMu1SAqG1jfTILGl2U0aNOZ1hISqwn7Fd\\ngZ1yeU0Lt/+7tnX3oqu/888Z1hAtA2KTRObR5X260QKBgQDm7zREm9BVuLOC1AFx\\nawvRfyymzvNDvzB2pOKNlwvhDXoIMzgFLOLNlewquD0jN+ucHt+PBnJMKdbhttOs\\nfBMMeJyH2UoZpw0XcbYNiTbzK7EScvsjHQ7L6gwQqiPry3K6DN58rVvvC1M2uMpB\\nWxbIWMyHFvkkTf+zDnPxLMOk/QKBgQDZI27KMAU8pPi1iUr3/9vz6ky7FVGd+u3G\\nU8keTtPgacpq/1zbsyg1e69BUDLT0x2Aa/z84OYm74oN0qU/aVuTqsgkol6qXK9s\\ndhC/lJcegKlZWbC7E+MWdehk7NIvarkoehRdc6ANIRFCuwSpED1RHSTtLwfYrED9\\n4B932BABsQKBgFBUkvzuqmi3KBJxRtM6JlFIiLK5uFsvjV8n+frAuQwfEPz7PBho\\nxbg314AAuJugnx+eiauJ1YZy42F+pGESg9nJtsF2r1T/DAnEr0xEF848u4qsXnmX\\naQc7sdi2JmqmSZE4WshJ0Xn0mYymeQyE8AbfBL5VGnMrgq+5blFNffzNAoGAXqsp\\nGXO4RMl0Ocmi6t8daYnEbGiODf+h/S74Z4NcsuHMw7uUI6FHrZHARgyOLHZFzYDH\\nawUustkK6p3lN/FaYNY7rmUwOrxwKyyKfsxs2nqj2vXUrKut/VPov1/U/6FbGr+m\\n81t+81pwaRSaoo8W/K9lMxenJxtqtoUpkxmbWPECgYEA1rBy0zX5QZ/7xN7+pQ5Y\\nxwqHNMdQQ8WNEjgMLvA/vegWHlfVinsnvDYjRXtzTPjkYV+JEQ1JisII0G8PGA8T\\nkPQIl4jk35lTL3HAVaN3z5lrx9ccKqdlSa5T1+yKdXQiKJJ5ekaN2+k09ftpvvYO\\nzP3Bb7GfKNfgkl51Vdok1bE=\\n-----END PRIVATE KEY-----\\n\",\n", |
| 474 | + " \"client_email\": \"[email protected]\",\n", |
| 475 | + " \"client_id\": \"115701079677709179069\",\n", |
| 476 | + " \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n", |
| 477 | + " \"token_uri\": \"https://oauth2.googleapis.com/token\",\n", |
| 478 | + " \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n", |
| 479 | + " \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/lab13-example%40sipa-adv-c-roberto.iam.gserviceaccount.com\",\n", |
| 480 | + " \"universe_domain\": \"googleapis.com\"\n", |
| 481 | + "}\n", |
| 482 | + "\"\"\"\n", |
| 483 | + "bq_credentials = json.loads(bq_credentials)" |
| 484 | + ] |
435 | 485 | }
|
436 | 486 | ],
|
437 | 487 | "metadata": {
|
|
0 commit comments