{ "info": { "author": "Rob White", "author_email": "robathan4@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# folderspy\n\n[![image](https://img.shields.io/pypi/v/folderspy.svg)](https://pypi.org/project/folderspy/)\n[![image](https://img.shields.io/pypi/pyversions/folderspy.svg)](https://pypi.org/project/folderspy/)\n\n> Watch folders for file/directory events with a simple API.\n\n## Supports\n* Linux, Windows, Mac\n* Python 2.7 & 3.4-3.7\n\n## Installation\n\n### pipenv\n```sh\npipenv install folderspy\n```\n\n### pip\n```sh\npip install folderspy\n```\n\n## Example\n\nCreate a ```WatchableFolder``` class for each of folders you want to watch then simply start watching them with ```FolderSpy```:\n```python\nimport pyinotify # Linux Only\nfrom folderspy import WatchableFolder, FolderSpy\n\n\nclass SaveFolder(WatchableFolder):\n\n def __init__(self):\n super(SaveFolder, self).__init__()\n\n self.path = '/path/to/this/folder'\n\n # Note: Only used in Linux for pyinotify bitmasks\n # Can be excluded for Windows/Mac\n self.listen_to = pyinotify.IN_CREATE\n\n def process_IN_CREATE(self, event):\n print('An item was created in this folder!')\n\n\nFolderSpy.watch(SaveFolder())\n```\n\n## Available Folder Events\n### Linux\n\n```python\n def process_IN_ACCESS(self, event):\n \"\"\"A file was accessed.\"\"\"\n\n def process_IN_ATTRIB(self, event):\n \"\"\"Metadata changed for a file.\"\"\"\n\n def process_IN_CLOSE_NOWRITE(self, event):\n \"\"\"An unwritable file was closed.\"\"\"\n\n def process_IN_CLOSE_WRITE(self, event):\n \"\"\"A writable file was closed.\"\"\"\n\n def process_IN_CREATE(self, event):\n \"\"\"A file/directory was created in watched directory.\"\"\"\n\n def process_IN_DELETE(self, event):\n \"\"\"A file/directory was deleted in watched directory.\"\"\"\n\n def process_IN_DELETE_SELF(self, event):\n \"\"\"The watched item itself was deleted.\"\"\"\n\n def process_IN_ISDIR(self, event):\n \"\"\"Any event occurred that was on a directory.\"\"\"\n\n def process_IN_MODIFY(self, event):\n \"\"\"A file was modified.\"\"\"\n\n def process_IN_MOVE_SELF(self, event):\n \"\"\"The watched item itself was moved somewhere.\"\"\"\n\n def process_IN_MOVED_FROM(self, event):\n \"\"\"A file/directory was moved away from the current watched directory.\"\"\"\n\n def process_IN_MOVED_TO(self, event):\n \"\"\"A file/directory was moved into the current watched directory.\"\"\"\n\n def process_IN_OPEN(self, event):\n \"\"\"A file was opened.\"\"\"\n\n def process_IN_UNMOUNT(self, event):\n \"\"\"The file system the watched directory is associated with was unmounted.\"\"\"\n```\n\n### Windows\n```python\n def process_IN_CREATE(self, event):\n \"\"\"A file/directory was created in watched directory.\"\"\"\n\n def process_IN_DELETE(self, event):\n \"\"\"A file/directory was deleted in watched directory.\"\"\"\n\n def process_IN_MODIFY(self, event):\n \"\"\"A file was modified.\"\"\"\n\n def process_IN_RENAMED_FROM(self, event):\n \"\"\"The name the file/directory was renamed from.\"\"\"\n\n def process_IN_RENAMED_TO(self, event):\n \"\"\"The name the file/directory was renamed to.\"\"\"\n\n def process_IN_ISDIR(self, event):\n \"\"\"An event occurred that was on a directory.\"\"\"\n```\n\n### Mac\n```python\n def process_IN_ATTRIB(self, event):\n \"\"\"Metadata changed for a file.\"\"\"\n\n def process_IN_CREATE(self, event):\n \"\"\"A file/directory was created in watched directory.\"\"\"\n\n def process_IN_DELETE(self, event):\n \"\"\"A file/directory was deleted in watched directory.\"\"\"\n\n def process_IN_MODIFY(self, event):\n \"\"\"A file was modified.\"\"\"\n\n def process_IN_MOVED_FROM(self, event):\n \"\"\"A file/directory was moved away from the current watched directory.\"\"\"\n\n def process_IN_MOVED_TO(self, event):\n \"\"\"A file/directory was moved into the current watched directory.\"\"\"\n```\n\n## Dependencies\n* Linux: ```pyinotify```\n* Windows: ```pypiwin32```\n* Mac: ```macfsevents```\n\n## To-Do\n* Start/Exit Events\n* Tests\n* Clean-up\n\n## Contribute\nPull requests are welcome to add in functionality or fix bugs!\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rob-white/folderspy", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "folderspy", "package_url": "https://pypi.org/project/folderspy/", "platform": "", "project_url": "https://pypi.org/project/folderspy/", "project_urls": { "Homepage": "https://github.com/rob-white/folderspy" }, "release_url": "https://pypi.org/project/folderspy/0.0.5/", "requires_dist": [ "MacFSEvents; platform_system == \"Darwin\"", "pyinotify; platform_system == \"Linux\"", "pypiwin32; platform_system == \"Windows\"" ], "requires_python": "", "summary": "Watch folders for file/directory events with a simple API.", "version": "0.0.5" }, "last_serial": 4404121, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "a0400ad6737caf5a1ca7480facc65512", "sha256": "60631861941aa4ded18455b4317c5a9d4796b55c0bbbebee965c1b31eabcba3e" }, "downloads": -1, "filename": "folderspy-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a0400ad6737caf5a1ca7480facc65512", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6518, "upload_time": "2018-10-13T03:45:27", "url": "https://files.pythonhosted.org/packages/66/5f/24476f400ede6f670b621e097f7f578ef8a8184adb860830e0f080c08061/folderspy-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f062a86ba0f27503ad665725ab7b8415", "sha256": "2a8d4fe7201e950eaa68f44632c13cfb88527fe3f8e3e261bae35d002fde3bcb" }, "downloads": -1, "filename": "folderspy-0.0.2.tar.gz", "has_sig": false, "md5_digest": "f062a86ba0f27503ad665725ab7b8415", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4732, "upload_time": "2018-10-13T03:45:29", "url": "https://files.pythonhosted.org/packages/05/bd/97b08630e79c4542b69affbc816232666edd06a12b7777e5e09c294d2318/folderspy-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "336a3d19d3f8a9cd97df1698ad817791", "sha256": "8cad1150beee016c99291b3494aa7e539e4f62f92029d2ae9bbc5f45405698b3" }, "downloads": -1, "filename": "folderspy-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "336a3d19d3f8a9cd97df1698ad817791", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6593, "upload_time": "2018-10-16T01:28:35", "url": "https://files.pythonhosted.org/packages/32/e6/10021c12651b4ecaf249ecb4134ca465c97dc35bfb89eaea0ff5db8d3847/folderspy-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac78f2e0b3174c819c8f301e9989ba38", "sha256": "ff655f1da83b39821eb05c253199168f063883e6b22799b4d57abb681deedb2d" }, "downloads": -1, "filename": "folderspy-0.0.3.tar.gz", "has_sig": false, "md5_digest": "ac78f2e0b3174c819c8f301e9989ba38", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4756, "upload_time": "2018-10-16T01:28:37", "url": "https://files.pythonhosted.org/packages/29/3f/dccf871f9e779cd4faace372fa53cad37446bba0bcc7816a63bcdfce8d75/folderspy-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "1aafcbd6f8b2164e64cac418a176c196", "sha256": "b3e95f76d153e4cbb5be03ce680a09aa4d7e92be83f451cf5c2a39f25ca74a4d" }, "downloads": -1, "filename": "folderspy-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1aafcbd6f8b2164e64cac418a176c196", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9034, "upload_time": "2018-10-22T02:09:16", "url": "https://files.pythonhosted.org/packages/2b/61/080e55ca905afe28b889deaa5a71c2049f7329df0bc77cb9251470bb04e5/folderspy-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "583d3f0235e48b7866cd878843cbde36", "sha256": "b11addc0e7f4dc03a690d93e73ec4f6dce39399bc1ae9676c62d323062c87cc3" }, "downloads": -1, "filename": "folderspy-0.0.4.tar.gz", "has_sig": false, "md5_digest": "583d3f0235e48b7866cd878843cbde36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6138, "upload_time": "2018-10-22T02:09:17", "url": "https://files.pythonhosted.org/packages/b5/ed/fc7f2b10a07a2be09527d0ea6264baa69467e62072704a852d93d784cb2b/folderspy-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "bb92df6c46cd26418c4a306345a149de", "sha256": "2f7933c9f38e52edd109d289c6b837020d3d760cfdda0847df613b4586257756" }, "downloads": -1, "filename": "folderspy-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bb92df6c46cd26418c4a306345a149de", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9076, "upload_time": "2018-10-22T22:52:35", "url": "https://files.pythonhosted.org/packages/71/fd/a4daf472a1c27058ce3b7bd785b6a77d03ed0b2f960947a4ffaaf7382cba/folderspy-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ca28f35a9767a33113020bca5217dfb4", "sha256": "8e9cadddbc9e187d7740ddbe6c6eea3ba1a239d57054e084ec066872f1fe9cb4" }, "downloads": -1, "filename": "folderspy-0.0.5.tar.gz", "has_sig": false, "md5_digest": "ca28f35a9767a33113020bca5217dfb4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6132, "upload_time": "2018-10-22T22:52:37", "url": "https://files.pythonhosted.org/packages/f7/c4/b2073fc26ba017ef21c266a1a084986c489dcee786d2b40e6d5952a707d8/folderspy-0.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bb92df6c46cd26418c4a306345a149de", "sha256": "2f7933c9f38e52edd109d289c6b837020d3d760cfdda0847df613b4586257756" }, "downloads": -1, "filename": "folderspy-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bb92df6c46cd26418c4a306345a149de", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9076, "upload_time": "2018-10-22T22:52:35", "url": "https://files.pythonhosted.org/packages/71/fd/a4daf472a1c27058ce3b7bd785b6a77d03ed0b2f960947a4ffaaf7382cba/folderspy-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ca28f35a9767a33113020bca5217dfb4", "sha256": "8e9cadddbc9e187d7740ddbe6c6eea3ba1a239d57054e084ec066872f1fe9cb4" }, "downloads": -1, "filename": "folderspy-0.0.5.tar.gz", "has_sig": false, "md5_digest": "ca28f35a9767a33113020bca5217dfb4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6132, "upload_time": "2018-10-22T22:52:37", "url": "https://files.pythonhosted.org/packages/f7/c4/b2073fc26ba017ef21c266a1a084986c489dcee786d2b40e6d5952a707d8/folderspy-0.0.5.tar.gz" } ] }