Skip to main content

Filesystem events monitoring

Project description

Build Status CirrusCI Status

Python API and shell utilities to monitor file system events.

Works on 3.8+.

Example API Usage

A simple program that uses watchdog to monitor directories specified as command-line arguments and logs events generated:

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler


class MyEventHandler(FileSystemEventHandler):
    def on_any_event(self, event):
        print(event)


event_handler = MyEventHandler()
observer = Observer()
observer.schedule(event_handler, '.', recursive=True)
observer.start()
try:
    while True:
        time.sleep(1)
finally:
    observer.stop()
    observer.join()

Shell Utilities

Watchdog comes with an optional utility script called watchmedo. Please type watchmedo --help at the shell prompt to know more about this tool.

Here is how you can log the current directory recursively for events related only to *.py and *.txt files while ignoring all directory events:

watchmedo log \
    --patterns="*.py;*.txt" \
    --ignore-directories \
    --recursive \
    --verbose \
    .

You can use the shell-command subcommand to execute shell commands in response to events:

watchmedo shell-command \
    --patterns="*.py;*.txt" \
    --recursive \
    --command='echo "${watch_src_path}"' \
    .

Please see the help information for these commands by typing:

watchmedo [command] --help

About watchmedo Tricks

watchmedo can read tricks.yaml files and execute tricks within them in response to file system events. Tricks are actually event handlers that subclass watchdog.tricks.Trick and are written by plugin authors. Trick classes are augmented with a few additional features that regular event handlers don’t need.

An example tricks.yaml file:

tricks:
- watchdog.tricks.LoggerTrick:
    patterns: ["*.py", "*.js"]
- watchmedo_webtricks.GoogleClosureTrick:
    patterns: ['*.js']
    hash_names: true
    mappings_format: json                  # json|yaml|python
    mappings_module: app/javascript_mappings
    suffix: .min.js
    compilation_level: advanced            # simple|advanced
    source_directory: app/static/js/
    destination_directory: app/public/js/
    files:
      index-page:
      - app/static/js/vendor/jquery*.js
      - app/static/js/base.js
      - app/static/js/index-page.js
      about-page:
      - app/static/js/vendor/jquery*.js
      - app/static/js/base.js
      - app/static/js/about-page/**/*.js

The directory containing the tricks.yaml file will be monitored. Each trick class is initialized with its corresponding keys in the tricks.yaml file as arguments and events are fed to an instance of this class as they arrive.

Installation

Install from PyPI using pip:

$ python -m pip install -U watchdog

# or to install the watchmedo utility:
$ python -m pip install -U "watchdog[watchmedo]"

Install from source:

$ python -m pip install -e .

# or to install the watchmedo utility:
$ python -m pip install -e ".[watchmedo]"

Documentation

You can browse the latest release documentation online.

Contribute

Fork the repository on GitHub and send a pull request, or file an issue ticket at the issue tracker. For general help and questions use stackoverflow with tag python-watchdog.

Create and activate your virtual environment, then:

python -m pip install pytest pytest-cov
python -m pip install -e ".[watchmedo]"
python -m pytest tests

If you are making a substantial change, add an entry to the “Unreleased” section of the changelog.

Supported Platforms

  • Linux 2.6 (inotify)

  • macOS (FSEvents, kqueue)

  • FreeBSD/BSD (kqueue)

  • Windows (ReadDirectoryChangesW with I/O completion ports; ReadDirectoryChangesW worker threads)

  • OS-independent (polling the disk for directory snapshots and comparing them periodically; slow and not recommended)

Note that when using watchdog with kqueue, you need the number of file descriptors allowed to be opened by programs running on your system to be increased to more than the number of files that you will be monitoring. The easiest way to do that is to edit your ~/.profile file and add a line similar to:

ulimit -n 1024

This is an inherent problem with kqueue because it uses file descriptors to monitor files. That plus the enormous amount of bookkeeping that watchdog needs to do in order to monitor file descriptors just makes this a painful way to monitor files and directories. In essence, kqueue is not a very scalable way to monitor a deeply nested directory of files and directories with a large number of files.

About using watchdog with editors like Vim

Vim does not modify files unless directed to do so. It creates backup files and then swaps them in to replace the files you are editing on the disk. This means that if you use Vim to edit your files, the on-modified events for those files will not be triggered by watchdog. You may need to configure Vim appropriately to disable this feature.

About using watchdog with CIFS

When you want to watch changes in CIFS, you need to explicitly tell watchdog to use PollingObserver, that is, instead of letting watchdog decide an appropriate observer like in the example above, do:

from watchdog.observers.polling import PollingObserver as Observer

Dependencies

  1. Python 3.8 or above.

  2. XCode (only on macOS when installing from sources)

  3. PyYAML (only for watchmedo)

Licensing

Watchdog is licensed under the terms of the Apache License, version 2.0.

Copyright 2011 Yesudeep Mangalapilly.

Copyright 2012 Google, Inc & contributors.

Project source code is available at Github. Please report bugs and file enhancement requests at the issue tracker.

