Sourcing python-remove-tests-dir-hook Sourcing python-catch-conflicts-hook.sh Sourcing python-remove-bin-bytecode-hook.sh Sourcing pypa-build-hook Using pypaBuildPhase Sourcing python-runtime-deps-check-hook Using pythonRuntimeDepsCheckHook Sourcing pypa-install-hook Using pypaInstallPhase Sourcing python-imports-check-hook.sh Using pythonImportsCheckPhase Sourcing python-metadata-check-hook.sh Using pythonMetadataCheckPhase Sourcing python-namespaces-hook Sourcing python-catch-conflicts-hook.sh Sourcing pytest-check-hook Using pytestCheckPhase Using versionCheckHook Running phase: unpackPhase unpacking source archive /nix/store/dy9mjy3mq1q7vn42y65fns1dxvncfy8j-source source root is source Executing cargoSetupPostUnpackHook Finished cargoSetupPostUnpackHook setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "source/watchfiles/version.py" Running phase: patchPhase Executing cargoSetupPostPatchHook Validating consistency between /nix/var/nix/builds/nix-72119-2631056588/source/Cargo.lock and /nix/var/nix/builds/nix-72119-2631056588/watchfiles-1.2.0-vendor/Cargo.lock Finished cargoSetupPostPatchHook Running phase: updateAutotoolsGnuConfigScriptsPhase Running phase: configurePhase no configure script, doing nothing Running phase: buildPhase Executing maturinBuildHook maturinBuildHook flags: --jobs=10 --offline --target aarch64-apple-darwin --manylinux off --strip --out /nix/var/nix/builds/nix-72119-2631056588/source/dist --interpreter python3.14 --release 📦 Including license file `LICENSE` 🍹 Building a mixed python/rust project 🐍 Found CPython 3.14 at /nix/store/4l8r0s2r5fna7src82b5fc2hixdvfyw0-python3-3.14.7/bin/python3.14 🔗 Found pyo3 bindings 📡 Using build options bindings from pyproject.toml Compiling target-lexicon v0.13.5 Compiling python3-dll-a v0.2.14 Compiling libc v0.2.169 Compiling proc-macro2 v1.0.81 Compiling quote v1.0.45 Compiling unicode-ident v1.0.12 Compiling heck v0.5.0 Compiling crossbeam-utils v0.8.19 Compiling cfg-if v1.0.0 Compiling same-file v1.0.6 Compiling once_cell v1.21.3 Compiling walkdir v2.5.0 Compiling notify-types v2.0.0 Compiling log v0.4.22 Compiling bitflags v2.7.0 Compiling syn v2.0.60 Compiling crossbeam-channel v0.5.15 Compiling fsevent-sys v4.1.0 Compiling filetime v0.2.24 Compiling notify v8.0.0 Compiling pyo3-build-config v0.28.3 Compiling pyo3-ffi v0.28.3 Compiling pyo3-macros-backend v0.28.3 Compiling pyo3 v0.28.3 Compiling pyo3-macros v0.28.3 Compiling watchfiles_rust_notify v1.2.0 (/nix/var/nix/builds/nix-72119-2631056588/source) Finished `release` profile [optimized] target(s) in 7.67s 🔗 External shared libraries to be copied into the wheel: /nix/var/nix/builds/nix-72119-2631056588/source/target/maturin/lib_rust_notify.dylib requires: /nix/store/ls125wfdax9gk2ryq7fgzrncpi6x5v2s-libiconv-115.100.1/lib/libcharset.1.dylib => /nix/store/ls125wfdax9gk2ryq7fgzrncpi6x5v2s-libiconv-115.100.1/lib/libcharset.1.dylib /nix/store/ls125wfdax9gk2ryq7fgzrncpi6x5v2s-libiconv-115.100.1/lib/libiconv.2.dylib => /nix/store/ls125wfdax9gk2ryq7fgzrncpi6x5v2s-libiconv-115.100.1/lib/libiconv.2.dylib ⚠️ Warning: Your library requires copying the above external libraries. Re-run with `--auditwheel=repair` to copy them into the wheel. 📦 Built wheel for CPython 3.14 to /nix/var/nix/builds/nix-72119-2631056588/source/dist/watchfiles-1.2.0-cp314-cp314-macosx_14_0_arm64.whl Finished maturinBuildHook Running phase: pythonRuntimeDepsCheckHook Executing pythonRuntimeDepsCheck Checking runtime dependencies for watchfiles-1.2.0-cp314-cp314-macosx_14_0_arm64.whl Finished executing pythonRuntimeDepsCheck Running phase: installPhase Executing pypaInstallPhase Successfully installed watchfiles-1.2.0-cp314-cp314-macosx_14_0_arm64.whl Finished executing pypaInstallPhase Running phase: pythonOutputDistPhase Executing pythonOutputDistPhase Finished executing pythonOutputDistPhase Running phase: fixupPhase checking for references to /nix/var/nix/builds/nix-72119-2631056588/ in /nix/store/8l7w4cv8i7wa8m3zic718vf5s079frw4-python3.14-watchfiles-1.2.0... patching script interpreter paths in /nix/store/8l7w4cv8i7wa8m3zic718vf5s079frw4-python3.14-watchfiles-1.2.0 stripping (with command strip and flags -S) in /nix/store/8l7w4cv8i7wa8m3zic718vf5s079frw4-python3.14-watchfiles-1.2.0/lib /nix/store/8l7w4cv8i7wa8m3zic718vf5s079frw4-python3.14-watchfiles-1.2.0/bin checking for references to /nix/var/nix/builds/nix-72119-2631056588/ in /nix/store/wzr34rqzb6f8vw7m6f59ywabz1k2km44-python3.14-watchfiles-1.2.0-dist... patching script interpreter paths in /nix/store/wzr34rqzb6f8vw7m6f59ywabz1k2km44-python3.14-watchfiles-1.2.0-dist Rewriting #!/nix/store/4l8r0s2r5fna7src82b5fc2hixdvfyw0-python3-3.14.7/bin/python3.14 to #!/nix/store/4l8r0s2r5fna7src82b5fc2hixdvfyw0-python3-3.14.7 wrapping `/nix/store/8l7w4cv8i7wa8m3zic718vf5s079frw4-python3.14-watchfiles-1.2.0/bin/watchfiles'... Executing pythonRemoveTestsDir Finished executing pythonRemoveTestsDir Running phase: installCheckPhase Executing versionCheckPhase Successfully managed to find version 1.2.0 in the output of the command /nix/store/8l7w4cv8i7wa8m3zic718vf5s079frw4-python3.14-watchfiles-1.2.0/bin/watchfiles --version watchfiles v1.2.0 Finished versionCheckPhase no Makefile or custom installCheckPhase, doing nothing Running phase: pythonCatchConflictsPhase Running phase: pythonRemoveBinBytecodePhase Running phase: pythonImportsCheckPhase Executing pythonImportsCheckPhase Check whether the following modules can be imported: watchfiles Running phase: pythonMetadataCheckPhase Executing pythonMetadataCheckPhase Running phase: pytestCheckPhase Executing pytestCheckPhase pytest flags: -m pytest -k not\ \(test_awatch_interrupt_raise\) -Wignore::pytest.PytestRemovedIn10Warning ============================= test session starts ============================== platform darwin -- Python 3.14.7, pytest-9.1.1, pluggy-1.6.0 rootdir: /nix/var/nix/builds/nix-72119-2631056588/source configfile: pyproject.toml testpaths: tests plugins: mock-3.15.1, timeout-2.4.0, anyio-4.14.2 timeout: 10.0s timeout method: signal timeout func_only: False collected 155 items / 1 deselected / 154 selected tests/test_cli.py ....................... [ 14%] tests/test_docs.py .........s [ 21%] tests/test_filters.py .................. [ 33%] tests/test_force_polling.py ........................... [ 50%] tests/test_run_process.py ..s..................... [ 66%] tests/test_rust_notify.py FF.FFFFFFFF.s.FF..sssss...s......... [ 89%] tests/test_watch.py FFFF...........s [100%] =================================== FAILURES =================================== ___________________________________ test_add ___________________________________ test_dir = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files') def test_add(test_dir: Path): watcher = RustNotify([str(test_dir)], True, False, 0, True, False) (test_dir / 'new_file.txt').write_text('foobar') > assert watcher.watch(200, 50, 500, None) == {(1, str(test_dir / 'new_file.txt'))} E assert 'timeout' == {(1, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/new_file.txt')} E + where 'timeout' = (200, 50, 500, None) E + where = RustNotify(Recommended(\n FsEventWatcher {\n paths: 0x0000000103c3e4d0,\n since_when: 184467440737095516...sive_info: {\n "/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files": true,\n },\n },\n)).watch tests/test_rust_notify.py:23: AssertionError ----------------------------- Captured stderr call ----------------------------- watcher: FsEventWatcher { paths: 0x103c3e4d0, since_when: 18446744073709551615, latency: 0.0, flags: 18, event_handler: Pointer { addr: 0x103c38c10, metadata: DynMetadata(0x109f90a18) }, runloop: Some((0x98c6bb000, JoinHandle { .. })), recursive_info: {"/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files": true} } ____________________________ test_add_non_recursive ____________________________ test_dir = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files') def test_add_non_recursive(test_dir: Path): watcher = RustNotify([str(test_dir)], True, False, 0, False, False) (test_dir / 'new_file_non_recursive.txt').write_text('foobar') (test_dir / 'dir_a' / 'new_file_non_recursive.txt').write_text('foobar') > assert watcher.watch(200, 50, 500, None) == {(1, str(test_dir / 'new_file_non_recursive.txt'))} E assert 'timeout' == {(1, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/new_file_non_recursive.txt')} E + where 'timeout' = (200, 50, 500, None) E + where = RustNotify(Recommended(\n FsEventWatcher {\n paths: 0x0000000103c44ff0,\n since_when: 184467440737095516...ive_info: {\n "/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files": false,\n },\n },\n)).watch tests/test_rust_notify.py:32: AssertionError ----------------------------- Captured stderr call ----------------------------- watcher: FsEventWatcher { paths: 0x103c44ff0, since_when: 18446744073709551615, latency: 0.0, flags: 18, event_handler: Pointer { addr: 0x103c35dd0, metadata: DynMetadata(0x109f90a18) }, runloop: Some((0x98c6d8000, JoinHandle { .. })), recursive_info: {"/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files": false} } ______________________________ test_modify_write _______________________________ test_dir = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files') def test_modify_write(test_dir: Path): watcher = RustNotify([str(test_dir)], True, False, 0, True, False) (test_dir / 'a.txt').write_text('this is new') > assert watcher.watch(200, 50, 500, None) == {(2, str(test_dir / 'a.txt'))} E AssertionError: assert {(1, '/nix/va...files/a.txt')} == {(2, '/nix/va...files/a.txt')} E E Extra items in the left set: E (1, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/new_file_non_recursive.txt') E (1, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/new_file.txt') E (1, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/new_file_non_recursive.txt') E Use -v to get more diff tests/test_rust_notify.py:51: AssertionError ----------------------------- Captured stderr call ----------------------------- watcher: FsEventWatcher { paths: 0x103c2eff0, since_when: 18446744073709551615, latency: 0.0, flags: 18, event_handler: Pointer { addr: 0x103c2f0f0, metadata: DynMetadata(0x109f90a18) }, runloop: Some((0x98c6d8c00, JoinHandle { .. })), recursive_info: {"/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files": true} } raw-event=Event { kind: Create(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/new_file_non_recursive.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Create(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/new_file_non_recursive.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Create(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/new_file_non_recursive.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Create(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/new_file_non_recursive.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Create(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/new_file_non_recursive.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Modify(Metadata(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=2 raw-event=Event { kind: Modify(Metadata(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=2 raw-event=Event { kind: Modify(Data(Content)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=2 raw-event=Event { kind: Modify(Data(Content)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=2 raw-event=Event { kind: Modify(Metadata(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=2 raw-event=Event { kind: Modify(Data(Content)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=2 raw-event=Event { kind: Create(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/new_file.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Create(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/new_file.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Create(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/new_file.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 _______________________ test_modify_write_non_recursive ________________________ test_dir = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files') @skip_windows def test_modify_write_non_recursive(test_dir: Path): watcher = RustNotify([str(test_dir)], True, False, 0, False, False) (test_dir / 'a_non_recursive.txt').write_text('this is new') (test_dir / 'dir_a' / 'a_non_recursive.txt').write_text('this is new') > assert watcher.watch(200, 50, 500, None) == { (2, str(test_dir / 'a_non_recursive.txt')), } E assert 'timeout' == {(2, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a_non_recursive.txt')} E + where 'timeout' = (200, 50, 500, None) E + where = RustNotify(Recommended(\n FsEventWatcher {\n paths: 0x0000000103c44430,\n since_when: 184467440737095516...ive_info: {\n "/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files": false,\n },\n },\n)).watch tests/test_rust_notify.py:61: AssertionError ----------------------------- Captured stderr call ----------------------------- watcher: FsEventWatcher { paths: 0x103c44430, since_when: 18446744073709551615, latency: 0.0, flags: 18, event_handler: Pointer { addr: 0x103c44400, metadata: DynMetadata(0x109f90a18) }, runloop: Some((0x98c6d9800, JoinHandle { .. })), recursive_info: {"/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files": false} } ______________________________ test_modify_chmod _______________________________ test_dir = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files') @skip_windows def test_modify_chmod(test_dir: Path): watcher = RustNotify([str(test_dir)], True, False, 0, True, False) (test_dir / 'b.txt').chmod(0o444) > assert watcher.watch(200, 50, 500, None) == {(2, str(test_dir / 'b.txt'))} E AssertionError: assert {(2, '/nix/va...cursive.txt')} == {(2, '/nix/va...files/b.txt')} E E Extra items in the left set: E (2, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/a_non_recursive.txt') E (2, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a_non_recursive.txt') E Use -v to get more diff tests/test_rust_notify.py:72: AssertionError ----------------------------- Captured stderr call ----------------------------- watcher: FsEventWatcher { paths: 0x98dc74000, since_when: 18446744073709551615, latency: 0.0, flags: 18, event_handler: Pointer { addr: 0x98dba8110, metadata: DynMetadata(0x109f90a18) }, runloop: Some((0x98c6d8c00, JoinHandle { .. })), recursive_info: {"/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files": true} } raw-event=Event { kind: Modify(Metadata(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a_non_recursive.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=2 raw-event=Event { kind: Modify(Data(Content)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a_non_recursive.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=2 raw-event=Event { kind: Modify(Metadata(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/a_non_recursive.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=2 raw-event=Event { kind: Modify(Data(Content)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/a_non_recursive.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=2 raw-event=Event { kind: Modify(Metadata(Ownership)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/b.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=2 raw-event=Event { kind: Modify(Metadata(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a_non_recursive.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=2 raw-event=Event { kind: Modify(Data(Content)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a_non_recursive.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=2 raw-event=Event { kind: Modify(Metadata(Ownership)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/b.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=2 _________________________________ test_delete __________________________________ test_dir = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files') def test_delete(test_dir: Path): watcher = RustNotify([str(test_dir)], False, False, 0, True, False) (test_dir / 'c.txt').unlink() > assert watcher.watch(200, 50, 500, None) == { (3, str(test_dir / 'c.txt')), } E assert 'timeout' == {(3, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/c.txt')} E + where 'timeout' = (200, 50, 500, None) E + where = RustNotify(Recommended(\n FsEventWatcher {\n paths: 0x000000098dc74030,\n since_when: 184467440737095516...sive_info: {\n "/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files": true,\n },\n },\n)).watch tests/test_rust_notify.py:80: AssertionError __________________________ test_delete_non_recursive ___________________________ test_dir = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files') def test_delete_non_recursive(test_dir: Path): watcher = RustNotify([str(test_dir)], False, False, 0, False, False) (test_dir / 'c_non_recursive.txt').unlink() (test_dir / 'dir_a' / 'c_non_recursive.txt').unlink() > assert watcher.watch(200, 50, 500, None) == { (3, str(test_dir / 'c_non_recursive.txt')), } E assert 'timeout' == {(3, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/c_non_recursive.txt')} E + where 'timeout' = (200, 50, 500, None) E + where = RustNotify(Recommended(\n FsEventWatcher {\n paths: 0x000000098dc74060,\n since_when: 184467440737095516...ive_info: {\n "/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files": false,\n },\n },\n)).watch tests/test_rust_notify.py:91: AssertionError _________________________________ test_move_in _________________________________ test_dir = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files') def test_move_in(test_dir: Path): # can't use tmp_path as it causes problems on Windows (different drive), and macOS (delayed events) src = test_dir / 'dir_a' assert src.is_dir() dst = test_dir / 'dir_b' assert dst.is_dir() move_files = 'a.txt', 'b.txt' watcher = RustNotify([str(dst)], False, False, 0, True, False) for f in move_files: (src / f).rename(dst / f) > assert watcher.watch(200, 50, 500, None) == { (1, str(dst / 'a.txt')), (1, str(dst / 'b.txt')), } E assert 'timeout' == {(1, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_b/a.txt'), (1, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_b/b.txt')} E + where 'timeout' = (200, 50, 500, None) E + where = RustNotify(Recommended(\n FsEventWatcher {\n paths: 0x000000098dc74090,\n since_when: 184467440737095516...nfo: {\n "/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_b": true,\n },\n },\n)).watch tests/test_rust_notify.py:109: AssertionError ________________________________ test_move_out _________________________________ test_dir = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files') def test_move_out(test_dir: Path): # can't use tmp_path as it causes problems on Windows (different drive), and macOS (delayed events) src = test_dir / 'dir_a' dst = test_dir / 'dir_b' move_files = 'c.txt', 'd.txt' watcher = RustNotify([str(src)], False, False, 0, True, False) for f in move_files: (src / f).rename(dst / f) > assert watcher.watch(200, 50, 500, None) == { (3, str(src / 'c.txt')), (3, str(src / 'd.txt')), } E AssertionError: assert {(3, '/nix/va...dir_a/d.txt')} == {(3, '/nix/va...dir_a/d.txt')} E E Extra items in the left set: E (3, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/a.txt') E (3, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/c_non_recursive.txt') E (3, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/b.txt') E Use -v to get more diff tests/test_rust_notify.py:126: AssertionError ----------------------------- Captured stderr call ----------------------------- raw-event=Event { kind: Remove(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/c.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=3 raw-event=Event { kind: Remove(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/c_non_recursive.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=3 raw-event=Event { kind: Remove(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/c_non_recursive.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=3 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/a.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=3 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_b/a.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/b.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=3 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_b/b.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/c.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=3 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_b/c.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/d.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=3 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_b/d.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Remove(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/c.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=3 raw-event=Event { kind: Remove(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/c_non_recursive.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=3 ______________________________ test_move_internal ______________________________ test_dir = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files') def test_move_internal(test_dir: Path): # can't use tmp_path as it causes problems on Windows (different drive), and macOS (delayed events) src = test_dir / 'dir_a' dst = test_dir / 'dir_b' move_files = 'e.txt', 'f.txt' watcher = RustNotify([str(test_dir)], False, False, 0, True, False) for f in move_files: (src / f).rename(dst / f) expected_changes = { (3, str(src / 'e.txt')), (3, str(src / 'f.txt')), (1, str(dst / 'e.txt')), (1, str(dst / 'f.txt')), } if sys.platform == 'win32': # Windows adds a "modified" event for the dst directory expected_changes.add((2, str(dst))) > assert watcher.watch(200, 50, 500, None) == expected_changes E assert 'timeout' == {(1, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_b/e.txt'), (1, '/nix/var/nix/builds/nix-721...ce/tests/test_files/dir_a/e.txt'), (3, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/f.txt')} E + where 'timeout' = (200, 50, 500, None) E + where = RustNotify(Recommended(\n FsEventWatcher {\n paths: 0x000000098dc740f0,\n since_when: 184467440737095516...sive_info: {\n "/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files": true,\n },\n },\n)).watch tests/test_rust_notify.py:153: AssertionError _________________________________ test_rename __________________________________ test_dir = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files') def test_rename(test_dir: Path): watcher = RustNotify([str(test_dir)], False, False, 0, True, False) f = test_dir / 'a.txt' f.rename(f.with_suffix('.new')) > assert watcher.watch(200, 50, 500, None) == { (3, str(f)), (1, str(test_dir / 'a.new')), } E assert 'timeout' == {(1, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a.new'), (3, '/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a.txt')} E + where 'timeout' = (200, 50, 500, None) E + where = RustNotify(Recommended(\n FsEventWatcher {\n paths: 0x000000098dc74120,\n since_when: 184467440737095516...sive_info: {\n "/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files": true,\n },\n },\n)).watch tests/test_rust_notify.py:181: AssertionError _____________________________ test_watch_multiple ______________________________ tmp_path = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/pytest-of-_nixbld1/pytest-0/test_watch_multiple0') def test_watch_multiple(tmp_path: Path): foo = tmp_path / 'foo' foo.mkdir() bar = tmp_path / 'bar' bar.mkdir() watcher = RustNotify([str(foo), str(bar)], False, False, 0, True, False) (tmp_path / 'not_included.txt').write_text('foobar') (foo / 'foo.txt').write_text('foobar') (bar / 'foo.txt').write_text('foobar') changes = watcher.watch(200, 50, 500, None) # can compare directly since on macos creating the foo and bar directories is included in changes > assert (1, str(foo / 'foo.txt')) in changes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E TypeError: 'in ' requires string as left operand, not tuple tests/test_rust_notify.py:200: TypeError __________________________________ test_watch __________________________________ tmp_path = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/pytest-of-_nixbld1/pytest-0/test_watch0') write_soon = .start at 0x109b403b0> def test_watch(tmp_path: Path, write_soon): sleep(0.05) write_soon(tmp_path / 'foo.txt') changes = None for changes in watch(tmp_path, debounce=50, step=10, watch_filter=None): break > assert changes == {(Change.added, str(tmp_path / 'foo.txt'))} E AssertionError: assert {(, '/nix/var/nix/builds/nix-72119-2631056588/pytest-of-_nixbld1/pytest-0/test_watch0') E Use -v to get more diff tests/test_watch.py:31: AssertionError ----------------------------- Captured stderr call ----------------------------- raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/e.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=3 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_b/e.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_a/f.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=3 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/dir_b/f.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=3 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=3 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a.new"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Create(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/test_polling.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Modify(Name(Any)), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/a.new"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 raw-event=Event { kind: Create(File), paths: ["/nix/var/nix/builds/nix-72119-2631056588/source/tests/test_files/test_polling.txt"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None } change=1 ------------------------------ Captured log call ------------------------------- watchfiles.main INFO: 2 changes detected _____________________________ test_wait_stop_event _____________________________ tmp_path = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/pytest-of-_nixbld1/pytest-0/test_wait_stop_event0') write_soon = .start at 0x109b60720> def test_wait_stop_event(tmp_path: Path, write_soon): sleep(0.05) write_soon(tmp_path / 'foo.txt') stop_event = threading.Event() for changes in watch(tmp_path, debounce=50, step=10, watch_filter=None, stop_event=stop_event): > assert changes == {(Change.added, str(tmp_path / 'foo.txt'))} E AssertionError: assert {(, '/nix/var/nix/builds/nix-72119-2631056588/pytest-of-_nixbld1/pytest-0/test_wait_stop_event0') E Use -v to get more diff tests/test_watch.py:40: AssertionError ------------------------------ Captured log call ------------------------------- watchfiles.main INFO: 2 changes detected _________________________________ test_awatch __________________________________ tmp_path = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/pytest-of-_nixbld1/pytest-0/test_awatch0') write_soon = .start at 0x109b401a0> async def test_awatch(tmp_path: Path, write_soon): sleep(0.05) write_soon(tmp_path / 'foo.txt') async for changes in awatch(tmp_path, debounce=50, step=10, watch_filter=None): > assert changes == {(Change.added, str(tmp_path / 'foo.txt'))} E AssertionError: assert {(, '/nix/var/nix/builds/nix-72119-2631056588/pytest-of-_nixbld1/pytest-0/test_awatch0') E Use -v to get more diff tests/test_watch.py:48: AssertionError ------------------------------ Captured log call ------------------------------- watchfiles.main INFO: 2 changes detected ____________________________ test_await_stop_event _____________________________ tmp_path = PosixPath('/nix/var/nix/builds/nix-72119-2631056588/pytest-of-_nixbld1/pytest-0/test_await_stop_event0') write_soon = .start at 0x109b40d50> @pytest.mark.filterwarnings('ignore::DeprecationWarning') async def test_await_stop_event(tmp_path: Path, write_soon): sleep(0.05) write_soon(tmp_path / 'foo.txt') stop_event = anyio.Event() async for changes in awatch(tmp_path, debounce=50, step=10, watch_filter=None, stop_event=stop_event): > assert changes == {(Change.added, str(tmp_path / 'foo.txt'))} E AssertionError: assert {(, '/nix/var/nix/builds/nix-72119-2631056588/pytest-of-_nixbld1/pytest-0/test_await_stop_event0') E Use -v to get more diff tests/test_watch.py:58: AssertionError ------------------------------ Captured log call ------------------------------- watchfiles.main INFO: 2 changes detected =========================== short test summary info ============================ FAILED tests/test_rust_notify.py::test_add - assert 'timeout' == {(1, '/nix/var/nix/builds/nix-72119-2631056588/source/t... FAILED tests/test_rust_notify.py::test_add_non_recursive - assert 'timeout' == {(1, '/nix/var/nix/builds/nix-72119-2631056588/source/t... FAILED tests/test_rust_notify.py::test_modify_write - AssertionError: assert {(1, '/nix/va...files/a.txt')} == {(2, '/nix/va...fi... FAILED tests/test_rust_notify.py::test_modify_write_non_recursive - assert 'timeout' == {(2, '/nix/var/nix/builds/nix-72119-2631056588/source/t... FAILED tests/test_rust_notify.py::test_modify_chmod - AssertionError: assert {(2, '/nix/va...cursive.txt')} == {(2, '/nix/va...fi... FAILED tests/test_rust_notify.py::test_delete - assert 'timeout' == {(3, '/nix/var/nix/builds/nix-72119-2631056588/source/t... FAILED tests/test_rust_notify.py::test_delete_non_recursive - assert 'timeout' == {(3, '/nix/var/nix/builds/nix-72119-2631056588/source/t... FAILED tests/test_rust_notify.py::test_move_in - assert 'timeout' == {(1, '/nix/var/nix/builds/nix-72119-2631056588/source/t... FAILED tests/test_rust_notify.py::test_move_out - AssertionError: assert {(3, '/nix/va...dir_a/d.txt')} == {(3, '/nix/va...di... FAILED tests/test_rust_notify.py::test_move_internal - assert 'timeout' == {(1, '/nix/var/nix/builds/nix-72119-2631056588/source/t... FAILED tests/test_rust_notify.py::test_rename - assert 'timeout' == {(1, '/nix/var/nix/builds/nix-72119-2631056588/source/t... FAILED tests/test_rust_notify.py::test_watch_multiple - TypeError: 'in ' requires string as left operand, not tuple FAILED tests/test_watch.py::test_watch - AssertionError: assert {(