{ "info": { "author": "Kyle Lahnakoski", "author_email": "kyle@lahnakoski.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# mo-fabric\n\nA fa\u00e7ade atop [fabric](http://www.fabfile.org/)\n\n## Overview\n\nI have revisited [Fabric](http://www.fabfile.org/) (September 2018) to find it can handle multiple threads and multiple connections. This makes all my automation faster!\n\nLike with most APIs, I made a fa\u00e7ade because Fabric is not congruent to my own programming conventions. This is not bad, just different: The domain I work in is slightly different than what the Fabric developers expect. \n\nHere are the differences:\n\n* All `stdout` and `strerr` from the remote machine is annotated, and shunted, the the local logging module.\n* A few convenience methods are added:\n * `conn.exists(path)` - to test if a remote file exists\n * `with conn.warn_only():` - context manager if you do not care if your commands fail\n * `get(remote, local)` - allows you to use tilde (`~`) on Windows to refer to home directory\n * `put(local, remote, use_sudo=False)` - same as `get` plus the ability to upload as root\n * `sudo(command)` works with the `cd()` context manager\n* Added `Result.__contains__()` so checking for patterns in command output is simpler", "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/klahnakoski/mo-fabric", "keywords": "", "license": "MPL 2.0", "maintainer": "", "maintainer_email": "", "name": "mo-fabric", "package_url": "https://pypi.org/project/mo-fabric/", "platform": "", "project_url": "https://pypi.org/project/mo-fabric/", "project_urls": { "Homepage": "https://github.com/klahnakoski/mo-fabric" }, "release_url": "https://pypi.org/project/mo-fabric/2.29.19005/", "requires_dist": null, "requires_python": "", "summary": "Thin facade over fabric", "version": "2.29.19005" }, "last_serial": 4663744, "releases": { "2.28.18331": [ { "comment_text": "", "digests": { "md5": "85686fc06b55d07468b080f8fa44fb29", "sha256": "f11367a71f82514d555f212ee8c2b2724ca6961c1cf1440032cc101d02696d99" }, "downloads": -1, "filename": "mo-fabric-2.28.18331.tar.gz", "has_sig": false, "md5_digest": "85686fc06b55d07468b080f8fa44fb29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3767, "upload_time": "2018-11-27T21:29:12", "url": "https://files.pythonhosted.org/packages/83/21/eaa997a0fdff55039f3a58bcde513c6a55b1d2f5d4d701547d46cb6e019b/mo-fabric-2.28.18331.tar.gz" } ], "2.29.19005": [ { "comment_text": "", "digests": { "md5": "60e7dafa33fb07b2fd6c3f4ac3a6a2fe", "sha256": "8880d8ab098ab62f3d127e548bf062083bc7383c7a27beaa33e134c786019ef7" }, "downloads": -1, "filename": "mo-fabric-2.29.19005.tar.gz", "has_sig": false, "md5_digest": "60e7dafa33fb07b2fd6c3f4ac3a6a2fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3850, "upload_time": "2019-01-05T17:05:26", "url": "https://files.pythonhosted.org/packages/d2/b8/705d73f891d3f044199801cc96b63b6327b520dcb1e2a6b9938b6009c127/mo-fabric-2.29.19005.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "60e7dafa33fb07b2fd6c3f4ac3a6a2fe", "sha256": "8880d8ab098ab62f3d127e548bf062083bc7383c7a27beaa33e134c786019ef7" }, "downloads": -1, "filename": "mo-fabric-2.29.19005.tar.gz", "has_sig": false, "md5_digest": "60e7dafa33fb07b2fd6c3f4ac3a6a2fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3850, "upload_time": "2019-01-05T17:05:26", "url": "https://files.pythonhosted.org/packages/d2/b8/705d73f891d3f044199801cc96b63b6327b520dcb1e2a6b9938b6009c127/mo-fabric-2.29.19005.tar.gz" } ] }