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

If you want to use Python 2.6, you should stick with watchdog < 0.10.0.

If you want to use Python 2.7, 3.4 or 3.5, you should stick with watchdog < 1.0.0.

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

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]"

Installation Caveats

The watchmedo script depends on PyYAML which links with LibYAML, which brings a performance boost to the PyYAML parser. However, installing LibYAML is optional but recommended. On macOS, you can use homebrew to install LibYAML:

$ brew install libyaml

On Linux, use your favorite package manager to install LibYAML. Here’s how you do it on Ubuntu:

$ sudo apt install libyaml-dev

On Windows, please install PyYAML using the binaries they provide.

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 the official mailing list or ask on 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.6 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

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

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

Uploaded Source

Built Distributions

watchdog-2.1.7-py3-none-win_ia64.whl (76.8 kB view details)

Uploaded Python 3 Windows ia64

watchdog-2.1.7-py3-none-win_amd64.whl (76.8 kB view details)

Uploaded Python 3 Windows x86-64

watchdog-2.1.7-py3-none-win32.whl (76.8 kB view details)

Uploaded Python 3 Windows x86

watchdog-2.1.7-py3-none-manylinux2014_x86_64.whl (76.8 kB view details)

Uploaded Python 3

watchdog-2.1.7-py3-none-manylinux2014_s390x.whl (76.8 kB view details)

Uploaded Python 3

watchdog-2.1.7-py3-none-manylinux2014_ppc64le.whl (76.8 kB view details)

Uploaded Python 3

watchdog-2.1.7-py3-none-manylinux2014_ppc64.whl (76.8 kB view details)

Uploaded Python 3

watchdog-2.1.7-py3-none-manylinux2014_i686.whl (76.8 kB view details)

Uploaded Python 3

watchdog-2.1.7-py3-none-manylinux2014_armv7l.whl (76.8 kB view details)

Uploaded Python 3

watchdog-2.1.7-py3-none-manylinux2014_aarch64.whl (76.8 kB view details)

Uploaded Python 3

