{ "info": { "author": "Yesudeep Mangalapilly", "author_email": "yesudeep@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows :: Windows NT/2000", "Operating System :: OS Independent", "Operating System :: POSIX :: BSD", "Operating System :: POSIX :: Linux", "Programming Language :: C", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries", "Topic :: System :: Filesystems", "Topic :: System :: Monitoring", "Topic :: Utilities" ], "description": "Watchdog\n========\nPython API and shell utilities to monitor file system events.\n\n\nExample API Usage\n-----------------\nA simple program that uses watchdog to monitor directories specified\nas command-line arguments and logs events generated:\n \n.. code-block:: python\n\n import sys\n import time\n import logging\n from watchdog.observers import Observer\n from watchdog.events import LoggingEventHandler\n\n if __name__ == \"__main__\":\n logging.basicConfig(level=logging.INFO,\n format='%(asctime)s - %(message)s',\n datefmt='%Y-%m-%d %H:%M:%S')\n path = sys.argv[1] if len(sys.argv) > 1 else '.'\n event_handler = LoggingEventHandler()\n observer = Observer()\n observer.schedule(event_handler, path, recursive=True)\n observer.start()\n try:\n while True:\n time.sleep(1)\n except KeyboardInterrupt:\n observer.stop()\n observer.join()\n\n\nShell Utilities\n---------------\nWatchdog comes with a utility script called ``watchmedo``.\nPlease type ``watchmedo --help`` at the shell prompt to\nknow more about this tool.\n\nHere is how you can log the current directory recursively\nfor events related only to ``*.py`` and ``*.txt`` files while\nignoring all directory events:\n \n.. code-block:: bash\n\n watchmedo log \\\n --patterns=\"*.py;*.txt\" \\\n --ignore-directories \\\n --recursive \\\n .\n\nYou can use the ``shell-command`` subcommand to execute shell commands in\nresponse to events:\n \n.. code-block:: bash\n\n watchmedo shell-command \\\n --patterns=\"*.py;*.txt\" \\\n --recursive \\\n --command='echo \"${watch_src_path}\"' \\\n .\n\nPlease see the help information for these commands by typing:\n\n.. code-block:: bash\n\n watchmedo [command] --help\n\n\nAbout ``watchmedo`` Tricks\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n``watchmedo`` can read ``tricks.yaml`` files and execute tricks within them in\nresponse to file system events. Tricks are actually event handlers that\nsubclass ``watchdog.tricks.Trick`` and are written by plugin authors. Trick\nclasses are augmented with a few additional features that regular event handlers\ndon't need.\n\nAn example ``tricks.yaml`` file:\n \n.. code-block:: yaml\n\n tricks:\n - watchdog.tricks.LoggerTrick:\n patterns: [\"*.py\", \"*.js\"]\n - watchmedo_webtricks.GoogleClosureTrick:\n patterns: ['*.js']\n hash_names: true\n mappings_format: json # json|yaml|python\n mappings_module: app/javascript_mappings\n suffix: .min.js\n compilation_level: advanced # simple|advanced\n source_directory: app/static/js/\n destination_directory: app/public/js/\n files:\n index-page:\n - app/static/js/vendor/jquery*.js\n - app/static/js/base.js\n - app/static/js/index-page.js\n about-page:\n - app/static/js/vendor/jquery*.js\n - app/static/js/base.js\n - app/static/js/about-page/**/*.js\n\nThe directory containing the ``tricks.yaml`` file will be monitored. Each trick\nclass is initialized with its corresponding keys in the ``tricks.yaml`` file as\narguments and events are fed to an instance of this class as they arrive.\n\nTricks will be included in the 0.5.0 release. I need community input about them.\nPlease file enhancement requests at the `issue tracker`_.\n\n\nInstallation\n------------\nInstalling from PyPI using ``pip``:\n \n.. code-block:: bash\n\n $ pip install watchdog\n\nInstalling from PyPI using ``easy_install``:\n \n.. code-block:: bash\n\n $ easy_install watchdog\n\nInstalling from source:\n \n.. code-block:: bash\n\n $ python setup.py install\n\n\nInstallation Caveats\n~~~~~~~~~~~~~~~~~~~~\nThe ``watchmedo`` script depends on PyYAML_ which links with LibYAML_,\nwhich brings a performance boost to the PyYAML parser. However, installing\nLibYAML_ is optional but recommended. On Mac OS X, you can use homebrew_\nto install LibYAML:\n\n.. code-block:: bash\n\n $ brew install libyaml\n\nOn Linux, use your favorite package manager to install LibYAML. Here's how you\ndo it on Ubuntu:\n \n.. code-block:: bash\n\n $ sudo aptitude install libyaml-dev\n\nOn Windows, please install PyYAML_ using the binaries they provide.\n\nDocumentation\n-------------\nYou can browse the latest release documentation_ online.\n\nContribute\n----------\nFork the `repository`_ on GitHub and send a pull request, or file an issue\nticket at the `issue tracker`_. For general help and questions use the official\n`mailing list`_ or ask on `stackoverflow`_ with tag `python-watchdog`.\n\nCreate and activate your virtual environment, then::\n\n pip install pytest\n pip install -e .\n py.test tests\n\n\nSupported Platforms\n-------------------\n* Linux 2.6 (inotify)\n* Mac OS X (FSEvents, kqueue)\n* FreeBSD/BSD (kqueue)\n* Windows (ReadDirectoryChangesW with I/O completion ports;\n ReadDirectoryChangesW worker threads)\n* OS-independent (polling the disk for directory snapshots and comparing them\n periodically; slow and not recommended)\n\nNote that when using watchdog with kqueue, you need the\nnumber of file descriptors allowed to be opened by programs\nrunning on your system to be increased to more than the\nnumber of files that you will be monitoring. The easiest way\nto do that is to edit your ``~/.profile`` file and add\na line similar to::\n\n ulimit -n 1024\n\nThis is an inherent problem with kqueue because it uses\nfile descriptors to monitor files. That plus the enormous\namount of bookkeeping that watchdog needs to do in order\nto monitor file descriptors just makes this a painful way\nto monitor files and directories. In essence, kqueue is\nnot a very scalable way to monitor a deeply nested\ndirectory of files and directories with a large number of\nfiles.\n\nAbout using watchdog with editors like Vim\n------------------------------------------\nVim does not modify files unless directed to do so.\nIt creates backup files and then swaps them in to replace\nthe files you are editing on the disk. This means that\nif you use Vim to edit your files, the on-modified events\nfor those files will not be triggered by watchdog.\nYou may need to configure Vim to appropriately to disable\nthis feature.\n\n\nDependencies\n------------\n1. Python 2.6 or above.\n2. pathtools_\n3. select_backport_ (select.kqueue replacement for 2.6 on BSD/Mac OS X)\n4. XCode_ (only on Mac OS X)\n5. PyYAML_ (only for ``watchmedo`` script)\n6. argh_ (only for ``watchmedo`` script)\n\n\nLicensing\n---------\nWatchdog is licensed under the terms of the `Apache License, version 2.0`_.\n\nCopyright 2011 `Yesudeep Mangalapilly`_.\n\nCopyright 2012 Google, Inc.\n\nProject `source code`_ is available at Github. Please report bugs and file\nenhancement requests at the `issue tracker`_.\n\nWhy Watchdog?\n-------------\nToo many people tried to do the same thing and none did what I needed Python\nto do:\n\n* pnotify_\n* `unison fsmonitor`_\n* fsmonitor_\n* guard_\n* pyinotify_\n* `inotify-tools`_\n* jnotify_\n* treewalker_\n* `file.monitor`_\n* pyfilesystem_\n\n.. links:\n.. _Yesudeep Mangalapilly: yesudeep@gmail.com\n.. _source code: http://github.com/gorakhargosh/watchdog\n.. _issue tracker: http://github.com/gorakhargosh/watchdog/issues\n.. _Apache License, version 2.0: http://www.apache.org/licenses/LICENSE-2.0\n.. _documentation: http://packages.python.org/watchdog/\n.. _stackoverflow: http://stackoverflow.com/questions/tagged/python-watchdog\n.. _mailing list: http://groups.google.com/group/watchdog-python\n.. _repository: http://github.com/gorakhargosh/watchdog\n.. _issue tracker: http://github.com/gorakhargosh/watchdog/issues\n\n.. _homebrew: http://mxcl.github.com/homebrew/\n.. _select_backport: http://pypi.python.org/pypi/select_backport\n.. _argh: http://pypi.python.org/pypi/argh\n.. _PyYAML: http://www.pyyaml.org/\n.. _XCode: http://developer.apple.com/technologies/tools/xcode.html\n.. _LibYAML: http://pyyaml.org/wiki/LibYAML\n.. _pathtools: http://github.com/gorakhargosh/pathtools\n\n.. _pnotify: http://mark.heily.com/pnotify\n.. _unison fsmonitor: https://webdav.seas.upenn.edu/viewvc/unison/trunk/src/fsmonitor.py?view=markup&pathrev=471\n.. _fsmonitor: http://github.com/shaurz/fsmonitor\n.. _guard: http://github.com/guard/guard\n.. _pyinotify: http://github.com/seb-m/pyinotify\n.. _inotify-tools: http://github.com/rvoicilas/inotify-tools\n.. _jnotify: http://jnotify.sourceforge.net/\n.. _treewalker: http://github.com/jbd/treewatcher\n.. _file.monitor: http://github.com/pke/file.monitor\n.. _pyfilesystem: http://code.google.com/p/pyfilesystem\n\n\n.. :changelog:\n\nAPI changes\n-----------\n\n0.8.2\n~~~~~\n\n- Event emitters are no longer started on schedule if ``Observer`` is not\n already running.\n\n\n0.8.0\n~~~~~\n\n- ``DirectorySnapshot``: methods returning internal stat info replaced by\n ``mtime``, ``inode`` and ``path`` methods.\n- ``DirectorySnapshot``: ``walker_callback`` parameter deprecated.", "description_content_type": "", "docs_url": "https://pythonhosted.org/watchdog/", "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/gorakhargosh/watchdog", "keywords": "python filesystem monitoring monitor FSEvents kqueue inotify ReadDirectoryChangesW polling DirectorySnapshot", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "watchdog", "package_url": "https://pypi.org/project/watchdog/", "platform": "", "project_url": "https://pypi.org/project/watchdog/", "project_urls": { "Homepage": "http://github.com/gorakhargosh/watchdog" }, "release_url": "https://pypi.org/project/watchdog/0.9.0/", "requires_dist": null, "requires_python": "", "summary": "Filesystem events monitoring", "version": "0.9.0" }, "last_serial": 4216664, "releases": { "0.3.4": [], "0.3.6": [], "0.5.0": [ { "comment_text": "", "digests": { "md5": "c9c49ac9ddeba32fd4bbab3dcf99d8ee", "sha256": "bc723a3a080b5f5d5a1057b44bb4adf30cffb37f03608bbb379fe9ae6945066a" }, "downloads": -1, "filename": "watchdog-0.5.0.tar.gz", "has_sig": false, "md5_digest": "c9c49ac9ddeba32fd4bbab3dcf99d8ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70656, "upload_time": "2011-01-20T05:53:53", "url": "https://files.pythonhosted.org/packages/86/1f/676a4b9716502a2a7330b34955705b6401f16b4443945cad105a14ed1e1a/watchdog-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "9d2c3177646351d3201631ec5a8474d9", "sha256": "3e29ac6b9fede5dc06e6fa8e079b3118c98991c7b240a24ee9b1c3048be12033" }, "downloads": -1, "filename": "watchdog-0.5.1.tar.gz", "has_sig": false, "md5_digest": "9d2c3177646351d3201631ec5a8474d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69787, "upload_time": "2011-02-02T07:55:11", "url": "https://files.pythonhosted.org/packages/64/9d/c56c2e9df4bcd25c837a482c9db626ea0d1932fd91832d0ee75c1634fa5b/watchdog-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "313894d315f556ffd109d2d5fb31b733", "sha256": "7b4b52943ac470018fe81751c0281627d11653c65475060a1314d1853d3b418c" }, "downloads": -1, "filename": "watchdog-0.5.2.tar.gz", "has_sig": false, "md5_digest": "313894d315f556ffd109d2d5fb31b733", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69802, "upload_time": "2011-02-04T20:33:11", "url": "https://files.pythonhosted.org/packages/d3/10/d2ef642232a5c20686559e4bd592d2dca9435eca52a85811ccfe6c0fa230/watchdog-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "092fdabd8810922468a7e9fdcfa42520", "sha256": "d1baa0a5f43931b6601e4566e8256e17571b4a34d86510cd18985e73f098bade" }, "downloads": -1, "filename": "watchdog-0.5.3.tar.gz", "has_sig": false, "md5_digest": "092fdabd8810922468a7e9fdcfa42520", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69880, "upload_time": "2011-02-08T07:30:53", "url": "https://files.pythonhosted.org/packages/d4/bd/70541069ce875ffd9cf5ff996edf2ba1fa27b8096bb26c7a1d97252a469f/watchdog-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "137cb7516b56a4e623934eccc26e1143", "sha256": "d70bca489bb42fe2ad8374bc43047e642cc5964682f43a4db2f6ef6f962284ad" }, "downloads": -1, "filename": "watchdog-0.5.4.tar.gz", "has_sig": false, "md5_digest": "137cb7516b56a4e623934eccc26e1143", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69900, "upload_time": "2011-02-15T09:40:40", "url": "https://files.pythonhosted.org/packages/d3/cf/44af3e7f6de677923888fc98df845e013548c7c2aa89fedacb9fc2eb6b45/watchdog-0.5.4.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "6e8fb84aa6bdeb2054906bdf40048eba", "sha256": "aaae8ec476b31d46c5dc400105ade2e1c3e2221d9c5f8252a64a2f05165e9dd9" }, "downloads": -1, "filename": "watchdog-0.6.0.tar.gz", "has_sig": false, "md5_digest": "6e8fb84aa6bdeb2054906bdf40048eba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76560, "upload_time": "2012-03-18T07:48:59", "url": "https://files.pythonhosted.org/packages/42/98/90f2486a5b8150fe68b51ee94a7d0b9caf22c94eaf699cd32a07537ca0b7/watchdog-0.6.0.tar.gz" } ], "0.6.1": [], "0.7.0": [ { "comment_text": "", "digests": { "md5": "f3c523a4a16c04f1792e62b0a3d665e6", "sha256": "8d89934fede6ec0dfe4d128606e36b989ba0b27b6cf74bd042b818b554625240" }, "downloads": -1, "filename": "watchdog-0.7.0.tar.gz", "has_sig": false, "md5_digest": "f3c523a4a16c04f1792e62b0a3d665e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 77013, "upload_time": "2014-01-08T21:02:12", "url": "https://files.pythonhosted.org/packages/b3/e9/554703d7991cce80223065f3e0f94172d89f1881ea9d5963bcccdcdfff2c/watchdog-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "ffec8b4afd1058e76f6c664ade8a0de7", "sha256": "54ca64fdf0a2fb23cecba6349f9587e62fd31840ae22a71898a65adb8c6b52f9" }, "downloads": -1, "filename": "watchdog-0.7.1.tar.gz", "has_sig": false, "md5_digest": "ffec8b4afd1058e76f6c664ade8a0de7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 83438, "upload_time": "2014-02-03T19:42:54", "url": "https://files.pythonhosted.org/packages/a6/ad/57748d1625d616a9f2adeef38f27f19679712b318d39cd40466bfb15d904/watchdog-0.7.1.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "8d3b7acc8a6988f70598002deb49ebf4", "sha256": "a86bb2d8b94bb4bf76fcc2ff36f741c0e511ec24c4d3a1059b47d49e377d64f5" }, "downloads": -1, "filename": "watchdog-0.8.0.tar.gz", "has_sig": false, "md5_digest": "8d3b7acc8a6988f70598002deb49ebf4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 152770, "upload_time": "2014-07-02T11:53:30", "url": "https://files.pythonhosted.org/packages/8a/bf/1a6fbeb5dc69d55718e3f03d19a1f285eb3629200ebbc9d4ef69367a4355/watchdog-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "a58a082823dc6d3c60ffba1ff5f94608", "sha256": "d6ec6be582b244834a888c8ccc2d451816184ab104b5454b5e5cd7649e8f671c" }, "downloads": -1, "filename": "watchdog-0.8.1.tar.gz", "has_sig": false, "md5_digest": "a58a082823dc6d3c60ffba1ff5f94608", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 154747, "upload_time": "2014-07-28T09:55:12", "url": "https://files.pythonhosted.org/packages/96/c3/f48841b9399ba7c7331330e18d2c144ad20b29e5721e2073428d29979401/watchdog-0.8.1.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "0e6b803860f7da568d7ba5b17ea620fd", "sha256": "33a9ab3ce2e6b1aca4d2a50752231668d69bdba4ab096d9742195ccfbef1e023" }, "downloads": -1, "filename": "watchdog-0.8.2.tar.gz", "has_sig": false, "md5_digest": "0e6b803860f7da568d7ba5b17ea620fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 157936, "upload_time": "2014-10-29T11:45:56", "url": "https://files.pythonhosted.org/packages/9e/1f/bd5c41dc7e549fd7d2431518172dbf0332f203baed08feda86710f37b99a/watchdog-0.8.2.tar.gz" } ], "0.8.3": [ { "comment_text": "", "digests": { "md5": "bb16926bccc98eae2a04535e4512ddf1", "sha256": "7e65882adb7746039b6f3876ee174952f8eaaa34491ba34333ddf1fe35de4162" }, "downloads": -1, "filename": "watchdog-0.8.3.tar.gz", "has_sig": false, "md5_digest": "bb16926bccc98eae2a04535e4512ddf1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 83154, "upload_time": "2015-02-11T10:25:50", "url": "https://files.pythonhosted.org/packages/54/7d/c7c0ad1e32b9f132075967fc353a244eb2b375a3d2f5b0ce612fd96e107e/watchdog-0.8.3.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "7cdc103f607e72fc32c206301a72d1b2", "sha256": "965f658d0732de3188211932aeb0bb457587f04f63ab4c1e33eab878e9de961d" }, "downloads": -1, "filename": "watchdog-0.9.0.tar.gz", "has_sig": false, "md5_digest": "7cdc103f607e72fc32c206301a72d1b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85549, "upload_time": "2018-08-28T21:23:35", "url": "https://files.pythonhosted.org/packages/bb/e3/5a55d48a29300160779f0a0d2776d17c1b762a2039b36de528b093b87d5b/watchdog-0.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7cdc103f607e72fc32c206301a72d1b2", "sha256": "965f658d0732de3188211932aeb0bb457587f04f63ab4c1e33eab878e9de961d" }, "downloads": -1, "filename": "watchdog-0.9.0.tar.gz", "has_sig": false, "md5_digest": "7cdc103f607e72fc32c206301a72d1b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85549, "upload_time": "2018-08-28T21:23:35", "url": "https://files.pythonhosted.org/packages/bb/e3/5a55d48a29300160779f0a0d2776d17c1b762a2039b36de528b093b87d5b/watchdog-0.9.0.tar.gz" } ] }