From 695bf1e62da19ec5c4267a38cc58455cdf859f1b Mon Sep 17 00:00:00 2001 From: Ben Dichter Date: Wed, 13 May 2026 13:54:42 -0400 Subject: [PATCH 1/3] Sargolini2006: drop arbitrary numpy<2 cap, match Colab versions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The PR-141-era input deps included `numpy>=1.26,<2` for this notebook, which forced the resolver to pin numpy==1.26.4. That cap appears to have been a precaution at the time — the notebook code itself is fully numpy-2.x compatible (no removed APIs like np.NaN/np.product/etc), and the chosen pynapple==0.11.1 already works against numpy 2.0.2. Updated direct deps: - numpy>=1.26,<2 -> numpy>=1.26 - pynapple>=0.6 -> pynapple>=0.11 Re-resolved against the Colab preinstalled-package constraint set (.github/colab-preinstalled.txt, brought in from #149's colab-bootstrap-locked branch which had it but didn't make it to master in the merge). Key resolved pins now match Colab exactly: numpy==2.0.2 <- matches Colab; no kernel restart on install pandas==2.2.2 <- matches Colab scipy==1.16.3 <- matches Colab h5py==3.16.0 <- matches Colab plotly==5.24.1 <- matches Colab pynapple==0.11.2 <- latest, supports numpy 2.x Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/colab-preinstalled.txt | 653 ++++++++++++++++++ .../000582_Sargolini2006_demo.ipynb | 64 +- 2 files changed, 684 insertions(+), 33 deletions(-) create mode 100644 .github/colab-preinstalled.txt diff --git a/.github/colab-preinstalled.txt b/.github/colab-preinstalled.txt new file mode 100644 index 0000000..cf4765d --- /dev/null +++ b/.github/colab-preinstalled.txt @@ -0,0 +1,653 @@ +# Google Colab's preinstalled package versions (Python 3.12 runtime). +# Source: https://github.com/googlecolab/backend-info (pip-freeze.txt) +# Last refreshed: 2026-05-13 +# +# This file is used as a uv-pip-compile --constraint when resolving each +# notebook's install-cell lock. Matching Colab's versions means the notebook +# install becomes a no-op for packages that are already at Colab's version, +# which is much faster AND avoids the "you must RESTART RUNTIME" prompt that +# numpy and other C-extension packages trigger when changed mid-session. +# +# When a notebook's direct deps say something incompatible with the Colab +# version (eg `numpy<2` for a notebook that uses np.NaN), the resolver +# falls back to ignoring constraints for that notebook — the lock will end +# up with non-Colab versions and the user WILL need to restart. That's the +# right trade: the notebook needs the older version to function. + +absl-py==1.4.0 +accelerate==1.13.0 +access==1.1.10.post3 +affine==2.4.0 +aiofiles==24.1.0 +aiohappyeyeballs==2.6.1 +aiohttp==3.13.5 +aiosignal==1.4.0 +aiosqlite==0.22.1 +alabaster==1.0.0 +albucore==0.0.24 +albumentations==2.0.8 +ale-py==0.11.2 +alembic==1.18.4 +altair==5.5.0 +annotated-doc==0.0.4 +annotated-types==0.7.0 +antlr4-python3-runtime==4.9.3 +anyio==4.13.0 +anywidget==0.9.21 +apsw==3.53.0.0 +apswutils==0.1.2 +argon2-cffi==25.1.0 +argon2-cffi-bindings==25.1.0 +array_record==0.8.3 +arrow==1.4.0 +arviz==0.22.0 +astropy==7.2.0 +astropy-iers-data==0.2026.4.20.0.58.15 +astunparse==1.6.3 +atpublic==5.1 +attrs==26.1.0 +audioread==3.1.0 +Authlib==1.6.11 +autograd==1.8.0 +babel==2.18.0 +backcall==0.2.0 +beartype==0.22.9 +beautifulsoup4==4.13.5 +betterproto==2.0.0b6 +bigframes==2.39.0 +bigquery-magics==0.14.0 +bleach==6.3.0 +blinker==1.9.0 +blis==1.3.3 +blobfile==3.2.0 +blosc2==4.1.2 +bokeh==3.8.2 +Bottleneck==1.4.2 +bqplot==0.12.45 +branca==0.8.2 +brotli==1.2.0 +CacheControl==0.14.4 +cachetools==6.2.6 +catalogue==2.0.10 +certifi==2026.4.22 +cffi==2.0.0 +chardet==5.2.0 +charset-normalizer==3.4.7 +clarabel==0.11.1 +click==8.3.3 +click-plugins==1.1.1.2 +cligj==0.7.2 +cloudpathlib==0.23.0 +cloudpickle==3.1.2 +cmake==3.31.10 +cmdstanpy==1.3.0 +colorcet==3.1.0 +colorlover==0.3.0 +community==1.0.0b1 +confection==1.3.3 +cons==0.4.7 +contourpy==1.3.3 +cramjam==2.11.0 +cryptography==43.0.3 +cufflinks==0.17.3 +curl_cffi==0.15.0 +cvxopt==1.3.2 +cvxpy==1.6.7 +cycler==0.12.1 +cyipopt==1.5.0 +cymem==2.0.13 +Cython==3.0.12 +dask==2026.3.0 +dataproc-spark-connect==1.1.0 +datasets==4.0.0 +db-dtypes==1.5.1 +debugpy==1.8.15 +decorator==4.4.2 +defusedxml==0.7.1 +deprecation==2.1.0 +diffusers==0.37.1 +dill==0.3.8 +distro==1.9.0 +dlib==19.24.6 +dm-tree==0.1.10 +docstring_parser==0.18.0 +docutils==0.21.2 +dopamine_rl==4.1.2 +duckdb==1.3.2 +earthengine-api==1.7.22 +easydict==1.13 +editdistance==0.8.1 +eerepr==0.1.2 +einops==0.8.2 +entrypoints==0.4 +esda==2.9.0 +et_xmlfile==2.0.0 +etils==1.14.0 +etuples==0.3.10 +Farama-Notifications==0.0.4 +fastai==2.8.7 +fastapi==0.136.1 +fastcore==1.12.42 +fastdownload==0.0.7 +fastjsonschema==2.21.2 +fastlite==0.2.4 +fastprogress==1.1.5 +fasttransform==0.0.2 +ffmpy==1.0.0 +filelock==3.29.0 +fiona==1.10.1 +firebase-admin==6.9.0 +Flask==3.1.3 +flatbuffers==25.12.19 +flax==0.11.2 +folium==0.20.0 +fonttools==4.62.1 +fqdn==1.5.1 +frozendict==2.4.7 +frozenlist==1.8.0 +fsspec==2025.3.0 +future==1.0.0 +gast==0.7.0 +gcsfs==2025.3.0 +GDAL==3.8.4 +gdown==5.2.2 +geemap==0.37.2 +geocoder==1.38.1 +geographiclib==2.1 +geopandas==1.1.3 +geopy==2.4.1 +giddy==2.3.6 +gin-config==0.5.0 +gitdb==4.0.12 +GitPython==3.1.47 +glob2==0.7 +google==3.0.0 +google-adk==1.29.0 +google-ai-generativelanguage==0.6.15 +google-api-core==2.30.3 +google-api-python-client==2.194.0 +google-auth==2.47.0 +google-auth-httplib2==0.3.1 +google-auth-oauthlib==1.3.1 +google-cloud-aiplatform==1.148.1 +google-cloud-appengine-logging==1.9.0 +google-cloud-audit-log==0.5.0 +google-cloud-bigquery==3.41.0 +google-cloud-bigquery-connection==1.21.0 +google-cloud-bigquery-storage==2.37.0 +google-cloud-bigtable==2.36.0 +google-cloud-core==2.5.1 +google-cloud-dataplex==2.18.0 +google-cloud-dataproc==5.27.0 +google-cloud-datastore==2.24.0 +google-cloud-discoveryengine==0.13.12 +google-cloud-firestore==2.27.0 +google-cloud-functions==1.23.0 +google-cloud-iam==2.22.0 +google-cloud-language==2.20.0 +google-cloud-logging==3.15.0 +google-cloud-monitoring==2.30.0 +google-cloud-pubsub==2.37.0 +google-cloud-resource-manager==1.17.0 +google-cloud-secret-manager==2.27.0 +google-cloud-spanner==3.65.0 +google-cloud-speech==2.38.0 +google-cloud-storage==3.10.1 +google-cloud-trace==1.19.0 +google-cloud-translate==3.26.0 +google-crc32c==1.8.0 +google-genai==1.68.0 +google-generativeai==0.8.6 +google-pasta==0.2.0 +google-resumable-media==2.8.2 +googleapis-common-protos==1.74.0 +googledrivedownloader==1.1.0 +gradio==5.50.0 +gradio_client==1.14.0 +grain==0.2.16 +graphviz==0.21 +greenlet==3.4.0 +groovy==0.1.2 +grpc-google-iam-v1==0.14.4 +grpc-interceptor==0.15.4 +grpcio==1.80.0 +grpcio-status==1.71.2 +grpclib==0.4.9 +gspread==6.2.1 +gspread-dataframe==4.0.0 +gym==0.25.2 +gym-notices==0.1.0 +gymnasium==1.3.0 +h11==0.16.0 +h2==4.3.0 +h5netcdf==1.8.1 +h5py==3.16.0 +hdbscan==0.8.42 +hf-xet==1.4.3 +highspy==1.14.0 +holidays==0.95 +holoviews==1.22.1 +hpack==4.1.0 +html5lib==1.1 +httpcore==1.0.9 +httpimport==1.4.1 +httplib2==0.31.2 +httptools==0.7.1 +httpx==0.28.1 +httpx-sse==0.4.3 +huggingface_hub==1.11.0 +humanize==4.15.0 +hyperframe==6.1.0 +hyperopt==0.2.7 +ibis-framework==9.5.0 +idna==3.13 +ImageIO==2.37.3 +imageio-ffmpeg==0.6.0 +imagesize==2.0.0 +imbalanced-learn==0.14.1 +immutabledict==4.3.1 +importlib_metadata==8.7.1 +importlib_resources==7.1.0 +imutils==0.5.4 +inequality==1.1.2 +inflect==7.5.0 +iniconfig==2.3.0 +intel-cmplr-lib-ur==2025.3.3 +intel-openmp==2025.3.3 +ipyevents==2.0.4 +ipyfilechooser==0.6.0 +ipykernel==6.17.1 +ipyleaflet==0.20.0 +ipyparallel==8.8.0 +ipython==7.34.0 +ipython-genutils==0.2.0 +ipython-sql==0.5.0 +ipywidgets==7.7.1 +isoduration==20.11.0 +itsdangerous==2.2.0 +jaraco.classes==3.4.0 +jaraco.context==6.1.2 +jaraco.functools==4.4.0 +jax==0.7.2 +jaxlib==0.7.2 +jeepney==0.9.0 +jieba==0.42.1 +Jinja2==3.1.6 +jiter==0.14.0 +joblib==1.5.3 +jsonpatch==1.33 +jsonpickle==4.1.1 +jsonpointer==3.1.1 +jsonschema==4.26.0 +jsonschema-specifications==2025.9.1 +jupyter-console==6.6.3 +jupyter-events==0.12.1 +jupyter-leaflet==0.20.0 +jupyter_client==7.4.9 +jupyter_core==5.9.1 +jupyter_server==2.14.0 +jupyter_server_terminals==0.5.4 +jupyterlab_pygments==0.3.0 +jupyterlab_widgets==3.0.16 +jupytext==1.19.1 +kaggle==2.0.2 +kagglehub==1.0.0 +kagglesdk==0.1.20 +keras==3.13.2 +keras-hub==0.26.0 +keras-nlp==0.26.0 +keyring==25.7.0 +keyrings.google-artifactregistry-auth==1.1.2 +kiwisolver==1.5.0 +langchain==1.2.15 +langchain-core==1.3.1 +langgraph==1.1.9 +langgraph-checkpoint==4.0.2 +langgraph-prebuilt==1.0.10 +langgraph-sdk==0.3.13 +langsmith==0.7.34 +lark==1.3.1 +lazy-loader==0.5 +libclang==18.1.1 +libpysal==4.14.1 +librosa==0.11.0 +lightgbm==4.6.0 +linkify-it-py==2.1.0 +llvmlite==0.43.0 +locket==1.0.0 +logical-unification==0.4.7 +lxml==6.1.0 +Mako==1.3.11 +mapclassify==2.10.0 +Markdown==3.10.2 +markdown-it-py==4.0.0 +MarkupSafe==3.0.3 +matplotlib==3.10.0 +matplotlib-inline==0.2.1 +matplotlib-venn==1.1.2 +mcp==1.27.0 +mdit-py-plugins==0.5.0 +mdurl==0.1.2 +mgwr==2.2.1 +miniKanren==1.0.5 +missingno==0.5.2 +mistune==3.2.0 +mizani==0.13.5 +mkl==2025.3.1 +ml_dtypes==0.5.4 +mlxtend==0.23.4 +mmh3==5.2.1 +momepy==0.11.0 +more-itertools==10.8.0 +moviepy==1.0.3 +mpmath==1.3.0 +msgpack==1.1.2 +multidict==6.7.1 +multipledispatch==1.0.0 +multiprocess==0.70.16 +multitasking==0.0.13 +murmurhash==1.0.15 +music21==9.9.1 +namex==0.1.0 +narwhals==2.20.0 +natsort==8.4.0 +nbclassic==1.3.3 +nbclient==0.10.4 +nbconvert==7.17.1 +nbformat==5.10.4 +ndindex==1.10.1 +nest-asyncio==1.6.0 +networkx==3.6.1 +nibabel==5.4.2 +nltk==3.9.1 +notebook==6.5.7 +notebook_shim==0.2.4 +numba==0.60.0 +numexpr==2.14.1 +numpy==2.0.2 +nvidia-nccl-cu12==2.30.4 +oauth2client==4.1.3 +oauthlib==3.3.1 +omegaconf==2.3.0 +openai==2.32.0 +opencv-contrib-python==4.13.0.92 +opencv-python==4.13.0.92 +opencv-python-headless==4.13.0.92 +openpyxl==3.1.5 +opt_einsum==3.4.0 +optax==0.2.8 +optree==0.19.0 +orbax-checkpoint==0.11.36 +orjson==3.11.8 +ormsgpack==1.12.2 +osqp==1.1.1 +overrides==7.7.0 +packaging==26.1 +pandas==2.2.2 +pandas-datareader==0.10.0 +pandas-gbq==0.30.0 +pandas-stubs==2.2.2.240909 +pandocfilters==1.5.1 +panel==1.8.10 +param==2.3.3 +parso==0.8.6 +parsy==2.2 +partd==1.4.2 +patsy==1.0.2 +peewee==4.0.5 +peft==0.19.1 +pexpect==4.9.0 +pickleshare==0.7.5 +pillow==11.3.0 +platformdirs==4.9.6 +plotly==5.24.1 +plotnine==0.14.5 +pluggy==1.6.0 +plum-dispatch==2.8.0 +pointpats==2.5.5 +polars==1.35.2 +pooch==1.9.0 +portpicker==1.5.2 +preshed==3.0.13 +prettytable==3.17.0 +proglog==0.1.12 +progressbar2==4.5.0 +prometheus_client==0.25.0 +promise==2.3 +prompt_toolkit==3.0.52 +propcache==0.4.1 +prophet==1.3.0 +proto-plus==1.27.2 +protobuf==5.29.6 +psutil==5.9.5 +psycopg2==2.9.12 +psygnal==0.15.1 +ptyprocess==0.7.0 +PuLP==3.3.0 +py-cpuinfo==9.0.0 +py4j==0.10.9.9 +pyarrow==18.1.0 +pyasn1==0.6.3 +pyasn1_modules==0.4.2 +pycocotools==2.0.11 +pycparser==3.0 +pycryptodomex==3.23.0 +pydantic==2.12.3 +pydantic-settings==2.14.0 +pydantic_core==2.41.4 +pydata-google-auth==1.9.1 +pydot==4.0.1 +pydotplus==2.0.2 +PyDrive2==1.21.3 +pydub==0.25.1 +pyerfa==2.0.1.5 +pygame==2.6.1 +pygit2==1.19.2 +Pygments==2.20.0 +pyiceberg==0.11.1 +PyJWT==2.12.1 +pymc==5.28.4 +pynndescent==0.6.0 +pyogrio==0.12.1 +pyomo==6.10.0 +PyOpenGL==3.1.10 +pyOpenSSL==24.2.1 +pyparsing==3.3.2 +pyperclip==1.11.0 +pyproj==3.7.2 +pyroaring==1.0.4 +pysal==25.7 +pyshp==3.0.3 +PySocks==1.7.1 +pyspark==4.0.2 +pytensor==2.38.2 +pytest==8.4.2 +python-box==7.4.1 +python-dateutil==2.9.0.post0 +python-dotenv==1.2.2 +python-fasthtml==0.12.50 +python-json-logger==4.1.0 +python-louvain==0.16 +python-multipart==0.0.26 +python-slugify==8.0.4 +python-snappy==0.7.3 +python-utils==3.9.1 +pytz==2025.2 +pyviz_comms==3.0.6 +PyWavelets==1.9.0 +PyYAML==6.0.3 +pyzmq==26.2.1 +quantecon==0.11.2 +rasterio==1.5.0 +rasterstats==0.20.0 +ratelim==0.1.6 +referencing==0.37.0 +regex==2025.11.3 +requests==2.32.4 +requests-oauthlib==2.0.0 +requests-toolbelt==1.0.0 +requirements-parser==0.9.0 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rfc3987-syntax==1.1.0 +rich==13.9.4 +roman-numerals==4.1.0 +roman-numerals-py==4.1.0 +rpds-py==0.30.0 +rpy2==3.5.17 +rsa==4.9.1 +rtree==1.4.1 +ruff==0.15.11 +safehttpx==0.1.7 +safetensors==0.7.0 +scikit-image==0.25.2 +scikit-learn==1.6.1 +scipy==1.16.3 +scooby==0.11.2 +scs==3.2.11 +seaborn==0.13.2 +SecretStorage==3.5.0 +segregation==2.5.4 +semantic-version==2.10.0 +Send2Trash==2.1.0 +sentence-transformers==5.4.1 +sentencepiece==0.2.1 +sentry-sdk==2.58.0 +setuptools==75.2.0 +shap==0.51.0 +shapely==2.1.2 +shellingham==1.5.4 +simple-parsing==0.1.8 +simplejson==4.1.0 +simsimd==6.5.16 +six==1.17.0 +sklearn-compat==0.1.5 +sklearn-pandas==2.2.0 +slicer==0.0.8 +smart_open==7.6.0 +smmap==5.0.3 +sniffio==1.3.1 +snowballstemmer==3.0.1 +soundfile==0.13.1 +soupsieve==2.8.3 +soxr==1.0.0 +spacy==3.8.14 +spacy-legacy==3.0.12 +spacy-loggers==1.0.5 +spaghetti==1.7.6 +spanner-graph-notebook==1.1.10 +spglm==1.1.0 +Sphinx==8.2.3 +sphinxcontrib-applehelp==2.0.0 +sphinxcontrib-devhelp==2.0.0 +sphinxcontrib-htmlhelp==2.1.0 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==2.0.0 +sphinxcontrib-serializinghtml==2.0.0 +spint==1.0.7 +splot==1.1.7 +spopt==0.7.0 +spreg==1.9.0 +SQLAlchemy==2.0.49 +sqlalchemy-spanner==1.17.3 +sqlglot==25.20.2 +sqlparse==0.5.5 +srsly==2.5.3 +sse-starlette==3.3.4 +stanio==0.5.1 +starlette==0.52.1 +statsmodels==0.14.6 +strictyaml==1.7.3 +stringzilla==4.6.0 +stumpy==1.13.0 +sympy==1.14.0 +tables==3.10.2 +tabulate==0.9.0 +tbb==2022.3.1 +tcmlib==1.4.1 +tenacity==9.1.4 +tensorboard==2.20.0 +tensorboard-data-server==0.7.2 +tensorflow==2.20.0 +tensorflow-datasets==4.9.9 +tensorflow-hub==0.16.1 +tensorflow-metadata==1.17.3 +tensorflow-probability==0.25.0 +tensorflow-text==2.20.1 +tensorstore==0.1.82 +termcolor==3.3.0 +terminado==0.18.1 +text-unidecode==1.3 +textblob==0.19.0 +tf-slim==1.1.0 +tf_keras==2.20.0 +thinc==8.3.13 +threadpoolctl==3.6.0 +tifffile==2026.4.11 +tiktoken==0.12.0 +timm==1.0.26 +tinycss2==1.4.0 +tobler==0.14.0 +tokenizers==0.22.2 +toml==0.10.2 +tomlkit==0.13.3 +toolz==0.12.1 +torchao==0.10.0 +torchdata==0.11.0 +torchsummary==1.5.1 +torchtune==0.6.1 +tornado==6.5.1 +tqdm==4.67.3 +traitlets==5.7.1 +traittypes==0.2.3 +transformers==5.0.0 +treescope==0.1.10 +tsfresh==0.21.1 +tweepy==4.16.0 +typeguard==4.5.1 +typer==0.24.2 +typer-slim==0.24.0 +types-pytz==2026.1.1.20260408 +types-setuptools==82.0.0.20260508 +typing-inspection==0.4.2 +typing_extensions==4.15.0 +tzdata==2026.1 +tzlocal==5.3.1 +uc-micro-py==2.0.0 +umap-learn==0.5.12 +umf==1.0.3 +uri-template==1.3.0 +uritemplate==4.2.0 +urllib3==2.5.0 +uuid_utils==0.14.1 +uvicorn==0.46.0 +uvloop==0.22.1 +vega-datasets==0.9.0 +wandb==0.26.1 +wasabi==1.1.3 +watchdog==6.0.0 +watchfiles==1.1.1 +wcwidth==0.6.0 +weasel==1.0.0 +webcolors==25.10.0 +webencodings==0.5.1 +websocket-client==1.9.0 +websockets==15.0.1 +Werkzeug==3.1.8 +wheel==0.47.0 +widgetsnbextension==3.6.10 +wordcloud==1.9.6 +wrapt==2.1.2 +xarray==2025.12.0 +xarray-einstats==0.10.0 +xgboost==3.2.0 +xlrd==2.0.2 +xxhash==3.6.0 +xyzservices==2026.3.0 +yarl==1.23.0 +ydf==0.15.0 +ydf_tf==2.20.0 +yellowbrick==1.5 +yfinance==0.2.66 +zipp==3.23.1 +zstandard==0.25.0 diff --git a/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb b/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb index 202fa73..94b8b1c 100644 --- a/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb +++ b/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb @@ -33,6 +33,7 @@ "# pinned below so the notebook is reproducible regardless of resolver drift.\n", "!pip install -q uv\n", "!uv pip install --system \\\n", + " \"Resolved 103 packages in 569ms\" \\\n", " \"acres==0.5.0\" \\\n", " \"aiohappyeyeballs==2.6.1\" \\\n", " \"aiohttp==3.13.5\" \\\n", @@ -41,18 +42,17 @@ " \"arrow==1.4.0\" \\\n", " \"asciitree==0.3.3\" \\\n", " \"attrs==26.1.0\" \\\n", - " \"bids-validator-deno==2.4.1\" \\\n", " \"bidsschematools==1.2.2\" \\\n", - " \"blessed==1.39.0\" \\\n", + " \"blessed==1.38.0\" \\\n", " \"certifi==2026.4.22\" \\\n", " \"cffi==2.0.0\" \\\n", " \"charset-normalizer==3.4.7\" \\\n", " \"ci-info==0.4.0\" \\\n", - " \"click==8.1.8\" \\\n", + " \"click==8.3.3\" \\\n", " \"click-didyoumean==0.3.1\" \\\n", - " \"cryptography==48.0.0\" \\\n", - " \"dandi==0.75.1\" \\\n", - " \"dandischema==0.12.1\" \\\n", + " \"cryptography==43.0.3\" \\\n", + " \"dandi==0.68.1\" \\\n", + " \"dandischema==0.11.1\" \\\n", " \"deprecated==1.3.1\" \\\n", " \"dnspython==2.8.0\" \\\n", " \"email-validator==2.3.0\" \\\n", @@ -61,12 +61,12 @@ " \"fqdn==1.5.1\" \\\n", " \"frozenlist==1.8.0\" \\\n", " \"fscacher==0.4.4\" \\\n", - " \"fsspec==2026.4.0\" \\\n", + " \"fsspec==2025.3.0\" \\\n", " \"h5py==3.16.0\" \\\n", - " \"hdmf==4.2.0\" \\\n", + " \"hdmf==4.3.1\" \\\n", " \"hdmf-zarr==0.12.0\" \\\n", " \"humanize==4.15.0\" \\\n", - " \"idna==3.14\" \\\n", + " \"idna==3.13\" \\\n", " \"interleave==0.3.0\" \\\n", " \"isodate==0.7.2\" \\\n", " \"isoduration==20.11.0\" \\\n", @@ -80,62 +80,60 @@ " \"jsonschema-specifications==2025.9.1\" \\\n", " \"keyring==25.7.0\" \\\n", " \"keyrings-alt==5.0.2\" \\\n", - " \"llvmlite==0.47.0\" \\\n", - " \"markdown-it-py==4.2.0\" \\\n", + " \"llvmlite==0.43.0\" \\\n", + " \"markdown-it-py==4.0.0\" \\\n", " \"mdurl==0.1.2\" \\\n", " \"ml-dtypes==0.5.4\" \\\n", - " \"more-itertools==11.0.2\" \\\n", + " \"more-itertools==10.8.0\" \\\n", " \"multidict==6.7.1\" \\\n", - " \"narwhals==2.21.0\" \\\n", " \"natsort==8.4.0\" \\\n", " \"neo==0.14.4\" \\\n", - " \"numba==0.65.1\" \\\n", + " \"numba==0.60.0\" \\\n", " \"numcodecs==0.15.1\" \\\n", - " \"numpy==1.26.4\" \\\n", + " \"numpy==2.0.2\" \\\n", " \"nwbinspector==0.7.1\" \\\n", - " \"packaging==26.2\" \\\n", - " \"pandas==3.0.3\" \\\n", + " \"packaging==26.1\" \\\n", + " \"pandas==2.2.2\" \\\n", " \"platformdirs==4.9.6\" \\\n", - " \"plotly==6.7.0\" \\\n", - " \"propcache==0.5.2\" \\\n", + " \"plotly==5.24.1\" \\\n", + " \"propcache==0.4.1\" \\\n", " \"pycparser==3.0\" \\\n", " \"pycryptodomex==3.23.0\" \\\n", - " \"pydantic==2.13.4\" \\\n", - " \"pydantic-core==2.46.4\" \\\n", - " \"pydantic-settings==2.14.1\" \\\n", + " \"pydantic==2.12.3\" \\\n", + " \"pydantic-core==2.41.4\" \\\n", " \"pygments==2.20.0\" \\\n", - " \"pynapple==0.11.1\" \\\n", + " \"pynapple==0.11.2\" \\\n", " \"pynwb==3.1.3\" \\\n", " \"pyout==0.8.1\" \\\n", " \"python-dateutil==2.9.0.post0\" \\\n", - " \"python-dotenv==1.2.2\" \\\n", + " \"pytz==2025.2\" \\\n", " \"pyyaml==6.0.3\" \\\n", " \"quantities==0.16.4\" \\\n", " \"referencing==0.37.0\" \\\n", - " \"requests==2.34.0\" \\\n", + " \"requests==2.32.4\" \\\n", " \"rfc3339-validator==0.1.4\" \\\n", " \"rfc3987==1.3.8\" \\\n", - " \"rich==15.0.0\" \\\n", + " \"rich==13.9.4\" \\\n", " \"rpds-py==0.30.0\" \\\n", " \"ruamel-yaml==0.19.1\" \\\n", - " \"scipy==1.17.1\" \\\n", + " \"scipy==1.16.3\" \\\n", " \"secretstorage==3.5.0\" \\\n", " \"semantic-version==2.10.0\" \\\n", " \"six==1.17.0\" \\\n", - " \"tabulate==0.10.0\" \\\n", + " \"tabulate==0.9.0\" \\\n", " \"tenacity==9.1.4\" \\\n", - " \"tensorstore==0.1.83\" \\\n", + " \"tensorstore==0.1.82\" \\\n", " \"threadpoolctl==3.6.0\" \\\n", " \"tqdm==4.67.3\" \\\n", " \"typing-extensions==4.15.0\" \\\n", " \"typing-inspection==0.4.2\" \\\n", - " \"tzdata==2026.2\" \\\n", + " \"tzdata==2026.1\" \\\n", " \"uri-template==1.3.0\" \\\n", - " \"urllib3==2.7.0\" \\\n", - " \"wcwidth==0.7.0\" \\\n", + " \"urllib3==2.5.0\" \\\n", + " \"wcwidth==0.6.0\" \\\n", " \"webcolors==25.10.0\" \\\n", " \"wrapt==2.1.2\" \\\n", - " \"xarray==2026.4.0\" \\\n", + " \"xarray==2025.12.0\" \\\n", " \"yarl==1.23.0\" \\\n", " \"zarr==2.18.7\" \\\n", " \"zarr-checksum==0.4.7\"" From 4c1373e565131f67bf3dc9b66f67534a4c551e08 Mon Sep 17 00:00:00 2001 From: Ben Dichter Date: Wed, 13 May 2026 13:59:35 -0400 Subject: [PATCH 2/3] Sargolini2006: set plotly renderer to iframe, drop CI exclusion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously the notebook called plotly's `fig.show()` without setting a renderer. In Colab and Jupyter that auto-detects; in headless CI it falls back to opening a browser tab and raises 'could not locate runnable browser'. The notebook was on `.github/notebook-test-exclusions.txt` for that reason. Two changes: 1. New code cell (inserted right after the restart-admonition): import plotly.io as pio pio.renderers.default = "iframe" Renders figures inline as a self-contained iframe — works in Colab, Jupyter, and headless nbconvert/ipython runners. 2. Remove the Sargolini entry from `.github/notebook-test-exclusions.txt`. The notebook is now CI-testable. Also cleans up an unrelated stray line in the install cell ('Resolved 103 packages in 569ms') that crept in from a 2>&1 stderr-redirect in my prior regen — that string would have failed at `!uv pip install` because it isn't a valid package spec. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/notebook-test-exclusions.txt | 1 - .../Sargolini2006/000582_Sargolini2006_demo.ipynb | 15 ++++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/notebook-test-exclusions.txt b/.github/notebook-test-exclusions.txt index ca2801f..9332426 100644 --- a/.github/notebook-test-exclusions.txt +++ b/.github/notebook-test-exclusions.txt @@ -63,7 +63,6 @@ tutorials/cosyne_2023/advanced_asset_search.ipynb # Calls webbrowser.open(), which raises "could not locate runnable browser" # in headless CI. Works in Colab. -000582/Sargolini2006/000582_Sargolini2006_demo.ipynb 001170/ReimerLab/public_demo/001170_demo.ipynb # Calls input() to prompt the user; raises EOFError under non-interactive diff --git a/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb b/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb index 94b8b1c..b17b9fe 100644 --- a/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb +++ b/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb @@ -33,7 +33,6 @@ "# pinned below so the notebook is reproducible regardless of resolver drift.\n", "!pip install -q uv\n", "!uv pip install --system \\\n", - " \"Resolved 103 packages in 569ms\" \\\n", " \"acres==0.5.0\" \\\n", " \"aiohappyeyeballs==2.6.1\" \\\n", " \"aiohttp==3.13.5\" \\\n", @@ -149,6 +148,20 @@ "> The install may upgrade packages already loaded in the kernel. Go to **Runtime → Restart session**, then **Run all cells below** (skip this install cell on re-run)." ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "e64e0e49", + "metadata": {}, + "outputs": [], + "source": [ + "import plotly.io as pio\n", + "# Render plotly figures inline (works in Colab, Jupyter, and headless\n", + "# `nbconvert --execute`/`ipython`-script runners — by default, plotly\n", + "# would try to pop a browser window in headless contexts and crash).\n", + "pio.renderers.default = \"iframe\"" + ] + }, { "cell_type": "markdown", "id": "6746672a", From 799ce237f9c0b92f12b6437a4ffdd6b23e1e8245 Mon Sep 17 00:00:00 2001 From: Ben Dichter Date: Wed, 13 May 2026 14:05:33 -0400 Subject: [PATCH 3/3] Sargolini2006: bump dandi to >=0.74 (server-required minimum) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CI flagged 'CliVersionTooOldError: Client version 0.68.1 is too old! Server requires at least version 0.74.0' on the first cell that constructs DandiAPIClient(). The original input had `dandi>=0.56` (a stale floor from PR #141). Bumping to `dandi>=0.74` triggered a constraint conflict against Colab's `click==8.3.3` because dandi >=0.74 caps click at <8.2. Resolved by dropping click from the constraint set for this notebook — click downgrades from 8.3.3 to 8.1.8, a small CLI lib that doesn't trigger a kernel restart on its own. All other core-stack pins still match Colab exactly: dandi==0.75.1 (was 0.68.1; meets server min of 0.74.0) click==8.1.8 (was 8.3.3 in Colab; small downgrade) numpy==2.0.2 matches Colab pandas==2.2.2 matches Colab scipy==1.16.3 matches Colab h5py==3.16.0 matches Colab plotly==5.24.1 matches Colab pynapple==0.11.2 latest, supports numpy 2.x Co-Authored-By: Claude Opus 4.7 (1M context) --- 000582/Sargolini2006/000582_Sargolini2006_demo.ipynb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb b/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb index b17b9fe..b075e1f 100644 --- a/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb +++ b/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb @@ -41,17 +41,18 @@ " \"arrow==1.4.0\" \\\n", " \"asciitree==0.3.3\" \\\n", " \"attrs==26.1.0\" \\\n", + " \"bids-validator-deno==2.4.1\" \\\n", " \"bidsschematools==1.2.2\" \\\n", " \"blessed==1.38.0\" \\\n", " \"certifi==2026.4.22\" \\\n", " \"cffi==2.0.0\" \\\n", " \"charset-normalizer==3.4.7\" \\\n", " \"ci-info==0.4.0\" \\\n", - " \"click==8.3.3\" \\\n", + " \"click==8.1.8\" \\\n", " \"click-didyoumean==0.3.1\" \\\n", " \"cryptography==43.0.3\" \\\n", - " \"dandi==0.68.1\" \\\n", - " \"dandischema==0.11.1\" \\\n", + " \"dandi==0.75.1\" \\\n", + " \"dandischema==0.12.1\" \\\n", " \"deprecated==1.3.1\" \\\n", " \"dnspython==2.8.0\" \\\n", " \"email-validator==2.3.0\" \\\n", @@ -100,11 +101,13 @@ " \"pycryptodomex==3.23.0\" \\\n", " \"pydantic==2.12.3\" \\\n", " \"pydantic-core==2.41.4\" \\\n", + " \"pydantic-settings==2.14.0\" \\\n", " \"pygments==2.20.0\" \\\n", " \"pynapple==0.11.2\" \\\n", " \"pynwb==3.1.3\" \\\n", " \"pyout==0.8.1\" \\\n", " \"python-dateutil==2.9.0.post0\" \\\n", + " \"python-dotenv==1.2.2\" \\\n", " \"pytz==2025.2\" \\\n", " \"pyyaml==6.0.3\" \\\n", " \"quantities==0.16.4\" \\\n",