watchdog-2.1.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (94.2 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

watchdog-2.1.7-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (85.1 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

watchdog-2.1.7-cp310-cp310-macosx_11_0_arm64.whl (86.4 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

watchdog-2.1.7-cp310-cp310-macosx_10_9_x86_64.whl (85.9 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

watchdog-2.1.7-cp310-cp310-macosx_10_9_universal2.whl (95.2 kB view details)

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

watchdog-2.1.7-cp39-cp39-macosx_11_0_arm64.whl (86.4 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

watchdog-2.1.7-cp39-cp39-macosx_10_9_x86_64.whl (85.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

watchdog-2.1.7-cp39-cp39-macosx_10_9_universal2.whl (95.2 kB view details)

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

watchdog-2.1.7-cp38-cp38-macosx_11_0_arm64.whl (86.4 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

watchdog-2.1.7-cp38-cp38-macosx_10_9_x86_64.whl (85.8 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

watchdog-2.1.7-cp38-cp38-macosx_10_9_universal2.whl (95.2 kB view details)

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

watchdog-2.1.7-cp37-cp37m-macosx_10_9_x86_64.whl (85.8 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

watchdog-2.1.7-cp36-cp36m-macosx_10_9_x86_64.whl (85.9 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: watchdog-2.1.7.tar.gz
  • Upload date:
  • Size: 112.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7.tar.gz
Algorithm Hash digest
SHA256 3fd47815353be9c44eebc94cc28fe26b2b0c5bd889dafc4a5a7cbdf924143480
MD5 3baf5368bff43c2d3229e42027c37f94
BLAKE2b-256 b3d2a04951838e0b0cea20aff5214109144e6869101818e7f90bf3b68ea2facf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-py3-none-win_ia64.whl
  • Upload date:
  • Size: 76.8 kB
  • Tags: Python 3, Windows ia64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-py3-none-win_ia64.whl
Algorithm Hash digest
SHA256 351e09b6d9374d5bcb947e6ac47a608ec25b9d70583e9db00b2fcdb97b00b572
MD5 205b7d4e916f76489e140d99126feb12
BLAKE2b-256 0c808bec03314578ef662ea9e58c4a80ac7ea4f9961950681296a11081653752

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-py3-none-win_amd64.whl
  • Upload date:
  • Size: 76.8 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 340b875aecf4b0e6672076a6f05cfce6686935559bb6d34cebedee04126a9566
MD5 9687b354e64777dcd77a3c0fad60233c
BLAKE2b-256 10caaf5a7a7d9032dacc2814d19515823f88d5b0a6ca1cf55ee13138c4a8c50d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-py3-none-win32.whl
  • Upload date:
  • Size: 76.8 kB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-py3-none-win32.whl
Algorithm Hash digest
SHA256 49639865e3db4be032a96695c98ac09eed39bbb43fe876bb217da8f8101689a6
MD5 389c5d24ae63752d4627d3656f595925
BLAKE2b-256 c73193e68328f8f5fa6f5d2b7c8461186e2b20fc90e8ed45492f5911c02d4c70

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-py3-none-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 76.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ae934e34c11aa8296c18f70bf66ed60e9870fcdb4cc19129a04ca83ab23e7055
MD5 702456b8dbdc940a980b25a56c10ddbb
BLAKE2b-256 027edf1ad5094bcbef0484d535dcecf2d05c71a2b7dbe3fe256da44a442c883f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-py3-none-manylinux2014_s390x.whl
  • Upload date:
  • Size: 76.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-py3-none-manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 03b43d583df0f18782a0431b6e9e9965c5b3f7cf8ec36a00b930def67942c385
MD5 0296556ff300e143838b2b0748aa7913
BLAKE2b-256 b011839e5f89cb32c65de3b37b07bde28315705cd95bd5ff2fc7a8d029918599

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-py3-none-manylinux2014_ppc64le.whl
  • Upload date:
  • Size: 76.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-py3-none-manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 81a5861d0158a7e55fe149335fb2bbfa6f48cbcbd149b52dbe2cd9a544034bbd
MD5 d79c2b6bf57c375d3a7a90480e35673a
BLAKE2b-256 f00163556003cd66af223708e23795d7891bb0ea5159d886e0db76806fc95533

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-py3-none-manylinux2014_ppc64.whl
  • Upload date:
  • Size: 76.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-py3-none-manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 bdcbf75580bf4b960fb659bbccd00123d83119619195f42d721e002c1621602f
MD5 debdfb9b52223cf6c861576457cb7682
BLAKE2b-256 8415c2c23250d7f128efabe2a98b95aef65185a9e895542f3b79ee6d150da8dd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-py3-none-manylinux2014_i686.whl
  • Upload date:
  • Size: 76.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-py3-none-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0908bb50f6f7de54d5d31ec3da1654cb7287c6b87bce371954561e6de379d690
MD5 a5920f34406a4dce6ec88486561b9d5d
BLAKE2b-256 3dccc57a990fea0e8aee403b7020d2923f64e174819a7d91d722fed4247c5e55

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-py3-none-manylinux2014_armv7l.whl
  • Upload date:
  • Size: 76.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-py3-none-manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b26e13e8008dcaea6a909e91d39b629a39635d1a8a7239dd35327c74f4388601
MD5 12e142112c126616b7adfe96870a8ff6
BLAKE2b-256 11d59be432bef4798f29ac0464064b6906a492470ea9719119d1e8ec39e711d7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-py3-none-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 76.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ed6d9aad09a2a948572224663ab00f8975fae242aa540509737bb4507133fa2d
MD5 e25e518ccd7ba895e0a402e2ef577f6e
BLAKE2b-256 5d8c5df8188a83b486def8d6d40632c28ae8358bf97cddc288250034d34bf4a9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 94.2 kB
  • Tags: PyPy, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b3750ee5399e6e9c69eae8b125092b871ee9e2fcbd657a92747aea28f9056a5c
MD5 8b7bfa43f771a2940731e8e0a892bfbe
BLAKE2b-256 e701aef9ca0adddbbb831cc5624d31502750626b33befcf6ab4170a40c2a0082

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 85.1 kB
  • Tags: PyPy, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d802d65262a560278cf1a65ef7cae4e2bc7ecfe19e5451349e4c67e23c9dc420
MD5 cd3a767f1d02d8fc1abc1a2100c7563a
BLAKE2b-256 231c7a8822219493189287d2b5e6d055cbcf56f6810529a7abf188ee8795b54d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 86.4 kB
  • Tags: CPython 3.10, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f14ce6adea2af1bba495acdde0e510aecaeb13b33f7bd2f6324e551b26688ca
MD5 e6dad8833273049bf391df875fe0afa8
BLAKE2b-256 949c081ba4eba6f78ad8f07ed6f1b36429dd97f55faa92a456d92685eccebda5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 85.9 kB
  • Tags: CPython 3.10, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1d1cf7dfd747dec519486a98ef16097e6c480934ef115b16f18adb341df747a4
MD5 3bec2d07486be4a13226ad38ee3b4847
BLAKE2b-256 3c0d7fa1bb37c290c5214bbffd239290cb1d3cd7965f0e55ad2de60e93a0a3b5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-cp310-cp310-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 95.2 kB
  • Tags: CPython 3.10, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 177bae28ca723bc00846466016d34f8c1d6a621383b6caca86745918d55c7383
MD5 029b031274cfb52af2b72c1eb43eb494
BLAKE2b-256 405a0c253b3bc85015ada2df70e884bfb0ac0def1f23fc42cc55abb2d4910533

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 86.4 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1e877c70245424b06c41ac258023ea4bd0c8e4ff15d7c1368f17cd0ae6e351dd
MD5 2257ac218b7ed1a58d38711dc9223511
BLAKE2b-256 34ecba242479db10ffa9604679cb91c789cb55d0d7c6e0cf55f080690a5b8d24

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 85.8 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b61acffaf5cd5d664af555c0850f9747cc5f2baf71e54bbac164c58398d6ca7b
MD5 ab1c7ff47449e276410c771dcab0d84b
BLAKE2b-256 627bc3094da808945bc04ee6a13b6cecaf55e3423e927e05b4629d52b069ac82

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-cp39-cp39-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 95.2 kB
  • Tags: CPython 3.9, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 19b36d436578eb437e029c6b838e732ed08054956366f6dd11875434a62d2b99
MD5 856658b0963a4ac7d660039a7824d9ff
BLAKE2b-256 c385a5e59e073d428ce77558c7fe06484311396920498080eac36fe9ad12dce1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 86.4 kB
  • Tags: CPython 3.8, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b9777664848160449e5b4260e0b7bc1ae0f6f4992a8b285db4ec1ef119ffa0e2
MD5 ad4f3662cc5ca8e3163024525406c95a
BLAKE2b-256 e4348aabe6a024bd64fd8de3d8a36335fa429a5b3fd641b8857bc035ebe580fd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 85.8 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6e6ae29b72977f2e1ee3d0b760d7ee47896cb53e831cbeede3e64485e5633cc8
MD5 11bde708070f311c5fc67a6568c8431a
BLAKE2b-256 9781b5ce9bfa3a2f1b60b52318ef7dbef598d1364d03932fd5efb93e2ffde73a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-cp38-cp38-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 95.2 kB
  • Tags: CPython 3.8, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 0b4a1fe6201c6e5a1926f5767b8664b45f0fcb429b62564a41f490ff1ce1dc7a
MD5 8770a0a0dc8eee06834ce1424180ae4e
BLAKE2b-256 aae3fd385f925cadff8340b890970654161a3dd786aae9c86ca346e7220ff019

See more details on using hashes here.

File details

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

File metadata

  • Download URL: watchdog-2.1.7-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 85.8 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 81982c7884aac75017a6ecc72f1a4fedbae04181a8665a34afce9539fc1b3fab
MD5 d5bd651d9753de047b79ccdbda60cb47
BLAKE2b-256 d0703ba553b7fc54bdb8eab66cb50aef1d4ea001a26ce31deb97582ad663eefd

See more details on using hashes here.

File details

Details for the file watchdog-2.1.7-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: watchdog-2.1.7-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 85.9 kB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.12

File hashes

Hashes for watchdog-2.1.7-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4d0e98ac2e8dd803a56f4e10438b33a2d40390a72750cff4939b4b274e7906fa
MD5 6e9a24339307b416c565bc2a0e03ddb1
BLAKE2b-256 73de40b3f7cdf27763772f491e47cfca47186ece0ea73f5502aebb8d9fbf46d5

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