Нема описа

network.ipynb 47KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 37,
  6. "metadata": {
  7. "scrolled": true
  8. },
  9. "outputs": [
  10. {
  11. "name": "stdout",
  12. "output_type": "stream",
  13. "text": [
  14. "WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.\n",
  15. "Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.\n",
  16. "To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.\n",
  17. "Requirement already satisfied: pip in /home/tum/snap/jupyter/common/lib/python3.7/site-packages (23.3.2)\n",
  18. "Requirement already satisfied: setuptools in /home/tum/snap/jupyter/common/lib/python3.7/site-packages (68.0.0)\n",
  19. "Requirement already satisfied: wheel in /home/tum/snap/jupyter/common/lib/python3.7/site-packages (0.42.0)\n"
  20. ]
  21. }
  22. ],
  23. "source": [
  24. "!pip install --upgrade pip setuptools wheel"
  25. ]
  26. },
  27. {
  28. "cell_type": "code",
  29. "execution_count": 38,
  30. "metadata": {
  31. "scrolled": false
  32. },
  33. "outputs": [
  34. {
  35. "name": "stdout",
  36. "output_type": "stream",
  37. "text": [
  38. "WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.\n",
  39. "Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.\n",
  40. "To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.\n",
  41. "Requirement already satisfied: p5py in /home/tum/snap/jupyter/common/lib/python3.7/site-packages (1.0.0)\n",
  42. "Requirement already satisfied: PEP517 in /home/tum/snap/jupyter/common/lib/python3.7/site-packages (0.13.1)\n",
  43. "Requirement already satisfied: pymongo in /home/tum/snap/jupyter/common/lib/python3.7/site-packages (4.6.1)\n",
  44. "Requirement already satisfied: pandas in /home/tum/snap/jupyter/common/lib/python3.7/site-packages (1.3.5)\n",
  45. "Requirement already satisfied: tomli>=1.1.0 in /home/tum/snap/jupyter/common/lib/python3.7/site-packages (from PEP517) (2.0.1)\n",
  46. "Requirement already satisfied: importlib_metadata in /home/tum/snap/jupyter/common/lib/python3.7/site-packages (from PEP517) (6.7.0)\n",
  47. "Requirement already satisfied: zipp in /home/tum/snap/jupyter/common/lib/python3.7/site-packages (from PEP517) (3.15.0)\n",
  48. "Requirement already satisfied: dnspython<3.0.0,>=1.16.0 in /home/tum/snap/jupyter/common/lib/python3.7/site-packages (from pymongo) (2.3.0)\n",
  49. "Requirement already satisfied: python-dateutil>=2.7.3 in /snap/jupyter/6/lib/python3.7/site-packages (from pandas) (2.8.0)\n",
  50. "Requirement already satisfied: pytz>=2017.3 in /home/tum/snap/jupyter/common/lib/python3.7/site-packages (from pandas) (2023.3.post1)\n",
  51. "Requirement already satisfied: numpy>=1.17.3 in /home/tum/snap/jupyter/common/lib/python3.7/site-packages (from pandas) (1.21.6)\n",
  52. "Requirement already satisfied: six>=1.5 in /snap/jupyter/6/lib/python3.7/site-packages (from python-dateutil>=2.7.3->pandas) (1.12.0)\n",
  53. "Requirement already satisfied: typing-extensions>=3.6.4 in /home/tum/snap/jupyter/common/lib/python3.7/site-packages (from importlib_metadata->PEP517) (4.7.1)\n"
  54. ]
  55. }
  56. ],
  57. "source": [
  58. "!pip install p5py PEP517 pymongo pandas"
  59. ]
  60. },
  61. {
  62. "cell_type": "code",
  63. "execution_count": 39,
  64. "metadata": {},
  65. "outputs": [],
  66. "source": [
  67. "from pymongo import MongoClient\n",
  68. "import pandas as pd"
  69. ]
  70. },
  71. {
  72. "cell_type": "code",
  73. "execution_count": 40,
  74. "metadata": {
  75. "scrolled": true
  76. },
  77. "outputs": [
  78. {
  79. "data": {
  80. "text/plain": [
  81. "MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True)"
  82. ]
  83. },
  84. "execution_count": 40,
  85. "metadata": {},
  86. "output_type": "execute_result"
  87. }
  88. ],
  89. "source": [
  90. "client = MongoClient(\"mongodb://localhost\")\n",
  91. "client"
  92. ]
  93. },
  94. {
  95. "cell_type": "code",
  96. "execution_count": 41,
  97. "metadata": {},
  98. "outputs": [
  99. {
  100. "data": {
  101. "text/plain": [
  102. "['admin', 'config', 'local']"
  103. ]
  104. },
  105. "execution_count": 41,
  106. "metadata": {},
  107. "output_type": "execute_result"
  108. }
  109. ],
  110. "source": [
  111. "client.list_database_names()"
  112. ]
  113. },
  114. {
  115. "cell_type": "code",
  116. "execution_count": 42,
  117. "metadata": {},
  118. "outputs": [],
  119. "source": [
  120. "db = client.network_report"
  121. ]
  122. },
  123. {
  124. "cell_type": "code",
  125. "execution_count": 43,
  126. "metadata": {
  127. "scrolled": true
  128. },
  129. "outputs": [
  130. {
  131. "data": {
  132. "text/plain": [
  133. "[]"
  134. ]
  135. },
  136. "execution_count": 43,
  137. "metadata": {},
  138. "output_type": "execute_result"
  139. }
  140. ],
  141. "source": [
  142. "db.list_collection_names()"
  143. ]
  144. },
  145. {
  146. "cell_type": "code",
  147. "execution_count": 44,
  148. "metadata": {},
  149. "outputs": [
  150. {
  151. "data": {
  152. "text/plain": [
  153. "0"
  154. ]
  155. },
  156. "execution_count": 44,
  157. "metadata": {},
  158. "output_type": "execute_result"
  159. }
  160. ],
  161. "source": [
  162. "c = db['exfo_api'].find()\n",
  163. "len(list(c))"
  164. ]
  165. },
  166. {
  167. "cell_type": "code",
  168. "execution_count": null,
  169. "metadata": {
  170. "scrolled": false
  171. },
  172. "outputs": [],
  173. "source": [
  174. "all_result = list(db['exfo_api'].find({'ids.sla_id': 1350}))\n",
  175. "all_df = pd.DataFrame(all_result)\n",
  176. "all_df['ids']"
  177. ]
  178. },
  179. {
  180. "cell_type": "code",
  181. "execution_count": 20,
  182. "metadata": {},
  183. "outputs": [
  184. {
  185. "ename": "AutoReconnect",
  186. "evalue": "localhost:27017: connection closed (configured timeouts: connectTimeoutMS: 20000.0ms)",
  187. "output_type": "error",
  188. "traceback": [
  189. "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
  190. "\u001b[0;31mOSError\u001b[0m Traceback (most recent call last)",
  191. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/pool.py\u001b[0m in \u001b[0;36mreceive_message\u001b[0;34m(self, request_id)\u001b[0m\n\u001b[1;32m 1019\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1020\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mreceive_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest_id\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax_message_size\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 1021\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mBaseException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merror\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  192. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/network.py\u001b[0m in \u001b[0;36mreceive_message\u001b[0;34m(conn, request_id, max_message_size)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0;31m# Ignore the response's request id.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 257\u001b[0;31m \u001b[0mlength\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse_to\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mop_code\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_UNPACK_HEADER\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_receive_data_on_socket\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m16\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdeadline\u001b[0m\u001b[0;34m)\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 258\u001b[0m \u001b[0;31m# No request_id for exhaust cursor \"getMore\".\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  193. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/network.py\u001b[0m in \u001b[0;36m_receive_data_on_socket\u001b[0;34m(conn, length, deadline)\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mchunk_length\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 348\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mOSError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"connection closed\"\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 349\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
  194. "\u001b[0;31mOSError\u001b[0m: connection closed",
  195. "\nThe above exception was the direct cause of the following exception:\n",
  196. "\u001b[0;31mAutoReconnect\u001b[0m Traceback (most recent call last)",
  197. "\u001b[0;32m<ipython-input-20-a4ba2bdec62f>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mr0\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdb\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'exfo_api'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m'test_status_result'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m{\u001b[0m \u001b[0;34m'$exists'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'$ne'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m}\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msort\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"created\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlimit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\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 2\u001b[0m \u001b[0mr0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  198. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/cursor.py\u001b[0m in \u001b[0;36mnext\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1262\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__empty\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1263\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mStopIteration\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1264\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__data\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_refresh\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\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 1265\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__data\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpopleft\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1266\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  199. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/cursor.py\u001b[0m in \u001b[0;36m_refresh\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1179\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__exhaust\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1180\u001b[0m )\n\u001b[0;32m-> 1181\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__send_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mq\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 1182\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__id\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# Get More\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1183\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__limit\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  200. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/cursor.py\u001b[0m in \u001b[0;36m__send_message\u001b[0;34m(self, operation)\u001b[0m\n\u001b[1;32m 1059\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1060\u001b[0m response = client._run_operation(\n\u001b[0;32m-> 1061\u001b[0;31m \u001b[0moperation\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_unpack_response\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maddress\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__address\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1062\u001b[0m )\n\u001b[1;32m 1063\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOperationFailure\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mexc\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  201. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/_csot.py\u001b[0m in \u001b[0;36mcsot_wrapper\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0m_TimeoutContext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 106\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 107\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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 108\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 109\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mF\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcsot_wrapper\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  202. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/mongo_client.py\u001b[0m in \u001b[0;36m_run_operation\u001b[0;34m(self, operation, unpack_res, address)\u001b[0m\n\u001b[1;32m 1397\u001b[0m \u001b[0moperation\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msession\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1398\u001b[0m \u001b[0maddress\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0maddress\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1399\u001b[0;31m \u001b[0mretryable\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moperation\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmessage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_Query\u001b[0m\u001b[0;34m)\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 1400\u001b[0m )\n\u001b[1;32m 1401\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
  203. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/mongo_client.py\u001b[0m in \u001b[0;36m_retryable_read\u001b[0;34m(self, func, read_pref, session, address, retryable)\u001b[0m\n\u001b[1;32m 1497\u001b[0m \u001b[0maddress\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0maddress\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1498\u001b[0m \u001b[0mread_pref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mread_pref\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1499\u001b[0;31m \u001b[0mretryable\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mretryable\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 1500\u001b[0m )\n\u001b[1;32m 1501\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
  204. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/_csot.py\u001b[0m in \u001b[0;36mcsot_wrapper\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0m_TimeoutContext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 106\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 107\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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 108\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 109\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mF\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcsot_wrapper\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  205. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/mongo_client.py\u001b[0m in \u001b[0;36m_retry_internal\u001b[0;34m(self, func, session, bulk, is_read, address, read_pref, retryable)\u001b[0m\n\u001b[1;32m 1459\u001b[0m \u001b[0mread_pref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mread_pref\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1460\u001b[0m \u001b[0maddress\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0maddress\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1461\u001b[0;31m \u001b[0mretryable\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mretryable\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 1462\u001b[0m ).run()\n\u001b[1;32m 1463\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
  206. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/mongo_client.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 2318\u001b[0m \u001b[0;31m# if we raise ServerSelectionTimeoutError on the retry\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2319\u001b[0m \u001b[0;31m# attempt. Raise the original exception instead.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2320\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_check_last_error\u001b[0m\u001b[0;34m(\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 2321\u001b[0m \u001b[0;31m# A ServerSelectionTimeoutError error indicates that there may\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2322\u001b[0m \u001b[0;31m# be a persistent outage. Attempting to retry in this case will\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  207. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/mongo_client.py\u001b[0m in \u001b[0;36m_check_last_error\u001b[0;34m(self, check_csot)\u001b[0m\n\u001b[1;32m 2390\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mcheck_csot\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mremaining\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mremaining\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2391\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_last_error\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2392\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_last_error\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2393\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2394\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_get_server\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mServer\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  208. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/mongo_client.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 2313\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_check_last_error\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcheck_csot\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2314\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2315\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_is_read\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_write\u001b[0m\u001b[0;34m(\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 2316\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mServerSelectionTimeoutError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2317\u001b[0m \u001b[0;31m# The application may think the write was never attempted\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  209. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/mongo_client.py\u001b[0m in \u001b[0;36m_read\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 2443\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_retrying\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_retryable\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2444\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_check_last_error\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2445\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_session\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_server\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mread_pref\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2446\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2447\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
  210. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/mongo_client.py\u001b[0m in \u001b[0;36m_cmd\u001b[0;34m(_session, server, conn, read_preference)\u001b[0m\n\u001b[1;32m 1389\u001b[0m \u001b[0moperation\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# Reset op in case of retry.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1390\u001b[0m return server.run_operation(\n\u001b[0;32m-> 1391\u001b[0;31m \u001b[0mconn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moperation\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mread_preference\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_event_listeners\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0munpack_res\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1392\u001b[0m )\n\u001b[1;32m 1393\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
  211. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/helpers.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 320\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 321\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 322\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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 323\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mOperationFailure\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mexc\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 324\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mno_reauth\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  212. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/server.py\u001b[0m in \u001b[0;36mrun_operation\u001b[0;34m(self, conn, operation, read_preference, listeners, unpack_res)\u001b[0m\n\u001b[1;32m 146\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 147\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmax_doc_size\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 148\u001b[0;31m \u001b[0mreply\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreceive_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrequest_id\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 149\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 150\u001b[0m \u001b[0;31m# Unpack and check for command errors.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  213. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/pool.py\u001b[0m in \u001b[0;36mreceive_message\u001b[0;34m(self, request_id)\u001b[0m\n\u001b[1;32m 1020\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mreceive_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest_id\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax_message_size\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1021\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mBaseException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merror\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1022\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_raise_connection_failure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merror\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 1023\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1024\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_raise_if_not_writable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0munacknowledged\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  214. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/pool.py\u001b[0m in \u001b[0;36m_raise_connection_failure\u001b[0;34m(self, error)\u001b[0m\n\u001b[1;32m 1169\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0merror\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mIOError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mOSError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mSSLError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1170\u001b[0m \u001b[0mdetails\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_get_timeout_details\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopts\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1171\u001b[0;31m \u001b[0m_raise_connection_failure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maddress\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merror\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout_details\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdetails\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 1172\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1173\u001b[0m \u001b[0;32mraise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  215. "\u001b[0;32m/home/tum/snap/jupyter/common/lib/python3.7/site-packages/pymongo/pool.py\u001b[0m in \u001b[0;36m_raise_connection_failure\u001b[0;34m(address, error, msg_prefix, timeout_details)\u001b[0m\n\u001b[1;32m 409\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mNetworkTimeout\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0merror\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 410\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 411\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mAutoReconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0merror\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 412\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 413\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
  216. "\u001b[0;31mAutoReconnect\u001b[0m: localhost:27017: connection closed (configured timeouts: connectTimeoutMS: 20000.0ms)"
  217. ]
  218. }
  219. ],
  220. "source": [
  221. "r0 = list(db['exfo_api'].find({'test_status_result': { '$exists': True, '$ne': [] }}).sort(\"created\", -1).limit(10))\n",
  222. "r0"
  223. ]
  224. },
  225. {
  226. "cell_type": "code",
  227. "execution_count": 18,
  228. "metadata": {},
  229. "outputs": [
  230. {
  231. "data": {
  232. "text/plain": [
  233. "[]"
  234. ]
  235. },
  236. "execution_count": 18,
  237. "metadata": {},
  238. "output_type": "execute_result"
  239. }
  240. ],
  241. "source": [
  242. "r0 = list(db['exfo_api'].find({'test_status_result': { '$exists': True, '$ne': [] }, 'ids':{'sla_name': {'$regex': '*POC*'}}}).sort(\"created\", -1).limit(10))\n",
  243. "r0"
  244. ]
  245. },
  246. {
  247. "cell_type": "code",
  248. "execution_count": null,
  249. "metadata": {},
  250. "outputs": [],
  251. "source": [
  252. "r0 = list(db['exfo_api'].find({'test_status_result': { '$exists': True, '$ne': [] }}).sort(\"created\", -1).limit(10))\n",
  253. "pd.json_normalize(r0, ['test_status_result','status', 'results_scores'], ['test_status_result','test_instance_id'], errors='ignore')"
  254. ]
  255. },
  256. {
  257. "cell_type": "code",
  258. "execution_count": 13,
  259. "metadata": {},
  260. "outputs": [
  261. {
  262. "name": "stdout",
  263. "output_type": "stream",
  264. "text": [
  265. "30\n",
  266. "666\n",
  267. "30\n"
  268. ]
  269. }
  270. ],
  271. "source": [
  272. "from pprint import pprint\n",
  273. "list_test_status_result = list(db['exfo_api'].find({'test_status_result': { '$exists': True, '$ne': [] }}, {'test_status_result':1, 'ids': 1}).sort(\"created\", -1).limit(30))\n",
  274. "print(len(list_test_status_result))\n",
  275. "data = []\n",
  276. "data2 = []\n",
  277. "for l in list_test_status_result:\n",
  278. " data = data + l['test_status_result']\n",
  279. " data2.append(l['ids'])\n",
  280. "print(len(data))\n",
  281. "print(len(data2))"
  282. ]
  283. },
  284. {
  285. "cell_type": "code",
  286. "execution_count": 14,
  287. "metadata": {
  288. "scrolled": true
  289. },
  290. "outputs": [
  291. {
  292. "name": "stdout",
  293. "output_type": "stream",
  294. "text": [
  295. "666\n"
  296. ]
  297. }
  298. ],
  299. "source": [
  300. "df0 = pd.json_normalize(data)\n",
  301. "df0\n",
  302. "print(len(data))"
  303. ]
  304. },
  305. {
  306. "cell_type": "code",
  307. "execution_count": 15,
  308. "metadata": {},
  309. "outputs": [
  310. {
  311. "data": {
  312. "text/plain": [
  313. "array(['ATP-Expansion BRIX', 'BV110_NMA', 'BV110_KKN', 'BV110_HYI',\n",
  314. " 'BV110_SNI', 'BV1100_BRK', 'BV110_PTY', 'BV110_CMI', 'BV110_NWS',\n",
  315. " 'BV110_PLK', 'BV110_RBI'], dtype=object)"
  316. ]
  317. },
  318. "execution_count": 15,
  319. "metadata": {},
  320. "output_type": "execute_result"
  321. }
  322. ],
  323. "source": [
  324. "df0['sla_name'].unique()"
  325. ]
  326. },
  327. {
  328. "cell_type": "code",
  329. "execution_count": null,
  330. "metadata": {
  331. "scrolled": true
  332. },
  333. "outputs": [],
  334. "source": [
  335. "df0['sla_name'].unique()"
  336. ]
  337. },
  338. {
  339. "cell_type": "code",
  340. "execution_count": null,
  341. "metadata": {
  342. "scrolled": true
  343. },
  344. "outputs": [],
  345. "source": [
  346. "len(data2)"
  347. ]
  348. },
  349. {
  350. "cell_type": "code",
  351. "execution_count": null,
  352. "metadata": {},
  353. "outputs": [],
  354. "source": [
  355. "df_ids = pd.json_normalize(data2)\n",
  356. "df_ids"
  357. ]
  358. },
  359. {
  360. "cell_type": "code",
  361. "execution_count": null,
  362. "metadata": {
  363. "scrolled": true
  364. },
  365. "outputs": [],
  366. "source": [
  367. "df = pd.json_normalize(data, record_path=['status', 'results_scores'], \n",
  368. " meta=['test_instance_id', ['status','time_stamp_display']], errors='ignore')\n",
  369. "df"
  370. ]
  371. },
  372. {
  373. "cell_type": "code",
  374. "execution_count": null,
  375. "metadata": {
  376. "scrolled": true
  377. },
  378. "outputs": [],
  379. "source": [
  380. "df3 = pd.merge(df0, df, on='test_instance_id')\n",
  381. "df3"
  382. ]
  383. },
  384. {
  385. "cell_type": "code",
  386. "execution_count": null,
  387. "metadata": {
  388. "scrolled": true
  389. },
  390. "outputs": [],
  391. "source": [
  392. "df3.drop(['status'], axis=1)"
  393. ]
  394. },
  395. {
  396. "cell_type": "code",
  397. "execution_count": null,
  398. "metadata": {
  399. "scrolled": true
  400. },
  401. "outputs": [],
  402. "source": [
  403. "df3.query('test_instance_class_id == 1554')"
  404. ]
  405. },
  406. {
  407. "cell_type": "code",
  408. "execution_count": null,
  409. "metadata": {
  410. "scrolled": true
  411. },
  412. "outputs": [],
  413. "source": [
  414. "ping_test = df3.query(\"`service.service_name` == 'Ping test'\").drop([\"status\"],axis=1)\n",
  415. "ping_test"
  416. ]
  417. },
  418. {
  419. "cell_type": "code",
  420. "execution_count": null,
  421. "metadata": {},
  422. "outputs": [],
  423. "source": [
  424. "ping_test.to_excel(\"ping_test.xlsx\")"
  425. ]
  426. },
  427. {
  428. "cell_type": "code",
  429. "execution_count": null,
  430. "metadata": {
  431. "scrolled": true
  432. },
  433. "outputs": [],
  434. "source": [
  435. "ping_test.dtypes\n",
  436. "ping_test.columns"
  437. ]
  438. },
  439. {
  440. "cell_type": "code",
  441. "execution_count": null,
  442. "metadata": {},
  443. "outputs": [],
  444. "source": [
  445. "ping_test[\"service.service_name\"]"
  446. ]
  447. },
  448. {
  449. "cell_type": "code",
  450. "execution_count": null,
  451. "metadata": {},
  452. "outputs": [],
  453. "source": [
  454. "df3['status'][0]"
  455. ]
  456. },
  457. {
  458. "cell_type": "code",
  459. "execution_count": null,
  460. "metadata": {},
  461. "outputs": [],
  462. "source": [
  463. "df3.dtypes"
  464. ]
  465. },
  466. {
  467. "cell_type": "code",
  468. "execution_count": null,
  469. "metadata": {
  470. "scrolled": true
  471. },
  472. "outputs": [],
  473. "source": [
  474. "df3"
  475. ]
  476. },
  477. {
  478. "cell_type": "code",
  479. "execution_count": null,
  480. "metadata": {},
  481. "outputs": [],
  482. "source": [
  483. "df3[\"value_score\"] = df[[\"raw_value\",\"score\"]].astype(str).agg(\"/\".join, axis=1)\n",
  484. "df3"
  485. ]
  486. },
  487. {
  488. "cell_type": "code",
  489. "execution_count": null,
  490. "metadata": {
  491. "scrolled": true
  492. },
  493. "outputs": [],
  494. "source": [
  495. "df3"
  496. ]
  497. },
  498. {
  499. "cell_type": "code",
  500. "execution_count": null,
  501. "metadata": {
  502. "scrolled": true
  503. },
  504. "outputs": [],
  505. "source": [
  506. "print(df3.query(\"sla_name == 'BV110_RBI'\"))\n",
  507. "print(df3[\"sla_name\"].unique())"
  508. ]
  509. },
  510. {
  511. "cell_type": "code",
  512. "execution_count": null,
  513. "metadata": {
  514. "scrolled": true
  515. },
  516. "outputs": [],
  517. "source": [
  518. "df4 = df3.query(\"sla_name in ('POC-Expansion-SLA_BRAS_88_Private (VLAN10)','POC-Expansion-SLA_BNG_144_Public (VLAN20)','POC-Expansion-SLA_BNG_144_Private (VLAN10)')\")\n",
  519. "df4"
  520. ]
  521. },
  522. {
  523. "cell_type": "code",
  524. "execution_count": null,
  525. "metadata": {
  526. "scrolled": true
  527. },
  528. "outputs": [],
  529. "source": [
  530. "df3['sla_name'].unique()"
  531. ]
  532. },
  533. {
  534. "cell_type": "code",
  535. "execution_count": null,
  536. "metadata": {
  537. "scrolled": true
  538. },
  539. "outputs": [],
  540. "source": [
  541. "table = pd.pivot_table(df3, index=['sla_name', 'status.time_stamp_display'], \n",
  542. " columns=['service.service_name', \"target.target_value\", \"name\"], values=[\"raw_value\",])\n",
  543. "table"
  544. ]
  545. },
  546. {
  547. "cell_type": "code",
  548. "execution_count": null,
  549. "metadata": {},
  550. "outputs": [],
  551. "source": [
  552. "import time\n",
  553. " \n",
  554. "# ts stores the time in seconds\n",
  555. "ts = int(time.time())\n",
  556. "table.to_excel(f\"table{ts}.xlsx\")"
  557. ]
  558. },
  559. {
  560. "cell_type": "code",
  561. "execution_count": null,
  562. "metadata": {},
  563. "outputs": [],
  564. "source": [
  565. "df3['status'][0]"
  566. ]
  567. },
  568. {
  569. "cell_type": "code",
  570. "execution_count": null,
  571. "metadata": {
  572. "scrolled": false
  573. },
  574. "outputs": [],
  575. "source": [
  576. "df = pd.json_normalize(list_test_status_result, record_path=[\"test_status_result\",\"status\"], meta=[\"\"])\n",
  577. "df "
  578. ]
  579. },
  580. {
  581. "cell_type": "code",
  582. "execution_count": null,
  583. "metadata": {},
  584. "outputs": [],
  585. "source": [
  586. "df.dtypes"
  587. ]
  588. },
  589. {
  590. "cell_type": "code",
  591. "execution_count": null,
  592. "metadata": {},
  593. "outputs": [],
  594. "source": [
  595. "def dict_list_to_df(df, col):\n",
  596. " \"\"\"Return a Pandas dataframe based on a column that contains a list of JSON objects or dictionaries.\n",
  597. " Args:\n",
  598. " df (Pandas dataframe): The dataframe to be flattened.\n",
  599. " col (str): The name of the column that contains the JSON objects or dictionaries.\n",
  600. " Returns:\n",
  601. " Pandas dataframe: A new dataframe with the JSON objects or dictionaries expanded into columns.\n",
  602. " \"\"\"\n",
  603. "\n",
  604. " rows = []\n",
  605. " for index, row in df[col].iteritems():\n",
  606. " for item in row:\n",
  607. " rows.append(item)\n",
  608. " df = pd.DataFrame(rows)\n",
  609. " return df"
  610. ]
  611. },
  612. {
  613. "cell_type": "code",
  614. "execution_count": null,
  615. "metadata": {},
  616. "outputs": [],
  617. "source": [
  618. "df1 = dict_list_to_df(df, \"status\")\n",
  619. "df1"
  620. ]
  621. },
  622. {
  623. "cell_type": "code",
  624. "execution_count": null,
  625. "metadata": {},
  626. "outputs": [],
  627. "source": [
  628. "df2 = dict_list_to_df(df1, \"results_scores\")\n",
  629. "df2"
  630. ]
  631. },
  632. {
  633. "cell_type": "code",
  634. "execution_count": null,
  635. "metadata": {
  636. "scrolled": true
  637. },
  638. "outputs": [],
  639. "source": [
  640. "!pip install flatten-json\n"
  641. ]
  642. },
  643. {
  644. "cell_type": "code",
  645. "execution_count": null,
  646. "metadata": {},
  647. "outputs": [],
  648. "source": [
  649. "from flatten_json import flatten\n",
  650. "df['status_r"
  651. ]
  652. },
  653. {
  654. "cell_type": "code",
  655. "execution_count": null,
  656. "metadata": {},
  657. "outputs": [],
  658. "source": [
  659. "df_flat = pd.io.json.json_normalize(json_struct)\n",
  660. "df"
  661. ]
  662. },
  663. {
  664. "cell_type": "code",
  665. "execution_count": null,
  666. "metadata": {},
  667. "outputs": [],
  668. "source": [
  669. "import ast\n",
  670. "from pandas.io.json import json_normalize\n",
  671. "\n",
  672. "def only_dict(d):\n",
  673. " '''\n",
  674. " Convert json string representation of dictionary to a python dict\n",
  675. " '''\n",
  676. " return ast.literal_eval(d)\n",
  677. "\n",
  678. "def list_of_dicts(ld):\n",
  679. " '''\n",
  680. " Create a mapping of the tuples formed after \n",
  681. " converting json strings of list to a python list \n",
  682. " '''\n",
  683. " return dict([(list(d.values())[1], list(d.values())[0]) for d in ast.literal_eval(ld)])"
  684. ]
  685. },
  686. {
  687. "cell_type": "code",
  688. "execution_count": null,
  689. "metadata": {},
  690. "outputs": [],
  691. "source": [
  692. "A = json_normalize(df['status'].apply(only_dict).tolist()).add_prefix('status.')\n",
  693. "A"
  694. ]
  695. },
  696. {
  697. "cell_type": "code",
  698. "execution_count": null,
  699. "metadata": {},
  700. "outputs": [],
  701. "source": []
  702. },
  703. {
  704. "cell_type": "code",
  705. "execution_count": null,
  706. "metadata": {},
  707. "outputs": [],
  708. "source": [
  709. "pd.json_normalize(list(df['status']))"
  710. ]
  711. },
  712. {
  713. "cell_type": "code",
  714. "execution_count": null,
  715. "metadata": {},
  716. "outputs": [],
  717. "source": [
  718. "new_temp = df.explode('status')\n",
  719. "new_temp"
  720. ]
  721. },
  722. {
  723. "cell_type": "code",
  724. "execution_count": null,
  725. "metadata": {
  726. "scrolled": false
  727. },
  728. "outputs": [],
  729. "source": [
  730. "df2 = df.merge(new_temp, left_index=True, right_index=True, suffixes=(\"_test\",\"_status\"))\n",
  731. "df2"
  732. ]
  733. },
  734. {
  735. "cell_type": "code",
  736. "execution_count": null,
  737. "metadata": {},
  738. "outputs": [],
  739. "source": [
  740. "df2.to_excel(\"test.xlsx\")"
  741. ]
  742. },
  743. {
  744. "cell_type": "code",
  745. "execution_count": null,
  746. "metadata": {},
  747. "outputs": [],
  748. "source": [
  749. "temp = df.explode('status.results_scores')\n",
  750. "temp"
  751. ]
  752. },
  753. {
  754. "cell_type": "code",
  755. "execution_count": null,
  756. "metadata": {
  757. "scrolled": true
  758. },
  759. "outputs": [],
  760. "source": [
  761. "temp"
  762. ]
  763. },
  764. {
  765. "cell_type": "code",
  766. "execution_count": null,
  767. "metadata": {
  768. "scrolled": false
  769. },
  770. "outputs": [],
  771. "source": [
  772. "l1 = []\n",
  773. "for l in list_test_status_result:\n",
  774. " l1 = l1 + l['test_status_result']\n",
  775. "df = pd.DataFrame(l1)\n",
  776. "df = pd.concat([df, df[\"service\"].apply(pd.Series)], axis=1)\n",
  777. "df"
  778. ]
  779. },
  780. {
  781. "cell_type": "code",
  782. "execution_count": null,
  783. "metadata": {},
  784. "outputs": [],
  785. "source": [
  786. "df['results_scores']"
  787. ]
  788. },
  789. {
  790. "cell_type": "code",
  791. "execution_count": null,
  792. "metadata": {
  793. "scrolled": false
  794. },
  795. "outputs": [],
  796. "source": [
  797. "import numpy as np\n",
  798. "\n",
  799. "df1 = pd.DataFrame(df['status'][0])\n",
  800. "temp_df = pd.DataFrame.from_dict(np.concatenate(df1['results_scores']).tolist())\n",
  801. "temp_df[:10]"
  802. ]
  803. },
  804. {
  805. "cell_type": "code",
  806. "execution_count": null,
  807. "metadata": {},
  808. "outputs": [],
  809. "source": [
  810. "final_df = df1.merge(temp_df, how='inner', left_index=True, right_index=True)\n",
  811. "final_df\n"
  812. ]
  813. },
  814. {
  815. "cell_type": "code",
  816. "execution_count": null,
  817. "metadata": {
  818. "scrolled": true
  819. },
  820. "outputs": [],
  821. "source": [
  822. "df = pd.DataFrame(list_test_status_result)\n",
  823. "df"
  824. ]
  825. },
  826. {
  827. "cell_type": "code",
  828. "execution_count": null,
  829. "metadata": {},
  830. "outputs": [],
  831. "source": [
  832. "df = df.explode('test_status_result')\n",
  833. "df"
  834. ]
  835. },
  836. {
  837. "cell_type": "code",
  838. "execution_count": null,
  839. "metadata": {
  840. "scrolled": false
  841. },
  842. "outputs": [],
  843. "source": [
  844. "l0 = []\n",
  845. "for l in list_test_status_result:\n",
  846. " for t in l['test_status_result']:\n",
  847. " for st in t['status']:\n",
  848. " for rs in st['results_scores']:\n",
  849. " temp = t['service'] | (t['target'] or {}) | rs\n",
  850. " temp['sla_name'] = st['sla_name'] \n",
  851. " temp['time_stamp'] = st['time_stamp']\n",
  852. " temp['time_stamp_display'] = st['time_stamp_display']\n",
  853. " l0.append(temp)\n",
  854. "l0[:10]"
  855. ]
  856. },
  857. {
  858. "cell_type": "code",
  859. "execution_count": null,
  860. "metadata": {},
  861. "outputs": [],
  862. "source": [
  863. "list_test_status_result = list(db['exfo_api'].find({}, {'test_status_result':1}))\n",
  864. "list_test_status_result"
  865. ]
  866. },
  867. {
  868. "cell_type": "code",
  869. "execution_count": null,
  870. "metadata": {},
  871. "outputs": [],
  872. "source": [
  873. "pd.set_option('display.max_rows', 500)\n",
  874. "pd.set_option('display.max_columns', 500)\n",
  875. "pd.set_option('display.width', 1000)\n",
  876. "\n",
  877. "temp = []\n",
  878. "for l in list_test_status_result:\n",
  879. " for d in l['test_status_result']:\n",
  880. " for s in d['status']:\n",
  881. " for rs in s['results_scores']:\n",
  882. " t2 = {rs['name']: [rs['raw_value'], rs['score']]}\n",
  883. " temp.append({**d, **s, **t2})\n",
  884. "temp\n",
  885. "df = pd.json_normalize(temp)\n",
  886. "#df.set_index(['time_stamp_display'], inplace=True)\n",
  887. "df['sla_service'] = df['sla_name'] + \"/\" + df['service_name']\n",
  888. "df['sla_service'].unique()"
  889. ]
  890. },
  891. {
  892. "cell_type": "code",
  893. "execution_count": null,
  894. "metadata": {},
  895. "outputs": [],
  896. "source": [
  897. "f = df[df['sla_service'] == 'BV110_CMI/HTTPS Web Performances']\n",
  898. "f.set_index(['time_stamp_display'], inplace=True)\n",
  899. "f"
  900. ]
  901. },
  902. {
  903. "cell_type": "code",
  904. "execution_count": null,
  905. "metadata": {},
  906. "outputs": [],
  907. "source": []
  908. },
  909. {
  910. "cell_type": "code",
  911. "execution_count": null,
  912. "metadata": {},
  913. "outputs": [],
  914. "source": []
  915. }
  916. ],
  917. "metadata": {
  918. "kernelspec": {
  919. "display_name": "Python 3",
  920. "language": "python",
  921. "name": "python3"
  922. },
  923. "language_info": {
  924. "codemirror_mode": {
  925. "name": "ipython",
  926. "version": 3
  927. },
  928. "file_extension": ".py",
  929. "mimetype": "text/x-python",
  930. "name": "python",
  931. "nbconvert_exporter": "python",
  932. "pygments_lexer": "ipython3",
  933. "version": "3.7.3"
  934. }
  935. },
  936. "nbformat": 4,
  937. "nbformat_minor": 5
  938. }