Anthony Truchet commited on
Commit
d9c9597
·
1 Parent(s): 531597e

feat: add jupyter lab

Browse files

TODO: The binding is not yet OK for exposition on MacOS with colima
TODO: enable Docker caching for ~/.cache

.gitattributes ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
Dockerfile CHANGED
@@ -2,33 +2,83 @@
2
  FROM python:3.10.12
3
 
4
  ARG APP_HOME=/home/user
5
- ARG APP_CODE=/app
6
  ARG APP_DATA=/data/app
7
  ARG HF_HOME=/data/huggingface
8
 
9
  ENV APP_CODE=$APP_CODE \
10
  APP_DATA=$APP_DATA \
11
  HF_HOME=$HF_HOME
 
12
  ENV PYTHONUNBUFFERED=1 \
13
  SYSTEM=spaces \
14
  SHELL=/bin/bash
15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
 
17
- COPY ./requirements.txt $APP_CODE/requirements.txt
18
- COPY ./packages.txt $APP_CODE/packages.txt
 
 
 
19
 
 
 
 
 
20
 
21
- RUN apt-get update \
22
- && xargs -r -a $APP_CODE/packages.txt apt-get install -y \
 
 
 
23
  && rm -rf /var/lib/apt/lists/*
24
- RUN pip3 install --no-cache-dir --upgrade pip
25
- RUN pip3 install --no-cache-dir -r $APP_CODE/requirements.txt
26
 
27
- # Creates an unpriviledged user
28
- RUN useradd -m -u 1000 user
 
 
 
 
 
 
 
 
 
 
29
 
30
- # Copy our code to $APP_CODE and config to the working directory
31
  COPY --chown=user:user --chmod=u=rX src/ $APP_CODE/
 
 
 
 
32
  COPY --chown=user:user --chmod=u=rX .streamlit/ $APP_HOME/.streamlit/
33
 
34
  # Persistent disk space
@@ -37,17 +87,10 @@ COPY --chown=user:user --chmod=u=rX .streamlit/ $APP_HOME/.streamlit/
37
  # see https://huggingface.co/docs/hub/spaces-storage
38
  VOLUME /data
39
 
40
- # User
41
- USER user
42
- ENV HOME=$APP_HOME
43
- ENV PATH=$HOME/.local/bin:$PATH
44
  ENV PYTHONPATH=$APP_CODE:$PYTHONPATH
45
- WORKDIR $APP_HOME
46
 
47
  # Expose streamlit application
48
- EXPOSE 8501
49
- CMD mkdir -p $APP_DATA $HF_HOME && \
50
- streamlit run \
51
- --server.enableXsrfProtection=true \
52
- --server.fileWatcherType=auto \
53
- $APP_CODE/apps/streamlit_demo.py
 
2
  FROM python:3.10.12
3
 
4
  ARG APP_HOME=/home/user
5
+ ARG APP_CODE=/opt/code
6
  ARG APP_DATA=/data/app
7
  ARG HF_HOME=/data/huggingface
8
 
9
  ENV APP_CODE=$APP_CODE \
10
  APP_DATA=$APP_DATA \
11
  HF_HOME=$HF_HOME
12
+
13
  ENV PYTHONUNBUFFERED=1 \
14
  SYSTEM=spaces \
15
  SHELL=/bin/bash
16
 
17
+ # Remove any third-party apt sources to avoid issues with expiring keys.
18
+ # Install some basic utilities
19
+ RUN rm -f /etc/apt/sources.list.d/*.list && \
20
+ apt-get update && apt-get install -y --no-install-recommends \
21
+ curl \
22
+ ca-certificates \
23
+ sudo \
24
+ git \
25
+ git-lfs \
26
+ zip \
27
+ unzip \
28
+ htop \
29
+ bzip2 \
30
+ libx11-6 \
31
+ build-essential \
32
+ libsndfile-dev \
33
+ software-properties-common \
34
+ nodejs \
35
+ && rm -rf /var/lib/apt/lists/*
36
+
37
+ WORKDIR /opt
38
+
39
+ # Create a non-root user and switch to it
40
+ RUN adduser --disabled-password --gecos '' --shell /bin/bash -u 1000 user \
41
+ && chown -R user:user /opt
42
+ RUN echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
43
+ USER user
44
 
45
+ # All users can use /home/user as their home directory
46
+ ENV HOME=$APP_HOME
47
+ ENV PATH=$HOME/.local/bin:$PATH
48
+ RUN mkdir -p $HOME/.cache $HOME/.config \
49
+ && chmod -R 777 $HOME
50
 
51
+ #######################################
52
+ # Start root user section
53
+ #######################################
54
+ USER root
55
 
56
+ # User Debian packages
57
+ ## Security warning : Potential user code executed as root (build time)
58
+ RUN --mount=target=/root/packages.txt,source=packages.txt \
59
+ apt-get update \
60
+ && xargs -r -a /root/packages.txt apt-get install -y --no-install-recommends \
61
  && rm -rf /var/lib/apt/lists/*
 
 
62
 
63
+ RUN --mount=target=/root/on_startup.sh,source=on_startup.sh,readwrite \
64
+ bash /root/on_startup.sh
65
+
66
+ #######################################
67
+ # End root user section
68
+ #######################################
69
+ USER user
70
+ WORKDIR $APP_HOME
71
+
72
+ RUN --mount=target=$APP_CODE/requirements.txt,source=requirements.txt \
73
+ pip3 install --no-cache-dir --upgrade pip \
74
+ && pip install --no-cache-dir --upgrade -r $APP_CODE/requirements.txt
75
 
76
+ # Copy our code to $APP_CODE and config
77
  COPY --chown=user:user --chmod=u=rX src/ $APP_CODE/
78
+
79
+ COPY --chown=user ./start_*.sh $APP_HOME
80
+ RUN chmod +x $APP_HOME/start_*.sh
81
+
82
  COPY --chown=user:user --chmod=u=rX .streamlit/ $APP_HOME/.streamlit/
83
 
84
  # Persistent disk space
 
87
  # see https://huggingface.co/docs/hub/spaces-storage
88
  VOLUME /data
89
 
 
 
 
 
90
  ENV PYTHONPATH=$APP_CODE:$PYTHONPATH
 
91
 
92
  # Expose streamlit application
93
+ EXPOSE 8501
94
+ EXPOSE 7860
95
+ ENTRYPOINT ["bash"]
96
+ CMD [start_strealit.sh]
 
 
README.md CHANGED
@@ -5,7 +5,7 @@ colorFrom: blue
5
  colorTo: green
6
  sdk: docker
7
  python_version: "3.10"
8
- app_port: 8501
9
  app_file: src/app.py
10
  suggested_storage: small
11
  pinned: false
 
5
  colorTo: green
6
  sdk: docker
7
  python_version: "3.10"
8
+ app_port: 7860
9
  app_file: src/app.py
10
  suggested_storage: small
11
  pinned: false
on_startup.sh ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ # Write some commands here that will run on root user before startup.
3
+ # For example, to clone transformers and install it in dev mode:
4
+ # git clone https://github.com/huggingface/transformers.git
5
+ # cd transformers && pip install -e ".[dev]"
poetry.lock CHANGED
@@ -168,6 +168,20 @@ six = "*"
168
  [package.extras]
169
  test = ["astroid", "pytest"]
170
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
  [[package]]
172
  name = "attrs"
173
  version = "23.1.0"
@@ -710,41 +724,6 @@ files = [
710
  {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"},
711
  ]
712
 
713
- [[package]]
714
- name = "fsspec"
715
- version = "2023.6.0"
716
- description = "File-system specification"
717
- optional = false
718
- python-versions = ">=3.8"
719
- files = [
720
- {file = "fsspec-2023.6.0-py3-none-any.whl", hash = "sha256:1cbad1faef3e391fba6dc005ae9b5bdcbf43005c9167ce78c915549c352c869a"},
721
- {file = "fsspec-2023.6.0.tar.gz", hash = "sha256:d0b2f935446169753e7a5c5c55681c54ea91996cc67be93c39a154fb3a2742af"},
722
- ]
723
-
724
- [package.extras]
725
- abfs = ["adlfs"]
726
- adl = ["adlfs"]
727
- arrow = ["pyarrow (>=1)"]
728
- dask = ["dask", "distributed"]
729
- devel = ["pytest", "pytest-cov"]
730
- dropbox = ["dropbox", "dropboxdrivefs", "requests"]
731
- full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"]
732
- fuse = ["fusepy"]
733
- gcs = ["gcsfs"]
734
- git = ["pygit2"]
735
- github = ["requests"]
736
- gs = ["gcsfs"]
737
- gui = ["panel"]
738
- hdfs = ["pyarrow (>=1)"]
739
- http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "requests"]
740
- libarchive = ["libarchive-c"]
741
- oci = ["ocifs"]
742
- s3 = ["s3fs"]
743
- sftp = ["paramiko"]
744
- smb = ["smbprotocol"]
745
- ssh = ["paramiko"]
746
- tqdm = ["tqdm"]
747
-
748
  [[package]]
749
  name = "gitdb"
750
  version = "4.0.10"
@@ -773,37 +752,6 @@ files = [
773
  [package.dependencies]
774
  gitdb = ">=4.0.1,<5"
775
 
776
- [[package]]
777
- name = "huggingface-hub"
778
- version = "0.15.1"
779
- description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub"
780
- optional = false
781
- python-versions = ">=3.7.0"
782
- files = [
783
- {file = "huggingface_hub-0.15.1-py3-none-any.whl", hash = "sha256:05b0fb0abbf1f625dfee864648ac3049fe225ac4371c7bafaca0c2d3a2f83445"},
784
- {file = "huggingface_hub-0.15.1.tar.gz", hash = "sha256:a61b7d1a7769fe10119e730277c72ab99d95c48d86a3d6da3e9f3d0f632a4081"},
785
- ]
786
-
787
- [package.dependencies]
788
- filelock = "*"
789
- fsspec = "*"
790
- packaging = ">=20.9"
791
- pyyaml = ">=5.1"
792
- requests = "*"
793
- tqdm = ">=4.42.1"
794
- typing-extensions = ">=3.7.4.3"
795
-
796
- [package.extras]
797
- all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "black (>=23.1,<24.0)", "gradio", "jedi", "mypy (==0.982)", "numpy", "pytest", "pytest-cov", "pytest-env", "pytest-vcr", "pytest-xdist", "ruff (>=0.0.241)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "urllib3 (<2.0)"]
798
- cli = ["InquirerPy (==0.3.4)"]
799
- dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "black (>=23.1,<24.0)", "gradio", "jedi", "mypy (==0.982)", "numpy", "pytest", "pytest-cov", "pytest-env", "pytest-vcr", "pytest-xdist", "ruff (>=0.0.241)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "urllib3 (<2.0)"]
800
- fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"]
801
- quality = ["black (>=23.1,<24.0)", "mypy (==0.982)", "ruff (>=0.0.241)"]
802
- tensorflow = ["graphviz", "pydot", "tensorflow"]
803
- testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "gradio", "jedi", "numpy", "pytest", "pytest-cov", "pytest-env", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"]
804
- torch = ["torch"]
805
- typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3"]
806
-
807
  [[package]]
808
  name = "identify"
809
  version = "2.5.24"
@@ -941,38 +889,6 @@ qtconsole = ["qtconsole"]
941
  test = ["pytest (<7.1)", "pytest-asyncio", "testpath"]
942
  test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"]
943
 
944
- [[package]]
945
- name = "ipython-genutils"
946
- version = "0.2.0"
947
- description = "Vestigial utilities from IPython"
948
- optional = false
949
- python-versions = "*"
950
- files = [
951
- {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"},
952
- {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"},
953
- ]
954
-
955
- [[package]]
956
- name = "ipywidgets"
957
- version = "8.0.6"
958
- description = "Jupyter interactive widgets"
959
- optional = false
960
- python-versions = ">=3.7"
961
- files = [
962
- {file = "ipywidgets-8.0.6-py3-none-any.whl", hash = "sha256:a60bf8d2528997e05ac83fd19ea2fbe65f2e79fbe1b2b35779bdfc46c2941dcc"},
963
- {file = "ipywidgets-8.0.6.tar.gz", hash = "sha256:de7d779f2045d60de9f6c25f653fdae2dba57898e6a1284494b3ba20b6893bb8"},
964
- ]
965
-
966
- [package.dependencies]
967
- ipykernel = ">=4.5.1"
968
- ipython = ">=6.1.0"
969
- jupyterlab-widgets = ">=3.0.7,<3.1.0"
970
- traitlets = ">=4.3.1"
971
- widgetsnbextension = ">=4.0.7,<4.1.0"
972
-
973
- [package.extras]
974
- test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"]
975
-
976
  [[package]]
977
  name = "isoduration"
978
  version = "20.11.0"
@@ -1023,6 +939,20 @@ MarkupSafe = ">=2.0"
1023
  [package.extras]
1024
  i18n = ["Babel (>=2.7)"]
1025
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1026
  [[package]]
1027
  name = "jsonpointer"
1028
  version = "2.4"
@@ -1060,26 +990,6 @@ webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-n
1060
  format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
1061
  format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"]
1062
 
1063
- [[package]]
1064
- name = "jupyter"
1065
- version = "1.0.0"
1066
- description = "Jupyter metapackage. Install all the Jupyter components in one go."
1067
- optional = false
1068
- python-versions = "*"
1069
- files = [
1070
- {file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"},
1071
- {file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"},
1072
- {file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"},
1073
- ]
1074
-
1075
- [package.dependencies]
1076
- ipykernel = "*"
1077
- ipywidgets = "*"
1078
- jupyter-console = "*"
1079
- nbconvert = "*"
1080
- notebook = "*"
1081
- qtconsole = "*"
1082
-
1083
  [[package]]
1084
  name = "jupyter-client"
1085
  version = "8.3.0"
@@ -1102,30 +1012,6 @@ traitlets = ">=5.3"
1102
  docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
1103
  test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"]
1104
 
1105
- [[package]]
1106
- name = "jupyter-console"
1107
- version = "6.6.3"
1108
- description = "Jupyter terminal console"
1109
- optional = false
1110
- python-versions = ">=3.7"
1111
- files = [
1112
- {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"},
1113
- {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"},
1114
- ]
1115
-
1116
- [package.dependencies]
1117
- ipykernel = ">=6.14"
1118
- ipython = "*"
1119
- jupyter-client = ">=7.0.0"
1120
- jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
1121
- prompt-toolkit = ">=3.0.30"
1122
- pygments = "*"
1123
- pyzmq = ">=17"
1124
- traitlets = ">=5.4"
1125
-
1126
- [package.extras]
1127
- test = ["flaky", "pexpect", "pytest"]
1128
-
1129
  [[package]]
1130
  name = "jupyter-core"
1131
  version = "5.3.1"
@@ -1170,6 +1056,20 @@ cli = ["click", "rich"]
1170
  docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"]
1171
  test = ["click", "coverage", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "pytest-cov", "rich"]
1172
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1173
  [[package]]
1174
  name = "jupyter-server"
1175
  version = "2.7.0"
@@ -1225,6 +1125,37 @@ terminado = ">=0.8.3"
1225
  docs = ["jinja2", "jupyter-server", "mistune (<3.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"]
1226
  test = ["coverage", "jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-cov", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
1227
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1228
  [[package]]
1229
  name = "jupyterlab-pygments"
1230
  version = "0.2.2"
@@ -1237,16 +1168,30 @@ files = [
1237
  ]
1238
 
1239
  [[package]]
1240
- name = "jupyterlab-widgets"
1241
- version = "3.0.7"
1242
- description = "Jupyter interactive widgets for JupyterLab"
1243
  optional = false
1244
  python-versions = ">=3.7"
1245
  files = [
1246
- {file = "jupyterlab_widgets-3.0.7-py3-none-any.whl", hash = "sha256:c73f8370338ec19f1bec47254752d6505b03601cbd5a67e6a0b184532f73a459"},
1247
- {file = "jupyterlab_widgets-3.0.7.tar.gz", hash = "sha256:c3a50ed5bf528a0c7a869096503af54702f86dda1db469aee1c92dc0c01b43ca"},
1248
  ]
1249
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1250
  [[package]]
1251
  name = "jupytext"
1252
  version = "1.14.6"
@@ -1470,41 +1415,6 @@ rtd = ["ipython", "pydata-sphinx-theme (==v0.13.0rc4)", "sphinx-autodoc2 (>=0.4.
1470
  testing = ["beautifulsoup4", "coverage[toml]", "pytest (>=7,<8)", "pytest-cov", "pytest-param-files (>=0.3.4,<0.4.0)", "pytest-regressions", "sphinx-pytest"]
1471
  testing-docutils = ["pygments", "pytest (>=7,<8)", "pytest-param-files (>=0.3.4,<0.4.0)"]
1472
 
1473
- [[package]]
1474
- name = "nbclassic"
1475
- version = "1.0.0"
1476
- description = "Jupyter Notebook as a Jupyter Server extension."
1477
- optional = false
1478
- python-versions = ">=3.7"
1479
- files = [
1480
- {file = "nbclassic-1.0.0-py3-none-any.whl", hash = "sha256:f99e4769b4750076cd4235c044b61232110733322384a94a63791d2e7beacc66"},
1481
- {file = "nbclassic-1.0.0.tar.gz", hash = "sha256:0ae11eb2319455d805596bf320336cda9554b41d99ab9a3c31bf8180bffa30e3"},
1482
- ]
1483
-
1484
- [package.dependencies]
1485
- argon2-cffi = "*"
1486
- ipykernel = "*"
1487
- ipython-genutils = "*"
1488
- jinja2 = "*"
1489
- jupyter-client = ">=6.1.1"
1490
- jupyter-core = ">=4.6.1"
1491
- jupyter-server = ">=1.8"
1492
- nbconvert = ">=5"
1493
- nbformat = "*"
1494
- nest-asyncio = ">=1.5"
1495
- notebook-shim = ">=0.2.3"
1496
- prometheus-client = "*"
1497
- pyzmq = ">=17"
1498
- Send2Trash = ">=1.8.0"
1499
- terminado = ">=0.8.3"
1500
- tornado = ">=6.1"
1501
- traitlets = ">=4.2.1"
1502
-
1503
- [package.extras]
1504
- docs = ["myst-parser", "nbsphinx", "sphinx", "sphinx-rtd-theme", "sphinxcontrib-github-alt"]
1505
- json-logging = ["json-logging"]
1506
- test = ["coverage", "nbval", "pytest", "pytest-cov", "pytest-jupyter", "pytest-playwright", "pytest-tornasync", "requests", "requests-unixsocket", "testpath"]
1507
-
1508
  [[package]]
1509
  name = "nbclient"
1510
  version = "0.8.0"
@@ -1610,40 +1520,6 @@ files = [
1610
  [package.dependencies]
1611
  setuptools = "*"
1612
 
1613
- [[package]]
1614
- name = "notebook"
1615
- version = "6.5.4"
1616
- description = "A web-based notebook environment for interactive computing"
1617
- optional = false
1618
- python-versions = ">=3.7"
1619
- files = [
1620
- {file = "notebook-6.5.4-py3-none-any.whl", hash = "sha256:dd17e78aefe64c768737b32bf171c1c766666a21cc79a44d37a1700771cab56f"},
1621
- {file = "notebook-6.5.4.tar.gz", hash = "sha256:517209568bd47261e2def27a140e97d49070602eea0d226a696f42a7f16c9a4e"},
1622
- ]
1623
-
1624
- [package.dependencies]
1625
- argon2-cffi = "*"
1626
- ipykernel = "*"
1627
- ipython-genutils = "*"
1628
- jinja2 = "*"
1629
- jupyter-client = ">=5.3.4"
1630
- jupyter-core = ">=4.6.1"
1631
- nbclassic = ">=0.4.7"
1632
- nbconvert = ">=5"
1633
- nbformat = "*"
1634
- nest-asyncio = ">=1.5"
1635
- prometheus-client = "*"
1636
- pyzmq = ">=17"
1637
- Send2Trash = ">=1.8.0"
1638
- terminado = ">=0.8.3"
1639
- tornado = ">=6.1"
1640
- traitlets = ">=4.2.1"
1641
-
1642
- [package.extras]
1643
- docs = ["myst-parser", "nbsphinx", "sphinx", "sphinx-rtd-theme", "sphinxcontrib-github-alt"]
1644
- json-logging = ["json-logging"]
1645
- test = ["coverage", "nbval", "pytest", "pytest-cov", "requests", "requests-unixsocket", "selenium (==4.1.5)", "testpath"]
1646
-
1647
  [[package]]
1648
  name = "notebook-shim"
1649
  version = "0.2.3"
@@ -1719,36 +1595,36 @@ files = [
1719
 
1720
  [[package]]
1721
  name = "pandas"
1722
- version = "2.0.2"
1723
  description = "Powerful data structures for data analysis, time series, and statistics"
1724
  optional = false
1725
  python-versions = ">=3.8"
1726
  files = [
1727
- {file = "pandas-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ebb9f1c22ddb828e7fd017ea265a59d80461d5a79154b49a4207bd17514d122"},
1728
- {file = "pandas-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1eb09a242184092f424b2edd06eb2b99d06dc07eeddff9929e8667d4ed44e181"},
1729
- {file = "pandas-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7319b6e68de14e6209460f72a8d1ef13c09fb3d3ef6c37c1e65b35d50b5c145"},
1730
- {file = "pandas-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd46bde7309088481b1cf9c58e3f0e204b9ff9e3244f441accd220dd3365ce7c"},
1731
- {file = "pandas-2.0.2-cp310-cp310-win32.whl", hash = "sha256:51a93d422fbb1bd04b67639ba4b5368dffc26923f3ea32a275d2cc450f1d1c86"},
1732
- {file = "pandas-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:66d00300f188fa5de73f92d5725ced162488f6dc6ad4cecfe4144ca29debe3b8"},
1733
- {file = "pandas-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02755de164da6827764ceb3bbc5f64b35cb12394b1024fdf88704d0fa06e0e2f"},
1734
- {file = "pandas-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0a1e0576611641acde15c2322228d138258f236d14b749ad9af498ab69089e2d"},
1735
- {file = "pandas-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6b5f14cd24a2ed06e14255ff40fe2ea0cfaef79a8dd68069b7ace74bd6acbba"},
1736
- {file = "pandas-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50e451932b3011b61d2961b4185382c92cc8c6ee4658dcd4f320687bb2d000ee"},
1737
- {file = "pandas-2.0.2-cp311-cp311-win32.whl", hash = "sha256:7b21cb72958fc49ad757685db1919021d99650d7aaba676576c9e88d3889d456"},
1738
- {file = "pandas-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:c4af689352c4fe3d75b2834933ee9d0ccdbf5d7a8a7264f0ce9524e877820c08"},
1739
- {file = "pandas-2.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:69167693cb8f9b3fc060956a5d0a0a8dbfed5f980d9fd2c306fb5b9c855c814c"},
1740
- {file = "pandas-2.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:30a89d0fec4263ccbf96f68592fd668939481854d2ff9da709d32a047689393b"},
1741
- {file = "pandas-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a18e5c72b989ff0f7197707ceddc99828320d0ca22ab50dd1b9e37db45b010c0"},
1742
- {file = "pandas-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7376e13d28eb16752c398ca1d36ccfe52bf7e887067af9a0474de6331dd948d2"},
1743
- {file = "pandas-2.0.2-cp38-cp38-win32.whl", hash = "sha256:6d6d10c2142d11d40d6e6c0a190b1f89f525bcf85564707e31b0a39e3b398e08"},
1744
- {file = "pandas-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:e69140bc2d29a8556f55445c15f5794490852af3de0f609a24003ef174528b79"},
1745
- {file = "pandas-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b42b120458636a981077cfcfa8568c031b3e8709701315e2bfa866324a83efa8"},
1746
- {file = "pandas-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f908a77cbeef9bbd646bd4b81214cbef9ac3dda4181d5092a4aa9797d1bc7774"},
1747
- {file = "pandas-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:713f2f70abcdade1ddd68fc91577cb090b3544b07ceba78a12f799355a13ee44"},
1748
- {file = "pandas-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf3f0c361a4270185baa89ec7ab92ecaa355fe783791457077473f974f654df5"},
1749
- {file = "pandas-2.0.2-cp39-cp39-win32.whl", hash = "sha256:598e9020d85a8cdbaa1815eb325a91cfff2bb2b23c1442549b8a3668e36f0f77"},
1750
- {file = "pandas-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:77550c8909ebc23e56a89f91b40ad01b50c42cfbfab49b3393694a50549295ea"},
1751
- {file = "pandas-2.0.2.tar.gz", hash = "sha256:dd5476b6c3fe410ee95926873f377b856dbc4e81a9c605a0dc05aaccc6a7c6c6"},
1752
  ]
1753
 
1754
  [package.dependencies]
@@ -1761,7 +1637,7 @@ pytz = ">=2020.1"
1761
  tzdata = ">=2022.1"
1762
 
1763
  [package.extras]
1764
- all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.0.0)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"]
1765
  aws = ["s3fs (>=2021.08.0)"]
1766
  clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"]
1767
  compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"]
@@ -1780,7 +1656,7 @@ plot = ["matplotlib (>=3.6.1)"]
1780
  postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"]
1781
  spss = ["pyreadstat (>=1.1.2)"]
1782
  sql-other = ["SQLAlchemy (>=1.4.16)"]
1783
- test = ["hypothesis (>=6.34.2)", "pytest (>=7.0.0)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"]
1784
  xml = ["lxml (>=4.6.3)"]
1785
 
1786
  [[package]]
@@ -2477,49 +2353,6 @@ files = [
2477
  [package.dependencies]
2478
  cffi = {version = "*", markers = "implementation_name == \"pypy\""}
2479
 
2480
- [[package]]
2481
- name = "qtconsole"
2482
- version = "5.4.3"
2483
- description = "Jupyter Qt console"
2484
- optional = false
2485
- python-versions = ">= 3.7"
2486
- files = [
2487
- {file = "qtconsole-5.4.3-py3-none-any.whl", hash = "sha256:35fd6e87b1f6d1fd41801b07e69339f8982e76afd4fa8ef35595bc6036717189"},
2488
- {file = "qtconsole-5.4.3.tar.gz", hash = "sha256:5e4082a86a201796b2a5cfd4298352d22b158b51b57736531824715fc2a979dd"},
2489
- ]
2490
-
2491
- [package.dependencies]
2492
- ipykernel = ">=4.1"
2493
- ipython-genutils = "*"
2494
- jupyter-client = ">=4.1"
2495
- jupyter-core = "*"
2496
- packaging = "*"
2497
- pygments = "*"
2498
- pyzmq = ">=17.1"
2499
- qtpy = ">=2.0.1"
2500
- traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2"
2501
-
2502
- [package.extras]
2503
- doc = ["Sphinx (>=1.3)"]
2504
- test = ["flaky", "pytest", "pytest-qt"]
2505
-
2506
- [[package]]
2507
- name = "qtpy"
2508
- version = "2.3.1"
2509
- description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)."
2510
- optional = false
2511
- python-versions = ">=3.7"
2512
- files = [
2513
- {file = "QtPy-2.3.1-py3-none-any.whl", hash = "sha256:5193d20e0b16e4d9d3bc2c642d04d9f4e2c892590bd1b9c92bfe38a95d5a2e12"},
2514
- {file = "QtPy-2.3.1.tar.gz", hash = "sha256:a8c74982d6d172ce124d80cafd39653df78989683f760f2281ba91a6e7b9de8b"},
2515
- ]
2516
-
2517
- [package.dependencies]
2518
- packaging = "*"
2519
-
2520
- [package.extras]
2521
- test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"]
2522
-
2523
  [[package]]
2524
  name = "questionary"
2525
  version = "1.10.0"
@@ -3052,26 +2885,6 @@ files = [
3052
  {file = "tornado-6.3.2.tar.gz", hash = "sha256:4b927c4f19b71e627b13f3db2324e4ae660527143f9e1f2e2fb404f3a187e2ba"},
3053
  ]
3054
 
3055
- [[package]]
3056
- name = "tqdm"
3057
- version = "4.65.0"
3058
- description = "Fast, Extensible Progress Meter"
3059
- optional = false
3060
- python-versions = ">=3.7"
3061
- files = [
3062
- {file = "tqdm-4.65.0-py3-none-any.whl", hash = "sha256:c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671"},
3063
- {file = "tqdm-4.65.0.tar.gz", hash = "sha256:1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5"},
3064
- ]
3065
-
3066
- [package.dependencies]
3067
- colorama = {version = "*", markers = "platform_system == \"Windows\""}
3068
-
3069
- [package.extras]
3070
- dev = ["py-make (>=0.1.0)", "twine", "wheel"]
3071
- notebook = ["ipywidgets (>=6)"]
3072
- slack = ["slack-sdk"]
3073
- telegram = ["requests"]
3074
-
3075
  [[package]]
3076
  name = "traitlets"
3077
  version = "5.9.0"
@@ -3089,13 +2902,13 @@ test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"]
3089
 
3090
  [[package]]
3091
  name = "typing-extensions"
3092
- version = "4.6.3"
3093
  description = "Backported and Experimental Type Hints for Python 3.7+"
3094
  optional = false
3095
  python-versions = ">=3.7"
3096
  files = [
3097
- {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"},
3098
- {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"},
3099
  ]
3100
 
3101
  [[package]]
@@ -3286,17 +3099,6 @@ docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"]
3286
  optional = ["python-socks", "wsaccel"]
3287
  test = ["websockets"]
3288
 
3289
- [[package]]
3290
- name = "widgetsnbextension"
3291
- version = "4.0.7"
3292
- description = "Jupyter interactive widgets for Jupyter Notebook"
3293
- optional = false
3294
- python-versions = ">=3.7"
3295
- files = [
3296
- {file = "widgetsnbextension-4.0.7-py3-none-any.whl", hash = "sha256:be3228a73bbab189a16be2d4a3cd89ecbd4e31948bfdc64edac17dcdee3cd99c"},
3297
- {file = "widgetsnbextension-4.0.7.tar.gz", hash = "sha256:ea67c17a7cd4ae358f8f46c3b304c40698bc0423732e3f273321ee141232c8be"},
3298
- ]
3299
-
3300
  [[package]]
3301
  name = "xdoctest"
3302
  version = "1.1.1"
@@ -3342,4 +3144,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more
3342
  [metadata]
3343
  lock-version = "2.0"
3344
  python-versions = "^3.10"
3345
- content-hash = "1290e90d3ddfa0cb07d0145dde567bb372493808b6d2c915a44007dbfafa278a"
 
168
  [package.extras]
169
  test = ["astroid", "pytest"]
170
 
171
+ [[package]]
172
+ name = "async-lru"
173
+ version = "2.0.2"
174
+ description = "Simple LRU cache for asyncio"
175
+ optional = false
176
+ python-versions = ">=3.8"
177
+ files = [
178
+ {file = "async-lru-2.0.2.tar.gz", hash = "sha256:3b87ec4f2460c52cc7916a0138cc606b584c75d1ef7d661853c95d1d3acb869a"},
179
+ {file = "async_lru-2.0.2-py3-none-any.whl", hash = "sha256:d7c2b873e9af5c5a1f0a87a6c145e7e0b4eb92342b7235dda9dd5b10e950d6e2"},
180
+ ]
181
+
182
+ [package.dependencies]
183
+ typing-extensions = ">=4.0.0"
184
+
185
  [[package]]
186
  name = "attrs"
187
  version = "23.1.0"
 
724
  {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"},
725
  ]
726
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
727
  [[package]]
728
  name = "gitdb"
729
  version = "4.0.10"
 
752
  [package.dependencies]
753
  gitdb = ">=4.0.1,<5"
754
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
755
  [[package]]
756
  name = "identify"
757
  version = "2.5.24"
 
889
  test = ["pytest (<7.1)", "pytest-asyncio", "testpath"]
890
  test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"]
891
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
892
  [[package]]
893
  name = "isoduration"
894
  version = "20.11.0"
 
939
  [package.extras]
940
  i18n = ["Babel (>=2.7)"]
941
 
942
+ [[package]]
943
+ name = "json5"
944
+ version = "0.9.14"
945
+ description = "A Python implementation of the JSON5 data format."
946
+ optional = false
947
+ python-versions = "*"
948
+ files = [
949
+ {file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"},
950
+ {file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"},
951
+ ]
952
+
953
+ [package.extras]
954
+ dev = ["hypothesis"]
955
+
956
  [[package]]
957
  name = "jsonpointer"
958
  version = "2.4"
 
990
  format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
991
  format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"]
992
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
993
  [[package]]
994
  name = "jupyter-client"
995
  version = "8.3.0"
 
1012
  docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
1013
  test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"]
1014
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1015
  [[package]]
1016
  name = "jupyter-core"
1017
  version = "5.3.1"
 
1056
  docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"]
1057
  test = ["click", "coverage", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "pytest-cov", "rich"]
1058
 
1059
+ [[package]]
1060
+ name = "jupyter-lsp"
1061
+ version = "2.2.0"
1062
+ description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server"
1063
+ optional = false
1064
+ python-versions = ">=3.8"
1065
+ files = [
1066
+ {file = "jupyter-lsp-2.2.0.tar.gz", hash = "sha256:8ebbcb533adb41e5d635eb8fe82956b0aafbf0fd443b6c4bfa906edeeb8635a1"},
1067
+ {file = "jupyter_lsp-2.2.0-py3-none-any.whl", hash = "sha256:9e06b8b4f7dd50300b70dd1a78c0c3b0c3d8fa68e0f2d8a5d1fbab62072aca3f"},
1068
+ ]
1069
+
1070
+ [package.dependencies]
1071
+ jupyter-server = ">=1.1.2"
1072
+
1073
  [[package]]
1074
  name = "jupyter-server"
1075
  version = "2.7.0"
 
1125
  docs = ["jinja2", "jupyter-server", "mistune (<3.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"]
1126
  test = ["coverage", "jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-cov", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
1127
 
1128
+ [[package]]
1129
+ name = "jupyterlab"
1130
+ version = "4.0.2"
1131
+ description = "JupyterLab computational environment"
1132
+ optional = false
1133
+ python-versions = ">=3.8"
1134
+ files = [
1135
+ {file = "jupyterlab-4.0.2-py3-none-any.whl", hash = "sha256:201b4f729a7dc5e22ca6c4dd8944cde792f1cb008d7c6b821e0a48d2502205c8"},
1136
+ {file = "jupyterlab-4.0.2.tar.gz", hash = "sha256:0a77898aebb55da391e5f57022774c089fb075e98803ff3d514a79b727dc934d"},
1137
+ ]
1138
+
1139
+ [package.dependencies]
1140
+ async-lru = ">=1.0.0"
1141
+ ipykernel = "*"
1142
+ jinja2 = ">=3.0.3"
1143
+ jupyter-core = "*"
1144
+ jupyter-lsp = ">=2.0.0"
1145
+ jupyter-server = ">=2.4.0,<3"
1146
+ jupyterlab-server = ">=2.19.0,<3"
1147
+ notebook-shim = ">=0.2"
1148
+ packaging = "*"
1149
+ tomli = {version = "*", markers = "python_version < \"3.11\""}
1150
+ tornado = ">=6.2.0"
1151
+ traitlets = "*"
1152
+
1153
+ [package.extras]
1154
+ dev = ["black[jupyter] (==23.3.0)", "build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.0.271)"]
1155
+ docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-tornasync", "sphinx (>=1.8)", "sphinx-copybutton"]
1156
+ docs-screenshots = ["altair (==5.0.1)", "ipython (==8.14.0)", "ipywidgets (==8.0.6)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post0)", "matplotlib (==3.7.1)", "nbconvert (>=7.0.0)", "pandas (==2.0.2)", "scipy (==1.10.1)", "vega-datasets (==0.9.0)"]
1157
+ test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"]
1158
+
1159
  [[package]]
1160
  name = "jupyterlab-pygments"
1161
  version = "0.2.2"
 
1168
  ]
1169
 
1170
  [[package]]
1171
+ name = "jupyterlab-server"
1172
+ version = "2.23.0"
1173
+ description = "A set of server components for JupyterLab and JupyterLab like applications."
1174
  optional = false
1175
  python-versions = ">=3.7"
1176
  files = [
1177
+ {file = "jupyterlab_server-2.23.0-py3-none-any.whl", hash = "sha256:a5ea2c839336a8ba7c38c8e7b2f24cedf919f0d439f4d2e606d9322013a95788"},
1178
+ {file = "jupyterlab_server-2.23.0.tar.gz", hash = "sha256:83c01aa4ad9451cd61b383e634d939ff713850f4640c0056b2cdb2b6211a74c7"},
1179
  ]
1180
 
1181
+ [package.dependencies]
1182
+ babel = ">=2.10"
1183
+ jinja2 = ">=3.0.3"
1184
+ json5 = ">=0.9.0"
1185
+ jsonschema = ">=4.17.3"
1186
+ jupyter-server = ">=1.21,<3"
1187
+ packaging = ">=21.3"
1188
+ requests = ">=2.28"
1189
+
1190
+ [package.extras]
1191
+ docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"]
1192
+ openapi = ["openapi-core (>=0.16.1,<0.17.0)", "ruamel-yaml"]
1193
+ test = ["hatch", "ipykernel", "jupyterlab-server[openapi]", "openapi-spec-validator (>=0.5.1,<0.6.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"]
1194
+
1195
  [[package]]
1196
  name = "jupytext"
1197
  version = "1.14.6"
 
1415
  testing = ["beautifulsoup4", "coverage[toml]", "pytest (>=7,<8)", "pytest-cov", "pytest-param-files (>=0.3.4,<0.4.0)", "pytest-regressions", "sphinx-pytest"]
1416
  testing-docutils = ["pygments", "pytest (>=7,<8)", "pytest-param-files (>=0.3.4,<0.4.0)"]
1417
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1418
  [[package]]
1419
  name = "nbclient"
1420
  version = "0.8.0"
 
1520
  [package.dependencies]
1521
  setuptools = "*"
1522
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1523
  [[package]]
1524
  name = "notebook-shim"
1525
  version = "0.2.3"
 
1595
 
1596
  [[package]]
1597
  name = "pandas"
1598
+ version = "2.0.3"
1599
  description = "Powerful data structures for data analysis, time series, and statistics"
1600
  optional = false
1601
  python-versions = ">=3.8"
1602
  files = [
1603
+ {file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"},
1604
+ {file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"},
1605
+ {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183"},
1606
+ {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0"},
1607
+ {file = "pandas-2.0.3-cp310-cp310-win32.whl", hash = "sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210"},
1608
+ {file = "pandas-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e"},
1609
+ {file = "pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8"},
1610
+ {file = "pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26"},
1611
+ {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d"},
1612
+ {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df"},
1613
+ {file = "pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd"},
1614
+ {file = "pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b"},
1615
+ {file = "pandas-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061"},
1616
+ {file = "pandas-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5"},
1617
+ {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089"},
1618
+ {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0"},
1619
+ {file = "pandas-2.0.3-cp38-cp38-win32.whl", hash = "sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02"},
1620
+ {file = "pandas-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78"},
1621
+ {file = "pandas-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b"},
1622
+ {file = "pandas-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e"},
1623
+ {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b"},
1624
+ {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641"},
1625
+ {file = "pandas-2.0.3-cp39-cp39-win32.whl", hash = "sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682"},
1626
+ {file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"},
1627
+ {file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"},
1628
  ]
1629
 
1630
  [package.dependencies]
 
1637
  tzdata = ">=2022.1"
1638
 
1639
  [package.extras]
1640
+ all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"]
1641
  aws = ["s3fs (>=2021.08.0)"]
1642
  clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"]
1643
  compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"]
 
1656
  postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"]
1657
  spss = ["pyreadstat (>=1.1.2)"]
1658
  sql-other = ["SQLAlchemy (>=1.4.16)"]
1659
+ test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"]
1660
  xml = ["lxml (>=4.6.3)"]
1661
 
1662
  [[package]]
 
2353
  [package.dependencies]
2354
  cffi = {version = "*", markers = "implementation_name == \"pypy\""}
2355
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2356
  [[package]]
2357
  name = "questionary"
2358
  version = "1.10.0"
 
2885
  {file = "tornado-6.3.2.tar.gz", hash = "sha256:4b927c4f19b71e627b13f3db2324e4ae660527143f9e1f2e2fb404f3a187e2ba"},
2886
  ]
2887
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2888
  [[package]]
2889
  name = "traitlets"
2890
  version = "5.9.0"
 
2902
 
2903
  [[package]]
2904
  name = "typing-extensions"
2905
+ version = "4.7.0"
2906
  description = "Backported and Experimental Type Hints for Python 3.7+"
2907
  optional = false
2908
  python-versions = ">=3.7"
2909
  files = [
2910
+ {file = "typing_extensions-4.7.0-py3-none-any.whl", hash = "sha256:5d8c9dac95c27d20df12fb1d97b9793ab8b2af8a3a525e68c80e21060c161771"},
2911
+ {file = "typing_extensions-4.7.0.tar.gz", hash = "sha256:935ccf31549830cda708b42289d44b6f74084d616a00be651601a4f968e77c82"},
2912
  ]
2913
 
2914
  [[package]]
 
3099
  optional = ["python-socks", "wsaccel"]
3100
  test = ["websockets"]
3101
 
 
 
 
 
 
 
 
 
 
 
 
3102
  [[package]]
3103
  name = "xdoctest"
3104
  version = "1.1.1"
 
3144
  [metadata]
3145
  lock-version = "2.0"
3146
  python-versions = "^3.10"
3147
+ content-hash = "b13e1a787c72642711e538fd67d39c50b045ee38428f16f9b4ec2500767fa95a"
pyproject.toml CHANGED
@@ -23,7 +23,6 @@ pre-commit = "^3.2.0"
23
  commitizen = "^2.42.1"
24
  flake8-docstrings = "^1.7.0"
25
  pygments = "^2.14.0"
26
- huggingface-hub = "^0.15.1"
27
 
28
  [tool.poetry.group.tests.dependencies]
29
  pytest = "^7.2.2"
@@ -39,8 +38,11 @@ myst-parser = "^1.0.0"
39
  darglint = "^1.8.1"
40
 
41
  [tool.poetry.group.jupyter.dependencies]
42
- jupyter = "^1.0.0"
43
- jupytext = "^1.14.5"
 
 
 
44
 
45
  [tool.pytest.ini_options]
46
  minversion = "6.0"
 
23
  commitizen = "^2.42.1"
24
  flake8-docstrings = "^1.7.0"
25
  pygments = "^2.14.0"
 
26
 
27
  [tool.poetry.group.tests.dependencies]
28
  pytest = "^7.2.2"
 
38
  darglint = "^1.8.1"
39
 
40
  [tool.poetry.group.jupyter.dependencies]
41
+ tornado = "^6.3.2"
42
+ ipython = "^8.14.0"
43
+ jupytext = "^1.14.6"
44
+ jupyterlab = "^4.0.2"
45
+ ipykernel = "^6.23.3"
46
 
47
  [tool.pytest.ini_options]
48
  minversion = "6.0"
requirements.txt CHANGED
@@ -1,47 +1,123 @@
1
  altair==5.0.1 ; python_version >= "3.10" and python_version < "4.0"
 
 
 
 
 
 
 
2
  attrs==23.1.0 ; python_version >= "3.10" and python_version < "4.0"
 
 
 
 
3
  blinker==1.6.2 ; python_version >= "3.10" and python_version < "4.0"
4
  cachetools==5.3.1 ; python_version >= "3.10" and python_version < "4.0"
5
  certifi==2023.5.7 ; python_version >= "3.10" and python_version < "4.0"
 
6
  charset-normalizer==2.1.1 ; python_version >= "3.10" and python_version < "4.0"
7
  click==8.1.3 ; python_version >= "3.10" and python_version < "4.0"
8
- colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Windows"
 
 
9
  decorator==5.1.1 ; python_version >= "3.10" and python_version < "4.0"
 
 
 
 
 
10
  gitdb==4.0.10 ; python_version >= "3.10" and python_version < "4.0"
11
  gitpython==3.1.31 ; python_version >= "3.10" and python_version < "4.0"
12
  idna==3.4 ; python_version >= "3.10" and python_version < "4.0"
13
  importlib-metadata==6.7.0 ; python_version >= "3.10" and python_version < "4.0"
 
 
 
 
14
  jinja2==3.1.2 ; python_version >= "3.10" and python_version < "4.0"
 
 
15
  jsonschema==4.17.3 ; python_version >= "3.10" and python_version < "4.0"
 
 
 
 
 
 
 
 
 
 
 
16
  markdown-it-py==2.2.0 ; python_version >= "3.10" and python_version < "4.0"
17
  markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0"
 
 
18
  mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0"
 
 
 
 
 
 
19
  numpy==1.25.0 ; python_version >= "3.10" and python_version < "4.0"
 
20
  packaging==23.1 ; python_version >= "3.10" and python_version < "4.0"
21
- pandas==2.0.2 ; python_version >= "3.10" and python_version < "4.0"
 
 
 
 
22
  pillow==9.5.0 ; python_version >= "3.10" and python_version < "4.0"
 
 
 
23
  protobuf==4.23.3 ; python_version >= "3.10" and python_version < "4.0"
 
 
 
24
  pyarrow==12.0.1 ; python_version >= "3.10" and python_version < "4.0"
 
25
  pydeck==0.8.0 ; python_version >= "3.10" and python_version < "4.0"
26
  pygments==2.15.1 ; python_version >= "3.10" and python_version < "4.0"
27
  pympler==1.0.1 ; python_version >= "3.10" and python_version < "4.0"
28
  pyrsistent==0.19.3 ; python_version >= "3.10" and python_version < "4.0"
29
  python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0"
 
30
  pytz-deprecation-shim==0.1.0.post0 ; python_version >= "3.10" and python_version < "4.0"
31
  pytz==2023.3 ; python_version >= "3.10" and python_version < "4.0"
 
 
 
 
32
  requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0"
 
 
33
  rich==13.4.2 ; python_version >= "3.10" and python_version < "4.0"
 
34
  six==1.16.0 ; python_version >= "3.10" and python_version < "4.0"
35
  smmap==5.0.0 ; python_version >= "3.10" and python_version < "4.0"
 
 
 
36
  streamlit==1.24.0 ; python_version >= "3.10" and python_version < "4.0"
37
  tenacity==8.2.2 ; python_version >= "3.10" and python_version < "4.0"
 
 
38
  toml==0.10.2 ; python_version >= "3.10" and python_version < "4.0"
 
39
  toolz==0.12.0 ; python_version >= "3.10" and python_version < "4.0"
40
  tornado==6.3.2 ; python_version >= "3.10" and python_version < "4.0"
41
- typing-extensions==4.6.3 ; python_version >= "3.10" and python_version < "4.0"
 
42
  tzdata==2023.3 ; python_version >= "3.10" and python_version < "4.0"
43
  tzlocal==4.3.1 ; python_version >= "3.10" and python_version < "4.0"
 
44
  urllib3==2.0.3 ; python_version >= "3.10" and python_version < "4.0"
45
  validators==0.20.0 ; python_version >= "3.10" and python_version < "4.0"
46
  watchdog==3.0.0 ; python_version >= "3.10" and python_version < "4.0" and platform_system != "Darwin"
 
 
 
 
47
  zipp==3.15.0 ; python_version >= "3.10" and python_version < "4.0"
 
1
  altair==5.0.1 ; python_version >= "3.10" and python_version < "4.0"
2
+ anyio==3.7.0 ; python_version >= "3.10" and python_version < "4.0"
3
+ appnope==0.1.3 ; python_version >= "3.10" and python_version < "4.0" and (sys_platform == "darwin" or platform_system == "Darwin")
4
+ argon2-cffi-bindings==21.2.0 ; python_version >= "3.10" and python_version < "4.0"
5
+ argon2-cffi==21.3.0 ; python_version >= "3.10" and python_version < "4.0"
6
+ arrow==1.2.3 ; python_version >= "3.10" and python_version < "4.0"
7
+ asttokens==2.2.1 ; python_version >= "3.10" and python_version < "4.0"
8
+ async-lru==2.0.2 ; python_version >= "3.10" and python_version < "4.0"
9
  attrs==23.1.0 ; python_version >= "3.10" and python_version < "4.0"
10
+ babel==2.12.1 ; python_version >= "3.10" and python_version < "4.0"
11
+ backcall==0.2.0 ; python_version >= "3.10" and python_version < "4.0"
12
+ beautifulsoup4==4.12.2 ; python_version >= "3.10" and python_version < "4.0"
13
+ bleach==6.0.0 ; python_version >= "3.10" and python_version < "4.0"
14
  blinker==1.6.2 ; python_version >= "3.10" and python_version < "4.0"
15
  cachetools==5.3.1 ; python_version >= "3.10" and python_version < "4.0"
16
  certifi==2023.5.7 ; python_version >= "3.10" and python_version < "4.0"
17
+ cffi==1.15.1 ; python_version >= "3.10" and python_version < "4.0"
18
  charset-normalizer==2.1.1 ; python_version >= "3.10" and python_version < "4.0"
19
  click==8.1.3 ; python_version >= "3.10" and python_version < "4.0"
20
+ colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows")
21
+ comm==0.1.3 ; python_version >= "3.10" and python_version < "4.0"
22
+ debugpy==1.6.7 ; python_version >= "3.10" and python_version < "4.0"
23
  decorator==5.1.1 ; python_version >= "3.10" and python_version < "4.0"
24
+ defusedxml==0.7.1 ; python_version >= "3.10" and python_version < "4.0"
25
+ exceptiongroup==1.1.1 ; python_version >= "3.10" and python_version < "3.11"
26
+ executing==1.2.0 ; python_version >= "3.10" and python_version < "4.0"
27
+ fastjsonschema==2.17.1 ; python_version >= "3.10" and python_version < "4.0"
28
+ fqdn==1.5.1 ; python_version >= "3.10" and python_version < "4"
29
  gitdb==4.0.10 ; python_version >= "3.10" and python_version < "4.0"
30
  gitpython==3.1.31 ; python_version >= "3.10" and python_version < "4.0"
31
  idna==3.4 ; python_version >= "3.10" and python_version < "4.0"
32
  importlib-metadata==6.7.0 ; python_version >= "3.10" and python_version < "4.0"
33
+ ipykernel==6.23.3 ; python_version >= "3.10" and python_version < "4.0"
34
+ ipython==8.14.0 ; python_version >= "3.10" and python_version < "4.0"
35
+ isoduration==20.11.0 ; python_version >= "3.10" and python_version < "4.0"
36
+ jedi==0.18.2 ; python_version >= "3.10" and python_version < "4.0"
37
  jinja2==3.1.2 ; python_version >= "3.10" and python_version < "4.0"
38
+ json5==0.9.14 ; python_version >= "3.10" and python_version < "4.0"
39
+ jsonpointer==2.4 ; python_version >= "3.10" and python_version < "4.0"
40
  jsonschema==4.17.3 ; python_version >= "3.10" and python_version < "4.0"
41
+ jsonschema[format-nongpl]==4.17.3 ; python_version >= "3.10" and python_version < "4.0"
42
+ jupyter-client==8.3.0 ; python_version >= "3.10" and python_version < "4.0"
43
+ jupyter-core==5.3.1 ; python_version >= "3.10" and python_version < "4.0"
44
+ jupyter-events==0.6.3 ; python_version >= "3.10" and python_version < "4.0"
45
+ jupyter-lsp==2.2.0 ; python_version >= "3.10" and python_version < "4.0"
46
+ jupyter-server-terminals==0.4.4 ; python_version >= "3.10" and python_version < "4.0"
47
+ jupyter-server==2.7.0 ; python_version >= "3.10" and python_version < "4.0"
48
+ jupyterlab-pygments==0.2.2 ; python_version >= "3.10" and python_version < "4.0"
49
+ jupyterlab-server==2.23.0 ; python_version >= "3.10" and python_version < "4.0"
50
+ jupyterlab==4.0.2 ; python_version >= "3.10" and python_version < "4.0"
51
+ jupytext==1.14.6 ; python_version >= "3.10" and python_version < "4.0"
52
  markdown-it-py==2.2.0 ; python_version >= "3.10" and python_version < "4.0"
53
  markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0"
54
+ matplotlib-inline==0.1.6 ; python_version >= "3.10" and python_version < "4.0"
55
+ mdit-py-plugins==0.3.5 ; python_version >= "3.10" and python_version < "4.0"
56
  mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0"
57
+ mistune==3.0.1 ; python_version >= "3.10" and python_version < "4.0"
58
+ nbclient==0.8.0 ; python_version >= "3.10" and python_version < "4.0"
59
+ nbconvert==7.6.0 ; python_version >= "3.10" and python_version < "4.0"
60
+ nbformat==5.9.0 ; python_version >= "3.10" and python_version < "4.0"
61
+ nest-asyncio==1.5.6 ; python_version >= "3.10" and python_version < "4.0"
62
+ notebook-shim==0.2.3 ; python_version >= "3.10" and python_version < "4.0"
63
  numpy==1.25.0 ; python_version >= "3.10" and python_version < "4.0"
64
+ overrides==7.3.1 ; python_version >= "3.10" and python_version < "4.0"
65
  packaging==23.1 ; python_version >= "3.10" and python_version < "4.0"
66
+ pandas==2.0.3 ; python_version >= "3.10" and python_version < "4.0"
67
+ pandocfilters==1.5.0 ; python_version >= "3.10" and python_version < "4.0"
68
+ parso==0.8.3 ; python_version >= "3.10" and python_version < "4.0"
69
+ pexpect==4.8.0 ; python_version >= "3.10" and python_version < "4.0" and sys_platform != "win32"
70
+ pickleshare==0.7.5 ; python_version >= "3.10" and python_version < "4.0"
71
  pillow==9.5.0 ; python_version >= "3.10" and python_version < "4.0"
72
+ platformdirs==3.8.0 ; python_version >= "3.10" and python_version < "4.0"
73
+ prometheus-client==0.17.0 ; python_version >= "3.10" and python_version < "4.0"
74
+ prompt-toolkit==3.0.38 ; python_version >= "3.10" and python_version < "4.0"
75
  protobuf==4.23.3 ; python_version >= "3.10" and python_version < "4.0"
76
+ psutil==5.9.5 ; python_version >= "3.10" and python_version < "4.0"
77
+ ptyprocess==0.7.0 ; python_version >= "3.10" and python_version < "4.0" and (sys_platform != "win32" or os_name != "nt")
78
+ pure-eval==0.2.2 ; python_version >= "3.10" and python_version < "4.0"
79
  pyarrow==12.0.1 ; python_version >= "3.10" and python_version < "4.0"
80
+ pycparser==2.21 ; python_version >= "3.10" and python_version < "4.0"
81
  pydeck==0.8.0 ; python_version >= "3.10" and python_version < "4.0"
82
  pygments==2.15.1 ; python_version >= "3.10" and python_version < "4.0"
83
  pympler==1.0.1 ; python_version >= "3.10" and python_version < "4.0"
84
  pyrsistent==0.19.3 ; python_version >= "3.10" and python_version < "4.0"
85
  python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0"
86
+ python-json-logger==2.0.7 ; python_version >= "3.10" and python_version < "4.0"
87
  pytz-deprecation-shim==0.1.0.post0 ; python_version >= "3.10" and python_version < "4.0"
88
  pytz==2023.3 ; python_version >= "3.10" and python_version < "4.0"
89
+ pywin32==306 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.10" and python_version < "4.0"
90
+ pywinpty==2.0.10 ; python_version >= "3.10" and python_version < "4.0" and os_name == "nt"
91
+ pyyaml==6.0 ; python_version >= "3.10" and python_version < "4.0"
92
+ pyzmq==25.1.0 ; python_version >= "3.10" and python_version < "4.0"
93
  requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0"
94
+ rfc3339-validator==0.1.4 ; python_version >= "3.10" and python_version < "4.0"
95
+ rfc3986-validator==0.1.1 ; python_version >= "3.10" and python_version < "4.0"
96
  rich==13.4.2 ; python_version >= "3.10" and python_version < "4.0"
97
+ send2trash==1.8.2 ; python_version >= "3.10" and python_version < "4.0"
98
  six==1.16.0 ; python_version >= "3.10" and python_version < "4.0"
99
  smmap==5.0.0 ; python_version >= "3.10" and python_version < "4.0"
100
+ sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0"
101
+ soupsieve==2.4.1 ; python_version >= "3.10" and python_version < "4.0"
102
+ stack-data==0.6.2 ; python_version >= "3.10" and python_version < "4.0"
103
  streamlit==1.24.0 ; python_version >= "3.10" and python_version < "4.0"
104
  tenacity==8.2.2 ; python_version >= "3.10" and python_version < "4.0"
105
+ terminado==0.17.1 ; python_version >= "3.10" and python_version < "4.0"
106
+ tinycss2==1.2.1 ; python_version >= "3.10" and python_version < "4.0"
107
  toml==0.10.2 ; python_version >= "3.10" and python_version < "4.0"
108
+ tomli==2.0.1 ; python_version >= "3.10" and python_version < "3.11"
109
  toolz==0.12.0 ; python_version >= "3.10" and python_version < "4.0"
110
  tornado==6.3.2 ; python_version >= "3.10" and python_version < "4.0"
111
+ traitlets==5.9.0 ; python_version >= "3.10" and python_version < "4.0"
112
+ typing-extensions==4.7.0 ; python_version >= "3.10" and python_version < "4.0"
113
  tzdata==2023.3 ; python_version >= "3.10" and python_version < "4.0"
114
  tzlocal==4.3.1 ; python_version >= "3.10" and python_version < "4.0"
115
+ uri-template==1.3.0 ; python_version >= "3.10" and python_version < "4.0"
116
  urllib3==2.0.3 ; python_version >= "3.10" and python_version < "4.0"
117
  validators==0.20.0 ; python_version >= "3.10" and python_version < "4.0"
118
  watchdog==3.0.0 ; python_version >= "3.10" and python_version < "4.0" and platform_system != "Darwin"
119
+ wcwidth==0.2.6 ; python_version >= "3.10" and python_version < "4.0"
120
+ webcolors==1.13 ; python_version >= "3.10" and python_version < "4.0"
121
+ webencodings==0.5.1 ; python_version >= "3.10" and python_version < "4.0"
122
+ websocket-client==1.6.1 ; python_version >= "3.10" and python_version < "4.0"
123
  zipp==3.15.0 ; python_version >= "3.10" and python_version < "4.0"
scripts/build-run-local-docker.sh CHANGED
@@ -10,7 +10,7 @@ pushd $ROOT_DIRECTORY
10
  echo "Running from ROOT_DIRECTORY: ${ROOT_DIRECTORY}"
11
 
12
  # Export the dependencies managed by Poetry in the requirements.txt format for pip
13
- poetry export -f requirements.txt -o requirements.txt --without-hashes --only=main
14
 
15
  # Re-build the docker image.
16
  docker build --label tests -t $CONTAINER_NAME .
@@ -18,7 +18,7 @@ docker build --label tests -t $CONTAINER_NAME .
18
  # During development ONLY use a `bind mount` to enable
19
  # editing the code without having to rebuild the container.
20
  docker run --rm -it \
21
- -p 8501:8501 \
22
  --mount type=volume,src=$VOLUME_NAME,dst=/data \
23
  --mount type=bind,source=${ROOT_DIRECTORY}/src/,target=/app/,readonly \
24
  --mount type=bind,source=${ROOT_DIRECTORY}/.streamlit,target=/user/.streamlit,readonly \
 
10
  echo "Running from ROOT_DIRECTORY: ${ROOT_DIRECTORY}"
11
 
12
  # Export the dependencies managed by Poetry in the requirements.txt format for pip
13
+ poetry export -f requirements.txt -o requirements.txt --without-hashes --with=jupyter
14
 
15
  # Re-build the docker image.
16
  docker build --label tests -t $CONTAINER_NAME .
 
18
  # During development ONLY use a `bind mount` to enable
19
  # editing the code without having to rebuild the container.
20
  docker run --rm -it \
21
+ -p 8501:8501 -p 7860:7860 \
22
  --mount type=volume,src=$VOLUME_NAME,dst=/data \
23
  --mount type=bind,source=${ROOT_DIRECTORY}/src/,target=/app/,readonly \
24
  --mount type=bind,source=${ROOT_DIRECTORY}/.streamlit,target=/user/.streamlit,readonly \
start_jupyter.sh ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ JUPYTER_TOKEN="${JUPYTER_TOKEN:=huggingface}"
5
+
6
+ jupyter lab \
7
+ --ip "0.0.0.0" \
8
+ --port 7860 \
9
+ --no-browser \
10
+ --allow-root \
11
+ --ServerApp.token="$JUPYTER_TOKEN" \
12
+ --ServerApp.tornado_settings="{'headers': {'Content-Security-Policy': 'frame-ancestors *'}}" \
13
+ --ServerApp.cookie_options="{'SameSite': 'None', 'Secure': True}" \
14
+ --ServerApp.disable_check_xsrf=True \
15
+ --LabApp.news_url=None \
16
+ --LabApp.check_for_updates_class="jupyterlab.NeverCheckForUpdate"
start_server.sh ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ echo "TODO launch init / service"
4
+
start_streamlit.sh ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ mkdir -p $APP_DATA $HF_HOME
5
+
6
+ streamlit run \
7
+ --server.enableXsrfProtection=true \
8
+ --server.fileWatcherType=auto \
9
+ $APP_CODE/apps/streamlit_demo.py