From 8d80272922b5802f4c7ae8c6ac2b352efdcf9208 Mon Sep 17 00:00:00 2001 From: Michael Hohn Date: Tue, 9 Jul 2024 10:37:41 -0700 Subject: [PATCH] Add client/ setup and plan --- .gitignore | 1 + README.md | 34 +++++++++++++++ client/Plan.ipynb | 48 +++++++++++++++++++++ client/requirements.txt | 94 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 177 insertions(+) create mode 100644 client/Plan.ipynb create mode 100644 client/requirements.txt diff --git a/.gitignore b/.gitignore index a3553d5..76a8f97 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,4 @@ go.work.sum .env /artifactstore-data/.minio.sys /qldbminio/qldb +.ipynb_checkpoints/ diff --git a/README.md b/README.md index 2395a6c..d0edfed 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,40 @@ TODO Style notes - Dynamic behaviour must be explicit +## Client CodeQL Database Selector +Separate from the server's downloading of databases, a client-side interface is needed to generate the `databases.json` file. This + +1. must be usable from the shell +2. must be interactive (Python, Jupyter) +3. is session based to allow iterations on selection / narrowing +4. must be queryable. There is no need to reinvent sql / dataframes + +Python with dataframes is ideal for this. + +- Set up the virtual environment and install tools + + cd ~/work-gh/mrva/mrvacommander/client + python3.11 -m venv venv + source venv/bin/activate + pip install --upgrade pip + pip install jupyterlab pandas ipython + pip install lckr-jupyterlab-variableinspector + +- Run jupyterlab + + cd ~/work-gh/mrva/mrvacommander/client + source venv/bin/activate + jupyter lab & + + The variable inspector is a right-click on an open console or notebook. + + The `jupyter` command produces output including + + Jupyter Server 2.14.1 is running at: + http://127.0.0.1:8888/lab?token=4c91308819786fe00a33b76e60f3321840283486457516a1 + + Use this to connect multiple front ends + ## Reverse proxy For testing, replay flows using mitmweb. This is faster and simpler than using gh-mrva or the VS Code plugin. diff --git a/client/Plan.ipynb b/client/Plan.ipynb new file mode 100644 index 0000000..f4029df --- /dev/null +++ b/client/Plan.ipynb @@ -0,0 +1,48 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e1c3b239-d45e-43f6-9d2d-64ee46e75e61", + "metadata": {}, + "source": [ + "1. Find available DBs\n", + "2. Save list\n", + "3. Refine selection\n", + "4. Save selection\n", + " 1. Generate `databases.json` for use in vs code extension\n", + " 2. Generate `list-databases.json` for use by gh-mrva client\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "042947ea-8514-4318-a768-7826e494dd43", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd, numpy as np" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/client/requirements.txt b/client/requirements.txt new file mode 100644 index 0000000..6b3227c --- /dev/null +++ b/client/requirements.txt @@ -0,0 +1,94 @@ +anyio==4.4.0 +appnope==0.1.4 +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.2.0 +Babel==2.15.0 +beautifulsoup4==4.12.3 +bleach==6.1.0 +certifi==2024.7.4 +cffi==1.16.0 +charset-normalizer==3.3.2 +comm==0.2.2 +debugpy==1.8.2 +decorator==5.1.1 +defusedxml==0.7.1 +executing==2.0.1 +fastjsonschema==2.20.0 +fqdn==1.5.1 +h11==0.14.0 +httpcore==1.0.5 +httpx==0.27.0 +idna==3.7 +ipykernel==6.29.5 +ipython==8.26.0 +isoduration==20.11.0 +jedi==0.19.1 +Jinja2==3.1.4 +json5==0.9.25 +jsonpointer==3.0.0 +jsonschema==4.23.0 +jsonschema-specifications==2023.12.1 +jupyter-events==0.10.0 +jupyter-lsp==2.2.5 +jupyter_client==8.6.2 +jupyter_core==5.7.2 +jupyter_server==2.14.1 +jupyter_server_terminals==0.5.3 +jupyterlab==4.2.3 +jupyterlab_pygments==0.3.0 +jupyterlab_server==2.27.2 +MarkupSafe==2.1.5 +matplotlib-inline==0.1.7 +mistune==3.0.2 +nbclient==0.10.0 +nbconvert==7.16.4 +nbformat==5.10.4 +nest-asyncio==1.6.0 +notebook_shim==0.2.4 +numpy==2.0.0 +overrides==7.7.0 +packaging==24.1 +pandas==2.2.2 +pandocfilters==1.5.1 +parso==0.8.4 +pexpect==4.9.0 +platformdirs==4.2.2 +prometheus_client==0.20.0 +prompt_toolkit==3.0.47 +psutil==6.0.0 +ptyprocess==0.7.0 +pure-eval==0.2.2 +pycparser==2.22 +Pygments==2.18.0 +python-dateutil==2.9.0.post0 +python-json-logger==2.0.7 +pytz==2024.1 +PyYAML==6.0.1 +pyzmq==26.0.3 +referencing==0.35.1 +requests==2.32.3 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rpds-py==0.19.0 +Send2Trash==1.8.3 +six==1.16.0 +sniffio==1.3.1 +soupsieve==2.5 +stack-data==0.6.3 +terminado==0.18.1 +tinycss2==1.3.0 +tornado==6.4.1 +traitlets==5.14.3 +types-python-dateutil==2.9.0.20240316 +typing_extensions==4.12.2 +tzdata==2024.1 +uri-template==1.3.0 +urllib3==2.2.2 +wcwidth==0.2.13 +webcolors==24.6.0 +webencodings==0.5.1 +websocket-client==1.8.0