Could Not Compile File System Watcher For Mac

Could Not Compile File System Watcher For Mac Rating: 8,4/10 2277 reviews

Do you have Mono installed on your Mac? If you do, let me know what version (open Terminal app and type mono -version). It's likely that our build system tries to use the version you have installed instead of the one bundled with the engine and you have a version that's somehow incompatible.

Latest version

Released:

Filesystem events monitoring

Project description

Python API and shell utilities to monitor file system events.

Works on Python 2.7 and 3.4+. If you want to use an old version of Python, you should stick with watchdog < 0.10.0.

Example API Usage

A simple program that uses watchdog to monitor directories specifiedas command-line arguments and logs events generated:

Shell Utilities

Watchdog comes with an optional utility script called watchmedo.Please type watchmedo --help at the shell prompt toknow more about this tool.

Here is how you can log the current directory recursivelyfor events related only to *.py and *.txt files whileignoring all directory events:

You can use the shell-command subcommand to execute shell commands inresponse to events:

Please see the help information for these commands by typing:

About watchmedo Tricks

watchmedo can read tricks.yaml files and execute tricks within them inresponse to file system events. Tricks are actually event handlers thatsubclass watchdog.tricks.Trick and are written by plugin authors. Trickclasses are augmented with a few additional features that regular event handlersdon’t need.

An example tricks.yaml file:

The directory containing the tricks.yaml file will be monitored. Each trickclass is initialized with its corresponding keys in the tricks.yaml file asarguments and events are fed to an instance of this class as they arrive.

Tricks will be included in the 0.5.0 release. I need community input about them.Please file enhancement requests at the issue tracker.

Installation

Install from PyPI using pip:

Install from source:

Installation Caveats

The watchmedo script depends on PyYAML which links with LibYAML,which brings a performance boost to the PyYAML parser. However, installingLibYAML is optional but recommended. On Mac OS X, you can use homebrewto install LibYAML:

On Linux, use your favorite package manager to install LibYAML. Here’s how youdo it on Ubuntu:

On Windows, please install PyYAML using the binaries they provide.

Documentation

You can browse the latest release documentation online.

Contribute

Fork the repository on GitHub and send a pull request, or file an issueticket at the issue tracker. For general help and questions use the officialmailing list or ask on stackoverflow with tag python-watchdog.

Create and activate your virtual environment, then:

If you are making a substantial change, add an entry to the “Unreleased” sectionof the changelog.

Supported Platforms

  • Linux 2.6 (inotify)
  • Mac OS X (FSEvents, kqueue)
  • FreeBSD/BSD (kqueue)
  • Windows (ReadDirectoryChangesW with I/O completion ports;ReadDirectoryChangesW worker threads)
  • OS-independent (polling the disk for directory snapshots and comparing themperiodically; slow and not recommended)

Note that when using watchdog with kqueue, you need thenumber of file descriptors allowed to be opened by programsrunning on your system to be increased to more than thenumber of files that you will be monitoring. The easiest wayto do that is to edit your ~/.profile file and adda line similar to:

This is an inherent problem with kqueue because it usesfile descriptors to monitor files. That plus the enormousamount of bookkeeping that watchdog needs to do in orderto monitor file descriptors just makes this a painful wayto monitor files and directories. In essence, kqueue isnot a very scalable way to monitor a deeply nesteddirectory of files and directories with a large number offiles.

About using watchdog with editors like Vim

Vim does not modify files unless directed to do so.It creates backup files and then swaps them in to replacethe files you are editing on the disk. This means thatif you use Vim to edit your files, the on-modified eventsfor those files will not be triggered by watchdog.You may need to configure Vim appropriately to disablethis feature.

About using watchdog with CIFS

When you want to watch changes in CIFS, you need to explicitly tell watchdog touse PollingObserver, that is, instead of letting watchdog decide anappropriate observer like in the example above, do:

Dependencies

  1. Python 2.7, 3.4 or above.
  2. XCode (only on Mac OS X)
  3. PyYAML (only for watchmedo script)
  4. argh (only for watchmedo script)

Licensing

Watchdog is licensed under the terms of the Apache License, version 2.0.

Copyright 2011 Yesudeep Mangalapilly.

Copyright 2012 Google, Inc.

Project source code is available at Github. Please report bugs and fileenhancement requests at the issue tracker.

Why Watchdog?

Too many people tried to do the same thing and none did what I needed Pythonto do:

Changelog

0.10.2

