Skip to content

Commit 7e25778

Browse files
committed
fixed env
1 parent 082924f commit 7e25778

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

lab_13/create_table.ipynb

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,56 @@
432432
" credentials=credentials,\n",
433433
")"
434434
]
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+
]
435485
}
436486
],
437487
"metadata": {

lab_13/load_data.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import pydata_google_auth
44
from google.oauth2 import service_account
55
import os
6+
import json
67

78
import yfinance as yf # for downloading stock data
89

@@ -20,6 +21,7 @@ def get_bq_credentials():
2021

2122
# getting the credentials from the environment variable
2223
bq_credentials = os.environ.get('BQ_LAB13')
24+
bq_credentials = json.loads(bq_credentials)
2325
# as json file
2426
credentials = service_account.Credentials.from_service_account_info(
2527
bq_credentials,

0 commit comments

Comments
 (0)