{ "info": { "author": "Alfredo Deza", "author_email": "contact@deza.pe", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Topic :: Utilities" ], "description": "remoto\n======\nA very simplistic remote-command-executor using connections to hosts (``ssh``,\nlocal, containers, and several others are supported) and Python in the remote\nend.\n\nAll the heavy lifting is done by execnet, while this minimal API provides the\nbare minimum to handle easy logging and connections from the remote end.\n\n``remoto`` is a bit opinionated as it was conceived to replace helpers and\nremote utilities for ``ceph-deploy``, a tool to run remote commands to configure\nand setup the distributed file system Ceph. `ceph-medic\n`_ uses remoto as well to inspect Ceph\nclusters.\n\n\nExample Usage\n-------------\nThe usage aims to be extremely straightforward, with a very minimal set of\nhelpers and utilities for remote processes and logging output.\n\nThe most basic example will use the ``run`` helper to execute a command on the\nremote end. It does require a logging object, which needs to be one that, at\nthe very least, has both ``error`` and ``debug``. Those are called for\n``stderr`` and ``stdout`` respectively.\n\nThis is how it would look with a basic logger passed in::\n\n >>> conn = remoto.Connection('hostname')\n >>> run(conn, ['ls', '-a'])\n INFO:hostname:Running command: ls -a\n DEBUG:hostname:.\n DEBUG:hostname:..\n DEBUG:hostname:.bash_history\n DEBUG:hostname:.bash_logout\n DEBUG:hostname:.bash_profile\n DEBUG:hostname:.bashrc\n DEBUG:hostname:.lesshst\n DEBUG:hostname:.pki\n DEBUG:hostname:.ssh\n DEBUG:hostname:.vim\n DEBUG:hostname:.viminfo\n\nThe ``run`` helper will display the ``stderr`` and ``stdout`` as ``ERROR`` and\n``DEBUG`` respectively.\n\nFor other types of usage (like checking exit status codes, or raising upon\nthem) ``remoto`` does provide them too.\n\n\nRemote Commands\n===============\n\n``process.run``\n---------------\nCalling remote commands can be done in a few different ways. The most simple\none is with ``process.run``::\n\n >>> from remoto.process import run\n >>> from remoto import connection\n >>> Connection = connection.get('ssh')\n >>> conn = Connection('myhost')\n >>> run(conn, ['whoami'])\n INFO:myhost:Running command: whoami\n DEBUG:myhost:root\n\nNote however, that you are not capturing results or information from the remote\nend. The intention here is only to be able to run a command and log its output.\nIt is a *fire and forget* call.\n\n\n``process.check``\n-----------------\nThis callable, allows the caller to deal with the ``stderr``, ``stdout`` and\nexit code. It returns it in a 3 item tuple::\n\n >>> from remoto.process import check\n >>> check(conn, ['ls', '/nonexistent/path'])\n ([], ['ls: cannot access /nonexistent/path: No such file or directory'], 2)\n\nNote that the ``stdout`` and ``stderr`` items are returned as lists with the ``\\n``\ncharacters removed.\n\nThis is useful if you need to process the information back locally, as opposed\nto just firing and forgetting (while logging, like ``process.run``).\n\n\nRemote Functions\n================\nThere are two supported ways to execute functions on the remote side. The\nlibrary that ``remoto`` uses to connect (``execnet``) only supports a few\nbackends *natively*, and ``remoto`` has extended this ability for other backend\nconnections like kubernetes.\n\nThe remote function capabilities are provided by ``LegacyModuleExecute`` and\n``JsonModuleExecute``. By default, both ``ssh`` and ``local`` connection will\nuse the legacy execution class, and everything else will use the ``legacy``\nclass. The ``ssh`` and ``local`` connections can still be forced to use the new\nmodule execution by setting::\n\n conn.remote_import_system = 'json'\n\n\n``json``\n--------\nThe default module for ``docker``, ``kubernetes``, ``podman``, and\n``openshift``. It does not require any magic on the module to be executed,\nhowever it is worth noting that the library *will* add the following bit of\nmagic when sending the module to the remote end for execution::\n\n\n if __name__ == '__main__':\n import json, traceback\n obj = {'return': None, 'exception': None}\n try:\n obj['return'] = function_name(*a)\n except Exception:\n obj['exception'] = traceback.format_exc()\n try:\n print(json.dumps(obj).decode('utf-8'))\n except AttributeError:\n print(json.dumps(obj))\n\nThis allows the system to execute ``function_name`` (replaced by the real\nfunction to be executed with its arguments), grab any results, serialize them\nwith ``json`` and send them back for local processing.\n\n\nIf you had a function in a module named ``foo`` that looks like this::\n\n import os\n\n def listdir(path):\n return os.listdir(path)\n\nTo be able to execute that ``listdir`` function remotely you would need to pass\nthe module to the connection object and then call that function::\n\n >>> import foo\n >>> conn = Connection('hostname')\n >>> remote_foo = conn.import_module(foo)\n >>> remote_foo.listdir('.')\n ['.bash_logout',\n '.profile',\n '.veewee_version',\n '.lesshst',\n 'python',\n '.vbox_version',\n 'ceph',\n '.cache',\n '.ssh']\n\nNote that functions to be executed remotely **cannot** accept objects as\narguments, just normal Python data structures, like tuples, lists and\ndictionaries. Also safe to use are ints and strings.\n\n\n``legacy``\n----------\nWhen using the ``legacy`` execution model (the default for ``local`` and\n``ssh`` connections), modules are required to add the following to the end of\nthat module::\n\n if __name__ == '__channelexec__':\n for item in channel:\n channel.send(eval(item))\n\nThis piece of code is fully compatible with the ``json`` execution model, and\nwould not cause conflicts.\n\n\nAutomatic detection for ssh connections\n---------------------------------------\nThere is automatic detection for the need to connect remotely (via SSH) or not\nthat it is infered by the hostname of the current host (vs. the host that is\nconnecting to).\n\nIf the local host has the same as the remote hostname, a local connection (via\n`Popen`) will be opened and that will be used instead of `ssh`, and avoiding\nthe issues of being able to ssh into the same host.\n\nAutomatic detection for using `sudo`\n------------------------------------\nThis magical detection can be enabled by using the `detect_sudo` flag in the\n`Connection` class. It is disabled by default.\n\nWhen enabled, it will prefix any command with `sudo`. This is useful for\nlibraries that need super user permissions and want to avoid passing `sudo`\neverywhere, which can be non-trivial if dealing with `root` users that are\nconnecting via SSH.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/alfredodeza/remoto", "keywords": "remote,commands,unix,ssh,socket,execute,terminal", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "remoto", "package_url": "https://pypi.org/project/remoto/", "platform": "", "project_url": "https://pypi.org/project/remoto/", "project_urls": { "Homepage": "http://github.com/alfredodeza/remoto" }, "release_url": "https://pypi.org/project/remoto/1.1.4/", "requires_dist": null, "requires_python": "", "summary": "Execute remote commands or processes.", "version": "1.1.4" }, "last_serial": 5204577, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "98e00c4818d978ad234a5e604ebcc4e7", "sha256": "7e35d5b493faa39e26ff1d9f7c7808003c6b7c802ea96de297a8ec0606a09b45" }, "downloads": -1, "filename": "remoto-0.0.1.tar.gz", "has_sig": false, "md5_digest": "98e00c4818d978ad234a5e604ebcc4e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33181, "upload_time": "2013-09-11T14:13:07", "url": "https://files.pythonhosted.org/packages/d4/8d/9e176f0a752053d234f2193022d327efe42addb9065501bdde565cd3d102/remoto-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "f23d67a26806e1a34690c0b4fa1bd3b0", "sha256": "64f222d538ec7ffdde4bed18f46d304a973a1678e8f4ea2cca95d988bdb9a503" }, "downloads": -1, "filename": "remoto-0.0.10.tar.gz", "has_sig": false, "md5_digest": "f23d67a26806e1a34690c0b4fa1bd3b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35670, "upload_time": "2013-10-28T14:53:19", "url": "https://files.pythonhosted.org/packages/dd/f1/3b3b8cba0dcd6e9bef0ed5d187df505922e736ef0d4914f03b540d558dbd/remoto-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "67ae1f228698c0cb989c43a8e21ba98e", "sha256": "92954f04214263201db36ca74b721bd29b1c737b06a265722ff58fb558168865" }, "downloads": -1, "filename": "remoto-0.0.11.tar.gz", "has_sig": false, "md5_digest": "67ae1f228698c0cb989c43a8e21ba98e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35812, "upload_time": "2013-10-29T19:10:56", "url": "https://files.pythonhosted.org/packages/de/00/8b09423c6e00e9b21fd585cfbb5084482c47181ef32291f5124d0d80b6d9/remoto-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "d7fa0acd2713f16b06810af2d61da993", "sha256": "ebd11e14500f05ba4e83b79bf5b313cf02a835aed38d5bdaef967b667aa1c91f" }, "downloads": -1, "filename": "remoto-0.0.12.tar.gz", "has_sig": false, "md5_digest": "d7fa0acd2713f16b06810af2d61da993", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36256, "upload_time": "2013-11-21T16:00:31", "url": "https://files.pythonhosted.org/packages/c1/fa/10c93aa4b04d659b43f043a334c365531ab5b8637475193ef3eca74b19e3/remoto-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "5fbdcfaa53a38db8fcfc5d1f626ddd76", "sha256": "0ef64231d73cba2687d9f972873bcbe5a0502f00a861679b229429226e7ce8c1" }, "downloads": -1, "filename": "remoto-0.0.13.tar.gz", "has_sig": false, "md5_digest": "5fbdcfaa53a38db8fcfc5d1f626ddd76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36718, "upload_time": "2013-12-05T14:59:51", "url": "https://files.pythonhosted.org/packages/e2/9c/9bb2e4de7505e5d8ab0191021be22cd2ae22a18e5d368e112f6e55e049ef/remoto-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "5b3b2c689bdf0e7b868c6259b4a5db9d", "sha256": "01fe0b20a651ce3569d7a6cc71e230c6214eda9dad85fed92d8c3f64fcda9857" }, "downloads": -1, "filename": "remoto-0.0.14.tar.gz", "has_sig": false, "md5_digest": "5b3b2c689bdf0e7b868c6259b4a5db9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38360, "upload_time": "2014-01-29T18:03:28", "url": "https://files.pythonhosted.org/packages/20/50/f4bedec54e14d6fd0fe3a7aaa31d3f530bd0024be476f086efcf7ac98a5b/remoto-0.0.14.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "ec6be32e6d8ef96c86ae2a15441acd7c", "sha256": "72bfb55968835828c35f9edb2d6677b44f81e5af00819e15b8ee6fd8e2587f78" }, "downloads": -1, "filename": "remoto-0.0.16.tar.gz", "has_sig": false, "md5_digest": "ec6be32e6d8ef96c86ae2a15441acd7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38408, "upload_time": "2014-05-22T18:52:13", "url": "https://files.pythonhosted.org/packages/bf/a4/aa8bc197f5a4daf5941315388bcc908fa3a6fc2f267c86d2cdd0f121c81b/remoto-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "c37252843b887429e76df56ba738effa", "sha256": "edd13ad30d62a81d9bbf8ede4a9d94020eb3b014573585caae2a81df252a2702" }, "downloads": -1, "filename": "remoto-0.0.17.tar.gz", "has_sig": false, "md5_digest": "c37252843b887429e76df56ba738effa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39699, "upload_time": "2014-06-27T12:29:45", "url": "https://files.pythonhosted.org/packages/b8/30/59cc45a6ab00acf0a49b4ff19259c4a9ab4f466c8ad707d3c8bb0d3e35b7/remoto-0.0.17.tar.gz" } ], "0.0.18": [ { "comment_text": "", "digests": { "md5": "1ca342bb19e730c8959c01047a2f14ed", "sha256": "d67984e79c9991ca4341d23175ae4725442d684b81558f3633035f9cf3b0ea43" }, "downloads": -1, "filename": "remoto-0.0.18.tar.gz", "has_sig": false, "md5_digest": "1ca342bb19e730c8959c01047a2f14ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39746, "upload_time": "2014-07-09T14:05:01", "url": "https://files.pythonhosted.org/packages/cb/08/3278514c8f37a0eefadb7c12ef48418a8c96aeb72bdfbb44be61336c1cff/remoto-0.0.18.tar.gz" } ], "0.0.19": [ { "comment_text": "", "digests": { "md5": "935d10f29348182408f3668fb471d1ae", "sha256": "387efeda248bb89851ed5eaba0691c12d864ea37b6c4ed015d7d331885724dc5" }, "downloads": -1, "filename": "remoto-0.0.19.tar.gz", "has_sig": false, "md5_digest": "935d10f29348182408f3668fb471d1ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39734, "upload_time": "2014-07-10T20:32:29", "url": "https://files.pythonhosted.org/packages/e0/ba/bf851b2e70fdce2fe5c8a05c82ac7625d762d17129b3e4605261eeac10c3/remoto-0.0.19.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "0de012633432f1c8e2179b82055d4900", "sha256": "970188563756badf5e32985de410d8d80d9ec7ec3f8800c8d42ddcae8a7c30e9" }, "downloads": -1, "filename": "remoto-0.0.2.tar.gz", "has_sig": false, "md5_digest": "0de012633432f1c8e2179b82055d4900", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33507, "upload_time": "2013-09-13T17:32:01", "url": "https://files.pythonhosted.org/packages/7d/93/84d3c7108d39a559921afdd9fe630fb7fe5d50ae644550f35f3439b6343f/remoto-0.0.2.tar.gz" } ], "0.0.20": [ { "comment_text": "", "digests": { "md5": "762498e4cda0ef63186ccc34cd73a548", "sha256": "ad094e05a8da92baab753a585d3a85c7f463608d1e2f08477811d0b26eaf70d5" }, "downloads": -1, "filename": "remoto-0.0.20.tar.gz", "has_sig": false, "md5_digest": "762498e4cda0ef63186ccc34cd73a548", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39763, "upload_time": "2014-09-05T16:11:32", "url": "https://files.pythonhosted.org/packages/e8/b3/8b9610ccf92e798cd328a40f127d3182ca6d5e1b1dad553888d81301f4fe/remoto-0.0.20.tar.gz" } ], "0.0.21": [ { "comment_text": "", "digests": { "md5": "c1af5faf5c1a7c7ab3a3a8f47741fe80", "sha256": "af5bd0434bf62852e703e28b8d8a6b2115a081307e930cf7a250ff5cb3fc7054" }, "downloads": -1, "filename": "remoto-0.0.21.tar.gz", "has_sig": false, "md5_digest": "c1af5faf5c1a7c7ab3a3a8f47741fe80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39953, "upload_time": "2014-09-09T20:01:57", "url": "https://files.pythonhosted.org/packages/19/fc/4ddde9afc3b73ba411216b152c0b1b36eaf625a229985ac380dbfc5e5b03/remoto-0.0.21.tar.gz" } ], "0.0.22": [ { "comment_text": "", "digests": { "md5": "50ba51708ff563bf53b45dcdf10568ea", "sha256": "933a89737fd2a3d0021b123f23653c555263a2ca2a315d6fbc03fd43e493c117" }, "downloads": -1, "filename": "remoto-0.0.22.tar.gz", "has_sig": false, "md5_digest": "50ba51708ff563bf53b45dcdf10568ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40228, "upload_time": "2014-09-24T21:08:34", "url": "https://files.pythonhosted.org/packages/da/eb/d2055ca2f5c57372fd3cd350d4290e5b25b65eed958d24f1b7260c34ca0c/remoto-0.0.22.tar.gz" } ], "0.0.23": [ { "comment_text": "", "digests": { "md5": "845a4ccdb09f77e359aad62e6e034157", "sha256": "2d9e1416969fb6d5230532c3975c5ea4db80fbff447ea5abe751dbc20c0338a3" }, "downloads": -1, "filename": "remoto-0.0.23.tar.gz", "has_sig": false, "md5_digest": "845a4ccdb09f77e359aad62e6e034157", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40283, "upload_time": "2014-10-28T14:31:52", "url": "https://files.pythonhosted.org/packages/0b/4d/5438d35b58b7a29732a8abf459d35f69548b3f8adcbbcd264557c1e1116b/remoto-0.0.23.tar.gz" } ], "0.0.24": [ { "comment_text": "", "digests": { "md5": "f605551603d9b04e8d754fbb5140315b", "sha256": "a67d3c2b5efa180490b71f1e50421e7226f42a51bfd28bed2a6ffa3910e2864c" }, "downloads": -1, "filename": "remoto-0.0.24.tar.gz", "has_sig": false, "md5_digest": "f605551603d9b04e8d754fbb5140315b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42950, "upload_time": "2015-01-05T16:47:52", "url": "https://files.pythonhosted.org/packages/ca/50/79c2d29137882978878c0d87e63405dbc2b28b6116026e61eef26720e813/remoto-0.0.24.tar.gz" } ], "0.0.25": [ { "comment_text": "", "digests": { "md5": "94fa964c08d9c4619ef63201c58091e3", "sha256": "1879e00c57765f4c4c297a118e151446680d4d371494763c33e22fd9c986cbf5" }, "downloads": -1, "filename": "remoto-0.0.25.tar.gz", "has_sig": false, "md5_digest": "94fa964c08d9c4619ef63201c58091e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58854, "upload_time": "2015-04-21T16:44:32", "url": "https://files.pythonhosted.org/packages/a5/83/9806e026264ef367724c588b6f69bfb3fab28cb9373bae593d17638b164c/remoto-0.0.25.tar.gz" } ], "0.0.26": [ { "comment_text": "", "digests": { "md5": "e37a6e44213e67ca27db24d8667863de", "sha256": "d1819cdf8097400a782b94d4d31f186df8ea197c4baf5e128491fc222e0fde14" }, "downloads": -1, "filename": "remoto-0.0.26.tar.gz", "has_sig": false, "md5_digest": "e37a6e44213e67ca27db24d8667863de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73745, "upload_time": "2015-12-15T19:38:55", "url": "https://files.pythonhosted.org/packages/04/24/0fe92201ee7e852154f8447130327c5a6cbe2f6b4abb68618ea197a5224f/remoto-0.0.26.tar.gz" } ], "0.0.27": [ { "comment_text": "", "digests": { "md5": "61dca4ae7d991f707c1a9489aef47f88", "sha256": "833aca5a25735c27af1b18a4b520ef6131c8d2b72037dbf1ebd780e03ea5f713" }, "downloads": -1, "filename": "remoto-0.0.27.tar.gz", "has_sig": false, "md5_digest": "61dca4ae7d991f707c1a9489aef47f88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73634, "upload_time": "2015-12-22T18:49:01", "url": "https://files.pythonhosted.org/packages/08/10/80895471aa7d0f193c3ce8dbd0a46be02c400778ab96454d1cd48851bb03/remoto-0.0.27.tar.gz" } ], "0.0.28": [ { "comment_text": "", "digests": { "md5": "ca0c356e671f6833bbdca228da5aa15e", "sha256": "f8aeaf7146c5a6c5acade2a4d73afecb83ad0423fc9238cc27ea48ddaca7189c" }, "downloads": -1, "filename": "remoto-0.0.28.tar.gz", "has_sig": false, "md5_digest": "ca0c356e671f6833bbdca228da5aa15e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44269, "upload_time": "2016-05-11T18:02:59", "url": "https://files.pythonhosted.org/packages/97/73/eafaabf4f2d7a1645f334c939fb508e4a2d992793335375de4f6ef0ab69a/remoto-0.0.28.tar.gz" } ], "0.0.29": [ { "comment_text": "", "digests": { "md5": "8039d53ce9fedf0196a11abedca57c98", "sha256": "17647ef517cf9d4442b615fba05f9d65c7f6e9aabd62392095cf444d109b9f7d" }, "downloads": -1, "filename": "remoto-0.0.29.tar.gz", "has_sig": false, "md5_digest": "8039d53ce9fedf0196a11abedca57c98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44573, "upload_time": "2016-06-17T18:18:49", "url": "https://files.pythonhosted.org/packages/90/6d/1748d12f780c4bc813a2d72bb54183e36b6a5be9c93a4dcd08d1572990f0/remoto-0.0.29.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "bf0383b6c2ce24be084a837814df67fd", "sha256": "932a935ad95b2ada4e53e52d02c23aa789678cbc7dca1e3acae0429bf760bc39" }, "downloads": -1, "filename": "remoto-0.0.3.tar.gz", "has_sig": false, "md5_digest": "bf0383b6c2ce24be084a837814df67fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33657, "upload_time": "2013-09-20T19:36:02", "url": "https://files.pythonhosted.org/packages/80/aa/3110dbb74af65b5461f0c9d6cfd2ec2a923782f1314b003aed69a897b7b3/remoto-0.0.3.tar.gz" } ], "0.0.30": [ { "comment_text": "", "digests": { "md5": "588277779ed7be1cc7b89ba8242ba50e", "sha256": "608cf5cfce64c9e69d2e960223c07bb804d685cb31a801b9c8076500da3e3344" }, "downloads": -1, "filename": "remoto-0.0.30.tar.gz", "has_sig": false, "md5_digest": "588277779ed7be1cc7b89ba8242ba50e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43031, "upload_time": "2017-07-05T20:10:29", "url": "https://files.pythonhosted.org/packages/07/1b/7b2eb773ae10e173a07bb3df131159cd90b42cdbb2df53b62ad77c45a61b/remoto-0.0.30.tar.gz" } ], "0.0.31": [ { "comment_text": "", "digests": { "md5": "13c20bc71a42e70b7a573f88a2d706dd", "sha256": "88307b1ac568ff50649779fd5d34164ae947c3fbc61d26024e34756e9a12158b" }, "downloads": -1, "filename": "remoto-0.0.31.tar.gz", "has_sig": false, "md5_digest": "13c20bc71a42e70b7a573f88a2d706dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43152, "upload_time": "2018-07-10T17:12:36", "url": "https://files.pythonhosted.org/packages/92/b7/59d7465112f6d1ecb052110d8d9c1b12b6db7b0f083a38dfc9cdfcf0923f/remoto-0.0.31.tar.gz" } ], "0.0.32": [ { "comment_text": "", "digests": { "md5": "dbd675ae548f3f874bf2407684a599b9", "sha256": "ab48dd4a8c450fd70f4cd60c97769d0e08fd2ecb18bef6ea4305bccace830297" }, "downloads": -1, "filename": "remoto-0.0.32.tar.gz", "has_sig": false, "md5_digest": "dbd675ae548f3f874bf2407684a599b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43208, "upload_time": "2018-07-16T14:09:21", "url": "https://files.pythonhosted.org/packages/b4/12/4ff13b1d84515b583ed77d2051b7a52cd48746fc16cbe1fe62226e16140d/remoto-0.0.32.tar.gz" } ], "0.0.33": [ { "comment_text": "", "digests": { "md5": "de929e3502bc81245cf9fac47ca6585b", "sha256": "921a07a72e8d49be61025e29300e623d8e82ab7ce8dd3972039c12083c9693d1" }, "downloads": -1, "filename": "remoto-0.0.33.tar.gz", "has_sig": false, "md5_digest": "de929e3502bc81245cf9fac47ca6585b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43207, "upload_time": "2018-07-17T12:16:35", "url": "https://files.pythonhosted.org/packages/b0/b8/9e1f3b98f63ff5f7fbea313afdc958cbe9f0e5c0a1f623528a04ac41eecc/remoto-0.0.33.tar.gz" } ], "0.0.34": [ { "comment_text": "", "digests": { "md5": "204af96ebc5dc528cc1a609aa305a68d", "sha256": "f0ce1ee005ff0190fc9d2499d6428367312ffa6046b22d59477274e994ab3cb9" }, "downloads": -1, "filename": "remoto-0.0.34.tar.gz", "has_sig": false, "md5_digest": "204af96ebc5dc528cc1a609aa305a68d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13593, "upload_time": "2018-12-12T19:32:06", "url": "https://files.pythonhosted.org/packages/0b/91/8d5cb54c21b3a456d453883d65a30228307753560098ae71a82e3d3b8c62/remoto-0.0.34.tar.gz" } ], "0.0.35": [ { "comment_text": "", "digests": { "md5": "b7dd0805c0afdf865412ca749b45bb47", "sha256": "4a681de4353d7a0d297d233058712d0ceb80e98216731db1f151b3588f20290c" }, "downloads": -1, "filename": "remoto-0.0.35.tar.gz", "has_sig": false, "md5_digest": "b7dd0805c0afdf865412ca749b45bb47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13586, "upload_time": "2019-01-08T16:24:33", "url": "https://files.pythonhosted.org/packages/01/6c/2be61c4afdfdfc5b18565def7ef40029d7bdabe9437734f02521f30c592a/remoto-0.0.35.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "77db00a041b5e934ac90a3c98727d1fa", "sha256": "997deff5b1f5f98410d6ae9fd2405c3ad5d331e6fe0cf6a8b03b4fc56b830f2d" }, "downloads": -1, "filename": "remoto-0.0.4.tar.gz", "has_sig": false, "md5_digest": "77db00a041b5e934ac90a3c98727d1fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34687, "upload_time": "2013-10-04T17:01:53", "url": "https://files.pythonhosted.org/packages/5f/03/ef220e6aaf0ee28cce52ad03ce51c3ecbe678902434a2cddfce5bd65f156/remoto-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "c5e9e4f295e34cca031e962a37a9920d", "sha256": "8df05aca0af0f651e7440a6821e58933ff6c3f7538c180e5fb0b61ec50965d1d" }, "downloads": -1, "filename": "remoto-0.0.5.tar.gz", "has_sig": false, "md5_digest": "c5e9e4f295e34cca031e962a37a9920d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34772, "upload_time": "2013-10-04T20:49:17", "url": "https://files.pythonhosted.org/packages/3f/1e/dba4eb4d5280d30eaf517831329b8ee1a4addfbcb290ecfca411ba568827/remoto-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "fb320c53bf56b0d39d988015a0ac09bf", "sha256": "bbb082d141407b693869351246965facf627dd62db4cecaf1a51fe092973ab64" }, "downloads": -1, "filename": "remoto-0.0.6.tar.gz", "has_sig": false, "md5_digest": "fb320c53bf56b0d39d988015a0ac09bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35171, "upload_time": "2013-10-14T20:11:07", "url": "https://files.pythonhosted.org/packages/41/74/3ff375555e716b42dd9465701362ecdcac7b7a1a5aa64df1b21cb5e8e69c/remoto-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "01713eb1096018f247cf302cb79a424e", "sha256": "3935d0c6c1f7882c740a6356c486ac2a23281813332800b81dfa416bccb4ecc0" }, "downloads": -1, "filename": "remoto-0.0.7.tar.gz", "has_sig": false, "md5_digest": "01713eb1096018f247cf302cb79a424e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35343, "upload_time": "2013-10-16T15:42:48", "url": "https://files.pythonhosted.org/packages/fb/50/5f336268e1f680060f5bf45cc3fea143f339269cb1dc32bc5f7e3ffe2b67/remoto-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "61cd88b132e5f08b2ea6e43290cf77f9", "sha256": "fd34a89bd84ef0dd8c4f8393827c2af0d5d9361bd8eb416249f1892dda0c62dc" }, "downloads": -1, "filename": "remoto-0.0.8.tar.gz", "has_sig": false, "md5_digest": "61cd88b132e5f08b2ea6e43290cf77f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35583, "upload_time": "2013-10-17T16:09:51", "url": "https://files.pythonhosted.org/packages/ca/e0/4d9d7766455a464a16eab689f21f33aa0c1d757c8f13bd813a2306cda2db/remoto-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "b59a29abad50b4659143b933a8311dc4", "sha256": "29b3f1d0292818a5b466df6332509660969d2bf7ba6fa429ac8d783c312dec84" }, "downloads": -1, "filename": "remoto-0.0.9.tar.gz", "has_sig": false, "md5_digest": "b59a29abad50b4659143b933a8311dc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35632, "upload_time": "2013-10-28T14:02:06", "url": "https://files.pythonhosted.org/packages/d3/da/c8576b6e317f5b87b60d1cf6b243831596cc74210302f62f2c701b496354/remoto-0.0.9.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "cf9084d10f1d833066d455fe13ee5804", "sha256": "fd874c8c9abcff38700dd2773d3c5f87b5308b18fdbff7af743d0c437205079f" }, "downloads": -1, "filename": "remoto-1.0.0.tar.gz", "has_sig": false, "md5_digest": "cf9084d10f1d833066d455fe13ee5804", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17068, "upload_time": "2019-02-13T20:35:17", "url": "https://files.pythonhosted.org/packages/f2/4d/d4bf2dbc6de4c84f87b6f2c13ebb0d70e15576d39cce5c663d292d2a3ec7/remoto-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "da816489971cb1c486cb91fab25e2f34", "sha256": "3e9d9898b88b5993df985bad22382df0fbd9ecb3ca8052e2443f81b5a0eb521a" }, "downloads": -1, "filename": "remoto-1.1.0.tar.gz", "has_sig": false, "md5_digest": "da816489971cb1c486cb91fab25e2f34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17164, "upload_time": "2019-02-26T15:12:23", "url": "https://files.pythonhosted.org/packages/8a/76/0eee00bc1de7a047e4bb3047ade022fae7e7c2c80ffc6401ef71c700d31c/remoto-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "d0cca0d0b8791ee5dd8118e872e95277", "sha256": "c792da03a51911655244fc5d5bd6622c46af1453ea49521695802d3b6c96baec" }, "downloads": -1, "filename": "remoto-1.1.1.tar.gz", "has_sig": false, "md5_digest": "d0cca0d0b8791ee5dd8118e872e95277", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14841, "upload_time": "2019-03-13T11:41:13", "url": "https://files.pythonhosted.org/packages/6f/76/97525205f57d051fc195328bf3ffacb001e7648fe3e75d34e6a50284d69a/remoto-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "a2db743fc02b0825f792ca81abdb2369", "sha256": "93b18ecd861b335685b0b10a70b96539d1e809d1bfe78eaee45d709f1d645a9b" }, "downloads": -1, "filename": "remoto-1.1.2.tar.gz", "has_sig": false, "md5_digest": "a2db743fc02b0825f792ca81abdb2369", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14962, "upload_time": "2019-03-13T15:27:40", "url": "https://files.pythonhosted.org/packages/e1/7d/3ad5442407d47fcfd6427c69425e88e16cf1fc1a0ebb8f553830d31f1d74/remoto-1.1.2.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "e013062ae351beb373437ee327f35a48", "sha256": "b62bcbed66687c0d351d4b7937db11a27cba3cf4789a401d826caec3f0418490" }, "downloads": -1, "filename": "remoto-1.1.4.tar.gz", "has_sig": false, "md5_digest": "e013062ae351beb373437ee327f35a48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15047, "upload_time": "2019-04-29T19:17:40", "url": "https://files.pythonhosted.org/packages/de/df/dc2af19402a0667c571edd98b74c21a28b9497c02d2b6508c9e4bf51e1d0/remoto-1.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e013062ae351beb373437ee327f35a48", "sha256": "b62bcbed66687c0d351d4b7937db11a27cba3cf4789a401d826caec3f0418490" }, "downloads": -1, "filename": "remoto-1.1.4.tar.gz", "has_sig": false, "md5_digest": "e013062ae351beb373437ee327f35a48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15047, "upload_time": "2019-04-29T19:17:40", "url": "https://files.pythonhosted.org/packages/de/df/dc2af19402a0667c571edd98b74c21a28b9497c02d2b6508c9e4bf51e1d0/remoto-1.1.4.tar.gz" } ] }