Provided by: python3-watchdog_0.8.3-2_all bug

NAME

       watchdog - watchdog Documentation

       Python API library and shell utilities to monitor file system events.

DIRECTORY MONITORING MADE EASY WITH

       • A cross-platform API.

       • A shell tool to run commands in response to directory changes.

       Get started quickly with a simple example in quickstart.

EASY INSTALLATION

       You can use pip to install watchdog quickly and easily:

          $ pip install watchdog

       Need more help with installing? See installation.

INSTALLATION

       watchdog  requires  Python 2.6 or above to work. If you are using a Linux/FreeBSD/Mac OS X
       system, you already have Python installed. However, you may wish to upgrade your system to
       Python 2.7 at least, because this version comes with updates that can reduce compatibility
       problems. See a list of installation-dependencies.

   Installing from PyPI using pip
          $ pip install watchdog

   Installing from source tarballs
          $ wget -c http://pypi.python.org/packages/source/w/watchdog/watchdog-0.8.3.tar.gz
          $ tar zxvf watchdog-0.8.3.tar.gz
          $ cd watchdog-0.8.3
          $ python setup.py install

   Installing from the code repository
          $ git clone --recursive git://github.com/gorakhargosh/watchdog.git
          $ cd watchdog
          $ python setup.py install

   Dependencies
       watchdog depends on many libraries to do its job. The following is a list of  dependencies
       you need based on the operating system you are using.

                 ┌─────────────────┬─────────┬───────────┬──────────────────────┬─────┐
                 │Operating system │ Windows │ Linux 2.6 │                      │ BSD │
                 │Dependency (row) │         │           │        Mac OS X/     │     │
                 │                 │         │           │               Darwin │     │
                 ├─────────────────┼─────────┼───────────┼──────────────────────┼─────┤
                 │XCode            │         │           │ Yes                  │     │
                 ├─────────────────┼─────────┼───────────┼──────────────────────┼─────┤
                 │PyYAML           │ Yes     │ Yes       │ Yes                  │ Yes │
                 ├─────────────────┼─────────┼───────────┼──────────────────────┼─────┤
                 │argh             │ Yes     │ Yes       │ Yes                  │ Yes │
                 ├─────────────────┼─────────┼───────────┼──────────────────────┼─────┤
                 │argparse         │ Yes     │ Yes       │ Yes                  │ Yes │
                 ├─────────────────┼─────────┼───────────┼──────────────────────┼─────┤
                 │select_backport  │         │           │ Yes                  │ Yes │
                 │(Python 2.6)     │         │           │                      │     │
                 ├─────────────────┼─────────┼───────────┼──────────────────────┼─────┤
                 │pathtools        │ Yes     │ Yes       │ Yes                  │ Yes │
                 └─────────────────┴─────────┴───────────┴──────────────────────┴─────┘

   Installing Dependencies
       The watchmedo script depends on PyYAML which links with LibYAML.  On Mac OS X, you can use
       homebrew to install LibYAML:

          brew install libyaml

       On  Linux,  use  your favorite package manager to install LibYAML. Here's how you do it on
       Ubuntu:

          sudo aptitude install libyaml-dev

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

   Supported Platforms (and Caveats)
       watchdog uses  native  APIs  as  much  as  possible  falling  back  to  polling  the  disk
       periodically   to   compare   directory   snapshots   only  when  it  cannot  use  an  API
       natively-provided by the underlying operating system. The following operating systems  are
       currently supported:

       WARNING:
          Differences between behaviors of these native API are noted below.

       Linux 2.6+
              Linux  kernel  version  2.6 and later come with an API called inotify that programs
              can use to monitor file system events.

              NOTE:
                 On most systems the maximum number of watches that can be created  per  user  is
                 limited  to  8192.  watchdog  needs one per directory to monitor. To change this
                 limit, edit /etc/sysctl.conf and add:

                     fs.inotify.max_user_watches=16384

       Mac OS X
              The Darwin kernel/OS X API maintains two  ways  to  monitor  directories  for  file
              system events:

              • kqueueFSEvents

              watchdog  can  use  whichever one is available, preferring FSEvents over kqueue(2).
              kqueue(2) uses open file descriptors for monitoring and the current  implementation
              uses  Mac  OS  X  File  System Monitoring Performance Guidelines to open these file
              descriptors only to monitor events, thus allowing OS X to unmount volumes that  are
              being watched without locking them.

              NOTE:
                 More  information  about  how  watchdog  uses  kqueue(2)  is  noted  in BSD Unix
                 variants. Much of this information applies to Mac OS X as well.

       BSD variants come with kqueue which programs can use to monitor
              changes to open file descriptors. Because of  the  way  kqueue(2)  works,  watchdog
              needs  to  open these files and directories in read-only non-blocking mode and keep
              books about them.

              watchdog will automatically open file descriptors  for  all  new  files/directories
              created and close those for which are deleted.

              NOTE:
                 The  maximum  number of open file descriptor per process limit on your operating
                 system can hinder watchdog's ability to monitor files.

                 You should ensure this limit is set to at least 1024 (or  a  value  suitable  to
                 your  usage).  The  following  command appended to your ~/.profile configuration
                 file does this for you:

                     ulimit -n 1024

       Windows Vista and later
              The Windows API provides the  ReadDirectoryChangesW.  watchdog  currently  contains
              implementation  for  a  synchronous approach requiring additional API functionality
              only available in Windows Vista and later.

              NOTE:
                 Since renaming is not the same operation as movement on Windows, watchdog  tries
                 hard    to   convert   renames   to   movement   events.   Also,   because   the
                 ReadDirectoryChangesW  API   function   returns   rename/movement   events   for
                 directories even before the underlying I/O is complete, watchdog may not be able
                 to completely scan the moved directory in order to successfully  queue  movement
                 events for files and directories within it.

              NOTE:
                 Since  the Windows API does not provide information about whether an object is a
                 file or a directory, delete events for directories may be  reported  as  a  file
                 deleted event.

       OS Independent Polling
              watchdog also includes a fallback-implementation that polls watched directories for
              changes by periodically comparing snapshots of the directory tree.