Why Watchdog?

Too many people tried to do the same thing and none did what I needed Python to do:

Changelog

4.0.2

2024-08-11 • full history

  • Add support for Python 3.13 (#1052)

  • [core] Run ruff, apply several fixes (#1033)

  • [core] Remove execution rights from events.py

  • [documentation] Update PatternMatchingEventHandler docstrings (#1048)

  • [documentation] Simplify the quickstart example (#1047)

  • [fsevents] Add missing event_filter keyword-argument to FSEventsObserver.schedule() (#1049)

  • [utils] Fix a possible race condition in AutoRestartTrick (#1002)

  • [watchmedo] Remove execution rights from watchmedo.py

  • Thanks to our beloved contributors: @BoboTiG, @nbelakovski, @ivg

4.0.1

2024-05-23 • full history

  • [inotify] Fix missing event_filter for the full emitter (#1032)

  • Thanks to our beloved contributors: @mraspaud, @BoboTiG

4.0.0

2024-02-06 • full history

  • Drop support for Python 3.7.

  • Add support for Python 3.12.

  • [snapshot] Add typing to dirsnapshot (#1012)

  • [snapshot] Added DirectorySnapshotDiff.ContextManager (#1011)

  • [events] FileSystemEvent, and subclasses, are now dataclass``es, and their ``repr() has changed

  • [windows] WinAPINativeEvent is now a dataclass, and its repr() has changed

  • [events] Log FileOpenedEvent, and FileClosedEvent, events in LoggingEventHandler

  • [tests] Improve FileSystemEvent coverage

  • [watchmedo] Log all events in LoggerTrick

  • [windows] The observers.read_directory_changes.WATCHDOG_TRAVERSE_MOVED_DIR_DELAY hack was removed. The constant will be kept to prevent breaking other softwares.

  • Thanks to our beloved contributors: @BoboTiG, @msabramo

3.0.0

2023-03-20 • full history

  • Drop support for Python 3.6.

  • watchdog is now PEP 561 compatible, and tested with mypy

  • Fix missing > in FileSystemEvent.__repr__() (#980)

  • [ci] Lots of improvements

  • [inotify] Return from InotifyEmitter.queue_events() if not launched when thread is inactive (#963)

  • [tests] Stability improvements

  • [utils] Remove handling of threading.Event.isSet spelling (#962)

  • [watchmedo] Fixed tricks YAML generation (#965)

  • Thanks to our beloved contributors: @kurtmckee, @altendky, @agroszer, @BoboTiG

2.3.1

2023-02-28 • full history

  • Run black on the entire source code

  • Bundle the requirements-tests.txt file in the source distribution (#939)

  • [watchmedo] Exclude FileOpenedEvent events from AutoRestartTrick, and ShellCommandTrick, to restore watchdog < 2.3.0 behavior. A better solution should be found in the future. (#949)

  • [watchmedo] Log FileOpenedEvent, and FileClosedEvent, events in LoggerTrick

  • Thanks to our beloved contributors: @BoboTiG

2.3.0

2023-02-23 • full history

  • [inotify] Add support for IN_OPEN events: a FileOpenedEvent event will be fired (#941)

  • [watchmedo] Add optional event debouncing for auto-restart, only restarting once if many events happen in quick succession (--debounce-interval) (#940)

  • [watchmedo] Exit gracefully on KeyboardInterrupt exception (Ctrl+C) (#945)

  • [watchmedo] Add option to not auto-restart the command after it exits (--no-restart-on-command-exit) (#946)

  • Thanks to our beloved contributors: @BoboTiG, @dstaple, @taleinat, @cernekj

2.2.1

2023-01-01 • full history

  • Enable mypy to discover type hints as specified in PEP 561 (#933)

  • [ci] Set the expected Python version when building release files

  • [ci] Update actions versions in use

  • [watchmedo] [regression] Fix usage of missing signal.SIGHUP attribute on non-Unix OSes (#935)

  • Thanks to our beloved contributors: @BoboTiG, @simon04, @piotrpdev

2.2.0

2022-12-05 • full history

  • [build] Wheels are now available for Python 3.11 (#932)

  • [documentation] HTML documentation builds are now tested for errors (#902)

  • [documentation] Fix typos here, and there (#910)

  • [fsevents2] The fsevents2 observer is now deprecated (#909)

  • [tests] The error message returned by musl libc for error code -1 is now allowed (#923)

  • [utils] Remove unnecessary code in dirsnapshot.py (#930)

  • [watchmedo] Handle shutdown events from SIGHUP (#912)

  • Thanks to our beloved contributors: @kurtmckee, @babymastodon, @QuantumEnergyE, @timgates42, @BoboTiG

2.1.9

2022-06-10 • full history

  • [fsevents] Fix flakey test to assert that there are no errors when stopping the emitter.

  • [inotify] Suppress occasional OSError: [Errno 9] Bad file descriptor at shutdown. (#805)

  • [watchmedo] Make auto-restart restart the sub-process if it terminates. (#896)

  • [watchmedo] Avoid zombie sub-processes when running shell-command without --wait. (#405)

  • Thanks to our beloved contributors: @samschott, @taleinat, @altendky, @BoboTiG

2.1.8

2022-05-15 • full history

  • Fix adding failed emitters on observer schedule. (#872)

  • [inotify] Fix hang when unscheduling watch on a path in an unmounted filesystem. (#869)

  • [watchmedo] Fix broken parsing of --kill-after argument for the auto-restart command. (#870)

  • [watchmedo] Fix broken parsing of boolean arguments. (#887)

  • [watchmedo] Fix broken parsing of commands from auto-restart, and shell-command. (#888)

  • [watchmedo] Support setting verbosity level via -q/--quiet and -v/--verbose arguments. (#889)

  • Thanks to our beloved contributors: @taleinat, @kianmeng, @palfrey, @IlayRosenberg, @BoboTiG

2.1.7

2022-03-25 • full history

  • Eliminate timeout in waiting on event queue. (#861)

  • [inotify] Fix not equality implementation for InotifyEvent. (#848)

  • [watchmedo] Fix calling commands from within a Python script. (#879)

  • [watchmedo] PyYAML is loaded only when strictly necessary. Simple usages of watchmedo are possible without the module being installed. (#847)

  • Thanks to our beloved contributors: @sattlerc, @JanzenLiu, @BoboTiG

2.1.6

2021-10-01 • full history

  • [bsd] Fixed returned paths in kqueue.py and restored the overall results of the test suite. (#842)

  • [bsd] Updated FreeBSD CI support .(#841)

  • [watchmedo] Removed the argh dependency in favor of the builtin argparse module. (#836)

  • [watchmedo] Removed unexistant WindowsApiAsyncObserver references and --debug-force-winapi-async arguments.

  • [watchmedo] Improved the help output.

  • Thanks to our beloved contributors: @knobix, @AndreaRe9, @BoboTiG

2.1.5

2021-08-23 • full history

  • Fix regression introduced in 2.1.4 (reverted “Allow overriding or adding custom event handlers to event dispatch map. (#814)”). (#830)

  • Convert regexes of type str to list. (831)

  • Thanks to our beloved contributors: @unique1o1, @BoboTiG

2.1.4

2021-08-19 • full history

  • [watchmedo] Fix usage of os.setsid() and os.killpg() Unix-only functions. (#809)

  • [mac] Fix missing FileModifiedEvent on permission or ownership changes of a file. (#815)

  • [mac] Convert absolute watch path in FSEeventsEmitter with os.path.realpath(). (#822)

  • Fix a possible AttributeError in SkipRepeatsQueue._put(). (#818)

  • Allow overriding or adding custom event handlers to event dispatch map. (#814)

  • Fix tests on big endian platforms. (#828)

  • Thanks to our beloved contributors: @replabrobin, @BoboTiG, @SamSchott, @AndreiB97, @NiklasRosenstein, @ikokollari, @mgorny

2.1.3

2021-06-26 • full history

  • Publish macOS arm64 and universal2 wheels. (#740)

  • Thanks to our beloved contributors: @kainjow, @BoboTiG

2.1.2

2021-05-19 • full history

  • [mac] Fix relative path handling for non-recursive watch. (#797)

  • [windows] On PyPy, events happening right after start() were missed. Add a workaround for that. (#796)

  • Thanks to our beloved contributors: @oprypin, @CCP-Aporia, @BoboTiG

2.1.1

2021-05-10 • full history

  • [mac] Fix callback exceptions when the watcher is deleted but still receiving events (#786)

  • Thanks to our beloved contributors: @rom1win, @BoboTiG, @CCP-Aporia

2.1.0

2021-05-04 • full history

  • [inotify] Simplify libc loading (#776)

  • [mac] Add support for non-recursive watches in FSEventsEmitter (#779)

  • [watchmedo] Add support for --debug-force-* arguments to tricks (#781)

  • Thanks to our beloved contributors: @CCP-Aporia, @aodj, @UnitedMarsupials, @BoboTiG

2.0.3

2021-04-22 • full history

  • [mac] Use logger.debug() instead of logger.info() (#774)

  • Updated documentation links (#777)

  • Thanks to our beloved contributors: @globau, @imba-tjd, @BoboTiG

2.0.2

2021-02-22 • full history

  • [mac] Add missing exception objects (#766)

  • Thanks to our beloved contributors: @CCP-Aporia, @BoboTiG

2.0.1

2021-02-17 • full history

  • [mac] Fix a segmentation fault when dealing with unicode paths (#763)

  • Moved the CI from Travis-CI to GitHub Actions (#764)

  • Thanks to our beloved contributors: @SamSchott, @BoboTiG

2.0.0

2021-02-11 • full history

  • Avoid deprecated PyEval_InitThreads on Python 3.7+ (#746)

  • [inotify] Add support for IN_CLOSE_WRITE events. A FileCloseEvent event will be fired. Note that IN_CLOSE_NOWRITE events are not handled to prevent much noise. (#184, #245, #280, #313, #690)

  • [inotify] Allow to stop the emitter multiple times (#760)

  • [mac] Support coalesced filesystem events (#734)

  • [mac] Drop support for macOS 10.12 and earlier (#750)

  • [mac] Fix an issue when renaming an item changes only the casing (#750)

  • Thanks to our beloved contributors: @bstaletic, @lukassup, @ysard, @SamSchott, @CCP-Aporia, @BoboTiG

1.0.2

2020-12-18 • full history

  • Wheels are published for GNU/Linux, macOS and Windows (#739)

  • [mac] Fix missing event_id attribute in fsevents (#721)

  • [mac] Return byte paths if a byte path was given in fsevents (#726)

  • [mac] Add compatibility with old macOS versions (#733)

  • Uniformize event for deletion of watched dir (#727)

  • Thanks to our beloved contributors: @SamSchott, @CCP-Aporia, @di, @BoboTiG

1.0.1

2020-12-10 • Fix version with good metadatas.

1.0.0

2020-12-10 • full history

  • Versioning is now following the semver

  • Drop support for Python 2.7, 3.4 and 3.5

  • [mac] Regression fixes for native fsevents (#717)

  • [windows] winapi.BUFFER_SIZE now defaults to 64000 (instead of 2048) (#700)

  • [windows] Introduced winapi.PATH_BUFFER_SIZE (defaults to 2048) to keep the old behavior with path-realted functions (#700)

  • Use pathlib from the standard library, instead of pathtools (#556)

  • Allow file paths on Unix that don’t follow the file system encoding (#703)

  • Removed the long-time deprecated events.LoggingFileSystemEventHandler class, use LoggingEventHandler instead

  • Thanks to our beloved contributors: @SamSchott, @bstaletic, @BoboTiG, @CCP-Aporia

0.10.4

2020-11-21 • full history

  • Add logger parameter for the LoggingEventHandler (#676)

  • Replace mutable default arguments with if None implementation (#677)

  • Expand tests to Python 2.7 and 3.5-3.10 for GNU/Linux, macOS and Windows

  • [mac] Performance improvements for the fsevents module (#680)

  • [mac] Prevent compilation of watchdog_fsevents.c on non-macOS machines (#687)

  • [watchmedo] Handle shutdown events from SIGTERM and SIGINT more reliably (#693)

  • Thanks to our beloved contributors: @Sraw, @CCP-Aporia, @BoboTiG, @maybe-sybr

0.10.3

2020-06-25 • full history

  • Ensure ObservedWatch.path is a string (#651)

  • [inotify] Allow to monitor single file (#655)

  • [inotify] Prevent raising an exception when a file in a monitored folder has no permissions (#669, #670)

  • Thanks to our beloved contributors: @brant-ruan, @rec, @andfoy, @BoboTiG

0.10.2

2020-02-08 • full history

  • Fixed the build_ext command on macOS Catalina (#628)

  • Fixed the installation of macOS requirements on non-macOS OSes (#635)

  • Refactored dispatch() method of FileSystemEventHandler, PatternMatchingEventHandler and RegexMatchingEventHandler

  • [bsd] Improved tests support on non Windows/Linux platforms (#633, #639)

  • [bsd] Added FreeBSD CI support (#532)

  • [bsd] Restored full support (#638, #641)

  • Thanks to our beloved contributors: @BoboTiG, @evilham, @danilobellini

0.10.1

2020-01-30 • full history

  • Fixed Python 2.7 to 3.6 installation when the OS locale is set to POSIX (#615)

  • Fixed the build_ext command on macOS (#618, #620)

  • Moved requirements to setup.cfg (#617)

  • [mac] Removed old C code for Python 2.5 in the fsevents C implementation

  • [snapshot] Added EmptyDirectorySnapshot (#613)

  • Thanks to our beloved contributors: @Ajordat, @tehkirill, @BoboTiG

0.10.0

2020-01-26 • full history

Breaking Changes

  • Dropped support for Python 2.6, 3.2 and 3.3

  • Emitters that failed to start are now removed

  • [snapshot] Removed the deprecated walker_callback argument, use stat instead

  • [watchmedo] The utility is no more installed by default but via the extra watchdog[watchmedo]

Other Changes

  • Fixed several Python 3 warnings

  • Identify synthesized events with is_synthetic attribute (#369)

  • Use os.scandir() to improve memory usage (#503)

  • [bsd] Fixed flavors of FreeBSD detection (#529)

  • [bsd] Skip unprocessable socket files (#509)

  • [inotify] Fixed events containing non-ASCII characters (#516)

  • [inotify] Fixed the way OSError are re-raised (#377)

  • [inotify] Fixed wrong source path after renaming a top level folder (#515)

  • [inotify] Removed delay from non-move events (#477)

  • [mac] Fixed a bug when calling FSEventsEmitter.stop() twice (#466)

  • [mac] Support for unscheduling deleted watch (#541)

  • [mac] Fixed missing field initializers and unused parameters in watchdog_fsevents.c

  • [snapshot] Don’t walk directories without read permissions (#408)

  • [snapshot] Fixed a race condition crash when a directory is swapped for a file (#513)

  • [snasphot] Fixed an AttributeError about forgotten path_for_inode attr (#436)

  • [snasphot] Added the ignore_device=False parameter to the ctor (597)

  • [watchmedo] Fixed the path separator used (#478)

  • [watchmedo] Fixed the use of yaml.load() for yaml.safe_load() (#453)

  • [watchmedo] Handle all available signals (#549)

  • [watchmedo] Added the --debug-force-polling argument (#404)

  • [windows] Fixed issues when the observed directory is deleted (#570 and #601)

  • [windows] WindowsApiEmitter made easier to subclass (#344)

  • [windows] Use separate ctypes DLL instances

  • [windows] Generate sub created events only if recursive=True (#454)

  • Thanks to our beloved contributors: @BoboTiG, @LKleinNux, @rrzaripov, @wildmichael, @TauPan, @segevfiner, @petrblahos, @QuantumEnergyE, @jeffwidman, @kapsh, @nickoala, @petrblahos, @julianolf, @tonybaloney, @mbakiev, @pR0Ps, javaguirre, @skurfer, @exarkun, @joshuaskelly, @danilobellini, @Ajordat

0.9.0

2018-08-28 • full history

  • Deleting the observed directory now emits a DirDeletedEvent event

  • [bsd] Improved the platform detection (#378)

  • [inotify] Fixed a crash when the root directory being watched by was deleted (#374)

  • [inotify] Handle systems providing uClibc

  • [linux] Fixed a possible DirDeletedEvent duplication when deleting a directory

  • [mac] Fixed unicode path handling fsevents2.py (#298)

  • [watchmedo] Added the --debug-force-polling argument (#336)

  • [windows] Fixed the FILE_LIST_DIRECTORY constant (#376)

  • Thanks to our beloved contributors: @vulpeszerda, @hpk42, @tamland, @senden9, @gorakhargosh, @nolsto, @mafrosis, @DonyorM, @anthrotype, @danilobellini, @pierregr, @ShinNoNoir, @adrpar, @gforcada, @pR0Ps, @yegorich, @dhke

0.8.3

2015-02-11 • full history

  • Fixed the use of the root logger (#274)

  • [inotify] Refactored libc loading and improved error handling in inotify_c.py

  • [inotify] Fixed a possible unbound local error in inotify_c.py

  • Thanks to our beloved contributors: @mmorearty, @tamland, @tony, @gorakhargosh

0.8.2

2014-10-29 • full history

  • Event emitters are no longer started on schedule if Observer is not already running

  • [mac] Fixed usued arguments to pass clang compilation (#265)

  • [snapshot] Fixed a possible race condition crash on directory deletion (#281)

  • [windows] Fixed an error when watching the same folder again (#270)

  • Thanks to our beloved contributors: @tamland, @apetrone, @Falldog, @theospears

0.8.1

2014-07-28 • full history

  • Fixed anon_inode descriptors leakage (#249)

  • [inotify] Fixed thread stop dead lock (#250)

  • Thanks to our beloved contributors: @Witos, @adiroiban, @tamland

0.8.0

2014-07-02 • full history

  • Fixed argh deprecation warnings (#242)

  • [snapshot] Methods returning internal stats info were replaced by mtime(), inode() and path() methods

  • [snapshot] Deprecated the walker_callback argument

  • [watchmedo] Fixed auto-restart to terminate all children processes (#225)

  • [watchmedo] Added the --no-parallel argument (#227)

  • [windows] Fixed the value of INVALID_HANDLE_VALUE (#123)

  • [windows] Fixed octal usages to work with Python 3 as well (#223)

  • Thanks to our beloved contributors: @tamland, @Ormod, @berdario, @cro, @BernieSumption, @pypingou, @gotcha, @tommorris, @frewsxcv

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

watchdog-4.0.2.tar.gz (126.6 kB view details)

Uploaded Source

Built Distributions

watchdog-4.0.2-py3-none-win_ia64.whl (82.9 kB view details)

Uploaded Python 3 Windows ia64

watchdog-4.0.2-py3-none-win_amd64.whl (82.9 kB view details)

Uploaded Python 3 Windows x86-64

watchdog-4.0.2-py3-none-win32.whl (82.9 kB view details)

Uploaded Python 3 Windows x86

watchdog-4.0.2-py3-none-manylinux2014_x86_64.whl (82.9 kB view details)

Uploaded Python 3

watchdog-4.0.2-py3-none-manylinux2014_s390x.whl (82.9 kB view details)

Uploaded Python 3

watchdog-4.0.2-py3-none-manylinux2014_ppc64le.whl (82.9 kB view details)

Uploaded Python 3

watchdog-4.0.2-py3-none-manylinux2014_ppc64.whl (82.9 kB view details)

Uploaded Python 3

watchdog-4.0.2-py3-none-manylinux2014_i686.whl (82.9 kB view details)

Uploaded Python 3

watchdog-4.0.2-py3-none-manylinux2014_armv7l.whl (82.9 kB view details)

Uploaded Python 3

watchdog-4.0.2-py3-none-manylinux2014_aarch64.whl (82.9 kB view details)

Uploaded Python 3

watchdog-4.0.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl (92.3 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

watchdog-4.0.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (91.8 kB view details)

Uploaded PyPy macOS 10.15+ x86-64

watchdog-4.0.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl (92.2 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

watchdog-4.0.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (91.8 kB view details)

Uploaded PyPy macOS 10.15+ x86-64

watchdog-4.0.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl (92.2 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

watchdog-4.0.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (91.7 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

watchdog-4.0.2-cp313-cp313-macosx_11_0_arm64.whl (92.9 kB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

watchdog-4.0.2-cp313-cp313-macosx_10_13_x86_64.whl (92.3 kB view details)

Uploaded CPython 3.13 macOS 10.13+ x86-64

watchdog-4.0.2-cp313-cp313-macosx_10_13_universal2.whl (100.3 kB view details)

Uploaded CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64)

watchdog-4.0.2-cp312-cp312-macosx_11_0_arm64.whl (92.9 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

watchdog-4.0.2-cp312-cp312-macosx_10_9_x86_64.whl (92.3 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

watchdog-4.0.2-cp312-cp312-macosx_10_9_universal2.whl (100.3 kB view details)

Uploaded CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

watchdog-4.0.2-cp311-cp311-macosx_11_0_arm64.whl (92.9 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

watchdog-4.0.2-cp311-cp311-macosx_10_9_x86_64.whl (92.3 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

watchdog-4.0.2-cp311-cp311-macosx_10_9_universal2.whl (100.3 kB view details)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

watchdog-4.0.2-cp310-cp310-macosx_11_0_arm64.whl (92.9 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

watchdog-4.0.2-cp310-cp310-macosx_10_9_x86_64.whl (92.2 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

watchdog-4.0.2-cp310-cp310-macosx_10_9_universal2.whl (100.3 kB view details)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

watchdog-4.0.2-cp39-cp39-macosx_11_0_arm64.whl (92.9 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

watchdog-4.0.2-cp39-cp39-macosx_10_9_x86_64.whl (92.2 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

watchdog-4.0.2-cp39-cp39-macosx_10_9_universal2.whl (100.3 kB view details)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

watchdog-4.0.2-cp38-cp38-macosx_11_0_arm64.whl (92.9 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

watchdog-4.0.2-cp38-cp38-macosx_10_9_x86_64.whl (92.3 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

watchdog-4.0.2-cp38-cp38-macosx_10_9_universal2.whl (100.3 kB view details)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file watchdog-4.0.2.tar.gz.

File metadata

  • Download URL: watchdog-4.0.2.tar.gz
  • Upload date:
  • Size: 126.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for watchdog-4.0.2.tar.gz
Algorithm Hash digest
SHA256 b4dfbb6c49221be4535623ea4474a4d6ee0a9cef4a80b20c28db4d858b64e270
MD5 6bc126ba2259637cbe61ed4284b858f2
BLAKE2b-256 4f38764baaa25eb5e35c9a043d4c4588f9836edfe52a708950f4b6d5f714fd42

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-py3-none-win_ia64.whl.

File metadata

  • Download URL: watchdog-4.0.2-py3-none-win_ia64.whl
  • Upload date:
  • Size: 82.9 kB
  • Tags: Python 3, Windows ia64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for watchdog-4.0.2-py3-none-win_ia64.whl
Algorithm Hash digest
SHA256 baececaa8edff42cd16558a639a9b0ddf425f93d892e8392a56bf904f5eff22c
MD5 b01eb8a1514a91365e0198e0403aa93a
BLAKE2b-256 b00b43b96a9ecdd65ff5545b1b13b687ca486da5c6249475b1a45f24d63a1858

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-py3-none-win_amd64.whl.

File metadata

  • Download URL: watchdog-4.0.2-py3-none-win_amd64.whl
  • Upload date:
  • Size: 82.9 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for watchdog-4.0.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 c344453ef3bf875a535b0488e3ad28e341adbd5a9ffb0f7d62cefacc8824ef2b
MD5 3c27dac0d5d3d8dab04cff3f41d8dbec
BLAKE2b-256 992eb69dfaae7a83ea64ce36538cc103a3065e12c447963797793d5c0a1d5130

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-py3-none-win32.whl.

File metadata

  • Download URL: watchdog-4.0.2-py3-none-win32.whl
  • Upload date:
  • Size: 82.9 kB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for watchdog-4.0.2-py3-none-win32.whl
Algorithm Hash digest
SHA256 0d8a7e523ef03757a5aa29f591437d64d0d894635f8a50f370fe37f913ce4e19
MD5 07b960a928f564626a7db2a772a9007c
BLAKE2b-256 d0d8cdb0c21a4a988669d7c210c75c6a2c9a0e16a3b08d9f7e633df0d9a16ad8

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-py3-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c0b14488bd336c5b1845cee83d3e631a1f8b4e9c5091ec539406e4a324f882d8
MD5 d9b200df0dcc5c4200206443e3161af6
BLAKE2b-256 01d2c8931ff840a7e5bd5dcb93f2bb2a1fd18faf8312e9f7f53ff1cf76ecc8ed

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-py3-none-manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-py3-none-manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 c82253cfc9be68e3e49282831afad2c1f6593af80c0daf1287f6a92657986757
MD5 774668d2771876a9f3efde4ff0598651
BLAKE2b-256 db0256ebe2cf33b352fe3309588eb03f020d4d1c061563d9858a9216ba004259

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-py3-none-manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-py3-none-manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 32be97f3b75693a93c683787a87a0dc8db98bb84701539954eef991fb35f5fbc
MD5 be27061a44a01820b8403ce32ea1b1d6
BLAKE2b-256 80f1d4b915160c9d677174aa5fae4537ae1f5acb23b3745ab0873071ef671f0a

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-py3-none-manylinux2014_ppc64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-py3-none-manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 88456d65f207b39f1981bf772e473799fcdc10801062c36fd5ad9f9d1d463a73
MD5 fdd181b79d4fb5e7844065d85759bfac
BLAKE2b-256 09cc238998fc08e292a4a18a852ed8274159019ee7a66be14441325bcd811dfd

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-py3-none-manylinux2014_i686.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-py3-none-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0e83619a2d5d436a7e58a1aea957a3c1ccbf9782c43c0b4fed80580e5e4acd1a
MD5 620d4eab9cb5bb47cc612f48df575e6b
BLAKE2b-256 153aa4bd8f3b9381824995787488b9282aff1ed4667e1110f31a87b871ea851c

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-py3-none-manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-py3-none-manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 e252f8ca942a870f38cf785aef420285431311652d871409a64e2a0a52a2174c
MD5 3530a067f1e496f10f0b934ad9137b11
BLAKE2b-256 e890aebac95d6f954bd4901f5d46dcd83d68e682bfd21798fd125a95ae1c9dbf

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-py3-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 936acba76d636f70db8f3c66e76aa6cb5136a936fc2a5088b9ce1c7a3508fc83
MD5 11ec4a01110a442c05ed0064b7b00d90
BLAKE2b-256 8ab125acf6767af6f7e44e0086309825bd8c098e301eed5868dc5350642124b9

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f7c739888c20f99824f7aa9d31ac8a97353e22d0c0e54703a547a218f6637eb3
MD5 4d60bef373b63d27d795899578e11b7a
BLAKE2b-256 87628be55e605d378a154037b9ba484e00a5478e627b69c53d0f63e3ef413ba6

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 10b6683df70d340ac3279eff0b2766813f00f35a1d37515d2c99959ada8f05fa
MD5 c2b7ccb8fedfd0d1ba846ead195b87a9
BLAKE2b-256 3b9a6f30f023324de7bad8a3eb02b0afb06bd0726003a3550e9964321315df5a

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f15edcae3830ff20e55d1f4e743e92970c847bcddc8b7509bcd172aa04de506e
MD5 d33d94748c0e1cb9baf78b8f12b477ed
BLAKE2b-256 f0de6fff29161d5789048f06ef24d94d3ddcc25795f347202b7ea503c3356acb

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 2d468028a77b42cc685ed694a7a550a8d1771bb05193ba7b24006b8241a571a1
MD5 242dc9c356bc105884d3bad847cbdd38
BLAKE2b-256 703f2173b4d9581bc9b5df4d7f2041b6c58b5e5448407856f68d4be9981000d0

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f5315a8c8dd6dd9425b974515081fc0aadca1d1d61e078d2246509fd756141ee
MD5 f54050fa5692e6a2c56c61c29457432f
BLAKE2b-256 ef69241998de9b8e024f5c2fbdf4324ea628b4231925305011ca8b7e1c3329f6

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c100d09ac72a8a08ddbf0629ddfa0b8ee41740f9051429baa8e31bb903ad7508
MD5 38f38e07fae40713716c8636469945d0
BLAKE2b-256 6b5912e03e675d28f450bade6da6bc79ad6616080b317c472b9ae688d2495a03

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 980b71510f59c884d684b3663d46e7a14b457c9611c481e5cef08f4dd022eed7
MD5 0e2831748c8f385ffd8605b6f441bb30
BLAKE2b-256 2a89ad4715cbbd3440cb0d336b78970aba243a33a24b1a79d66f8d16b4590d6a

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 bcfd02377be80ef3b6bc4ce481ef3959640458d6feaae0bd43dd90a43da90a7d
MD5 c498d3d4c1700b9ab7a1c935541503ee
BLAKE2b-256 ce82027c0c65c2245769580605bcd20a1dc7dfd6c6683c8c4e2ef43920e38d27

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 cd67c7df93eb58f360c43802acc945fa8da70c675b6fa37a241e17ca698ca49b
MD5 d404e7098d50ca6cb4724912737d81a4
BLAKE2b-256 7963eb8994a182672c042d85a33507475c50c2ee930577524dd97aea05251527

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 132937547a716027bd5714383dfc40dc66c26769f1ce8a72a859d6a48f371f3a
MD5 e54480b9979cb91e9048328b70b05f79
BLAKE2b-256 49c41aeba2c31b25f79b03b15918155bc8c0b08101054fc727900f1a577d0d54

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d7ab624ff2f663f98cd03c8b7eedc09375a911794dfea6bf2a359fcc266bff29
MD5 79ddea381fee9f442b36cf480c806279
BLAKE2b-256 cbd28ce97dff5e465db1222951434e3115189ae54a9863aef99c6987890cc9ef

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp312-cp312-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp312-cp312-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 1cdcfd8142f604630deef34722d695fb455d04ab7cfe9963055df1fc69e6727a
MD5 b6fdb0953a2cdd607ab4da1a9dd6747f
BLAKE2b-256 92f5ea22b095340545faea37ad9a42353b265ca751f543da3fb43f5d00cdcd21

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 984306dc4720da5498b16fc037b36ac443816125a3705dfde4fd90652d8028ef
MD5 bce47528098701fe3b28641a7d896517
BLAKE2b-256 0457179d76076cff264982bc335dd4c7da6d636bd3e9860bbc896a665c3447b6

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 914285126ad0b6eb2258bbbcb7b288d9dfd655ae88fa28945be05a7b475a800b
MD5 dd1480dde493344b357a6875ba5dd05c
BLAKE2b-256 59a9412b808568c1814d693b4ff1cec0055dc791780b9dc947807978fab86bc1

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7c7d4bf585ad501c5f6c980e7be9c4f15604c7cc150e942d82083b31a7548930
MD5 ed2053f194ce180160be212fef54a321
BLAKE2b-256 de78027ad372d62f97642349a16015394a7680530460b1c70c368c506cb60c09

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c50f148b31b03fbadd6d0b5980e38b558046b127dc483e5e4505fcef250f9503
MD5 1e1e2a2ce120f3cbcb09a46f5938ac72
BLAKE2b-256 6fcd2e306756364a934532ff8388d90eb2dc8bb21fe575cd2b33d791ce05a02f

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a2cffa171445b0efa0726c561eca9a27d00a1f2b83846dbd5a4f639c4f8ca8e1
MD5 ff47d87323e88bbddcbcc8651cfb0b74
BLAKE2b-256 6dc68e90c65693e87d98310b2e1e5fd7e313266990853b489e85ce8396cc26e3

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ede7f010f2239b97cc79e6cb3c249e72962404ae3865860855d5cbe708b0fd22
MD5 5a8121b48314edd86ee57ef9730d6d65
BLAKE2b-256 46b0219893d41c16d74d0793363bf86df07d50357b81f64bba4cb94fe76e7af4

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b2c45f6e1e57ebb4687690c05bc3a2c1fb6ab260550c4290b8abb1335e0fd08b
MD5 12b1ddb3b9391e8dd7f7aadbe1d76e26
BLAKE2b-256 f311ec5684e0ca692950826af0de862e5db167523c30c9cbf9b3f4ce7ec9cc05

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 eeea812f38536a0aa859972d50c76e37f4456474b02bd93674d1947cf1e39578
MD5 a1cf18712ff5b01dbdad7247fd0d2763
BLAKE2b-256 18a14bbafe7ace414904c2cc9bd93e472133e8ec11eab0b4625017f0e34caad8

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 770eef5372f146997638d737c9a3c597a3b41037cfbc5c41538fc27c09c3a3f9
MD5 2a6d06fee62c41e104c64b5539199d91
BLAKE2b-256 68eb34d3173eceab490d4d1815ba9a821e10abe1da7a7264a224e30689b1450c

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0b4359067d30d5b864e09c8597b112fe0a0a59321a0f331498b013fb097406b4
MD5 43c78fe0ec676fa79f054a039aabcfc8
BLAKE2b-256 23691d2ad9c12d93bc1e445baa40db46bc74757f3ffc3a3be592ba8dbc51b6e5

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f6ee8dedd255087bc7fe82adf046f0b75479b989185fb0bdf9a98b612170eac7
MD5 a4cd5336ccb9423e770055cd696f973a
BLAKE2b-256 6c3e064974628cf305831f3f78264800bd03b3358ec181e3e9380a36ff156b93

See more details on using hashes here.

File details

Details for the file watchdog-4.0.2-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for watchdog-4.0.2-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 aa160781cafff2719b663c8a506156e9289d111d80f3387cf3af49cedee1f040
MD5 7ec6237c0bd1ea4328495bdd4f00749f
BLAKE2b-256 55081a9086a3380e8828f65b0c835b86baf29ebb85e5e94a2811a2eb4f889cfd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page