- Python 3.6 → 3.11 - Updated runtime and all dependencies
- Conda → uv - Modern package management with
uv sync - Travis CI → GitHub Actions - Modern CI/CD with Netlify deployment
- Makefile - Auto-dependency setup with
makejust works - R Integration - Separate system R install with automated package setup
All plotting libraries updated to 2025 versions:
- pandas 2.3.3
- matplotlib 3.10.7
- seaborn 0.13.2
- plotnine 0.15.1
- plotly 6.3.1 (with Kaleido 1.1.0 + auto Chrome install)
- altair 5.5.0 (with vl-convert-python 1.8.0)
- statsmodels 0.14.5
- Seaborn 0.13+: Fixed all
size→heightparameter changes (4 instances) - Plotly 5+: Removed authentication requirement, using Kaleido v1 with Chrome
- Altair 5: Added vl-convert-python dependency
- ✅
makeauto-installs all dependencies (Python, R, Chrome) - ✅
make testruns pytest - ✅
make renderexecutes notebook and generates site - ✅ Notebook executes successfully (32.9MB output)
- ✅ GitHub Actions workflow configured
- ✅ Netlify deployment (production + preview)
- ✅ Auto Chrome installation in CI
Status: Altair charts execute but don't produce PNG output in notebooks
Issue: Altair 5 with vl-convert-python renders charts as Vega specs (HTML/JSON) by default, not PNGs. The alt.renderers.enable('png') doesn't automatically convert notebook outputs to PNG.
Options to fix:
-
Modify Altair cells to explicitly save PNGs:
chart = alt.Chart(data).mark_bar()... chart.save('temp.png') from IPython.display import Image Image('temp.png')
-
Use Altair's
.show()with PNG format (requires additional setup) -
Skip Altair in rendered output (not ideal for a comparison site)
-
Post-process notebook to convert Vega specs to PNG using vl-convert
Impact: Altair examples missing from rendered site. All other libraries work.
Successful notebook execution:
- Input: Examples.ipynb
- Output: Examples.e7639cc.ipynb (32.9MB)
- All R, pandas, matplotlib, seaborn, plotnine, and plotly examples executed
- Altair examples executed but need PNG conversion
Packages installed: 147 Python packages + 2 R packages + Chrome
- Investigate vl-convert PNG export in Jupyter context
- Consider modifying Altair cells to explicitly save PNGs
- Or implement post-processing step
- Resolve Altair issue
- Run full
make rendersuccessfully - Verify all plots appear in
web/img/plots/ - Check
web/index.htmldisplays correctly
- Run
netlify deploy --dir=webfor preview - Verify site works with updated libraries
- Test all interactive elements
- Update CLAUDE.md with Altair workaround
- Document known issues
- Add troubleshooting guide
c69894b- Modernize Python dependencies to 2025 standards0f330d3- Add R package setup script for separate R installationbf5b5f4- Migrate build system from conda to uvedb7a82- Migrate CI/CD from Travis CI to GitHub Actions291f9f4- Deprecate plotly authentication script2497c2a- Update documentation for modernized infrastructureb7198f3- Add migration and testing documentation35f7c98- Fix default make target for Netlify deployment27b8428- Add automatic dependency setup to Makefile9d523fd- Switch to uv sync for proper dependency managementa55cc38- Fix seaborn API compatibility for 0.13+7f31ca9- Fix all seaborn and Altair compatibility issuese7639cc- Add Chrome installation for Kaleido v1 support
- Python 3.11 environment
- uv package manager
- All dependencies install automatically
- Notebook executes without errors
- R ggplot2 examples work
- plotly examples render to PNG
- seaborn examples work with 0.13+
- plotnine examples work with 0.15+
- Altair examples render to PNG (pending)
- Full site renders successfully
- GitHub Actions CI passes
- Netlify deployment works
- Short-term: Use
make qrenderwith a pre-executed notebook that has working PNG outputs - Medium-term: Fix Altair PNG rendering for complete automation
- Long-term: Consider adding more modern libraries (Polars, etc.)
Modernization Duration: ~2 hours Libraries Updated: 7 plotting libraries + 140+ dependencies Breaking Changes Fixed: 4 seaborn, 1 plotly, 1 altair Infrastructure: Fully modernized to 2025 standards