Add Text File containing relevant datasource urls.

First diary entries written.
Wiki entries on how to setup a python virtual env for the project
This commit is contained in:
Sebastian Lenzlinger 2023-11-16 17:27:21 +01:00
parent b47ee9ea1d
commit 552b49f118
5 changed files with 191 additions and 33 deletions

1
.gitignore vendored
View File

@ -1,6 +1,7 @@
# Created by https://www.toptal.com/developers/gitignore/api/python,pycharm,linux,macos,database,data # Created by https://www.toptal.com/developers/gitignore/api/python,pycharm,linux,macos,database,data
# Edit at https://www.toptal.com/developers/gitignore?templates=python,pycharm,linux,macos,database,data # Edit at https://www.toptal.com/developers/gitignore?templates=python,pycharm,linux,macos,database,data
datasets/ datasets/
db23-project-venv/
### Data ### ### Data ###
*.csv *.csv
*.dat *.dat

View File

@ -2,14 +2,18 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 20, "execution_count": 1,
"id": "17ca2acb", "id": "17ca2acb",
"metadata": { "metadata": {
"collapsed": true, "collapsed": true,
"jupyter": { "jupyter": {
"outputs_hidden": true "outputs_hidden": true
}, },
"tags": [] "tags": [],
"ExecuteTime": {
"end_time": "2023-11-16T16:20:49.426349Z",
"start_time": "2023-11-16T16:20:16.117316Z"
}
}, },
"outputs": [ "outputs": [
{ {
@ -156,7 +160,11 @@
"2 Unbekannt 2016-01-01T02:00:00 2021-02-03 213.0 Gemessen \n", "2 Unbekannt 2016-01-01T02:00:00 2021-02-03 213.0 Gemessen \n",
"3 Unbekannt 2016-01-01T03:00:00 2021-02-03 112.0 Gemessen \n", "3 Unbekannt 2016-01-01T03:00:00 2021-02-03 112.0 Gemessen \n",
"4 Unbekannt 2016-01-01T04:00:00 2021-02-03 80.0 Gemessen \n", "4 Unbekannt 2016-01-01T04:00:00 2021-02-03 80.0 Gemessen \n",
"Data for year 2017:\n", "File not found for year 2017: datasets/sid_dav_verkehrszaehlung_miv_OD2031_2017.csv\n",
"File not found for year 2018: datasets/sid_dav_verkehrszaehlung_miv_OD2031_2018.csv\n",
"File not found for year 2019: datasets/sid_dav_verkehrszaehlung_miv_OD2031_2019.csv\n",
"File not found for year 2020: datasets/sid_dav_verkehrszaehlung_miv_OD2031_2020.csv\n",
"Data for year 2021:\n",
" MSID MSName ZSID ZSName Achse \\\n", " MSID MSName ZSID ZSName Achse \\\n",
"0 Z001M001 Unbekannt Z001 Seestrasse (Strandbad Wollishofen) Seestrasse \n", "0 Z001M001 Unbekannt Z001 Seestrasse (Strandbad Wollishofen) Seestrasse \n",
"1 Z001M001 Unbekannt Z001 Seestrasse (Strandbad Wollishofen) Seestrasse \n", "1 Z001M001 Unbekannt Z001 Seestrasse (Strandbad Wollishofen) Seestrasse \n",
@ -179,34 +187,39 @@
"4 Badanstalt Wollishofen 1 2 Unbekannt Unbekannt \n", "4 Badanstalt Wollishofen 1 2 Unbekannt Unbekannt \n",
"\n", "\n",
" D4ID MessungDatZeit LieferDat AnzFahrzeuge AnzFahrzeugeStatus \n", " D4ID MessungDatZeit LieferDat AnzFahrzeuge AnzFahrzeugeStatus \n",
"0 Unbekannt 2017-01-01T00:00:00 2021-02-03 295.0 Gemessen \n", "0 Unbekannt 2021-01-01T00:00:00 2021-12-30 122.0 Gemessen \n",
"1 Unbekannt 2017-01-01T01:00:00 2021-02-03 264.0 Gemessen \n", "1 Unbekannt 2021-01-01T01:00:00 2021-12-30 177.0 Gemessen \n",
"2 Unbekannt 2017-01-01T02:00:00 2021-02-03 180.0 Gemessen \n", "2 Unbekannt 2021-01-01T02:00:00 2021-12-30 125.0 Gemessen \n",
"3 Unbekannt 2017-01-01T03:00:00 2021-02-03 107.0 Gemessen \n", "3 Unbekannt 2021-01-01T03:00:00 2021-12-30 84.0 Gemessen \n",
"4 Unbekannt 2017-01-01T04:00:00 2021-02-03 97.0 Gemessen \n" "4 Unbekannt 2021-01-01T04:00:00 2021-12-30 49.0 Gemessen \n",
] "Data for year 2022:\n",
}, " MSID MSName ZSID ZSName Achse \\\n",
{ "0 Z001M001 Unbekannt Z001 Seestrasse (Strandbad Wollishofen) Seestrasse \n",
"ename": "KeyboardInterrupt", "1 Z001M001 Unbekannt Z001 Seestrasse (Strandbad Wollishofen) Seestrasse \n",
"evalue": "", "2 Z001M001 Unbekannt Z001 Seestrasse (Strandbad Wollishofen) Seestrasse \n",
"output_type": "error", "3 Z001M001 Unbekannt Z001 Seestrasse (Strandbad Wollishofen) Seestrasse \n",
"traceback": [ "4 Z001M001 Unbekannt Z001 Seestrasse (Strandbad Wollishofen) Seestrasse \n",
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", " HNr Hoehe EKoord NKoord Richtung Knummer \\\n",
"\u001b[0;32m/tmp/ipykernel_311061/2135127822.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexists\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfile_path\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---> 15\u001b[0;31m \u001b[0mdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfile_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlow_memory\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\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 16\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mtable_key\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mf\"miv_{year}\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "0 451 Unbekannt 2683009.89 1243936.2 auswärts 789 \n",
"\u001b[0;32m~/anaconda3/lib/python3.9/site-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36mread_csv\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)\u001b[0m\n\u001b[1;32m 946\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwds_defaults\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 947\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 948\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\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 949\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 950\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "1 451 Unbekannt 2683009.89 1243936.2 auswärts 789 \n",
"\u001b[0;32m~/anaconda3/lib/python3.9/site-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m 615\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 616\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 617\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnrows\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 618\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 619\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "2 451 Unbekannt 2683009.89 1243936.2 auswärts 789 \n",
"\u001b[0;32m~/anaconda3/lib/python3.9/site-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, nrows)\u001b[0m\n\u001b[1;32m 1746\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1747\u001b[0m \u001b[0mcol_dict\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1748\u001b[0;31m \u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m \u001b[0;31m# type: ignore[attr-defined]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1749\u001b[0m \u001b[0mnrows\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1750\u001b[0m )\n", "3 451 Unbekannt 2683009.89 1243936.2 auswärts 789 \n",
"\u001b[0;32m~/anaconda3/lib/python3.9/site-packages/pandas/io/parsers/c_parser_wrapper.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, nrows)\u001b[0m\n\u001b[1;32m 237\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 238\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--> 239\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reader\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnrows\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 240\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mStopIteration\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 241\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_first_chunk\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "4 451 Unbekannt 2683009.89 1243936.2 auswärts 789 \n",
"\u001b[0;32mparsers.pyx\u001b[0m in \u001b[0;36mpandas._libs.parsers.TextReader.read\u001b[0;34m()\u001b[0m\n", "\n",
"\u001b[0;32mparsers.pyx\u001b[0m in \u001b[0;36mpandas._libs.parsers.TextReader._read_rows\u001b[0;34m()\u001b[0m\n", " Kname AnzDetektoren D1ID D2ID D3ID \\\n",
"\u001b[0;32mparsers.pyx\u001b[0m in \u001b[0;36mpandas._libs.parsers.TextReader._convert_column_data\u001b[0;34m()\u001b[0m\n", "0 Badanstalt Wollishofen 1 2 Unbekannt Unbekannt \n",
"\u001b[0;32mparsers.pyx\u001b[0m in \u001b[0;36mpandas._libs.parsers._maybe_upcast\u001b[0;34m()\u001b[0m\n", "1 Badanstalt Wollishofen 1 2 Unbekannt Unbekannt \n",
"\u001b[0;32m~/anaconda3/lib/python3.9/site-packages/numpy/core/multiarray.py\u001b[0m in \u001b[0;36mputmask\u001b[0;34m(a, mask, values)\u001b[0m\n\u001b[1;32m 1129\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1130\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1131\u001b[0;31m \u001b[0;34m@\u001b[0m\u001b[0marray_function_from_c_func_and_dispatcher\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_multiarray_umath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mputmask\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 1132\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mputmask\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m/\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmask\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalues\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 1133\u001b[0m \"\"\"\n", "2 Badanstalt Wollishofen 1 2 Unbekannt Unbekannt \n",
"\u001b[0;32m_pydevd_bundle/pydevd_cython.pyx\u001b[0m in \u001b[0;36m_pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__\u001b[0;34m()\u001b[0m\n", "3 Badanstalt Wollishofen 1 2 Unbekannt Unbekannt \n",
"\u001b[0;32m_pydevd_bundle/pydevd_cython.pyx\u001b[0m in \u001b[0;36m_pydevd_bundle.pydevd_cython.ThreadTracer.__call__\u001b[0;34m()\u001b[0m\n", "4 Badanstalt Wollishofen 1 2 Unbekannt Unbekannt \n",
"\u001b[0;32m~/anaconda3/lib/python3.9/site-packages/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py\u001b[0m in \u001b[0;36mis_thread_alive\u001b[0;34m(t)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_temp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'_is_stopped'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# Python 3.x has this\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0;32mdef\u001b[0m \u001b[0mis_thread_alive\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\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 10\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_is_stopped\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: " " D4ID MessungDatZeit LieferDat AnzFahrzeuge AnzFahrzeugeStatus \n",
"0 Unbekannt 2022-01-01T00:00:00 2022-12-30 166.0 Gemessen \n",
"1 Unbekannt 2022-01-01T01:00:00 2022-12-30 255.0 Gemessen \n",
"2 Unbekannt 2022-01-01T02:00:00 2022-12-30 168.0 Gemessen \n",
"3 Unbekannt 2022-01-01T03:00:00 2022-12-30 96.0 Gemessen \n",
"4 Unbekannt 2022-01-01T04:00:00 2022-12-30 63.0 Gemessen \n"
] ]
} }
], ],
@ -219,7 +232,8 @@
"\n", "\n",
"tables_dict = {}\n", "tables_dict = {}\n",
"pd.set_option(\"display.max_columns\", None)\n", "pd.set_option(\"display.max_columns\", None)\n",
"data_dir = 'data/'\n", "data_dir = 'datasets/'\n",
"\n",
"for year in range(2012, 2023):\n", "for year in range(2012, 2023):\n",
" file_name = f'sid_dav_verkehrszaehlung_miv_OD2031_{year}.csv'\n", " file_name = f'sid_dav_verkehrszaehlung_miv_OD2031_{year}.csv'\n",
" file_path = os.path.join(data_dir, file_name)\n", " file_path = os.path.join(data_dir, file_name)\n",
@ -701,7 +715,7 @@
"else:\n", "else:\n",
" print(f\"Failed to download data. Status code: {response.status_code}\")\n", " print(f\"Failed to download data. Status code: {response.status_code}\")\n",
"\n", "\n",
"accidents_file_path = os.path.join(data_dir, ')\n" "accidents_file_path = os.path.join(data_dir)\n"
] ]
} }
], ],