QUICKSTART

       Below we present a simple example that monitors the current directory  recursively  (which
       means,  it  will  traverse any sub-directories) to detect changes. Here is what we will do
       with the API:

       1. Create an instance of the watchdog.observers.Observer thread class.

       2. Implement a subclass of watchdog.events.FileSystemEventHandler (or as in our  case,  we
          will use the built-in watchdog.events.LoggingEventHandler, which already does).

       3. Schedule monitoring a few paths with the observer instance attaching the event handler.

       4. Start  the  observer  thread  and wait for it generate events without blocking our main
          thread.

       By default, an watchdog.observers.Observer instance will not monitor  sub-directories.  By
       passing  recursive=True  in  the call to watchdog.observers.Observer.schedule() monitoring
       entire directory trees is ensured.

   A Simple Example
       The following example program will monitor the  current  directory  recursively  for  file
       system changes and simply log them to the console:

          import sys
          import time
          import logging
          from watchdog.observers import Observer
          from watchdog.events import LoggingEventHandler

          if __name__ == "__main__":
              logging.basicConfig(level=logging.INFO,
                                  format='%(asctime)s - %(message)s',
                                  datefmt='%Y-%m-%d %H:%M:%S')
              path = sys.argv[1] if len(sys.argv) > 1 else '.'
              event_handler = LoggingEventHandler()
              observer = Observer()
              observer.schedule(event_handler, path, recursive=True)
              observer.start()
              try:
                  while True:
                      time.sleep(1)
              except KeyboardInterrupt:
                  observer.stop()
              observer.join()

       To stop the program, press Control-C.

API REFERENCE

   watchdog.events
       module watchdog.events

       synopsis
              File system events and event handlers.

       author yesudeep@google.com (Yesudeep Mangalapilly)

   Event Classes
       class watchdog.events.FileSystemEvent(src_path)
              Bases: object

              Immutable  type that represents a file system event that is triggered when a change
              occurs on the monitored file system.

              All FileSystemEvent objects are required to be immutable and hence can be  used  as
              keys in dictionaries or be added to sets.

              event_type = None
                     The type of the event as a string.

              is_directory = False
                     True if event was emitted for a directory; False otherwise.

              src_path
                     Source path of the file system object that triggered this event.

       class watchdog.events.FileSystemMovedEvent(src_path, dest_path)
              Bases: watchdog.events.FileSystemEvent

              File system event representing any kind of file system movement.

              dest_path
                     The destination path of the move event.

       class watchdog.events.FileMovedEvent(src_path, dest_path)
              Bases: watchdog.events.FileSystemMovedEvent

              File system event representing file movement on the file system.

       class watchdog.events.DirMovedEvent(src_path, dest_path)
              Bases: watchdog.events.FileSystemMovedEvent

              File system event representing directory movement on the file system.

       class watchdog.events.FileModifiedEvent(src_path)
              Bases: watchdog.events.FileSystemEvent

              File system event representing file modification on the file system.

       class watchdog.events.DirModifiedEvent(src_path)
              Bases: watchdog.events.FileSystemEvent

              File system event representing directory modification on the file system.

       class watchdog.events.FileCreatedEvent(src_path)
              Bases: watchdog.events.FileSystemEvent

              File system event representing file creation on the file system.

       class watchdog.events.DirCreatedEvent(src_path)
              Bases: watchdog.events.FileSystemEvent

              File system event representing directory creation on the file system.

       class watchdog.events.FileDeletedEvent(src_path)
              Bases: watchdog.events.FileSystemEvent

              File system event representing file deletion on the file system.

       class watchdog.events.DirDeletedEvent(src_path)
              Bases: watchdog.events.FileSystemEvent

              File system event representing directory deletion on the file system.

   Event Handler Classes
       class watchdog.events.FileSystemEventHandler
              Bases: object

              Base file system event handler that you can override methods from.

              dispatch(event)
                     Dispatches events to the appropriate methods.

                     Parameters
                            event  (FileSystemEvent)  --  The  event object representing the file
                            system event.

              on_any_event(event)
                     Catch-all event handler.

                     Parameters
                            event (FileSystemEvent) -- The event  object  representing  the  file
                            system event.

              on_created(event)
                     Called when a file or directory is created.

                     Parameters
                            event  (DirCreatedEvent  or  FileCreatedEvent)  -- Event representing
                            file/directory creation.

              on_deleted(event)
                     Called when a file or directory is deleted.

                     Parameters
                            event (DirDeletedEvent or  FileDeletedEvent)  --  Event  representing
                            file/directory deletion.

              on_modified(event)
                     Called when a file or directory is modified.

                     Parameters
                            event  (DirModifiedEvent  or FileModifiedEvent) -- Event representing
                            file/directory modification.

              on_moved(event)
                     Called when a file or a directory is moved or renamed.

                     Parameters
                            event  (DirMovedEvent  or  FileMovedEvent)  --   Event   representing
                            file/directory movement.

       class   watchdog.events.PatternMatchingEventHandler(patterns=None,   ignore_patterns=None,
       ignore_directories=False, case_sensitive=False)
              Bases: watchdog.events.FileSystemEventHandler

              Matches given patterns with file paths associated with occurring events.

              case_sensitive
                     (Read-only) True if path names should be matched sensitive  to  case;  False
                     otherwise.

              dispatch(event)
                     Dispatches events to the appropriate methods.

                     Parameters
                            event  (FileSystemEvent)  --  The  event object representing the file
                            system event.

              ignore_directories
                     (Read-only) True if directories should be ignored; False otherwise.

              ignore_patterns
                     (Read-only) Patterns to ignore matching event paths.

              patterns
                     (Read-only) Patterns to allow matching event paths.

       class     watchdog.events.RegexMatchingEventHandler(regexes=['.*'],     ignore_regexes=[],
       ignore_directories=False, case_sensitive=False)
              Bases: watchdog.events.FileSystemEventHandler

              Matches given regexes with file paths associated with occurring events.

              case_sensitive
                     (Read-only)  True  if  path names should be matched sensitive to case; False
                     otherwise.

              dispatch(event)
                     Dispatches events to the appropriate methods.

                     Parameters
                            event (FileSystemEvent) -- The event  object  representing  the  file
                            system event.

              ignore_directories
                     (Read-only) True if directories should be ignored; False otherwise.

              ignore_regexes
                     (Read-only) Regexes to ignore matching event paths.

              regexes
                     (Read-only) Regexes to allow matching event paths.

       class watchdog.events.LoggingEventHandler
              Bases: watchdog.events.FileSystemEventHandler

              Logs all the events captured.

   watchdog.observers.api
   Immutables
       class watchdog.observers.api.ObservedWatch(path, recursive)
              Bases: object

              An scheduled watch.

              Parameterspath -- Path string.

                     • recursive -- True if watch is recursive; False otherwise.

              is_recursive
                     Determines whether subdirectories are watched for the path.

              path   The path that this watch monitors.

   Collections
       class watchdog.observers.api.EventQueue(maxsize=0)
              Bases: watchdog.utils.bricks.SkipRepeatsQueue

              Thread-safe  event  queue based on a special queue that skips adding the same event
              (FileSystemEvent) multiple times consecutively.  Thus avoiding dispatching multiple
              event  handling  calls  when multiple identical events are produced quicker than an
              observer can consume them.

   Classes
       class watchdog.observers.api.EventEmitter(event_queue, watch, timeout=1)
              Bases: watchdog.utils.BaseThread

              Producer thread base class subclassed by event emitters that  generate  events  and
              populate a queue with them.

              Parametersevent_queue  (watchdog.events.EventQueue)  --  The event queue to populate
                       with generated events.

                     • watch (ObservedWatch) -- The watch to observe and produce events for.

                     • timeout (float) -- Timeout (in seconds)  between  successive  attempts  at
                       reading events.

              queue_event(event)
                     Queues a single event.

                     Parameters
                            event (An instance of watchdog.events.FileSystemEvent or a subclass.)
                            -- Event to be queued.

              queue_events(timeout)
                     Override this method to populate the event queue with  events  per  interval
                     period.

                     Parameters
                            timeout  (float)  -- Timeout (in seconds) between successive attempts
                            at reading events.

              timeout
                     Blocking timeout for reading events.

              watch  The watch associated with this emitter.

       class watchdog.observers.api.EventDispatcher(timeout=1)
              Bases: watchdog.utils.BaseThread

              Consumer thread base class subclassed  by  event  observer  threads  that  dispatch
              events from an event queue to appropriate event handlers.

              Parameters
                     timeout (float) -- Event queue blocking timeout (in seconds).

              dispatch_events(event_queue, timeout)
                     Override  this method to consume events from an event queue, blocking on the
                     queue for the specified timeout before raising queue.Empty.

                     Parametersevent_queue (EventQueue) -- Event queue to populate with one set of
                              events.

                            • timeout  (float)  --  Interval  period  (in seconds) to wait before
                              timing out on the event queue.

                     Raises queue.Empty

              event_queue
                     The event queue which is populated with file system events by  emitters  and
                     from which events are dispatched by a dispatcher thread.

              timeout
                     Event queue block timeout.

       class watchdog.observers.api.BaseObserver(emitter_class, timeout=1)
              Bases: watchdog.observers.api.EventDispatcher

              Base observer.

              add_handler_for_watch(event_handler, watch)
                     Adds a handler for the given watch.

                     Parametersevent_handler    (watchdog.events.FileSystemEventHandler    or    a
                              subclass) -- An event handler instance that has  appropriate  event
                              handling  methods  which will be called by the observer in response
                              to file system events.

                            • watch (An instance of ObservedWatch or a subclass of ObservedWatch)
                              -- The watch to add a handler for.

              emitters
                     Returns event emitter created by this observer.

              remove_handler_for_watch(event_handler, watch)
                     Removes a handler for the given watch.

                     Parametersevent_handler    (watchdog.events.FileSystemEventHandler    or    a
                              subclass) -- An event handler instance that has  appropriate  event
                              handling  methods  which will be called by the observer in response
                              to file system events.

                            • watch (An instance of ObservedWatch or a subclass of ObservedWatch)
                              -- The watch to remove a handler for.

              schedule(event_handler, path, recursive=False)
                     Schedules  watching  a  path  and calls appropriate methods specified in the
                     given event handler in response to file system events.

                     Parametersevent_handler    (watchdog.events.FileSystemEventHandler    or    a
                              subclass)  --  An event handler instance that has appropriate event
                              handling methods which will be called by the observer  in  response
                              to file system events.

                            • path (str) -- Directory path that will be monitored.

                            • recursive   (bool)   --   True   if  events  will  be  emitted  for
                              sub-directories traversed recursively; False otherwise.

                     Returns
                            An ObservedWatch object instance representing a watch.

              unschedule(watch)
                     Unschedules a watch.

                     Parameters
                            watch (An instance of ObservedWatch or a subclass  of  ObservedWatch)
                            -- The watch to unschedule.

              unschedule_all()
                     Unschedules all watches and detaches all associated event handlers.

   watchdog.observers
       module watchdog.observers

       synopsis
              Observer that picks a native implementation if available.

       author yesudeep@google.com (Yesudeep Mangalapilly)

   Classes
       watchdog.observers.Observer
              alias of InotifyObserver

       Observer  thread  that  schedules  watching  directories  and  dispatches  calls  to event
       handlers.

       You can also import platform specific classes directly and use  it  instead  of  Observer.
       Here is a list of implemented observer classes.:

    ┌──────────────────────────────────────────┬──────────────────────────┬──────────────────────────┐
    │Class                                     │ Platforms                │ Note                     │
    ├──────────────────────────────────────────┼──────────────────────────┼──────────────────────────┤
    │inotify.InotifyObserver                   │ Linux 2.6.13+            │ inotify(7)         based │
    │                                          │                          │ observer                 │
    ├──────────────────────────────────────────┼──────────────────────────┼──────────────────────────┤
    │fsevents.FSEventsObserver                 │ Mac OS X                 │ FSEvents based observer  │
    ├──────────────────────────────────────────┼──────────────────────────┼──────────────────────────┤
    │kqueue.KqueueObserver                     │ Mac  OS  X  and BSD with │ kqueue(2) based observer │
    │                                          │ kqueue(2)                │                          │
    ├──────────────────────────────────────────┼──────────────────────────┼──────────────────────────┤
    │read_directory_changes.WindowsApiObserver │ MS Windows               │ Windows        API-based │
    │                                          │                          │ observer                 │
    ├──────────────────────────────────────────┼──────────────────────────┼──────────────────────────┤
    │polling.PollingObserver                   │ Any                      │ fallback implementation  │
    └──────────────────────────────────────────┴──────────────────────────┴──────────────────────────┘

   watchdog.observers.polling
       module watchdog.observers.polling

       synopsis
              Polling emitter implementation.

       author yesudeep@google.com (Yesudeep Mangalapilly)

   Classes
       class watchdog.observers.polling.PollingObserver(timeout=1)
              Bases: watchdog.observers.api.BaseObserver

              Platform-independent observer that polls a directory to detect file system changes.

       class watchdog.observers.polling.PollingObserverVFS(stat, listdir, polling_interval=1)
              Bases: watchdog.observers.api.BaseObserver

              File system independent observer that polls a directory to detect changes.

              __init__(stat, listdir, polling_interval=1)

                     Parametersstat -- stat function. See os.stat for details.

                            • listdir -- listdir function. See os.listdir for details.

                            • polling_interval (float) -- interval in seconds between polling the
                              file system.

   watchdog.utils
       module watchdog.utils

       synopsis
              Utility classes and functions.

       author yesudeep@google.com (Yesudeep Mangalapilly)

   Classes
       class watchdog.utils.BaseThread
              Bases: threading.Thread

              Convenience class for creating stoppable threads.

              daemon A  boolean value indicating whether this thread is a daemon thread (True) or
                     not (False).

                     This must be set before start() is called, otherwise RuntimeError is raised.
                     Its  initial value is inherited from the creating thread; the main thread is
                     not a daemon thread and therefore all threads created  in  the  main  thread
                     default to daemon = False.

                     The entire Python program exits when no alive non-daemon threads are left.

              ident  Thread identifier of this thread or None if it has not been started.

                     This  is  a  nonzero  integer.  See  the thread.get_ident() function. Thread
                     identifiers may be recycled when  a  thread  exits  and  another  thread  is
                     created. The identifier is available even after the thread has exited.

              isAlive()
                     Return whether the thread is alive.

                     This  method  returns  True  just  before the run() method starts until just
                     after the run() method terminates. The module function enumerate() returns a
                     list of all alive threads.

              is_alive()
                     Return whether the thread is alive.

                     This  method  returns  True  just  before the run() method starts until just
                     after the run() method terminates. The module function enumerate() returns a
                     list of all alive threads.

              join(timeout=None)
                     Wait until the thread terminates.

                     This  blocks  the  calling  thread  until  the thread whose join() method is
                     called terminates -- either normally or through an  unhandled  exception  or
                     until the optional timeout occurs.

                     When  the  timeout argument is present and not None, it should be a floating
                     point number specifying a timeout for the operation in seconds (or fractions
                     thereof).  As  join()  always  returns  None,  you must call isAlive() after
                     join() to decide whether a timeout happened -- if the thread is still alive,
                     the join() call timed out.

                     When  the  timeout argument is not present or None, the operation will block
                     until the thread terminates.

                     A thread can be join()ed many times.

                     join() raises a RuntimeError if an attempt  is  made  to  join  the  current
                     thread  as  that  would  cause  a  deadlock. It is also an error to join() a
                     thread before it has been started and attempts to  do  so  raises  the  same
                     exception.

              name   A string used for identification purposes only.

                     It  has  no  semantics.  Multiple  threads  may  be given the same name. The
                     initial name is set by the constructor.

              on_thread_start()
                     Override this method instead of start(). start() calls this method.

                     This method is called right before this thread is started and this  object’s
                     run() method is invoked.

              on_thread_stop()
                     Override this method instead of stop().  stop() calls this method.

                     This method is called immediately after the thread is signaled to stop.

              run()  Method representing the thread's activity.

                     You  may  override  this  method  in  a  subclass. The standard run() method
                     invokes the callable object passed to the object's constructor as the target
                     argument,  if any, with sequential and keyword arguments taken from the args
                     and kwargs arguments, respectively.

              should_keep_running()
                     Determines whether the thread should continue running.

              stop() Signals the thread to stop.

   watchdog.utils.dirsnapshot
       module watchdog.utils.dirsnapshot

       synopsis
              Directory snapshots and comparison.

       author yesudeep@google.com (Yesudeep Mangalapilly)

          Where are the moved events? They

                 This implementation does not take partition boundaries  into  consideration.  It
                 will only work when the directory tree is entirely on the same file system. More
                 specifically, any part of the code that depends on inode numbers  can  break  if
                 partition  boundaries  are  crossed.  In  these  cases,  the  snapshot diff will
                 represent file/directory movement as created and deleted events.

   Classes
       class          watchdog.utils.dirsnapshot.DirectorySnapshot(path,          recursive=True,
       walker_callback=<function  <lambda>  at  0x7f4433f5d140>,  stat=<built-in  function stat>,
       listdir=<built-in function listdir>)
              Bases: object

              A snapshot of stat information of files in a directory.

              Parameterspath (str) -- The directory path for which a snapshot should be taken.

                     • recursive (bool) -- True if the entire directory tree should  be  included
                       in the snapshot; False otherwise.

                     • walker_callback --

                       Deprecated since version 0.7.2.

                     • stat --

                       Use  custom  stat  function  that  returns  a  stat  structure  for  path.
                       Currently only st_dev, st_ino, st_mode and st_mtime are needed.

                       A function with the signature walker_callback(path, stat_info) which  will
                       be called for every entry in the directory tree.

                     • listdir -- Use custom listdir function. See os.listdir for details.

              inode(path)
                     Returns an id for path.

              path(id)
                     Returns path for id. None if id is unknown to this snapshot.

              paths  Set of file/directory paths in the snapshot.

              stat_info(path)
                     Returns a stat information object for the specified path from the snapshot.

                     Attached  information  is  subject  to change. Do not use unless you specify
                     stat in constructor. Use inode(), mtime(), isdir() instead.

                     Parameters
                            path -- The path for which stat information should be obtained from a
                            snapshot.

       class watchdog.utils.dirsnapshot.DirectorySnapshotDiff(ref, snapshot)
              Bases: object

              Compares  two  directory  snapshots  and  creates  an  object  that  represents the
              difference between the two snapshots.

              Parametersref (DirectorySnapshot) -- The reference directory snapshot.

                     • snapshot (DirectorySnapshot) --  The  directory  snapshot  which  will  be
                       compared with the reference snapshot.

              dirs_created
                     List of directories that were created.

              dirs_deleted
                     List of directories that were deleted.

              dirs_modified
                     List of directories that were modified.

              dirs_moved
                     List of directories that were moved.

                     Each  event is a two-tuple the first item of which is the path that has been
                     renamed to the second item in the tuple.

              files_created
                     List of files that were created.

              files_deleted
                     List of files that were deleted.

              files_modified
                     List of files that were modified.

              files_moved
                     List of files that were moved.

                     Each event is a two-tuple the first item of which is the path that has  been
                     renamed to the second item in the tuple.

