NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2708 most downloaded on PyPI
Integrated process monitor for developing and reloading daemons.
Last release 3 years ago
no release in 18 months
Release timing varies
gaps range from 2 weeks to 1.6 years
Nearly every release is documented
notes for 38 of 38 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
38 releases · first in 2016
include readthedocs.yaml in manifest
include readthedocs.yaml in manifest
Add support for Python 3.12.
Fix a blocking issue when shutting down on Windows.
Fix a race condition closing pipes when restarting the worker process. See https://github.com/Pylons/hupper/pull/83
Fix issues with watchman when the server shuts down unexpectedly and when subscriptions are canceled.
Add hupper.get_reloader().graceful_shutdown() which can be used within your own app to trigger a full shutdown of the worker as well as the monitoring. See https://github.com/Pylons/hupper/pull/88
add a note about setuptools
One column per quarter.
add a note about setuptools
When the reloader is stopped, exit with the same code received from the subprocess. See https://github.com/Pylons/hupper/pull/81
trailing periods are important
trailing periods are important
Drop support for Python 2.7, 3.4, 3.5, and 3.6.
Add support/testing for Python 3.10, and 3.11.
Explicitly require reload_interval set greater than 0 to avoid spinning the CPU needlessly.
Fix an issue with bare .pyc files in the source folder causing unhandled exceptions. See https://github.com/Pylons/hupper/pull/69
Support Python 3.8 and 3.9.
Fix an issue with bare .pyc files in the source folder causing unhandled exceptions. See https://github.com/Pylons/hupper/pull/69
Fix issues with using the Watchman file monitor on versions newer than Watchman 4.9.0. This fix modifies hupper to use Watchman's watch-project capabilities which also support reading the .watchmanconfig file to control certain properties of the monitoring. See https://github.com/Pylons/hupper/pull/70
Fix a regression that caused SIGINT to not work properly in some situations. See https://github.com/Pylons/hupper/pull/67
Fix a regression that caused SIGINT to not work properly in some situations. See https://github.com/Pylons/hupper/pull/67
Performance improvements when using Watchman.
Performance improvements when using Watchman.
Fix deprecation warnings caused by using the imp module on newer versions of Python. See https://github.com/Pylons/hupper/pull/65
Handle a SIGTERM signal by forwarding it to the child process and gracefully waiting for it to exit. This should enable using hupper from within docker containers and other systems that want to control the reloader process.
Previously the SIGTERM would shutdown hupper immediately, stranding the worker and relying on it to shutdown on its own.
Avoid acquiring locks in the reloader process's signal handlers. See https://github.com/Pylons/hupper/pull/65
Fix deprecation warnings caused by using the imp module on newer versions of Python. See https://github.com/Pylons/hupper/pull/65
Support some scenarios in which user code is symlinked site-packages. These were previously being ignored by the file monitor but should now be tracke
Support some scenarios in which user code is symlinked site-packages. These were previously being ignored by the file monitor but should now be tracked. See https://github.com/Pylons/hupper/pull/61
Support --shutdown-interval on the hupper CLI. See https://github.com/Pylons/hupper/pull/56
Support --shutdown-interval on the hupper CLI. See https://github.com/Pylons/hupper/pull/56
Support --reload-interval on the hupper CLI. See https://github.com/Pylons/hupper/pull/59
Do not choke when stdin is not a TTY while waiting for changes after a crash. For example, when running in Docker Compose. See https://github.com/Pylons/hupper/pull/58
Do not show the KeyboardInterrupt stacktrace when killing hupper while waiting for a reload.
Do not show the KeyboardInterrupt stacktrace when killing hupper while waiting for a reload.
If the worker process crashes, hupper can be forced to reload the worker by pressing the ENTER key in the terminal instead of waiting to change a file
If the worker process crashes, hupper can be forced to reload the worker by pressing the ENTER key in the terminal instead of waiting to change a file. See https://github.com/Pylons/hupper/pull/53
On Python 3.5+ support recursive glob syntax in reloader.watch_files. See https://github.com/Pylons/hupper/pull/52
On Python 3.5+ support recursive glob syntax in reloader.watch_files. See https://github.com/Pylons/hupper/pull/52
If the worker crashes immediately, sometimes hupper would go into a restart loop instead of waiting for a code change. See https://github.com/Pylons/h
If the worker crashes immediately, sometimes hupper would go into a restart loop instead of waiting for a code change. See https://github.com/Pylons/hupper/pull/50
On systems that support SIGKILL and SIGTERM (not Windows), hupper will now send a SIGKILL to the worker process as a last resort. Normally, a SIGINT (
On systems that support SIGKILL and SIGTERM (not Windows), hupper will now send a SIGKILL to the worker process as a last resort. Normally, a SIGINT (Ctrl-C) or SIGTERM (on reload) will kill the worker. If, within shutdown_interval seconds, the worker doesn't exit, it will receive a SIGKILL. See https://github.com/Pylons/hupper/pull/48
Support a logger argument to hupper.start_reloader to override the default logger that outputs messages to sys.stderr. See https://github.com/Pylons/hupper/pull/49
Add support for ignoring custom patterns via the new ignore_files option on hupper.start_reloader. The hupper cli also supports ignoring files via the
Add support for ignoring custom patterns via the new ignore_files option on hupper.start_reloader. The hupper cli also supports ignoring files via the -x option. See https://github.com/Pylons/hupper/pull/46
Fix a bug prompting the "ignoring corrupted payload from watchman" message and placing the file monitor in an unrecoverable state when a change trigge
Fix a bug prompting the "ignoring corrupted payload from watchman" message and placing the file monitor in an unrecoverable state when a change triggered a watchman message > 4096 bytes. See https://github.com/Pylons/hupper/pull/44
Stop ignoring a few paths that may not be system paths in cases where the virtualenv is the root of your project. See https://github.com/Pylons/hupper
Stop ignoring a few paths that may not be system paths in cases where the virtualenv is the root of your project. See https://github.com/Pylons/hupper/pull/42
Ignore changes to any system / installed files. This includes mostly changes to any files in the stdlib and site-packages. Anything that is installed
Ignore changes to any system / installed files. This includes mostly changes to any files in the stdlib and site-packages. Anything that is installed in editable mode or not installed at all will still be monitored. This drastically reduces the number of files that hupper needs to monitor. See https://github.com/Pylons/hupper/pull/40
Avoid a restart-loop if the app is failing to restart on certain systems. There was a race where hupper failed to detect that the app was crashing and
Support Python 3.7.
Avoid a restart-loop if the app is failing to restart on certain systems. There was a race where hupper failed to detect that the app was crashing and thus fell into its restart logic when the user manually triggers an immediate reload. See https://github.com/Pylons/hupper/pull/37
Ignore corrupted packets coming from watchman that occur in semi-random scenarios. See https://github.com/Pylons/hupper/pull/38
Added watchman support via hupper.watchman.WatchmanFileMonitor. This is the new preferred file monitor on systems supporting unix sockets. See https:/
Added watchman support via hupper.watchman.WatchmanFileMonitor. This is the new preferred file monitor on systems supporting unix sockets. See https://github.com/Pylons/hupper/pull/32
The hupper.watchdog.WatchdogFileMonitor will now output some info when it receives ulimit or other errors from watchdog. See https://github.com/Pylons/hupper/pull/33
Allow -q and -v cli options to control verbosity. See https://github.com/Pylons/hupper/pull/33
Pass a logger value to the hupper.interfaces.IFileMonitorFactory. This is an instance of hupper.interfaces.ILogger and can be used by file monitors to output errors and debug information. See https://github.com/Pylons/hupper/pull/33
Track only Python source files. Previously hupper would track all pyc and py files. Now, if a pyc file is found then the equivalent source file is sea
Track only Python source files. Previously hupper would track all pyc and py files. Now, if a pyc file is found then the equivalent source file is searched and, if found, the pyc file is ignored. See https://github.com/Pylons/hupper/pull/31
Allow overriding the default monitor lookup by specifying the HUPPER_DEFAULT_MONITOR environment variable as a Python dotted-path to a monitor factory. For example, HUPPER_DEFAULT_MONITOR=hupper.polling.PollingFileMonitor. See https://github.com/Pylons/hupper/pull/29
Backward-incompatible changes to the hupper.interfaces.IFileMonitorFactory API to pass arbitrary kwargs to the factory. See https://github.com/Pylons/hupper/pull/29
Support -w on the CLI to watch custom file paths. See https://github.com/Pylons/hupper/pull/28
Support -w on the CLI to watch custom file paths. See https://github.com/Pylons/hupper/pull/28
Copy sys.path to the worker process and ensure hupper is on the PYTHONPATH so that the subprocess can import it to start the worker. This fixes an iss
Copy sys.path to the worker process and ensure hupper is on the PYTHONPATH so that the subprocess can import it to start the worker. This fixes an issue with how zc.buildout injects dependencies into a process which is done entirely by sys.path manipulation. See https://github.com/Pylons/hupper/pull/27
On non-windows systems ensure an exec occurs so that the worker does not share the same process space as the reloader causing certain code that is imp
On non-windows systems ensure an exec occurs so that the worker does not share the same process space as the reloader causing certain code that is imported in both to not ever be reloaded. Under the hood this was a significant rewrite to use subprocess instead of multiprocessing. See https://github.com/Pylons/hupper/pull/23
Fix some versions of Windows which were failing to duplicate stdin to the subprocess and crashing. https://github.com/Pylons/hupper/pull/16
Fix some versions of Windows which were failing to duplicate stdin to the subprocess and crashing. https://github.com/Pylons/hupper/pull/16
Fix pdb and other readline-based programs to operate properly. See https://github.com/Pylons/hupper/pull/15
Fix pdb and other readline-based programs to operate properly. See https://github.com/Pylons/hupper/pull/15
Pause briefly after receiving a SIGINT to allow the worker to kill itself. If it does not die then it is terminated. See https://github.com/Pylons/hup
Pause briefly after receiving a SIGINT to allow the worker to kill itself. If it does not die then it is terminated. See https://github.com/Pylons/hupper/issues/11
Python 3.6 compatibility.
Handle errors that may occur when using watchdog to observe non-existent folders.
Handle errors that may occur when using watchdog to observe non-existent folders.
Support running any Python module via hupper -m . This is equivalent to python -m except will fully reload the process when files change. See https://
Support running any Python module via hupper -m <module>. This is equivalent to python -m except will fully reload the process when files change. See https://github.com/Pylons/hupper/pull/8
Read the traceback for unknown files prior to crashing. If an import crashes due to a module-scope exception the file that caused the crash would not
Read the traceback for unknown files prior to crashing. If an import crashes due to a module-scope exception the file that caused the crash would not be tracked but this should help.
Attempt to send imported paths to the monitor process before crashing to avoid cases where the master is waiting for changes in files that it never st
Attempt to send imported paths to the monitor process before crashing to avoid cases where the master is waiting for changes in files that it never started monitoring.
Add support for globbing using the stdlib glob module. On Python 3.5+ this allows recursive globs using . Prior to this, the globbing is more limited.
Add support for globbing using the stdlib glob module. On Python 3.5+ this allows recursive globs using **. Prior to this, the globbing is more limited.
Fixed a runtime failure on Windows 32-bit systems.
Fixed a runtime failure on Windows 32-bit systems.
Support triggering reloads via SIGHUP when hupper detected a crash and is waiting for a file to change.
Support triggering reloads via SIGHUP when hupper detected a crash and is waiting for a file to change.
Setup the reloader proxy prior to importing the worker's module. This should allow some work to be done at module-scope instead of in the callable.
Fix package long description on PyPI.
Fix package long description on PyPI.
Ensure that the stdin file handle is inheritable incase the "spawn" variant of multiprocessing is enabled.
Disable bytecode compiling of files imported by the worker process. This should not be necessary when developing and it was causing the process to res
Disable bytecode compiling of files imported by the worker process. This should not be necessary when developing and it was causing the process to restart twice on Windows due to how it handles pyc timestamps.
Fix hupper's support for forwarding stdin to the worker processes on Python < 3.5 on Windows.
Fix some possible file descriptor leakage.
Simplify the hupper.interfaces.IFileMonitor interface by internalizing some of the hupper-specific integrations. They can now focus on just looking for changes.
Add the hupper.interfaces.IFileMonitorFactory interface to improve the documentation for the callback argument required by hupper.interfaces.IFileMonitor.
Added support for watchdog _ if it's installed to do inotify-style file monitoring. This is an optional dependency and hupper will fallback to using p
Windows support!
Added support for watchdog if it's installed to do inotify-style file monitoring. This is an optional dependency and hupper will fallback to using polling if it's not available.
- Initial release.
Initial release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →