A modern efficient Python toolkit for building applications that need to watch filesystem changes
Project description
👀 A cross-platform filesystem watcher toolkit for Python
notifykit is a set of components for building modern Python applications with a need for watching filesystem events efficiently.
[!Warning] notifykit is under active development right now
Installation
pip install notifykit
# or
poetry add notifykit
# or
pdm add notifykit
notifykit is available for:
CPython 3.8-3.12 on the following platforms:
- Linux: x86_64, aarch64, x86, armv7, s390x, ppc64le, musl-x86_64, musl-aarch64
- MacOS: x86_64 & arm64
- Windows: x64 & x86
PyPY 3.8-3.10 on the following platforms:
- Linux: x86_64 & aarch64
- MacOS: x86_64
Usage
import asyncio
import os
from pathlib import Path
from notifykit import Notifier
async def watch(watched_dir: Path) -> None:
with Notifier(debounce_ms=200, debug=True) as notifier:
notifier.watch([watched_dir])
async for event in notifier:
# process your events
print(event)
if __name__ == "__main__":
watched_dir = Path("./watched_dir")
os.makedirs(watched_dir, exist_ok=True)
asyncio.run(watch(watched_dir))
Features
- Simple Modern Pythonic API, both sync and async
- High Performance
- Cross-platform (support not only Linux, but also MacOS)
- Easy to mock in tests
- Makes common cases easy and advance cases possible
Sources of Inspiration
- https://github.com/seb-m/pyinotify/issues
- https://github.com/absperf/asyncinotify/
- https://docs.rs/notify/latest/notify/
- https://github.com/samuelcolvin/watchfiles
- https://github.com/pantsbuild/pants/tree/612e891e90432e994327b6ddaf57502366a714c0/src/rust/engine
- https://github.com/pola-rs/polars/blob/d0c8de592b71d4b934b1598926536f03e10007bd/py-polars/src/file.rs#L206
- https://github.com/TheoBabilon/async-tail/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
notifykit-0.0.2.tar.gz
(1.2 MB
view hashes)
Built Distributions
notifykit-0.0.2-cp38-abi3-win32.whl
(327.0 kB
view hashes)
Close
Hashes for notifykit-0.0.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97baa394e90c6b7ed0dff94c50cd67cf05b9cf9d611e333080c6d5d3fc21c5f6 |
|
MD5 | d5fff7d535ba34c9e0083b69e0b513e9 |
|
BLAKE2b-256 | 98e98c2abf5f487d6249c647802c97cf1631d3a2202b7fd9ac6fae18f8ea9eab |
Close
Hashes for notifykit-0.0.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42ab1666d9059e19f170d250dc5973605014e98a8155dd27fd123df88ac14843 |
|
MD5 | 5e923ca6f4a06227deac8ef0bd9a2536 |
|
BLAKE2b-256 | 30df0e58292aec8a4f61ba55039f6d384101bb73180e49fd6b935b7e0d6408e0 |
Close
Hashes for notifykit-0.0.2-pp310-pypy310_pp73-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bdc8d5ec25410ab7ff8661d0a1af12ee77cb8e876170d793c04ea9e85d4f0bd6 |
|
MD5 | 741e03866ee6a3ef7b1efceb162fbe70 |
|
BLAKE2b-256 | d100d34af2592f9c18b86b1ff666126816e923a0c040ab7b6e6ab769ee2ae37f |
Close
Hashes for notifykit-0.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2975665f730472da1c83425dbbebfe052124a6acaff6debcd3b54c6cdbeedc28 |
|
MD5 | 49213c77c02619c96cb62917db23807f |
|
BLAKE2b-256 | 4b7d3eccb9a183a3fa8adb01de669cdfcc93d9095b588542d84f4d9b90492417 |
Close
Hashes for notifykit-0.0.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63e40829003f47e99dce1a2905e00508ee705d8085a71692a9ea30f42913cb0b |
|
MD5 | e6b0d791f8fed51756fbd43c74e2bbdf |
|
BLAKE2b-256 | 168581ee0ae01660ed17da8a52682b34db2461ea0c6fb6c28b321c4653eced2b |
Close
Hashes for notifykit-0.0.2-pp39-pypy39_pp73-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d80fc4309a8156fd36927ebefe5d13485b33641e0a9a2b9729347b40e9517f9 |
|
MD5 | 8f3fc7a3cfae1b9e10e0247dd2296fc7 |
|
BLAKE2b-256 | cc95ae5a8ef3eb8ab58235ac16569f00c4ff254025bcde371790f8336d868c49 |
Close
Hashes for notifykit-0.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 423ce8ba640cf19608d284381b03a786c59e0d5e3ec3fe4bf133f34cb9e05773 |
|
MD5 | 55d5faae9993c8387f0473b579590a68 |
|
BLAKE2b-256 | 619cf290c202b55eb883c3eb1f761e7cb29b780d9843d21e8f2e99d2e92743c8 |
Close
Hashes for notifykit-0.0.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 820d7fde4bab145fc3fc2375d905b58085fec4ba61ad384be5340b9fc54cd7b7 |
|
MD5 | 2b4a40d50955fb5d4c28a4b608a5276b |
|
BLAKE2b-256 | a2f4cccb37da2d5db52d951b04e0c59fcd6ca4d007a5ef1d7dc217e838fc75e2 |
Close
Hashes for notifykit-0.0.2-pp38-pypy38_pp73-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cf0719f61a7e2da3ca20832c5bc8799508959ad7cc8ce209bf92aa9da2236dbf |
|
MD5 | dc60d441b634994dc1a8a0dd47401fb9 |
|
BLAKE2b-256 | ecb49aafb3ddfc88a545815122b8797a9145a1568f8b11a974365e7395b3abce |
Close
Hashes for notifykit-0.0.2-cp38-abi3-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a489aa5d982695dee52d642f9e48568c92c0772a9b11fff450c0510b0ec9e57 |
|
MD5 | f12e6c6419b2a4a201d301d0da9accb9 |
|
BLAKE2b-256 | 440948ebd18931f22848f7d808a93e72de6434467172b8ce676bd6bad29ebd0a |
Close
Hashes for notifykit-0.0.2-cp38-abi3-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 786b2a2da6aab4ed36a1b528a4443271a6336bdfb84d70dad92cdf3411a86964 |
|
MD5 | b257943d2e6f701ea9c3dab3408a70fc |
|
BLAKE2b-256 | 2aaa3ce5ddd209c4f2f429a6602049bc5ed7ef0c75c4e3de9d8340365b121ca0 |
Close
Hashes for notifykit-0.0.2-cp38-abi3-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f2c715b6f6b834eb9d0f941cfa2bc5d0438474ad6e0b42b824e44634bf2cb00 |
|
MD5 | 7921a28d58a61b6290dd5c6ec86acae1 |
|
BLAKE2b-256 | 004dfc162f3db49d8b56b5e371e4f24fb476f44f2c63b755cc75fe56f10c6dbc |
Close
Hashes for notifykit-0.0.2-cp38-abi3-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7757b6a3e122699862f0dfe4121003b949501ab9fe12f60fb4dfc4efacea272d |
|
MD5 | 3dc033dce3e379752cddc0bda7c3145c |
|
BLAKE2b-256 | fa9c52dafbac03c531e2e9f11653d1a999bff1a7bae7d6092b5ae78bde6f3738 |
Close
Hashes for notifykit-0.0.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 55b763572b627fba0adb116f6f16c5c93f74bd9d5882d424f1aebb6492c9e1bd |
|
MD5 | 8d06c7b1c81da72fb2e5c6528bfc2266 |
|
BLAKE2b-256 | 1bc5d94f33d52315b02adad3f8df6a27554f69d1f517b888466eb8a6c5c98739 |
Close
Hashes for notifykit-0.0.2-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b1d3c7ef9bd74e45a13e5264e3b748e32489fc42864b57f097a46d9636e1b723 |
|
MD5 | 0a6eee851831570340253e86b822c2a3 |
|
BLAKE2b-256 | 9e5641fcb85425bcd59cecc59fe4bc7bdc6468844c4b5df7c07e874ccf4e2661 |
Close
Hashes for notifykit-0.0.2-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2e98363b076a7661302d021dc618e060ea160d10453505ee465e8acd396947e0 |
|
MD5 | 11d37aae08ba5d724e8e0aecfd51fb6c |
|
BLAKE2b-256 | 48f79777045d0125e25c895bb4721f877c9aa70613eaf422f8bd60c9ffc05684 |
Close
Hashes for notifykit-0.0.2-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a4b6b56cbec38b4c268c31188d428ce627f26ee64c34bdf6ba13e063baa6011 |
|
MD5 | f3701bb6d35c48187ad2631ba8e7af56 |
|
BLAKE2b-256 | 6f240a8478c6dc1bc64a067c66c3733cc2f0a76d0f27cc8d04cecc4c603a4cc2 |
Close
Hashes for notifykit-0.0.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07722111845025d2eb91496009e4a59dfd6c6ce9b5dab275aba864088678abf4 |
|
MD5 | 1e81766583a06afa1a0b679662d19286 |
|
BLAKE2b-256 | 4a66d0c921f573793bb569829591d99d1e02d68cd83404f0265b0f6aa49f7a3a |
Close
Hashes for notifykit-0.0.2-cp38-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 154359ba5cb454a43500fa43a2fc7553843d7af5c9b5b4454e781f2cb18fbc18 |
|
MD5 | 1aa9b1f906933f38195a1f4b27d4daf3 |
|
BLAKE2b-256 | b7f13f65500be9c8233f675445721224c2ed1bd12e0261f49b7ba2bc0c452b3b |
Close
Hashes for notifykit-0.0.2-cp38-abi3-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb2d8006ff9221da94e4eafde2c1322d47a941dba9461cb1ad945381da49cc05 |
|
MD5 | 9b472cf42197ec630943de74798d1878 |
|
BLAKE2b-256 | d546459774a7fa6b030cb6f3db7c3cc13bd39d9e9c9be0ce050d7048eb9533fb |
Close
Hashes for notifykit-0.0.2-cp38-abi3-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 49440888829bdbf3b1853763a79347b877cb3d033194466ab789b1f62d12ad45 |
|
MD5 | a1f9e11ce8d8088eaa8e1613a47159f8 |
|
BLAKE2b-256 | 78f5ca1d3ee4b84c4a821e83fad1ae5ae2d33e21a4d517b064def2c7890892af |