2020-02-08 • full history

  • Fixed the build_ext command on macOS Catalina (#628)
  • Fixed the installation of macOS requirements on non-macOS OSes (#635)
  • Refactored dispatch() method of FileSystemEventHandler,PatternMatchingEventHandler and RegexMatchingEventHandler
  • [bsd] Improved tests support on non Windows/Linux platforms (#633, #639)
  • [bsd] Added FreeBSD CI support (#532)
  • [bsd] Restored full support (#638, #641)
  • Thanks to our beloved contributors: @BoboTiG, @evilham, @danilobellini

0.10.1

Lightroom free download for pc. 2020-01-30 • full history

  • Fixed Python 2.7 to 3.6 installation when the OS locale is set to POSIX (#615)
  • Fixed the build_ext command on macOS (#618, #620)
  • Moved requirements to setup.cfg (#617)
  • [mac] Removed old C code for Python 2.5 in the fsevents C implementation
  • [snapshot] Added EmptyDirectorySnapshot (#613)
  • Thanks to our beloved contributors: @Ajordat, @tehkirill, @BoboTiG

0.10.0

2020-01-26 • full history

Breaking Changes

  • Dropped support for Python 2.6, 3.2 and 3.3
  • Emitters that failed to start are now removed
  • [snapshot] Removed the deprecated walker_callback argument,use stat instead
  • [watchmedo] The utility is no more installed by default but via the extrawatchdog[watchmedo]

Other Changes

  • Fixed several Python 3 warnings
  • Identify synthesized events with is_synthetic attribute (#369)
  • Use os.scandir() to improve memory usage (#503)
  • [bsd] Fixed flavors of FreeBSD detection (#529)
  • [bsd] Skip unprocessable socket files (#509)
  • [inotify] Fixed events containing non-ASCII characters (#516)
  • [inotify] Fixed the way OSError are re-raised (#377)
  • [inotify] Fixed wrong source path after renaming a top level folder (#515)
  • [inotify] Removed delay from non-move events (#477)
  • [mac] Fixed a bug when calling FSEventsEmitter.stop() twice (#466)
  • [mac] Support for unscheduling deleted watch (#541)
  • [mac] Fixed missing field initializers and unused parameters inwatchdog_fsevents.c
  • [snapshot] Don’t walk directories without read permissions (#408)
  • [snapshot] Fixed a race condition crash when a directory is swapped for a file (#513)
  • [snasphot] Fixed an AttributeError about forgotten path_for_inode attr (#436)
  • [snasphot] Added the ignore_device=False parameter to the ctor (597)
  • [watchmedo] Fixed the path separator used (#478)
  • [watchmedo] Fixed the use of yaml.load() for yaml.safe_load() (#453)
  • [watchmedo] Handle all available signals (#549)
  • [watchmedo] Added the --debug-force-polling argument (#404)
  • [windows] Fixed issues when the observed directory is deleted (#570 and #601)
  • [windows] WindowsApiEmitter made easier to subclass (#344)
  • [windows] Use separate ctypes DLL instances
  • [windows] Generate sub created events only if recursive=True (#454)
  • Thanks to our beloved contributors: @BoboTiG, @LKleinNux, @rrzaripov,@wildmichael, @TauPan, @segevfiner, @petrblahos, @QuantumEnergyE,@jeffwidman, @kapsh, @nickoala, @petrblahos, @julianolf, @tonybaloney,@mbakiev, @pR0Ps, javaguirre, @skurfer, @exarkun, @joshuaskelly,@danilobellini, @Ajordat

0.9.0

2018-08-28 • full history

  • Deleting the observed directory now emits a DirDeletedEvent event
  • [bsd] Improved the platform detection (#378)
  • [inotify] Fixed a crash when the root directory being watched by was deleted (#374)
  • [inotify] Handle systems providing uClibc
  • [linux] Fixed a possible DirDeletedEvent duplication whendeleting a directory
  • [mac] Fixed unicode path handling fsevents2.py (#298)
  • [watchmedo] Added the --debug-force-polling argument (#336)
  • [windows] Fixed the FILE_LIST_DIRECTORY constant (#376)
  • Thanks to our beloved contributors: @vulpeszerda, @hpk42, @tamland, @senden9,@gorakhargosh, @nolsto, @mafrosis, @DonyorM, @anthrotype, @danilobellini,@pierregr, @ShinNoNoir, @adrpar, @gforcada, @pR0Ps, @yegorich, @dhke

0.8.3

2015-02-11 • full history

  • Fixed the use of the root logger (#274)
  • [inotify] Refactored libc loading and improved error handling ininotify_c.py
  • [inotify] Fixed a possible unbound local error in inotify_c.py
  • Thanks to our beloved contributors: @mmorearty, @tamland, @tony,@gorakhargosh

0.8.2

2014-10-29 • full history

  • Event emitters are no longer started on schedule if Observer is notalready running
  • [mac] Fixed usued arguments to pass clang compilation (#265)
  • [snapshot] Fixed a possible race condition crash on directory deletion (#281)
  • [windows] Fixed an error when watching the same folder again (#270)
  • Thanks to our beloved contributors: @tamland, @apetrone, @Falldog,@theospears

0.8.1

2014-07-28 • full history

  • Fixed anon_inode descriptors leakage (#249)
  • [inotify] Fixed thread stop dead lock (#250)
  • Thanks to our beloved contributors: @Witos, @adiroiban, @tamland

0.8.0

2014-07-02 • full history

  • Fixed argh deprecation warnings (#242)
  • [snapshot] Methods returning internal stats info were replaced bymtime(), inode() and path() methods
  • [snapshot] Deprecated the walker_callback argument
  • [watchmedo] Fixed auto-restart to terminate all children processes (#225)
  • [watchmedo] Added the --no-parallel argument (#227)
  • [windows] Fixed the value of INVALID_HANDLE_VALUE (#123)
  • [windows] Fixed octal usages to work with Python 3 as well (#223)
  • Thanks to our beloved contributors: @tamland, @Ormod, @berdario, @cro,@BernieSumption, @pypingou, @gotcha, @tommorris, @frewsxcv

Release historyRelease notifications

0.10.2

0.10.1

0.10.0

0.9.0

0.8.3

0.8.2

0.8.1

0.8.0

0.7.1

0.7.0

0.6.1

0.6.0

0.5.4

0.5.3

0.5.2

0.5.1

0.5.0

System

0.3.6

0.3.4

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for watchdog, version 0.10.2
Filename, sizeFile typePython versionUpload dateHashes
Filename, size watchdog-0.10.2.tar.gz (95.5 kB) File type Source Python version None Upload dateHashes
Close

Hashes for watchdog-0.10.2.tar.gz

Hashes for watchdog-0.10.2.tar.gz
AlgorithmHash digest
SHA256c560efb643faed5ef28784b2245cf8874f939569717a4a12826a173ac644456b
MD52477fb59dcb110b8562eb4eb973cda23
BLAKE2-25673c3ed6d992006837e011baca89476a4bbffb0a91602432f73bd4473816c76e2