Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Notebook does not save with rather unclear message about a string being too long #6006

Open
sidviny opened this issue Jan 15, 2025 · 5 comments
Labels
area: notebooks Issues related to Notebooks category. info needed Waiting on information

Comments

@sidviny
Copy link

sidviny commented Jan 15, 2025

System details:

Positron and OS details:

Positron Version: 2024.12.0 (system setup) build 96
Code - OSS Version: 1.93.0
Commit: c5ce275
Date: 2024-11-28T02:50:45.229Z
Electron: 30.4.0
Chromium: 124.0.6367.243
Node.js: 20.15.1
V8: 12.4.254.20-electron.0
OS: Windows_NT x64 10.0.26100

Interpreter details:

name: am2412
channels:

  • conda-forge
    dependencies:
  • _openmp_mutex=4.5=2_gnu
  • aiobotocore=2.16.1=pyhd8ed1ab_0
  • aiohappyeyeballs=2.4.4=pyhd8ed1ab_1
  • aiohttp=3.11.11=py312h31fea79_0
  • aioitertools=0.12.0=pyhd8ed1ab_1
  • aiosignal=1.3.2=pyhd8ed1ab_0
  • alabaster=1.0.0=pyhd8ed1ab_1
  • altair=5.5.0=pyhd8ed1ab_1
  • annotated-types=0.7.0=pyhd8ed1ab_1
  • ansi2html=1.9.2=py312h2e8e312_2
  • anyio=4.8.0=pyhd8ed1ab_0
  • anywidget=0.9.13=pyhd8ed1ab_1
  • appdirs=1.4.4=pyhd8ed1ab_1
  • argon2-cffi=23.1.0=pyhd8ed1ab_1
  • argon2-cffi-bindings=21.2.0=py312h4389bb4_5
  • arrow=1.3.0=pyhd8ed1ab_1
  • asgiref=3.8.1=pyhd8ed1ab_1
  • astropy=7.0.0=pyhd8ed1ab_3
  • astropy-base=7.0.0=py312hce9986f_3
  • astropy-iers-data=0.2025.1.13.0.34.51=pyhd8ed1ab_0
  • asttokens=3.0.0=pyhd8ed1ab_1
  • async-lru=2.0.4=pyhd8ed1ab_1
  • attrs=24.3.0=pyh71513ae_0
  • aws-c-auth=0.8.0=hd11252f_16
  • aws-c-cal=0.8.1=h099ea23_3
  • aws-c-common=0.10.6=h2466b09_0
  • aws-c-compression=0.3.0=h099ea23_5
  • aws-c-event-stream=0.5.0=h85d8506_11
  • aws-c-http=0.9.2=h3888f84_4
  • aws-c-io=0.15.3=hc5a9e45_5
  • aws-c-mqtt=0.11.0=h2c94728_12
  • aws-c-s3=0.7.7=h6a38c86_0
  • aws-c-sdkutils=0.2.2=h099ea23_0
  • aws-checksums=0.2.2=h099ea23_4
  • aws-crt-cpp=0.29.8=h703467b_1
  • aws-sdk-cpp=1.11.458=h41fbdec_5
  • azure-core=1.32.0=pyhff2d567_0
  • azure-identity=1.17.1=pyhd8ed1ab_1
  • azure-storage-blob=12.24.0=pyhd8ed1ab_1
  • azure-storage-file-datalake=12.18.0=pyhd8ed1ab_0
  • babel=2.16.0=pyhd8ed1ab_1
  • beautifulsoup4=4.12.3=pyha770c72_1
  • bleach=6.2.0=pyhd8ed1ab_3
  • bleach-with-css=6.2.0=hd8ed1ab_3
  • blinker=1.9.0=pyhff2d567_0
  • botocore=1.35.88=pyge310_1234567_0
  • bottleneck=1.4.2=py312h1a27103_0
  • bqplot=0.12.43=pyhd8ed1ab_1
  • brotli=1.1.0=h2466b09_2
  • brotli-bin=1.1.0=h2466b09_2
  • brotli-python=1.1.0=py312h275cf98_2
  • bzip2=1.0.8=h2466b09_7
  • c-ares=1.34.4=h2466b09_0
  • ca-certificates=2024.12.14=h56e8100_0
  • cached-property=1.5.2=hd8ed1ab_1
  • cached_property=1.5.2=pyha770c72_1
  • cairo=1.18.2=h5782bbf_1
  • cantera=3.1.0=py312h542da22_1
  • certifi=2024.12.14=pyhd8ed1ab_0
  • cffi=1.17.1=py312h4389bb4_0
  • charset-normalizer=3.4.1=pyhd8ed1ab_0
  • click=8.1.8=pyh7428d3b_0
  • cloudpickle=3.1.0=pyhd8ed1ab_2
  • clr_loader=0.2.7.post0=pyhd8ed1ab_0
  • colorama=0.4.6=pyhd8ed1ab_1
  • comm=0.2.2=pyhd8ed1ab_1
  • contourpy=1.3.1=py312hd5eb7cc_0
  • coolprop=6.6.0=py312h275cf98_3
  • cpython=3.12.8=py312hd8ed1ab_1
  • cryptography=44.0.0=py312h9500af3_0
  • cycler=0.12.1=pyhd8ed1ab_1
  • cython=3.0.11=py312h6018fb9_3
  • dash=2.18.2=pyhd8ed1ab_1
  • dash-bootstrap-components=1.6.0=pyhd8ed1ab_1
  • dash-core-components=2.0.0=pyhd8ed1ab_1
  • dash-daq=0.5.0=pyhd8ed1ab_2
  • dash-html-components=2.0.0=pyhd8ed1ab_2
  • dash_colorscales=0.0.4=pyh9f0ad1d_0
  • dask-core=2024.12.1=pyhd8ed1ab_0
  • debugpy=1.8.11=py312h275cf98_0
  • decorator=5.1.1=pyhd8ed1ab_1
  • defusedxml=0.7.1=pyhd8ed1ab_0
  • dnspython=2.7.0=pyhff2d567_1
  • docutils=0.21.2=pyhd8ed1ab_1
  • double-conversion=3.3.0=h63175ca_0
  • dtale=3.16.1=pyhd8ed1ab_0
  • email-validator=2.2.0=pyhd8ed1ab_1
  • email_validator=2.2.0=hd8ed1ab_1
  • entrypoints=0.4=pyhd8ed1ab_1
  • et_xmlfile=2.0.0=pyhd8ed1ab_1
  • exceptiongroup=1.2.2=pyhd8ed1ab_1
  • executing=2.1.0=pyhd8ed1ab_1
  • fastapi=0.115.6=pyhd8ed1ab_0
  • fastapi-cli=0.0.7=pyhd8ed1ab_0
  • flake8=7.1.1=pyhd8ed1ab_1
  • flask=3.1.0=pyhff2d567_0
  • flask-compress=1.17=pyhd8ed1ab_1
  • flaskwebgui=1.0.3=pyhd8ed1ab_1
  • fmt=11.0.2=h7f575de_0
  • font-ttf-dejavu-sans-mono=2.37=hab24e00_0
  • font-ttf-inconsolata=3.000=h77eed37_0
  • font-ttf-source-code-pro=2.038=h77eed37_0
  • font-ttf-ubuntu=0.83=h77eed37_3
  • fontconfig=2.15.0=h765892d_1
  • fonts-conda-ecosystem=1=0
  • fonts-conda-forge=1=0
  • fonttools=4.55.3=py312h31fea79_1
  • fqdn=1.5.1=pyhd8ed1ab_1
  • freetype=2.12.1=hdaf720e_2
  • frozenlist=1.5.0=py312h4389bb4_0
  • fsspec=2024.12.0=pyhd8ed1ab_0
  • future=1.0.0=pyhd8ed1ab_1
  • gast=0.4.0=pyh9f0ad1d_0
  • glpk=5.0=h8ffe710_0
  • graphite2=1.3.13=h63175ca_1003
  • greenlet=3.1.1=py312h275cf98_1
  • h11=0.14.0=pyhd8ed1ab_1
  • h2=4.1.0=pyhd8ed1ab_1
  • h5py=3.12.1=nompi_py312h0db4ba1_103
  • harfbuzz=10.2.0=h885c0d4_0
  • hdf5=1.14.4=nompi_hd5d9e70_105
  • highspy=1.9.0=np20py312h994d5b2_0
  • hpack=4.0.0=pyhd8ed1ab_1
  • html5lib=1.1=pyhd8ed1ab_2
  • htmltools=0.6.0=pyhd8ed1ab_0
  • httpcore=1.0.7=pyh29332c3_1
  • httptools=0.6.4=py312h4389bb4_0
  • httpx=0.28.1=pyhd8ed1ab_0
  • hyperframe=6.0.1=pyhd8ed1ab_1
  • icu=75.1=he0c23c2_0
  • idna=3.10=pyhd8ed1ab_1
  • imagesize=1.4.1=pyhd8ed1ab_0
  • importlib-metadata=8.5.0=pyha770c72_1
  • importlib_resources=6.5.2=pyhd8ed1ab_0
  • iniconfig=2.0.0=pyhd8ed1ab_1
  • ipydatagrid=1.4.0=pyhd8ed1ab_1
  • ipykernel=6.29.5=pyh4bbf305_0
  • ipympl=0.9.6=pyhd8ed1ab_0
  • ipython=8.31.0=pyh7428d3b_0
  • ipython_genutils=0.2.0=pyhd8ed1ab_2
  • ipywidgets=8.1.5=pyhd8ed1ab_1
  • isodate=0.7.2=pyhd8ed1ab_1
  • isoduration=20.11.0=pyhd8ed1ab_1
  • itables=2.2.4=pyh80e38bb_1
  • itsdangerous=2.2.0=pyhd8ed1ab_1
  • jedi=0.19.2=pyhd8ed1ab_1
  • jinja2=3.1.5=pyhd8ed1ab_0
  • jmespath=1.0.1=pyhd8ed1ab_1
  • joblib=1.4.2=pyhd8ed1ab_1
  • jplephem=2.21=pyh9b8db34_1
  • json5=0.10.0=pyhd8ed1ab_1
  • jsonpointer=3.0.0=py312h2e8e312_1
  • jsonschema=4.23.0=pyhd8ed1ab_1
  • jsonschema-specifications=2024.10.1=pyhd8ed1ab_1
  • jsonschema-with-format-nongpl=4.23.0=hd8ed1ab_1
  • jupyter=1.1.1=pyhd8ed1ab_1
  • jupyter-dash=0.4.2=pyhd8ed1ab_1
  • jupyter-lsp=2.2.5=pyhd8ed1ab_1
  • jupyter-server-proxy=4.4.0=pyhd8ed1ab_1
  • jupyter_client=8.6.3=pyhd8ed1ab_1
  • jupyter_console=6.6.3=pyhd8ed1ab_1
  • jupyter_core=5.7.2=pyh5737063_1
  • jupyter_events=0.11.0=pyhd8ed1ab_0
  • jupyter_server=2.15.0=pyhd8ed1ab_0
  • jupyter_server_terminals=0.5.3=pyhd8ed1ab_1
  • jupyterlab=4.3.4=pyhd8ed1ab_0
  • jupyterlab-dash=0.1.0a3=py_0
  • jupyterlab_pygments=0.3.0=pyhd8ed1ab_2
  • jupyterlab_server=2.27.3=pyhd8ed1ab_1
  • jupyterlab_widgets=3.0.13=pyhd8ed1ab_1
  • kaleido-core=0.2.1=h8ffe710_0
  • kiwisolver=1.4.7=py312hd5eb7cc_0
  • krb5=1.21.3=hdf4eb48_0
  • lcms2=2.16=h67d730c_0
  • lerc=4.0.0=h63175ca_0
  • libabseil=20240722.0=cxx17_h4eb7d71_4
  • libaec=1.1.3=h63175ca_0
  • libarrow=18.1.0=hb928929_8_cpu
  • libarrow-acero=18.1.0=h7d8d6a5_8_cpu
  • libarrow-dataset=18.1.0=h7d8d6a5_8_cpu
  • libarrow-substrait=18.1.0=h3dbecdf_8_cpu
  • libblas=3.9.0=26_win64_openblas
  • libbrotlicommon=1.1.0=h2466b09_2
  • libbrotlidec=1.1.0=h2466b09_2
  • libbrotlienc=1.1.0=h2466b09_2
  • libcantera=3.1.0=hbabc075_1
  • libcblas=3.9.0=26_win64_openblas
  • libclang13=19.1.6=default_ha5278ca_0
  • libcrc32c=1.1.2=h0e60522_0
  • libcurl=8.11.1=h88aaa65_0
  • libdeflate=1.23=h9062f6e_0
  • libevent=2.1.12=h3671451_1
  • libexpat=2.6.4=he0c23c2_0
  • libffi=3.4.2=h8ffe710_5
  • libgcc=14.2.0=h1383e82_1
  • libglib=2.82.2=h7025463_0
  • libgomp=14.2.0=h1383e82_1
  • libgoogle-cloud=2.33.0=h95c5cb2_1
  • libgoogle-cloud-storage=2.33.0=he5eb982_1
  • libgrpc=1.67.1=h0ac93cb_1
  • libiconv=1.17=hcfcfb64_2
  • libintl=0.22.5=h5728263_3
  • libjpeg-turbo=3.0.0=hcfcfb64_1
  • liblapack=3.9.0=26_win64_openblas
  • liblzma=5.6.3=h2466b09_1
  • libopenblas=0.3.28=pthreads_head3c61_1
  • libparquet=18.1.0=ha850022_8_cpu
  • libpng=1.6.45=had7236b_0
  • libprotobuf=5.28.3=h8309712_1
  • libre2-11=2024.07.02=h4eb7d71_2
  • libsodium=1.0.20=hc70643c_0
  • libsqlite=3.47.2=h67fdade_0
  • libssh2=1.11.1=he619c9f_0
  • libthrift=0.21.0=hbe90ef8_0
  • libtiff=4.7.0=h797046b_3
  • libutf8proc=2.9.0=h2466b09_1
  • libwebp-base=1.5.0=h3b0e114_0
  • libwinpthread=12.0.0.r4.gg4f2fc60ca=h57928b3_8
  • libxcb=1.17.0=h0e4246c_0
  • libxml2=2.13.5=he286e8c_1
  • libxslt=1.1.39=h3df6e99_0
  • libzlib=1.3.1=h2466b09_2
  • linkify-it-py=2.0.3=pyhd8ed1ab_1
  • locket=1.0.0=pyhd8ed1ab_0
  • lttbc=0.3.0=py312h4389bb4_0
  • lxml=5.3.0=py312h53bce91_2
  • lz4=4.3.3=py312h032eceb_2
  • lz4-c=1.10.0=h2466b09_1
  • markdown=3.6=pyhd8ed1ab_0
  • markdown-it-py=3.0.0=pyhd8ed1ab_1
  • markupsafe=3.0.2=py312h31fea79_1
  • mathjax=2.7.7=h57928b3_3
  • matplotlib=3.10.0=py312h2e8e312_0
  • matplotlib-base=3.10.0=py312h90004f6_0
  • matplotlib-inline=0.1.7=pyhd8ed1ab_1
  • mccabe=0.7.0=pyhd8ed1ab_1
  • mdit-py-plugins=0.4.2=pyhd8ed1ab_1
  • mdurl=0.1.2=pyhd8ed1ab_1
  • missingno=0.5.2=pyhd8ed1ab_0
  • mistune=3.1.0=pyhd8ed1ab_0
  • mpmath=1.3.0=pyhd8ed1ab_1
  • msal=1.31.1=pyhd8ed1ab_0
  • msal_extensions=1.2.0=py312h2e8e312_2
  • multidict=6.1.0=py312h31fea79_1
  • munkres=1.1.4=pyh9f0ad1d_0
  • narwhals=1.21.1=pyhd8ed1ab_0
  • nbclient=0.10.2=pyhd8ed1ab_0
  • nbconvert=7.16.5=hd8ed1ab_1
  • nbconvert-core=7.16.5=pyhd8ed1ab_1
  • nbconvert-pandoc=7.16.5=hd8ed1ab_1
  • nbformat=5.10.4=pyhd8ed1ab_1
  • nest-asyncio=1.6.0=pyhd8ed1ab_1
  • networkx=3.4.2=pyh267e887_2
  • nomkl=1.0=h5ca1d4c_0
  • notebook=7.3.2=pyhd8ed1ab_0
  • notebook-shim=0.2.4=pyhd8ed1ab_1
  • numexpr=2.10.2=py312h4f83d31_100
  • numpy=2.2.1=py312hf10105a_0
  • openjpeg=2.5.3=h4d64b90_0
  • openpyxl=3.1.5=py312he70551f_1
  • openssl=3.4.0=ha4e3fda_1
  • oracledb=2.5.1=py312h4389bb4_0
  • orc=2.0.3=haf104fe_2
  • orjson=3.10.14=py312h2615798_0
  • outcome=1.3.0.post0=pyhd8ed1ab_1
  • overrides=7.7.0=pyhd8ed1ab_1
  • packaging=24.2=pyhd8ed1ab_2
  • pandas=2.2.3=py312h72972c8_1
  • pandoc=3.6.2=h57928b3_0
  • pandocfilters=1.5.0=pyhd8ed1ab_0
  • parso=0.8.4=pyhd8ed1ab_1
  • partd=1.4.2=pyhd8ed1ab_0
  • patsy=1.0.1=pyhd8ed1ab_1
  • pcre2=10.44=h3d7b363_2
  • pickleshare=0.7.5=pyhd8ed1ab_1004
  • pillow=11.1.0=py312h078707f_0
  • pip=24.3.1=pyh8b19718_2
  • pixman=0.44.2=had0cd8c_0
  • pkgutil-resolve-name=1.3.10=pyhd8ed1ab_2
  • platformdirs=4.3.6=pyhd8ed1ab_1
  • plotly=5.24.1=pyhd8ed1ab_1
  • plotly-resampler=0.2.8=pyhd8ed1ab_0
  • pluggy=1.5.0=pyhd8ed1ab_1
  • ply=3.11=pyhd8ed1ab_3
  • portalocker=2.10.1=py312h2e8e312_1
  • predictr=0.1.27=pyhd8ed1ab_2
  • prometheus_client=0.21.1=pyhd8ed1ab_0
  • prompt-toolkit=3.0.48=pyha770c72_1
  • prompt_toolkit=3.0.48=hd8ed1ab_1
  • propcache=0.2.1=py312h4389bb4_0
  • psutil=6.1.1=py312h4389bb4_0
  • psygnal=0.11.1=pyhd8ed1ab_1
  • pthread-stubs=0.4=h0e40799_1002
  • pure_eval=0.2.3=pyhd8ed1ab_1
  • py2vega=0.6.1=pyhd8ed1ab_0
  • pyarrow=18.1.0=py312h2e8e312_0
  • pyarrow-core=18.1.0=py312h6a9c419_0_cpu
  • pycodestyle=2.12.1=pyhd8ed1ab_1
  • pycparser=2.22=pyh29332c3_1
  • pydantic=2.10.5=pyh3cfb1c2_0
  • pydantic-core=2.27.2=py312h2615798_0
  • pyerfa=2.0.1.5=py312h1a27103_0
  • pyflakes=3.2.0=pyhd8ed1ab_1
  • pygments=2.19.1=pyhd8ed1ab_0
  • pyjwt=2.10.1=pyhd8ed1ab_0
  • pyodbc=5.2.0=py312h275cf98_0
  • pyomo=6.8.2=py312h275cf98_1
  • pypandoc=1.15=pyhd8ed1ab_0
  • pyparsing=3.2.1=pyhd8ed1ab_0
  • pyside6=6.8.1=py312h2ee7485_0
  • pysocks=1.7.1=pyh09c184e_7
  • pytest=8.3.4=pyhd8ed1ab_1
  • python=3.12.8=h3f84c4b_1_cpython
  • python-dateutil=2.9.0.post0=pyhff2d567_1
  • python-dotenv=1.0.1=pyhd8ed1ab_1
  • python-fastjsonschema=2.21.1=pyhd8ed1ab_0
  • python-json-logger=2.0.7=pyhd8ed1ab_0
  • python-kaleido=0.2.1=pyhd8ed1ab_0
  • python-multipart=0.0.20=pyhff2d567_0
  • python-tzdata=2024.2=pyhd8ed1ab_1
  • python_abi=3.12=5_cp312
  • pythonnet=3.0.5=pyhd8ed1ab_0
  • pytz=2024.1=pyhd8ed1ab_0
  • pywin32=307=py312h275cf98_3
  • pywinpty=2.0.14=py312h275cf98_0
  • pyyaml=6.0.2=py312h4389bb4_1
  • pyzmq=26.2.0=py312hd7027bb_3
  • qhull=2020.2=hc790b64_5
  • qt6-main=6.8.1=h1259614_2
  • questionary=2.0.1=pyhd8ed1ab_0
  • re2=2024.07.02=haf4117d_2
  • referencing=0.35.1=pyhd8ed1ab_1
  • requests=2.32.3=pyhd8ed1ab_1
  • requests-file=2.1.0=pyhd8ed1ab_1
  • requests-negotiate-sspi=0.5.3=py312h2e8e312_3
  • requests-toolbelt=1.0.0=pyhd8ed1ab_1
  • retrying=1.3.3=pyhd8ed1ab_3
  • rfc3339-validator=0.1.4=pyhd8ed1ab_1
  • rfc3986-validator=0.1.1=pyh9f0ad1d_0
  • rich=13.9.4=pyhd8ed1ab_1
  • rich-toolkit=0.11.3=pyh29332c3_0
  • rpds-py=0.22.3=py312h2615798_0
  • ruamel.yaml=0.18.10=py312h4389bb4_0
  • ruamel.yaml.clib=0.2.8=py312h4389bb4_1
  • ruff=0.9.1=py312h4e4d446_0
  • ruptures=1.1.9=py312h1a27103_2
  • s3fs=2024.12.0=pyhd8ed1ab_0
  • scikit-learn=1.6.1=py312h816cc57_0
  • scipy=1.15.1=py312h928f2a1_0
  • seaborn=0.13.2=hd8ed1ab_3
  • seaborn-base=0.13.2=pyhd8ed1ab_3
  • selenium=4.27.1=pyhd8ed1ab_0
  • selenium-manager=4.27.0=ha073cba_0
  • send2trash=1.8.3=pyh5737063_1
  • setuptools=75.8.0=pyhff2d567_0
  • shellingham=1.5.4=pyhd8ed1ab_1
  • shiny=1.2.1=pyhd8ed1ab_0
  • simpervisor=1.0.0=pyhd8ed1ab_1
  • six=1.17.0=pyhd8ed1ab_0
  • snappy=1.2.1=h500f7fa_1
  • sniffio=1.3.1=pyhd8ed1ab_1
  • snowballstemmer=2.2.0=pyhd8ed1ab_0
  • sortedcontainers=2.4.0=pyhd8ed1ab_0
  • soupsieve=2.5=pyhd8ed1ab_1
  • sphinx=8.1.3=pyhd8ed1ab_1
  • sphinx_rtd_theme=3.0.1=pyha770c72_0
  • sphinxcontrib-applehelp=2.0.0=pyhd8ed1ab_1
  • sphinxcontrib-devhelp=2.0.0=pyhd8ed1ab_1
  • sphinxcontrib-htmlhelp=2.1.0=pyhd8ed1ab_1
  • sphinxcontrib-jquery=4.1=pyhd8ed1ab_1
  • sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_1
  • sphinxcontrib-qthelp=2.0.0=pyhd8ed1ab_1
  • sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1
  • spyder-kernels=3.0.2=win_pyh7428d3b_0
  • sqlalchemy=2.0.37=py312h4389bb4_0
  • squarify=0.4.3=py_0
  • stack_data=0.6.3=pyhd8ed1ab_1
  • starlette=0.41.3=pyha770c72_1
  • statsmodels=0.14.4=py312h1a27103_0
  • strsimpy=0.1.9=pyh9f0ad1d_0
  • sundials=7.2.1=h953672f_0
  • sympy=1.13.3=pyh04b8f61_5
  • tenacity=9.0.0=pyhd8ed1ab_1
  • terminado=0.18.1=pyh5737063_0
  • threadpoolctl=3.5.0=pyhc1e730c_0
  • tinycss2=1.4.0=pyhd8ed1ab_0
  • tk=8.6.13=h5226925_1
  • tomli=2.2.1=pyhd8ed1ab_1
  • toolz=1.0.0=pyhd8ed1ab_1
  • tornado=6.4.2=py312h4389bb4_0
  • tqdm=4.67.1=pyhd8ed1ab_1
  • trace-updater=0.0.9.1=pyh885dcc9_1
  • traitlets=5.14.3=pyhd8ed1ab_1
  • traittypes=0.2.1=pyh9f0ad1d_2
  • trio=0.28.0=py312h2e8e312_0
  • trio-websocket=0.11.1=pyhd8ed1ab_1
  • typer=0.15.1=pyhd8ed1ab_0
  • typer-slim=0.15.1=pyhd8ed1ab_0
  • typer-slim-standard=0.15.1=hd8ed1ab_0
  • types-python-dateutil=2.9.0.20241206=pyhd8ed1ab_0
  • typing-extensions=4.12.2=hd8ed1ab_1
  • typing_extensions=4.12.2=pyha770c72_1
  • typing_utils=0.1.0=pyhd8ed1ab_1
  • tzdata=2024b=hc8b5060_0
  • tzlocal=5.2=py312h2e8e312_1
  • uc-micro-py=1.0.3=pyhd8ed1ab_1
  • ucrt=10.0.22621.0=h57928b3_1
  • uncertainties=3.2.2=pyhd8ed1ab_2
  • unicodedata2=16.0.0=py312h4389bb4_0
  • uri-template=1.3.0=pyhd8ed1ab_1
  • urllib3=2.3.0=pyhd8ed1ab_0
  • uvicorn=0.34.0=pyh5737063_0
  • uvicorn-standard=0.34.0=h5737063_0
  • vc=14.3=ha32ba9b_23
  • vc14_runtime=14.42.34433=he29a5d6_23
  • vega_datasets=0.9.0=pyhd8ed1ab_1
  • vs2015_runtime=14.42.34433=hdffcdeb_23
  • waitress=3.0.2=pyhd8ed1ab_1
  • watchfiles=1.0.4=py312h2615798_0
  • wcwidth=0.2.13=pyhd8ed1ab_1
  • webcolors=24.11.1=pyhd8ed1ab_0
  • webencodings=0.5.1=pyhd8ed1ab_3
  • websocket-client=1.8.0=pyhd8ed1ab_1
  • websockets=14.1=py312h4389bb4_0
  • werkzeug=3.1.3=pyhd8ed1ab_1
  • wheel=0.45.1=pyhd8ed1ab_1
  • whichcraft=0.6.1=pyhd8ed1ab_1
  • widgetsnbextension=4.0.13=pyhd8ed1ab_1
  • win_inet_pton=1.1.0=pyh7428d3b_8
  • winpty=0.4.3=4
  • wrapt=1.17.1=py312h4389bb4_0
  • wsproto=1.2.0=pyhd8ed1ab_1
  • xarray=2025.1.1=pyhd8ed1ab_0
  • xlrd=2.0.1=pyhd8ed1ab_3
  • xorg-libxau=1.0.12=h0e40799_0
  • xorg-libxdmcp=1.1.5=h0e40799_0
  • yaml=0.2.5=h8ffe710_2
  • yaml-cpp=0.8.0=h63175ca_0
  • yarl=1.18.3=py312h4389bb4_0
  • zeep=4.3.1=pyhd8ed1ab_1
  • zeromq=4.3.5=ha9f60a1_7
  • zipp=3.21.0=pyhd8ed1ab_1
  • zstandard=0.23.0=py312h7606c53_1
  • zstd=1.5.6=h0ea2cb4_0
  • pip:
    • autograd==1.7.0
    • autograd-gamma==0.5.0
    • evtx==0.8.8
    • grpcio==1.69.0
    • grpcio-tools==1.69.0
    • mplcursors==0.6
    • opencv-python==4.10.0.84
    • protobuf==5.28.1
    • reliability==0.8.16
      prefix: C:\ProgramData\miniforge3\envs\am2412