CONTRIBUTING

       Welcome  hacker!  So  you have got something you would like to see in watchdog? Whee. This
       document will help you get started.

   Important URLs
       watchdog uses git to track code history and hosts its code repository at github. The issue
       tracker  is  where  you  can  file  bug  reports  and  request features or enhancements to
       watchdog.

   Before you start
       Ensure your system has the following programs and libraries installed before beginning  to
       hack:

       1. Python

       2. git

       3. ssh

       4. XCode (on Mac OS X)

       5. select_backport (on BSD/Mac OS X if you're using Python 2.6)

   Setting up the Work Environment
       watchdog makes extensive use of zc.buildout to set up its work environment. You should get
       familiar with it.

       Steps to setting up a clean environment:

       1. Fork the code repository into your github account. Let us call you hackeratti  for  the
          sake of this example. Replace hackeratti with your own username below.

       2. Clone your fork and setup your environment:

             $ git clone --recursive git@github.com:hackeratti/watchdog.git
             $ cd watchdog
             $ python tools/bootstrap.py --distribute
             $ bin/buildout

       IMPORTANT:
          Re-run bin/buildout every time you make a change to the buildout.cfg file.

       That's it with the setup. Now you're ready to hack on watchdog.

   Enabling Continuous Integration
       The  repository checkout contains a script called autobuild.sh which you must run prior to
       making changes.  It  will  detect  changes  to  Python  source  code  or  restructuredText
       documentation  files  anywhere in the directory tree and rebuild sphinx documentation, run
       all tests using nose, and generate coverage reports.

       Start it by issuing this command in the watchdog directory checked out earlier:

          $ tools/autobuild.sh
          ...

       Happy hacking!

       Found a bug in or want a feature added to  watchdog?   You  can  fork  the  official  code
       repository or file an issue ticket at the issue tracker. You can also ask questions at the
       official mailing list. You may also  want  to  refer  to  hacking  for  information  about
       contributing code or documentation to watchdog.

       • genindexmodindexsearch

AUTHOR

       Yesudeep Mangalapilly

COPYRIGHT

       2010, Yesudeep Mangalapilly