View File

@ -0,0 +1,16 @@
# Project Diary
| Version<br/> 0.01 | Author: <br />michel.romancuk@stud.unibas.ch<br />sebastian.lenzlinger@unibas.ch<br /> | HS 2023<br />Databases<br /> |
|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Date | | Problems |
| Oktober/ pre 16.11.23 | Decision to use postrges server. <br/> Server setup at slenzlinger.dev<br/> Setup pgadmin at [pgadmin.slenzlinger.dev](pgadmin.slenzlinger.dev) | |
| 20.11.2022 | Integrated Events table with the time and location. Not done yet | Had problems with the identity of the rows. Solution is to add a primary key at the beggining of the CSV, which helps keep the identity of the rows and the integrity of the database. |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| |

View File

@ -0,0 +1,25 @@
# Setup Of Virtual Python dev env
First open the terminal and make sure to be in the root directory.
All steps assume one is in the root folder.
## Create Virtual environment
```
python3 -m venv db23-project-venv
```
## Activating the virtual environment
```
source db23/bin/activate
```
#### When in the environment ``db23-project`` just install all needed packages.
```
pip3 install pkg_name
```
## Getting back out
```
deactivate
```
# List of used packages
See ``requirements.txt``
# Setting up postgres
# Setting up pgadmin as container serverd by nginx

