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.5.tar.gz
(1.2 MB
view hashes)
Built Distributions
notifykit-0.0.5-cp38-abi3-win32.whl
(246.0 kB
view hashes)
Close
Hashes for notifykit-0.0.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a602e2a2b4f5b5dd566736cd4808ad3003e178edbb9840d5bad9080d1919a5c0 |
|
MD5 | abb4788ad50f8bf21c9b20d0efb7bc59 |
|
BLAKE2b-256 | c7edb144a8a2e5e8ec0138119d60ed5d5186cffdfb63b54dc946846b45ef8c39 |
Close
Hashes for notifykit-0.0.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 61cfaa0676bcf3e86c29a221aad9d2fa9f6c67600b9bd86d9e6faa356a4324e7 |
|
MD5 | 20e0f807daa7cf53c7df138aaeecda6c |
|
BLAKE2b-256 | 8776541cb00b68c6438e3ba253fab52204c4cf82a0cfa023154ded8740d4efba |
Close
Hashes for notifykit-0.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 787d72290807ba6bd8715e0bce7e90aa1937e83aad83a1ba6e9b1033ca935d77 |
|
MD5 | 88c4e5127a38f35eaef8e0797d42bc87 |
|
BLAKE2b-256 | a3adca6b6ee318a9dcbcbf9d152b20cd010ef4360080efd272ba8fcc3e445e55 |
Close
Hashes for notifykit-0.0.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f26af0140974d0bda9647be976e467f0874fcac11726b3c041a585ad0f3970da |
|
MD5 | 9489e5777446aa7f7dd8052fe09869f9 |
|
BLAKE2b-256 | 3fd03a5f97ac22a85f10e9bc496d6e806b1e0820435f74471a2f8a96ce3ce516 |
Close
Hashes for notifykit-0.0.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f592e018e0314c41c88f170128ad397adb5c931846d779545beae70a830078b1 |
|
MD5 | 26de2df945e525be34095a085ff7389a |
|
BLAKE2b-256 | 018b50a81983b8e671dd42e6c8cfadb0db023b97110a4287530066ed93b61fa9 |
Close
Hashes for notifykit-0.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 820668ab65ffa465770d8f388b25d8bc520a70ec7613b05f10b32c746cdae36c |
|
MD5 | f3f62cab2c58c3743817236ee9c79281 |
|
BLAKE2b-256 | 80b00650a98926a912f704887eedb8b05d257bce00ae41ca4e1ec48d0c597e03 |
Close
Hashes for notifykit-0.0.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 534456691126a03023110053f378b3b44bcb581e10c4a9b2cf261191066a9d12 |
|
MD5 | 71a962064de5e683d4ba5a3e5840ca08 |
|
BLAKE2b-256 | 0b04f0c48888332e7d7b4cbe282be21468c0150ad74830b8efa99845325c1240 |
Close
Hashes for notifykit-0.0.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee1d92487759aeeed0b0a79ca690fb914e400331d839e9a52d622cc17ca3f81c |
|
MD5 | 2dcd56e31dc511780b5c5758e85dde33 |
|
BLAKE2b-256 | ecef79cb93648bd9dbe892a43e7ea681be1d2921b4ad380946395ed4a03b674c |
Close
Hashes for notifykit-0.0.5-pp38-pypy38_pp73-macosx_10_12_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19b0d86d8c4ad30b5157cea1e31b18039a448507b97922b35870463ef2408373 |
|
MD5 | 381a2e85f14c26a668845ec2891901fd |
|
BLAKE2b-256 | 6af341eb9ade753fc89481d82372d5add57b9248559738695b9e0700663b9c28 |
Close
Hashes for notifykit-0.0.5-cp38-abi3-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 625bd8159732a6d93e5e1eaa7ae0ff4a4a3bc130a41cfe7c5c23c8444869441f |
|
MD5 | a39d61af17b2d51118660f416c7d2036 |
|
BLAKE2b-256 | 0879be049da80e819161b995bd67940f7df34444ef53b25e0c987ac230d26225 |
Close
Hashes for notifykit-0.0.5-cp38-abi3-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ee4411b50ec3e23ab2f71ff445460b53a7ab974f25c8f394dfed28c12f3f4f1 |
|
MD5 | 68c61d8adae0b29fd3b19661395cd80b |
|
BLAKE2b-256 | 4b404ce11ae24685c8d1568387d675f7b52565d1ad334ae917740f04265f693c |
Close
Hashes for notifykit-0.0.5-cp38-abi3-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2eb839d60d40afcb50671d7d486514d65bf203ace9afdf19d64934aeb0f0dfb4 |
|
MD5 | 14e0171db0b833e4f2ec82c7afc1429f |
|
BLAKE2b-256 | 2d0178bcc812e4e168af5a424c4256200b1fc2af07b1ce3cc25f162331893fda |
Close
Hashes for notifykit-0.0.5-cp38-abi3-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57c9f83eb1f401704e3074a809d43624b541c37f348389616b5bc2a424c4dd56 |
|
MD5 | b31f82f7e8b025ccf5118a6fe8137f80 |
|
BLAKE2b-256 | 8e83a72e91eac0c966eebbfe67510b5a9c58609c589bf34e9c82b692a26a6c9c |
Close
Hashes for notifykit-0.0.5-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1398ec74ef628ade77743b8f0d565922a580cebfac562354da180d32f2fe2794 |
|
MD5 | f1a5edbf6f709f194a74cfdd064e994c |
|
BLAKE2b-256 | 0518ce75a334576f5980e01318c586a540c5c1305cc28879c7ef84f3ff4199d0 |
Close
Hashes for notifykit-0.0.5-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d12cb0b73020d7727922e7e455d6876d8401f2d9e266235f444001010a4f6038 |
|
MD5 | 03cc288aeb357c6dcf9ff3266ecb8a8b |
|
BLAKE2b-256 | d57af84d81e9815dc4f1a0a6d84caad91cc42a26fd986a7d142fb2499b269dcd |
Close
Hashes for notifykit-0.0.5-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c561384ae61e4514c924c95004fe7987f4850c014a78a4473b50459be5a0041e |
|
MD5 | 822721bf3d9cc63314e9963d1dfbad5d |
|
BLAKE2b-256 | 282a5ff10623d521e8496cb386c6bf11b399b1ab4b90ac681ddcb0d139f8c555 |
Close
Hashes for notifykit-0.0.5-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d92f08c2d93095ad3c769edcdb7019a067f4058367c994ddb47869c8f393f93 |
|
MD5 | 801bde974d9e79e2748e43435e479ddb |
|
BLAKE2b-256 | 9015c7298ebc4bcb96a28d3a3231289b0e011be07bcfc1d58dd237df3f78f2fb |
Close
Hashes for notifykit-0.0.5-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8db3c68dd1000d2adb35afb5c6b9389c0c71d3f08620e9629de5e30cacefd37a |
|
MD5 | 575221f90430f65caec761f879535a81 |
|
BLAKE2b-256 | 71160e93acee3b37e32198737709df23aced5ad945a47160c03eb5849abc82df |
Close
Hashes for notifykit-0.0.5-cp38-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 028435960cc72ae08b87c120049a4990944be0cc2ecdfba5c2b9cdb8eb4e45b8 |
|
MD5 | 8c9384952dd2a4db03a0c671848c0a00 |
|
BLAKE2b-256 | 01b71775663c469b25759ef00ba3e7825c4401f625224943678d733ae398dd23 |
Close
Hashes for notifykit-0.0.5-cp38-abi3-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 991adb499e7f00586547c9560b38c09ab2763db5b8084a6b1a317a94bca3ecba |
|
MD5 | 12ea491a8d82610ed577b15aab02ad25 |
|
BLAKE2b-256 | 77da245e3f5f11c0588368b45c8170e369782b24ad8a203056310de900628009 |
Close
Hashes for notifykit-0.0.5-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c73f3b3c9a29b428f13e9246b0f4e9c1d4688c7ab54c7dcb3b0c1642fe2dd13a |
|
MD5 | 1e56fdb1b9ee93b4c1efb747b6e9fd5c |
|
BLAKE2b-256 | f314940c3a782b003b9dff4cc036bcfdc7ef77ebf678446891a55b356fc30d30 |