Describe the issue:

I was converting a Windows Event Log file into a dataframe with own code. That all works, we use the code since a couple of months. The final dataframe is about 95k of rows, 9 columns. When I tried to save the notebook, I got the following error:

Image

I suppose this is because of the size of the dataframe it's trying to include in the notebook, but the message is unclear.

Steps to reproduce the issue:

  1. I suppose you need to open a very large dataframe and save it. I don't know if it's related to our data. In VSCode this does work.
  2. I cannot send you the .evtx file. It contains data I cannot disclose.

Expected or desired behavior:

It should either save the file or show a better message.

Were there any error messages in the UI, Output panel, or Developer Tools console?

@sharon-wang sharon-wang added the area: notebooks Issues related to Notebooks category. label Jan 15, 2025
@sharon-wang
Copy link
Member

Hi @sidviny! Thanks for taking the time to report this. I have a few questions to get a better idea of how to reproduce what you're seeing:

  • Are you able to share more about the code you're running in the test_event_logging.ipynb notebook, ideally as a reproducible example?
  • Could you please open the Developer Tools console and share a screenshot or paste the errors if there are any? From the Command Palette, run the Developer: Toggle Developer Tools command. Then, from the Developer Tools panel that appears, select the Console tab.

@sharon-wang sharon-wang added the info needed Waiting on information label Jan 15, 2025
@sidviny
Copy link
Author

