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.7+.

Example API Usage

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

import sys
import time
import logging
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler

if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO,
                        format='%(asctime)s - %(message)s',
                        datefmt='%Y-%m-%d %H:%M:%S')
    path = sys.argv[1] if len(sys.argv) > 1 else '.'
    event_handler = LoggingEventHandler()
    observer = Observer()
    observer.schedule(event_handler, path, 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.7 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

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-3.0.0.tar.gz (124.6 kB view details)

Uploaded Source

Built Distributions

watchdog-3.0.0-py3-none-win_ia64.whl (82.0 kB view details)

Uploaded Python 3 Windows ia64

watchdog-3.0.0-py3-none-win_amd64.whl (82.0 kB view details)

Uploaded Python 3 Windows x86-64

watchdog-3.0.0-py3-none-win32.whl (82.0 kB view details)

Uploaded Python 3 Windows x86

watchdog-3.0.0-py3-none-manylinux2014_x86_64.whl (82.1 kB view details)

Uploaded Python 3

watchdog-3.0.0-py3-none-manylinux2014_s390x.whl (82.0 kB view details)

Uploaded Python 3

watchdog-3.0.0-py3-none-manylinux2014_ppc64le.whl (82.0 kB view details)

Uploaded Python 3

watchdog-3.0.0-py3-none-manylinux2014_ppc64.whl (82.0 kB view details)

Uploaded Python 3

watchdog-3.0.0-py3-none-manylinux2014_i686.whl (82.1 kB view details)

Uploaded Python 3

watchdog-3.0.0-py3-none-manylinux2014_armv7l.whl (82.0 kB view details)

Uploaded Python 3

watchdog-3.0.0-py3-none-manylinux2014_aarch64.whl (82.0 kB view details)

Uploaded Python 3

watchdog-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (90.4 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

watchdog-3.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (90.4 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

watchdog-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (90.4 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

watchdog-3.0.0-cp311-cp311-macosx_11_0_arm64.whl (91.8 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

watchdog-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl (91.3 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

watchdog-3.0.0-cp311-cp311-macosx_10_9_universal2.whl (100.7 kB view details)

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

watchdog-3.0.0-cp310-cp310-macosx_11_0_arm64.whl (91.8 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

watchdog-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl (91.2 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

watchdog-3.0.0-cp310-cp310-macosx_10_9_universal2.whl (100.7 kB view details)

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

watchdog-3.0.0-cp39-cp39-macosx_11_0_arm64.whl (91.8 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

watchdog-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl (91.2 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

watchdog-3.0.0-cp39-cp39-macosx_10_9_universal2.whl (100.7 kB view details)

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

watchdog-3.0.0-cp38-cp38-macosx_11_0_arm64.whl (91.8 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

watchdog-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl (91.2 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

watchdog-3.0.0-cp38-cp38-macosx_10_9_universal2.whl (100.7 kB view details)

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

watchdog-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl (91.2 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for watchdog-3.0.0.tar.gz
Algorithm Hash digest
SHA256 4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9
MD5 95f80dbc1f567b509a67bb18919ce780
BLAKE2b-256 95a6d6ef450393dac5734c63c40a131f66808d2e6f59f6165ab38c98fbe4e6ec

See more details on using hashes here.

Provenance

File details

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

File metadata

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

File hashes

Hashes for watchdog-3.0.0-py3-none-win_ia64.whl
Algorithm Hash digest
SHA256 5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759
MD5 1c69b6519e169bb7db72817f28bf946d
BLAKE2b-256 ba0ccd0337069c468f22ef256e768ece74c78b511092f1004ab260268e1af4a9

See more details on using hashes here.

Provenance

File details

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

File metadata

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

File hashes

Hashes for watchdog-3.0.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c
MD5 17261c2235e0b7c092ab0867ae71cd55
BLAKE2b-256 9b6ece8d124d03cd3f2941365d9c81d62e3afe43f2dc7e6e86274fa9c2ec2d5b

See more details on using hashes here.

Provenance

File details

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

File metadata

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

File hashes

Hashes for watchdog-3.0.0-py3-none-win32.whl
Algorithm Hash digest
SHA256 3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f
MD5 2dd423518bba433ea21f75f56fe102d6
BLAKE2b-256 550dbfc2a0d425b12444a2dc245a934c065bbb7bd9833fff071cba79c21bb76e

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33
MD5 1233fef9ef90202ce83fe77ab70bff3c
BLAKE2b-256 2bf0456948b865ab259784f774154e7d65844fa9757522fdb11533fbf8ae7aca

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-py3-none-manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d
MD5 b9340ecf7de451905b61022119aebeba
BLAKE2b-256 401b4e6d3e0f587587931f590531b4ed08070d71a9efb35541d792a68d8ee593

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-py3-none-manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83
MD5 80a710a3c3391ad0779172280f920a11
BLAKE2b-256 713ab12740f4f60861240d57b42a2ac6ac0a2821db506c4435f7872c1fad867d

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-py3-none-manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709
MD5 7fbb5e9fee264ebee7722cc4f294744d
BLAKE2b-256 743ce4b77f4f069aca2b6e35925db7a1aa6cb600dcb52fc3e962284640ca37f3

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-py3-none-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a
MD5 9da2d72be8dac7da597b30a3d2482157
BLAKE2b-256 217246fd174352cd88b9157ade77e3b8835125d4b1e5186fc7f1e8c44664e029

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-py3-none-manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44
MD5 d6d6e5ecfe78eb4b412706342a700ceb
BLAKE2b-256 c0a24e3230bdc1fb878b152a2c66aa941732776f4545bd68135d490591d66713

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a
MD5 f024a663e5331eaf59a3ba8e1946efd3
BLAKE2b-256 9228631872d7fbc45527037060db8c838b47a129a6c09d2297d6dddcfa283cf2

See more details on using hashes here.

Provenance

File details

Details for the file watchdog-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for watchdog-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64
MD5 c621a9a3427878d7f37cdc7cbe1525a4
BLAKE2b-256 30659e36a3c821d47a22e54a8fc73681586b2d26e82d24ea3af63acf2ef78f97

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346
MD5 ce6613b9a5e8af2972c7f79f70df24cf
BLAKE2b-256 ea76bef1c6f6ac18041234a9f3e8bc995d611e255c44f10433bfaf255968c269

See more details on using hashes here.

Provenance

File details

Details for the file watchdog-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for watchdog-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100
MD5 c10aac1c0b4a953b76be3416602d3dd3
BLAKE2b-256 67e4229144d23093436a21a8b84aa5931d70759b81743dc8c10d0e836dbfd752

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7
MD5 98784713ed094cd5f186ab4000558968
BLAKE2b-256 58dbd419fdbd3051b42b0a8091ddf78f70540b6d9d277a84845f7c5955f9de92

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9
MD5 0680a3be23eecf5680d451bb45c9ef36
BLAKE2b-256 84ab67001e62603bf2ea35ace40023f7c74f61e8b047160d6bb078373cec1a67

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae
MD5 2ed315158309ee784a89bb495c0baffe
BLAKE2b-256 009ea9711f35f1ad6571e92dc2e955e7de9dfac21a1b33e9cd212f066a60a387

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96
MD5 ef19a6f613c981b6b849225a3e78117e
BLAKE2b-256 9b3930bb3c2e4f8e89b5c60e98589acf5c5a001cb0efde249aa05d748d1734a2

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397
MD5 92a855ef58222176b017042ddb2772ea
BLAKE2b-256 92dd42f47ffdfadff4c41b89c54163f323f875eb963bf90088e477c43b8f7b15

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41
MD5 4fd0f5c6c0ffb96c49716d64ca43991c
BLAKE2b-256 06fd58b82550ebe4883bb2a5e1b6c14d8702b5ce0f36c58470bba51dc777df46

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8
MD5 7758f4a599c4a87f56b210cee10716ac
BLAKE2b-256 51b9444a984b1667013bac41b31b45d9718e069cc7502a43a924896806605d83

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0
MD5 fca4812a4527a9daf76f076137828a0f
BLAKE2b-256 94ce70c65a6c4b0330129c402624d42f67ce82d6a0ba2036de67628aeffda3c1

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3
MD5 44b8a5104aebefca601d49a65badb3a6
BLAKE2b-256 75fed9a37d8df76878853f68dd665ec6d2c7a984645de460164cb880a93ffe6b

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3
MD5 04c4e6a915b8e1a1940ea6b4ab860863
BLAKE2b-256 dc893a3ce6dd01807ff918aec3bbcabc92ed1a7edc5bb2266c720bb39fec1bec

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc
MD5 a01d838223d82740c11c13d55a3fc3a2
BLAKE2b-256 2e5448527f3aea4f7ed331072352fee034a7f3d6ec7a2ed873681738b2586498

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for watchdog-3.0.0-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f
MD5 df579586afd67c04fba833e53bae7e0f
BLAKE2b-256 7f6e7ca8ed16928d7b11da69372f55c64a09dce649d2b24b03f7063cd8683c4b

See more details on using hashes here.

Provenance

File details

Details for the file watchdog-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for watchdog-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674
MD5 4e8867aefd5a76d1787b0d6764d029ef
BLAKE2b-256 3a9dd6586a065968f3e5d89a2565dffa6ea9151ce9d46c541340bfff27b41231

See more details on using hashes here.

Provenance

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