👀 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.
[!Note]
notifykithas been running successfully in production for 2+ years.
Installation
pip install notifykit
# or
uv add notifykit
notifykit is available for:
CPython 3.10+ 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.11+ on the following platforms:
- Linux: x86_64 & aarch64
- MacOS: x86_64
Usage
import asyncio
from pathlib import Path
from notifykit import Notifier, CommonFilter
async def watch(watched_dir: Path) -> None:
notifier = Notifier(
debounce_ms=200,
filter=CommonFilter(),
)
await notifier.watch([watched_dir])
async for events in notifier:
# process your events
print(events)
if __name__ == "__main__":
watched_dir = Path("./watched_dir")
watched_dir.mkdir(exist_ok=True)
asyncio.run(watch(watched_dir))
Features
- Simple Modern Pythonic API (async)
- High Performance
- Cross-platform (Linux, MacOS, Windows)
- Built-in event filtering (
CommonFilter, customEventFiltersubclasses) - Easy to mock in tests
- Makes common cases easy and advanced cases possible
Changeset
- v0.3.0 drops support for CPython 3.8 & 3.9 (3.10 is the minimal required) and PyPy 3.10 (3.11 is the minimal required)
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/
Metadata
Release files for notifykit 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| notifykit-0.3.1.tar.gz | 1.2 MB | Details |
Built distributions (wheels)
Total release size: 20.9 MB
Release files / notifykit-0.3.1.tar.gz
| Download URL | notifykit-0.3.1.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
13acabf5eb05f32a99288afd8a70c1f1e70d4a18113108076dd88e700c387c28
|
|
BLAKE2b-256 checksum How to use checksums |
db02409e2aa84e86cd63aebb09c025c9c2544fa24f7152f377c2b89fbe88342e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | notifykit-0.3.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
355cbe1574da28d4b47ff100758d9044301833ce8a0326345b2f9bb0d64b0dc7
|
|
BLAKE2b-256 checksum How to use checksums |
6ebac4235f8488b93414259d7fc6aee250cd581466bdc3bfa695521f7c1d77c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | notifykit-0.3.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Linux glibc 2.17+ ARM64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
e4086321b2fb1d83d952b15ea357a39518f956159322a6b88b70f14b8c729656
|
|
BLAKE2b-256 checksum How to use checksums |
8c67ea124de7abb87a904b3aa61fcacb056df58090a35799fc99a27b15552ccc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
| Download URL | notifykit-0.3.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | PyPy 3.11 PyPy 3.11 7.3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
59e4b3b95e18b3a133f92534f5e660a939080cee56dbc901341a97b0816a55fe
|
|
BLAKE2b-256 checksum How to use checksums |
05445d01ca6a0c9dbd41eab950ff303e6dcb53a5e2f6467698bf580bc595b31c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-cp310-abi3-win_amd64.whl
| Download URL | notifykit-0.3.1-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 1.0 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
cb54320986f295121e2eae66a00e41f0f48d4dce451a387fa8b3ad439d892606
|
|
BLAKE2b-256 checksum How to use checksums |
5db9ac1da2b47aa33644c1c92cec831d96f56b56d57e7d6909aacd91efbc038b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-cp310-abi3-win32.whl
| Download URL | notifykit-0.3.1-cp310-abi3-win32.whl |
|---|---|
| Size | 910.0 kB |
| Tags | CPython 3.10 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
ce61aaf9523cbab3bbffcdc7d08ce233ec4cade9d8fed0f0bfec0ecca2cd8f24
|
|
BLAKE2b-256 checksum How to use checksums |
5b671e5500da196e40b07480a9e385f84a9f8b0e3857bfade6deb84ae8569afa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-cp310-abi3-musllinux_1_1_x86_64.whl
| Download URL | notifykit-0.3.1-cp310-abi3-musllinux_1_1_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.10 Linux musl 1.1+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
8ceacf4e38760fe1e8747fb050ebfcba73bca9296ee08d22903d9d72ee8867af
|
|
BLAKE2b-256 checksum How to use checksums |
431ccaa50ed87820fc16c7b3b5177804d1076b34d9b112fa404a9400462e5511
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-cp310-abi3-musllinux_1_1_aarch64.whl
| Download URL | notifykit-0.3.1-cp310-abi3-musllinux_1_1_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 Linux musl 1.1+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
6600cb54ab32120693412e4c1668c2c8fa47ff44b2ffe64de204b1159b6c6c88
|
|
BLAKE2b-256 checksum How to use checksums |
213937868626b84e53b44fc154966d4056733942b1864e0b50248419f56a9e19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
| Download URL | notifykit-0.3.1-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ IBM System/390x abi3 |
|
SHA-256 checksum How to use checksums |
a7e709880a6c13009d0bc9366139ba95afd33b2c28f0dadb86783fb981f83a9e
|
|
BLAKE2b-256 checksum How to use checksums |
c7612489ec64f1c24eb5852986d415f28a7e782ca7bf37be580d68d882216bcf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
| Download URL | notifykit-0.3.1-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ PowerPC 64-le abi3 |
|
SHA-256 checksum How to use checksums |
445921b9158ef3c82365a0dc9cc50465bfa183a7476dea52d21cf30930427921
|
|
BLAKE2b-256 checksum How to use checksums |
11a767808d2309c163d8e82ac4bc12ad838980a1427fad239438a931a20fbebc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | notifykit-0.3.1-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
4262ccd1932e24a0c6d8f280233b0622015bee3850d80a456000cac4b13ab52d
|
|
BLAKE2b-256 checksum How to use checksums |
c355003f4f81480ba71f129d8a5279e9b7316cfa42cba47b1ba835c7eea783fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | notifykit-0.3.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
21b2d26a1662d36269444b217647d14c07a55537ff677390b02de356428d15ae
|
|
BLAKE2b-256 checksum How to use checksums |
106555baff81a592f91f188fbc1984d908d43e11db42d5de65eb90ebf55df955
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | notifykit-0.3.1-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
5b58e61111e16c48949d0b2080f6607f25d92dd16ce1257b15c33e6dbf8c1763
|
|
BLAKE2b-256 checksum How to use checksums |
198efbbdc4dfe4f8aae1ab8ddd393067ab2fbe351a804643a4d6513e994d2f20
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | notifykit-0.3.1-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
a3a1bdb14b9f45f46ea5f3693ac2cd47caf9c60fe2390d8a0c5a94cd214f1dd6
|
|
BLAKE2b-256 checksum How to use checksums |
66f89448af7448359b5aeb001fc3c2efecc3499cbe1a0d51f110cd2c8db18da8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | notifykit-0.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
97fff4eefbf772bb404162e3d1b18315925812293c6e75dec26cd0725f6bc07c
|
|
BLAKE2b-256 checksum How to use checksums |
cbfb9b5df93f7eb6d7cfb03d9d05fe1dd60b268205ce78adf318063f8b5fe912
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / notifykit-0.3.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | notifykit-0.3.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-32 |
|
SHA-256 checksum How to use checksums |
ea8c224ccf9dbe56842b45751dfe38997695578443aee282eff96ee5eb2750f8
|
|
BLAKE2b-256 checksum How to use checksums |
265c769410e884f70c17c986fc675f731afd869b9b3e43c2dc74cf68db165fa1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|