sidviny commented Jan 16, 2025

Our code for parsing this file is below:

def read_event_logging(
    start_date: str, 
    filename: str = "Security.evtx"
):
    """Read auditing logging.

    Parameters
    ----------
    start_date : str
        Start date from which to read the logging.

    filename : str, optional
        Which event logging to read.

    Returns
    -------
    pandas DataFrame
        The dataframe only contains logging about files that were changed.

    Examples
    --------
    dfs = read_event_logging()
    dfs = read_event_logging('2024-01-11')

    """
    # Imports specified here as only this function requires PyEvtxParser
    import json
    from evtx import PyEvtxParser

    print(f"Reading file {filename}")
    parser = PyEvtxParser(filename)

    print("Converting to dataframe")
    df = pd.json_normalize(parser.records_json())

    # Add extra columns
    df["object_name"] = ""
    df["object_type"] = ""
    df["user_name"] = ""
    df["access_mask"] = ""

    print("Start parsing...")
    for index, row in df.iterrows():
        # We skip the loggins before the start_date
        if row["timestamp"] < start_date:
            continue
        # For the later events, we read the data
        item = row["data"]
        data = json.loads(item)
        event = data["Event"]
        print(item)
        print(event)
        print("-------------------")
        if "EventData" in event.keys():
            event_data = event["EventData"]
            if isinstance(event_data, dict):
                if "ObjectName" in event_data.keys():
                    object_name = event_data["ObjectName"]
                    object_type = event_data.get("ObjectType", "")
                    user_name = event_data.get("SubjectUserName", "")
                    access_mask = event_data.get("AccessMask", "")
                    info = {
                        "event_id": [row["event_record_id"]],
                        "timestamp": [row["timestamp"]],
                        "object_name": [object_name],
                        "object_type": [object_type],
                        "user_name": [user_name],
                        "access_mask": [access_mask],
                    }
                    df.loc[index, "object_name"] = object_name
                    df.loc[index, "object_type"] = object_type
                    df.loc[index, "user_name"] = user_name
                    df.loc[index, "access_mask"] = access_mask
                    print(info)

    # Only take records where a file was touched
    # dfs = df[df.object_name.str.len() > 1].copy()

    # Only take records where a file with an extension was touched
    dfs = df[df.object_name.str.find(".") > 0].copy()
    dfs = dfs[dfs.object_type == "File"].copy()

    access_rights = pd.DataFrame(
        {
            "access_mask": {
                0: "0x10",
                1: "",
                2: "0x10000",
                3: "0x2",
                4: "0x6",
                5: "0x20000",
                6: "0xc0000",
                7: "0x1000000",
                8: "0x10c0000",
                9: "0x100",
                10: "0x0",
                11: "0x1",
                12: "0x80",
                13: "0x10080",
                14: "0x4",
                15: "0x40000",
            },
            "action": {
                0: "write_ea",
                1: "",
                2: "delete",
                3: "write",
                4: "0x6",
                5: "read_control",
                6: "0xc0000",
                7: "0x1000000",
                8: "0x10c0000",
                9: "write",  # 'write_attributes',
                10: "0x0",
                11: "read_data",
                12: "read_attributes",
                13: "delete",  # 'append_data',
                14: "add_subdirectory",
                15: "write_dac",
            },
        }
    )

    # merge data
    dfs = dfs.merge(access_rights)

    # return the data
    return dfs

