Py4HW is available from the pypi repository, so you can just install by running
pip install py4hw
in your python console. In jupyter notebooks just run the following cell:
!pip install py4hw
Collecting py4hw Using cached py4hw-0.0.5-py3-none-any.whl (35 kB) Requirement already satisfied: ipywidgets in c:\users\dcr\anaconda3\lib\site-packages (from py4hw) (7.6.3) Requirement already satisfied: matplotlib in c:\users\dcr\anaconda3\lib\site-packages (from py4hw) (3.4.2) Requirement already satisfied: nbwavedrom in c:\users\dcr\anaconda3\lib\site-packages (from py4hw) (0.2.0) Requirement already satisfied: ipykernel>=4.5.1 in c:\users\dcr\anaconda3\lib\site-packages (from ipywidgets->py4hw) (5.3.4) Requirement already satisfied: nbformat>=4.2.0 in c:\users\dcr\anaconda3\lib\site-packages (from ipywidgets->py4hw) (5.0.8) Requirement already satisfied: widgetsnbextension~=3.5.0 in c:\users\dcr\anaconda3\lib\site-packages (from ipywidgets->py4hw) (3.5.1) Requirement already satisfied: ipython>=4.0.0 in c:\users\dcr\anaconda3\lib\site-packages (from ipywidgets->py4hw) (7.24.1) Requirement already satisfied: traitlets>=4.3.1 in c:\users\dcr\anaconda3\lib\site-packages (from ipywidgets->py4hw) (5.0.5) Requirement already satisfied: jupyterlab-widgets>=1.0.0 in c:\users\dcr\anaconda3\lib\site-packages (from ipywidgets->py4hw) (1.0.0) Requirement already satisfied: jupyter-client in c:\users\dcr\anaconda3\lib\site-packages (from ipykernel>=4.5.1->ipywidgets->py4hw) (6.1.7) Requirement already satisfied: tornado>=4.2 in c:\users\dcr\anaconda3\lib\site-packages (from ipykernel>=4.5.1->ipywidgets->py4hw) (6.0.4) Requirement already satisfied: setuptools>=18.5 in c:\users\dcr\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets->py4hw) (49.6.0.post20201009) Requirement already satisfied: decorator in c:\users\dcr\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets->py4hw) (4.4.2) Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in c:\users\dcr\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets->py4hw) (3.0.18) Requirement already satisfied: jedi>=0.16 in c:\users\dcr\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets->py4hw) (0.17.1) Requirement already satisfied: pickleshare in c:\users\dcr\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets->py4hw) (0.7.5) Requirement already satisfied: backcall in c:\users\dcr\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets->py4hw) (0.2.0) Requirement already satisfied: colorama in c:\users\dcr\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets->py4hw) (0.4.4) Requirement already satisfied: matplotlib-inline in c:\users\dcr\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets->py4hw) (0.1.2) Requirement already satisfied: pygments in c:\users\dcr\anaconda3\lib\site-packages (from ipython>=4.0.0->ipywidgets->py4hw) (2.7.2) Requirement already satisfied: parso<0.8.0,>=0.7.0 in c:\users\dcr\anaconda3\lib\site-packages (from jedi>=0.16->ipython>=4.0.0->ipywidgets->py4hw) (0.7.0) Requirement already satisfied: jupyter-core in c:\users\dcr\anaconda3\lib\site-packages (from nbformat>=4.2.0->ipywidgets->py4hw) (4.6.3) Requirement already satisfied: ipython-genutils in c:\users\dcr\anaconda3\lib\site-packages (from nbformat>=4.2.0->ipywidgets->py4hw) (0.2.0) Requirement already satisfied: jsonschema!=2.5.0,>=2.4 in c:\users\dcr\anaconda3\lib\site-packages (from nbformat>=4.2.0->ipywidgets->py4hw) (3.2.0) Requirement already satisfied: attrs>=17.4.0 in c:\users\dcr\anaconda3\lib\site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets->py4hw) (20.2.0) Requirement already satisfied: pyrsistent>=0.14.0 in c:\users\dcr\anaconda3\lib\site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets->py4hw) (0.17.3) Requirement already satisfied: six>=1.11.0 in c:\users\dcr\anaconda3\lib\site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets->py4hw) (1.15.0) Requirement already satisfied: importlib-metadata in c:\users\dcr\anaconda3\lib\site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets->py4hw) (4.5.0) Requirement already satisfied: wcwidth in c:\users\dcr\anaconda3\lib\site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython>=4.0.0->ipywidgets->py4hw) (0.2.5) Requirement already satisfied: notebook>=4.4.1 in c:\users\dcr\anaconda3\lib\site-packages (from widgetsnbextension~=3.5.0->ipywidgets->py4hw) (6.1.4) Requirement already satisfied: Send2Trash in c:\users\dcr\anaconda3\lib\site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (1.5.0) Requirement already satisfied: prometheus-client in c:\users\dcr\anaconda3\lib\site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (0.8.0) Requirement already satisfied: terminado>=0.8.3 in c:\users\dcr\anaconda3\lib\site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (0.9.1) Requirement already satisfied: argon2-cffi in c:\users\dcr\anaconda3\lib\site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (20.1.0) Requirement already satisfied: pyzmq>=17 in c:\users\dcr\anaconda3\lib\site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (19.0.2) Requirement already satisfied: nbconvert in c:\users\dcr\anaconda3\lib\site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (6.0.7) Requirement already satisfied: jinja2 in c:\users\dcr\anaconda3\lib\site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (2.11.2) Requirement already satisfied: python-dateutil>=2.1 in c:\users\dcr\anaconda3\lib\site-packages (from jupyter-client->ipykernel>=4.5.1->ipywidgets->py4hw) (2.8.1) Requirement already satisfied: pywin32>=1.0 in c:\users\dcr\anaconda3\lib\site-packages (from jupyter-core->nbformat>=4.2.0->ipywidgets->py4hw) (228) Requirement already satisfied: pywinpty>=0.5 in c:\users\dcr\anaconda3\lib\site-packages (from terminado>=0.8.3->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (0.5.7) Requirement already satisfied: cffi>=1.0.0 in c:\users\dcr\anaconda3\lib\site-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (1.14.3) Requirement already satisfied: pycparser in c:\users\dcr\anaconda3\lib\site-packages (from cffi>=1.0.0->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (2.20) Requirement already satisfied: zipp>=0.5 in c:\users\dcr\anaconda3\lib\site-packages (from importlib-metadata->jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets->py4hw) (3.4.0) Requirement already satisfied: typing-extensions>=3.6.4 in c:\users\dcr\anaconda3\lib\site-packages (from importlib-metadata->jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets->py4hw) (3.7.4.3) Requirement already satisfied: MarkupSafe>=0.23 in c:\users\dcr\anaconda3\lib\site-packages (from jinja2->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (1.1.1) Requirement already satisfied: pillow>=6.2.0 in c:\users\dcr\anaconda3\lib\site-packages (from matplotlib->py4hw) (8.0.1) Requirement already satisfied: numpy>=1.16 in c:\users\dcr\anaconda3\lib\site-packages (from matplotlib->py4hw) (1.20.3) Requirement already satisfied: kiwisolver>=1.0.1 in c:\users\dcr\anaconda3\lib\site-packages (from matplotlib->py4hw) (1.3.0) Requirement already satisfied: pyparsing>=2.2.1 in c:\users\dcr\anaconda3\lib\site-packages (from matplotlib->py4hw) (2.4.7) Requirement already satisfied: cycler>=0.10 in c:\users\dcr\anaconda3\lib\site-packages (from matplotlib->py4hw) (0.10.0) Requirement already satisfied: nbclient<0.6.0,>=0.5.0 in c:\users\dcr\anaconda3\lib\site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (0.5.1) Requirement already satisfied: mistune<2,>=0.8.1 in c:\users\dcr\anaconda3\lib\site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (0.8.4) Requirement already satisfied: testpath in c:\users\dcr\anaconda3\lib\site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (0.4.4) Requirement already satisfied: defusedxml in c:\users\dcr\anaconda3\lib\site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (0.6.0) Requirement already satisfied: jupyterlab-pygments in c:\users\dcr\anaconda3\lib\site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (0.1.2) Requirement already satisfied: entrypoints>=0.2.2 in c:\users\dcr\anaconda3\lib\site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (0.3) Requirement already satisfied: pandocfilters>=1.4.1 in c:\users\dcr\anaconda3\lib\site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (1.4.2) Requirement already satisfied: bleach in c:\users\dcr\anaconda3\lib\site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (3.2.1) Requirement already satisfied: async-generator in c:\users\dcr\anaconda3\lib\site-packages (from nbclient<0.6.0,>=0.5.0->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (1.10) Requirement already satisfied: nest-asyncio in c:\users\dcr\anaconda3\lib\site-packages (from nbclient<0.6.0,>=0.5.0->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (1.4.1) Requirement already satisfied: packaging in c:\users\dcr\anaconda3\lib\site-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (20.4) Requirement already satisfied: webencodings in c:\users\dcr\anaconda3\lib\site-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets->py4hw) (0.5.1) Installing collected packages: py4hw Successfully installed py4hw-0.0.5
After installing you will need to import the library, with a regular import
import py4hw
You can check the version of the library by running...
import pkg_resources
current = pkg_resources.get_distribution('py4hw').version
latest = '2026.1'
print('Installed py4hw version =', current)
print('Latest version =', latest)
print()
if (latest != current):
print('Check Pypi for an UPDATE!')
print('Run "pip install py4hw"')
Installed py4hw version = 2025.5 Latest version = 2026.1 Check Pypi for an UPDATE! Run "pip install py4hw"