1{ 2 lib, 3 stdenv, 4 buildPythonPackage, 5 CoreServices, 6 eventlet, 7 fetchpatch, 8 fetchPypi, 9 flaky, 10 pytest-timeout, 11 pytestCheckHook, 12 pythonOlder, 13 pyyaml, 14}: 15 16buildPythonPackage rec { 17 pname = "watchdog"; 18 version = "4.0.0"; 19 format = "setuptools"; 20 21 disabled = pythonOlder "3.7"; 22 23 src = fetchPypi { 24 inherit pname version; 25 hash = "sha256-4+cGXL2r5hg6uCGZ16T2s7oKQ4xaUSpoVZhGzLdqeOw="; 26 }; 27 28 # force kqueue on x86_64-darwin, because our api version does 29 # not support fsevents 30 patches = lib.optionals (stdenv.isDarwin && !stdenv.isAarch64) [ ./force-kqueue.patch ]; 31 32 buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ]; 33 34 passthru.optional-dependencies.watchmedo = [ pyyaml ]; 35 36 nativeCheckInputs = [ 37 eventlet 38 flaky 39 pytest-timeout 40 pytestCheckHook 41 ] ++ passthru.optional-dependencies.watchmedo; 42 43 postPatch = '' 44 substituteInPlace setup.cfg \ 45 --replace "--cov=watchdog" "" \ 46 --replace "--cov-report=term-missing" "" 47 ''; 48 49 pytestFlagsArray = 50 [ 51 "--deselect=tests/test_emitter.py::test_create_wrong_encoding" 52 "--deselect=tests/test_emitter.py::test_close" 53 ] 54 ++ lib.optionals (stdenv.isDarwin) [ 55 # fails to stop process in teardown 56 "--deselect=tests/test_0_watchmedo.py::test_auto_restart_subprocess_termination" 57 # assert cap.out.splitlines(keepends=False).count('+++++ 0') == 2 != 3 58 "--deselect=tests/test_0_watchmedo.py::test_auto_restart_on_file_change_debounce" 59 ] 60 ++ lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [ 61 # FileCreationEvent != FileDeletionEvent 62 "--deselect=tests/test_emitter.py::test_separate_consecutive_moves" 63 "--deselect=tests/test_observers_polling.py::test___init__" 64 # segfaults 65 "--deselect=tests/test_delayed_queue.py::test_delayed_get" 66 "--deselect=tests/test_emitter.py::test_delete" 67 # AttributeError: '_thread.RLock' object has no attribute 'key'" 68 "--deselect=tests/test_skip_repeats_queue.py::test_eventlet_monkey_patching" 69 ] 70 ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ 71 # segfaults 72 "--deselect=tests/test_delayed_queue.py::test_delayed_get" 73 "--deselect=tests/test_0_watchmedo.py::test_tricks_from_file" 74 "--deselect=tests/test_fsevents.py::test_watcher_deletion_while_receiving_events_1" 75 "--deselect=tests/test_fsevents.py::test_watcher_deletion_while_receiving_events_2" 76 "--deselect=tests/test_skip_repeats_queue.py::test_eventlet_monkey_patching" 77 "--deselect=tests/test_fsevents.py::test_recursive_check_accepts_relative_paths" 78 # fsevents:fsevents.py:318 Unhandled exception in FSEventsEmitter 79 "--deselect=tests/test_fsevents.py::test_watchdog_recursive" 80 # SystemError: Cannot start fsevents stream. Use a kqueue or polling observer... 81 "--deselect=tests/test_fsevents.py::test_add_watch_twice" 82 # fsevents:fsevents.py:318 Unhandled exception in FSEventsEmitter 83 "--deselect=ests/test_fsevents.py::test_recursive_check_accepts_relative_paths" 84 # gets stuck 85 "--deselect=tests/test_fsevents.py::test_converting_cfstring_to_pyunicode" 86 ]; 87 88 disabledTestPaths = 89 [ 90 # tests timeout easily 91 "tests/test_inotify_buffer.py" 92 ] 93 ++ lib.optionals (stdenv.isDarwin) [ 94 # segfaults the testsuite 95 "tests/test_emitter.py" 96 # unsupported on x86_64-darwin 97 "tests/test_fsevents.py" 98 ]; 99 100 pythonImportsCheck = [ "watchdog" ]; 101 102 meta = with lib; { 103 description = "Python API and shell utilities to monitor file system events"; 104 mainProgram = "watchmedo"; 105 homepage = "https://github.com/gorakhargosh/watchdog"; 106 changelog = "https://github.com/gorakhargosh/watchdog/blob/v${version}/changelog.rst"; 107 license = licenses.asl20; 108 maintainers = with maintainers; [ goibhniu ]; 109 }; 110}