102
requirements.txt Normal file
View File

@ -0,0 +1,102 @@
anyio==4.0.0
appnope==0.1.3
argon2-cffi==23.1.0
argon2-cffi-bindings==21.2.0
arrow==1.3.0
asttokens==2.4.1
async-lru==2.0.4
attrs==23.1.0
Babel==2.13.1
beautifulsoup4==4.12.2
black==23.11.0
bleach==6.1.0
certifi==2023.7.22
cffi==1.16.0
charset-normalizer==3.3.2
click==8.1.7
comm==0.2.0
debugpy==1.8.0
decorator==5.1.1
defusedxml==0.7.1
executing==2.0.1
fastjsonschema==2.19.0
fqdn==1.5.1
idna==3.4
ipykernel==6.26.0
ipython==8.17.2
ipywidgets==8.1.1
isoduration==20.11.0
jedi==0.19.1
Jinja2==3.1.2
json5==0.9.14
jsonpointer==2.4
jsonschema==4.19.2
jsonschema-specifications==2023.11.1
jupyter==1.0.0
jupyter-console==6.6.3
jupyter-events==0.9.0
jupyter-lsp==2.2.0
jupyter_client==8.6.0
jupyter_core==5.5.0
jupyter_server==2.10.1
jupyter_server_terminals==0.4.4
jupyterlab==4.0.8
jupyterlab-pygments==0.2.2
jupyterlab-widgets==3.0.9
jupyterlab_server==2.25.1
MarkupSafe==2.1.3
matplotlib-inline==0.1.6
mistune==3.0.2
mypy-extensions==1.0.0
nbclient==0.9.0
nbconvert==7.11.0
nbformat==5.9.2
nest-asyncio==1.5.8
notebook==7.0.6
notebook_shim==0.2.3
numpy==1.26.2
overrides==7.4.0
packaging==23.2
pandas==2.1.3
pandocfilters==1.5.0
parso==0.8.3
pathspec==0.11.2
pexpect==4.8.0
platformdirs==4.0.0
prometheus-client==0.18.0
prompt-toolkit==3.0.41
psutil==5.9.6
ptyprocess==0.7.0
pure-eval==0.2.2
pycparser==2.21
Pygments==2.16.1
python-dateutil==2.8.2
python-json-logger==2.0.7
pytz==2023.3.post1
PyYAML==6.0.1
pyzmq==25.1.1
qtconsole==5.5.1
QtPy==2.4.1
referencing==0.31.0
requests==2.31.0
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rpds-py==0.13.0
Send2Trash==1.8.2
six==1.16.0
sniffio==1.3.0
soupsieve==2.5
stack-data==0.6.3
terminado==0.18.0
tinycss2==1.2.1
tornado==6.3.3
traitlets==5.13.0
types-python-dateutil==2.8.19.14
tzdata==2023.3
uri-template==1.3.0
urllib3==2.1.0
wcwidth==0.2.10
webcolors==1.13
webencodings==0.5.1
websocket-client==1.6.4
widgetsnbextension==4.0.9