@sidviny
Copy link
Author

sidviny commented Jan 16, 2025

This is the code used in that function.

I tested with the Security-big-sample.evtx. Well, that file does not seem to be big enough. Our file is way larger.

As said, I cannot upload the file here. It's our Security.evtx, which contains too much information for the whole world to see. However, I can send you this file via WeTransfer. We were already in contact with Posit before. I work for ArcelorMittal in Ghent (Belgium). My email is [email protected].

@sidviny
Copy link
Author

sidviny commented Jan 16, 2025

Image

Image

@seeM
Copy link
Contributor

seeM commented Jan 17, 2025

Even if the dataframe is very large, notebooks should only contain source code and cell outputs so they should typically be small especially when there are no images.

Either:

  1. There's a really large cell output which is probably wise to avoid in general since it will slow down the UI and end up with an unnecessarily large notebook file.
  2. There's an internal bug causing a large string to be created in the internal notebook representation.

Here's one way to differentiate:

Are you able to save the notebook after first running the "Notebook: Clear All Outputs" command?

If so, you could try to narrow down to the specific notebook cell that has the problematic output by clearing all outputs, running a cell, saving, running the next cell, saving, and so on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: notebooks Issues related to Notebooks category. info needed Waiting on information
Projects
None yet
Development

No branches or pull requests

3 participants