<div align="center">
# HMR for Python
<sup> on-demand · fine-grained · push-pull reactivity </sup>
[](https://pypi.org/project/hmr/)
[](https://github.com/promplate/pyth-on-line/blob/reactivity/packages/hmr/pyproject.toml)
[](https://pepy.tech/projects/hmr)
</div>
HMR means Hot Module Reload / [Hot Module Replacement](https://webpack.js.org/concepts/hot-module-replacement/). It is a feature that allows part of your app to be updated at runtime without a full rerun.
- The module whose source file **you changed** will rerun
- The module / function that **depends on** the changed module will rerun
- Other modules that are unaffected (like third-party libraries) will not rerun
Thus, in contrast to the traditional way of **cold-reloading** Python applications (like [watchfiles CLI](https://watchfiles.helpmanual.io/cli/)), HMR is just more efficient.
Unlike static-analysis tools like [Tach](https://github.com/gauge-sh/tach), HMR works by tracking the dependencies between names and modules **during runtime** through a [reactive system](https://wikipedia.org/wiki/Reactive_programming).
## Usage
If you are running your entry file with `python foo.py bar baz ...`, you can just replace it with `hmr foo.py bar baz ...`.
You can also try it with `uvx` or `pipx`. If you are using a virtual environment, it is recommended to install `hmr` in the virtual environment instead of globally.
Raw data
{
"_id": null,
"home_page": null,
"name": "hmr",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "reactive-programming, reload, signals, hmr",
"author": null,
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/aa/6c/1effd1108e5cee66f6bd2d97d71cf14afa880439401c57b03f424036cb28/hmr-0.6.4.4.tar.gz",
"platform": null,
"description": "<div align=\"center\">\n\n# HMR for Python\n\n<sup> on-demand \u00b7 fine-grained \u00b7 push-pull reactivity </sup>\n\n[](https://pypi.org/project/hmr/)\n[](https://github.com/promplate/pyth-on-line/blob/reactivity/packages/hmr/pyproject.toml)\n[](https://pepy.tech/projects/hmr)\n\n</div>\n\nHMR means Hot Module Reload / [Hot Module Replacement](https://webpack.js.org/concepts/hot-module-replacement/). It is a feature that allows part of your app to be updated at runtime without a full rerun.\n\n- The module whose source file **you changed** will rerun\n- The module / function that **depends on** the changed module will rerun\n- Other modules that are unaffected (like third-party libraries) will not rerun\n\nThus, in contrast to the traditional way of **cold-reloading** Python applications (like [watchfiles CLI](https://watchfiles.helpmanual.io/cli/)), HMR is just more efficient.\n\nUnlike static-analysis tools like [Tach](https://github.com/gauge-sh/tach), HMR works by tracking the dependencies between names and modules **during runtime** through a [reactive system](https://wikipedia.org/wiki/Reactive_programming).\n\n## Usage\n\nIf you are running your entry file with `python foo.py bar baz ...`, you can just replace it with `hmr foo.py bar baz ...`.\n\nYou can also try it with `uvx` or `pipx`. If you are using a virtual environment, it is recommended to install `hmr` in the virtual environment instead of globally.\n",
"bugtrack_url": null,
"license": null,
"summary": "Hot Module Reload for Python",
"version": "0.6.4.4",
"project_urls": {
"repository": "https://github.com/promplate/pyth-on-line/tree/main/packages/hmr"
},
"split_keywords": [
"reactive-programming",
" reload",
" signals",
" hmr"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "9036dfd96877a60a8c11932dc2dc6dd5491ebeac54b3d77c741f0b9258583207",
"md5": "315d90ba08ef486e38b9a6e4aef75505",
"sha256": "d82d912abdf6f858c8ff9e88b408e0a724d3fc1d69e2cef59166fbc651617cde"
},
"downloads": -1,
"filename": "hmr-0.6.4.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "315d90ba08ef486e38b9a6e4aef75505",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 15942,
"upload_time": "2025-07-12T01:03:10",
"upload_time_iso_8601": "2025-07-12T01:03:10.075951Z",
"url": "https://files.pythonhosted.org/packages/90/36/dfd96877a60a8c11932dc2dc6dd5491ebeac54b3d77c741f0b9258583207/hmr-0.6.4.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "aa6c1effd1108e5cee66f6bd2d97d71cf14afa880439401c57b03f424036cb28",
"md5": "26a4e826ca6816bafb6926b3fbd4d3ca",
"sha256": "680fa2b736eee8e6a74fca262b09f29af0fdcfd3680ad0303ea881d813d2eaeb"
},
"downloads": -1,
"filename": "hmr-0.6.4.4.tar.gz",
"has_sig": false,
"md5_digest": "26a4e826ca6816bafb6926b3fbd4d3ca",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 12313,
"upload_time": "2025-07-12T01:03:11",
"upload_time_iso_8601": "2025-07-12T01:03:11.412967Z",
"url": "https://files.pythonhosted.org/packages/aa/6c/1effd1108e5cee66f6bd2d97d71cf14afa880439401c57b03f424036cb28/hmr-0.6.4.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-12 01:03:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "promplate",
"github_project": "pyth-on-line",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "hmr"
}