{"bomFormat":"CycloneDX","specVersion":"1.5","version":1,"serialNumber":"urn:uuid:a1921144-91b6-4f24-b463-1a462c2c6427","metadata":{"timestamp":"2026-04-17T23:55:55Z","tools":[{"vendor":"Ecosystems","name":"Ecosystems SBOM Generator"}],"component":{"type":"application","name":"talkpython/python-data-visualization"}},"components":[{"type":"library","name":"altair","version":"==5.2.0","purl":"pkg:pypi/altair","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"altair-data-server","version":"==0.4.1","purl":"pkg:pypi/altair-data-server","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"altair-saver","version":"==0.5.0","purl":"pkg:pypi/altair-saver","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"altair-viewer","version":"==0.4.0","purl":"pkg:pypi/altair-viewer","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"anyio","version":"==4.1.0","purl":"pkg:pypi/anyio","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"appnope","version":"==0.1.3","purl":"pkg:pypi/appnope","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"argon2-cffi","version":"==23.1.0","purl":"pkg:pypi/argon2-cffi","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"argon2-cffi-bindings","version":"==21.2.0","purl":"pkg:pypi/argon2-cffi-bindings","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"arrow","version":"==1.3.0","purl":"pkg:pypi/arrow","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"asttokens","version":"==2.4.1","purl":"pkg:pypi/asttokens","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"async-lru","version":"==2.0.4","purl":"pkg:pypi/async-lru","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"attrs","version":"==23.1.0","purl":"pkg:pypi/attrs","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"babel","version":"==2.13.1","purl":"pkg:pypi/babel","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"beautifulsoup4","version":"==4.12.2","purl":"pkg:pypi/beautifulsoup4","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"bleach","version":"==6.1.0","purl":"pkg:pypi/bleach","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"certifi","version":"==2023.11.17","purl":"pkg:pypi/certifi","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"cffi","version":"==1.16.0","purl":"pkg:pypi/cffi","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"charset-normalizer","version":"==3.3.2","purl":"pkg:pypi/charset-normalizer","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"comm","version":"==0.2.0","purl":"pkg:pypi/comm","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"contourpy","version":"==1.2.0","purl":"pkg:pypi/contourpy","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"cycler","version":"==0.12.1","purl":"pkg:pypi/cycler","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"debugpy","version":"==1.8.0","purl":"pkg:pypi/debugpy","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"decorator","version":"==5.1.1","purl":"pkg:pypi/decorator","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"defusedxml","version":"==0.7.1","purl":"pkg:pypi/defusedxml","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"et-xmlfile","version":"==1.1.0","purl":"pkg:pypi/et-xmlfile","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"executing","version":"==2.0.1","purl":"pkg:pypi/executing","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"fastjsonschema","version":"==2.19.0","purl":"pkg:pypi/fastjsonschema","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"fonttools","version":"==4.46.0","purl":"pkg:pypi/fonttools","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"fqdn","version":"==1.5.1","purl":"pkg:pypi/fqdn","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"h11","version":"==0.14.0","purl":"pkg:pypi/h11","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"idna","version":"==3.6","purl":"pkg:pypi/idna","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"ipykernel","version":"==6.27.1","purl":"pkg:pypi/ipykernel","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"ipython","version":"==8.18.1","purl":"pkg:pypi/ipython","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"ipywidgets","version":"==8.1.1","purl":"pkg:pypi/ipywidgets","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"isoduration","version":"==20.11.0","purl":"pkg:pypi/isoduration","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jedi","version":"==0.19.1","purl":"pkg:pypi/jedi","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jinja2","version":"==3.1.2","purl":"pkg:pypi/jinja2","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"json5","version":"==0.9.14","purl":"pkg:pypi/json5","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jsonpointer","version":"==2.4","purl":"pkg:pypi/jsonpointer","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jsonschema","version":"==4.20.0","purl":"pkg:pypi/jsonschema","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jsonschema-specifications","version":"==2023.11.2","purl":"pkg:pypi/jsonschema-specifications","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jupyter","version":"==1.0.0","purl":"pkg:pypi/jupyter","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jupyter-client","version":"==8.6.0","purl":"pkg:pypi/jupyter-client","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jupyter-console","version":"==6.6.3","purl":"pkg:pypi/jupyter-console","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jupyter-core","version":"==5.5.0","purl":"pkg:pypi/jupyter-core","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jupyter-events","version":"==0.9.0","purl":"pkg:pypi/jupyter-events","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jupyter-lsp","version":"==2.2.1","purl":"pkg:pypi/jupyter-lsp","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jupyter-server","version":"==2.11.1","purl":"pkg:pypi/jupyter-server","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jupyter-server-terminals","version":"==0.4.4","purl":"pkg:pypi/jupyter-server-terminals","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jupyterlab","version":"==4.0.9","purl":"pkg:pypi/jupyterlab","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jupyterlab-pygments","version":"==0.3.0","purl":"pkg:pypi/jupyterlab-pygments","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jupyterlab-server","version":"==2.25.2","purl":"pkg:pypi/jupyterlab-server","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"jupyterlab-widgets","version":"==3.0.9","purl":"pkg:pypi/jupyterlab-widgets","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"kaleido","version":"==0.2.1","purl":"pkg:pypi/kaleido","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"kiwisolver","version":"==1.4.5","purl":"pkg:pypi/kiwisolver","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"markupsafe","version":"==2.1.3","purl":"pkg:pypi/markupsafe","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"matplotlib","version":"==3.8.2","purl":"pkg:pypi/matplotlib","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"matplotlib-inline","version":"==0.1.6","purl":"pkg:pypi/matplotlib-inline","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"mistune","version":"==3.0.2","purl":"pkg:pypi/mistune","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"nbclient","version":"==0.9.0","purl":"pkg:pypi/nbclient","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"nbconvert","version":"==7.11.0","purl":"pkg:pypi/nbconvert","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"nbformat","version":"==5.9.2","purl":"pkg:pypi/nbformat","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"nest-asyncio","version":"==1.5.8","purl":"pkg:pypi/nest-asyncio","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"notebook","version":"==7.0.6","purl":"pkg:pypi/notebook","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"notebook-shim","version":"==0.2.3","purl":"pkg:pypi/notebook-shim","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"numpy","version":"==1.26.2","purl":"pkg:pypi/numpy","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"openpyxl","version":"==3.1.2","purl":"pkg:pypi/openpyxl","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"outcome","version":"==1.3.0.post0","purl":"pkg:pypi/outcome","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"overrides","version":"==7.4.0","purl":"pkg:pypi/overrides","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"packaging","version":"==23.2","purl":"pkg:pypi/packaging","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pandas","version":"==2.1.3","purl":"pkg:pypi/pandas","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pandocfilters","version":"==1.5.0","purl":"pkg:pypi/pandocfilters","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"parso","version":"==0.8.3","purl":"pkg:pypi/parso","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"patsy","version":"==0.5.4","purl":"pkg:pypi/patsy","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pexpect","version":"==4.9.0","purl":"pkg:pypi/pexpect","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pillow","version":"==10.1.0","purl":"pkg:pypi/pillow","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"platformdirs","version":"==4.0.0","purl":"pkg:pypi/platformdirs","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"plotly","version":"==5.18.0","purl":"pkg:pypi/plotly","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"portpicker","version":"==1.6.0","purl":"pkg:pypi/portpicker","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"prometheus-client","version":"==0.19.0","purl":"pkg:pypi/prometheus-client","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"prompt-toolkit","version":"==3.0.41","purl":"pkg:pypi/prompt-toolkit","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"protobuf","version":"==4.25.1","purl":"pkg:pypi/protobuf","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"psutil","version":"==5.9.6","purl":"pkg:pypi/psutil","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"ptyprocess","version":"==0.7.0","purl":"pkg:pypi/ptyprocess","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pure-eval","version":"==0.2.2","purl":"pkg:pypi/pure-eval","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pyarrow","version":"==14.0.1","purl":"pkg:pypi/pyarrow","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pycparser","version":"==2.21","purl":"pkg:pypi/pycparser","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pygments","version":"==2.17.2","purl":"pkg:pypi/pygments","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pyparsing","version":"==3.1.1","purl":"pkg:pypi/pyparsing","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pysocks","version":"==1.7.1","purl":"pkg:pypi/pysocks","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"python-dateutil","version":"==2.8.2","purl":"pkg:pypi/python-dateutil","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"python-json-logger","version":"==2.0.7","purl":"pkg:pypi/python-json-logger","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pytz","version":"==2023.3.post1","purl":"pkg:pypi/pytz","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pyyaml","version":"==6.0.1","purl":"pkg:pypi/pyyaml","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pyzmq","version":"==25.1.1","purl":"pkg:pypi/pyzmq","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"qtconsole","version":"==5.5.1","purl":"pkg:pypi/qtconsole","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"qtpy","version":"==2.4.1","purl":"pkg:pypi/qtpy","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"referencing","version":"==0.31.1","purl":"pkg:pypi/referencing","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"requests","version":"==2.31.0","purl":"pkg:pypi/requests","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"rfc3339-validator","version":"==0.1.4","purl":"pkg:pypi/rfc3339-validator","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"rfc3986-validator","version":"==0.1.1","purl":"pkg:pypi/rfc3986-validator","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"rpds-py","version":"==0.13.2","purl":"pkg:pypi/rpds-py","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"scipy","version":"==1.11.4","purl":"pkg:pypi/scipy","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"seaborn","version":"==0.13.0","purl":"pkg:pypi/seaborn","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"selenium","version":"==4.15.2","purl":"pkg:pypi/selenium","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"send2trash","version":"==1.8.2","purl":"pkg:pypi/send2trash","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"six","version":"==1.16.0","purl":"pkg:pypi/six","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"sniffio","version":"==1.3.0","purl":"pkg:pypi/sniffio","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"sortedcontainers","version":"==2.4.0","purl":"pkg:pypi/sortedcontainers","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"soupsieve","version":"==2.5","purl":"pkg:pypi/soupsieve","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"stack-data","version":"==0.6.3","purl":"pkg:pypi/stack-data","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"statsmodels","version":"==0.14.0","purl":"pkg:pypi/statsmodels","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"tenacity","version":"==8.2.3","purl":"pkg:pypi/tenacity","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"terminado","version":"==0.18.0","purl":"pkg:pypi/terminado","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"tinycss2","version":"==1.2.1","purl":"pkg:pypi/tinycss2","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"toolz","version":"==0.12.0","purl":"pkg:pypi/toolz","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"tornado","version":"==6.4","purl":"pkg:pypi/tornado","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"traitlets","version":"==5.14.0","purl":"pkg:pypi/traitlets","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"trio","version":"==0.23.1","purl":"pkg:pypi/trio","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"trio-websocket","version":"==0.11.1","purl":"pkg:pypi/trio-websocket","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"types-python-dateutil","version":"==2.8.19.14","purl":"pkg:pypi/types-python-dateutil","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"tzdata","version":"==2023.3","purl":"pkg:pypi/tzdata","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"uri-template","version":"==1.3.0","purl":"pkg:pypi/uri-template","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"urllib3","version":"==2.1.0","purl":"pkg:pypi/urllib3","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"vegafusion","version":"==1.4.5","purl":"pkg:pypi/vegafusion","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"vegafusion-python-embed","version":"==1.4.5","purl":"pkg:pypi/vegafusion-python-embed","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"vl-convert-python","version":"==1.2.0","purl":"pkg:pypi/vl-convert-python","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"wcwidth","version":"==0.2.12","purl":"pkg:pypi/wcwidth","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"webcolors","version":"==1.13","purl":"pkg:pypi/webcolors","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"webencodings","version":"==0.5.1","purl":"pkg:pypi/webencodings","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"websocket-client","version":"==1.6.4","purl":"pkg:pypi/websocket-client","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"widgetsnbextension","version":"==4.0.9","purl":"pkg:pypi/widgetsnbextension","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"wsproto","version":"==1.2.0","purl":"pkg:pypi/wsproto","properties":[{"name":"filePath","value":"requirements.txt"}]}]}