{ "info": { "author": "Marcin Kasperski", "author_email": "Marcin.Kasperski@mekk.waw.pl", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: DFSG approved", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Version Control" ], "description": ".. -*- mode: rst; compile-command: \"rst2html README.txt README.html\" -*-\n\n=======================================================\nMercurial Keyring\n=======================================================\n\nMercurial Keyring is a Mercurial_ extension used to securely save HTTP\nand SMTP authentication passwords in password databases (Gnome\nKeyring, KDE KWallet, OSXKeyChain, Windows Vault etc).\n\nWith ``mercurial_keyring`` active, Mercurial remembers your passwords\nand reuses them without prompting (as if you stored them in ``.hgrc``),\nbut password storage is reasonably secure.\n\nActual password storage is implemented by the keyring_ library, this \nextension glues it to Mercurial.\n\n.. contents::\n :local:\n :depth: 2\n\n.. sectnum::\n\n.. _keyring: http://pypi.python.org/pypi/keyring\n.. _Mercurial: http://mercurial.selenic.com\n\nHow does it work\n=======================================================\n\nOn your first pull or push to HTTP url (or first email sent via given\nSMTP server), you are prompted for the password, just like bare\nMercurial does. But the password you entered is saved to appropriate\npassword database. On successive runs, whenever the password is\nneeded, ``mercurial_keyring`` checks for password in password\ndatabase, and uses it without troubling you.\n\nIn case password turns out to be incorrect (for example, because you\nchanged it, or entered it incorrectly), ``mercurial_keyring`` prompts\nyou again, and overwrites the password.\n\nYou can use many passwords (for various remote urls). Saved passwords\nare identified by pair of username and url prefix. See below for\ninformation how to configure those properly.\n\nInstallation\n=======================================================\n\nPrerequisites\n-------------\n\nThis extension requires keyring_ and `mercurial_extension_utils`_ to\nwork. In many cases both will be installed automatically while you\ninstall ``mercurial_keyring``, but you may need to control the process.\n\nThe keyring_ library can usually be installed by::\n\n pip install --user keyring\n\n(or ``easy_install keyring``), but on some systems it is preferable to\nuse official distribution archive. For example, on Debian and Ubuntu,\nyou may install ``python-keyring`` and either ``python-keyring-gnome``\nor ``python-keyring-kwallet`` packages::\n\n sudo apt-get install python-keyring python-keyring-gnome\n\n(this will save you the need to provide working compiler and various\ndevelopment libraries).\n\nThe `mercurial_extension_utils`_ module is tiny Python-only module,\nwhich can be installed by::\n\n pip install --user mercurial_extension_utils\n\nbut in some cases (Windows\u2026) requires more care. See\n`mercurial_extension_utils`_ documentation.\n \n\nExtension installation\n----------------------\n\nThere are two possible ways of installing the extension: using PyPi package,\nor using source clone.\n\nTo install as a package::\n\n pip install --user mercurial_keyring\n\n(or ``sudo pip install mercurial_keyring`` for system-wide\ninstallation) and then enable it in ``~/.hgrc`` (or\n``/etc/mercurial/hgrc`` or ``Mercurial.ini``) using::\n\n [extensions]\n mercurial_keyring = \n\nTo install using source clone, install keyring_ according to the\ninstructions above, then clone::\n \n hg clone https://bitbucket.org/Mekk/mercurial_keyring/\n hg clone https://bitbucket.org/Mekk/mercurial-extension_utils/\n\nand configure Mercurial using full path to the extension module::\n\n [extensions]\n mercurial_keyring = /path/to/mercurial_keyring/mercurial_keyring.py\n\n.. _the code: \n.. _mercurial_keyring.py: http://bitbucket.org/Mekk/mercurial_keyring/src/tip/mercurial_keyring.py\n\nPassword backend configuration\n=======================================================\n\nThe most appropriate password backend should usually be picked without\nconfiguration (considering installed libraries, operating system,\nactive desktop session). Still, if necessary, it can be configured\nusing ``keyringrc.cfg`` file. Refer to keyring_ docs for more\ndetails.\n\n.. note::\n\n With current (as I write) keyring (5.6), this file is (on Linux)\n located at ``~/.local/share/python_keyring/keyringrc.cfg`` and\n it's example content looks like::\n\n [backend]\n default-keyring=keyring.backends.Gnome.Keyring\n # default-keyring=keyring.backends.kwallet.Keyring\n\n For list of known backends run ``pydoc keyring.backends`` or\n ``keyring --list-backends`` (which of those commands work,\n depends on the keyring_ version).\n\n\n``hgrc`` configuration (HTTP)\n=======================================================\n\nMercurial Keyring uses standard Mercurial ``[auth]`` configuration to\ndetect your username (on given remote) and url prefix. You are\nstrongly advised to configure both.\n\nWithout the username ``mercurial_keyring`` can't save or restore\npasswords, so it disables itself.\n\nWithout url prefix ``mercurial_keyring`` works, but binds passwords to\nrepository urls. That means you will have to (re)enter password for\nevery repository cloned from given remote (and that there will be many\ncopies of this password in secure storage).\n\nRepository level configuration\n------------------------------------\n\nEdit repository-local ``.hg/hgrc`` and save there the remote\nrepository path and the username, but do not save the password. For\nexample:\n\n::\n\n [paths]\n myremote = https://my.server.com/hgrepo/someproject\n\n [auth]\n myremote.prefix = https://my.server.com/hgrepo\n myremote.username = John\n\nSimpler form with url-embedded name can also be used:\n\n::\n\n [paths]\n bitbucket = https://John@my.server.com/hgrepo/someproject/\n\nbut is not recommended.\n\nNote that all repositories sharing the same ``prefix`` share the same\npassword.\n\nMercurial allows also for password in ``.hg/hgrc`` (either given by\n``\u00abprefix\u00bb.password``, or embedded in url). If such password is found,\nMercurial Keyring disables itself.\n\n\nAccount-level configuration\n---------------------------\n\nIf you are consistent about remote repository nicknames, you can\nconfigure the username in your `~/.hgrc` (`.hgrc` in your home\ndirectory). For example, write there::\n\n [auth]\n acme.prefix = hg.acme.com/repositories\n acme.username = johnny\n acme.schemes = http https\n bitbucket.prefix = https://bitbucket.org\n bitbucket.username = Mekk\n mydep.prefix = https://dev.acmeorg.com\n mydep.username = drmartin\n\nand as long as you use ``acme`` alias for repositories like\n``https://hg.acme.com/repositories/my_beautiful_app``, username\n``johnny`` will be used, and the same password reused. Similarly\nany ``hg push bitbucket`` will share the same password.\n\nWith such config repository-level ``.hg/hgrc`` need only contain\n``[paths]``.\n\nAdditional advantage of this method is that it works also during\n`clone`.\n\n\n.. note::\n\n Mercurial Keyring works well with `Path Pattern`_. On my setup I use\n prefix as above, and::\n\n [path_pattern]\n bitbucket.local = ~/devel/{below}\n bitbucket.remote = https://bitbucket.org/Mekk/{below:/=-}\n \n so all my repositories understand ``hg push bitbucket`` without\n any repository-level configuration.\n\n\n``hgrc`` configuration (SMTP)\n=======================================================\n\nEdit either repository-local ``.hg/hgrc``, or ``~/.hgrc`` and set\nthere all standard email and smtp properties, including SMTP\nusername, but without SMTP password. For example:\n\n::\n\n [email]\n method = smtp\n from = Joe Doe \n\n [smtp]\n host = smtp.gmail.com\n port = 587\n username = JoeDoe@gmail.com\n tls = true\n\nJust as in case of HTTP, you *must* set username, but *must not* set\npassword here to use the extension, in other cases it will revert to\nthe default behavior.\n\nUsage\n======================================================\n\nSaving and restoring passwords\n-------------------------------------------------------\n\nConfigure the repository as above, then just ``hg pull``, ``hg push``,\netc. You should be asked for the password only once (per every\nusername and remote repository prefix or url combination).\n\nSimilarly, for email, configure as above and just ``hg email``.\nAgain, you will be asked for the password once (per every username and\nemail server address combination).\n\nChecking password status (``hg keyring_check``)\n-------------------------------------------------------\n\nThe ``keyring_check`` command can be used to check whether/which\npassword(s) are saved. It can be used in three ways:\n\n- without parameters, it prints info related to all HTTP paths\n defined for current repository (everything from ``hg paths``\n that resolves to HTTP url)::\n\n hg keyring_check\n\n- given alias as param, it prints info about this alias::\n\n hg keyring_check work\n\n- finally, any path can be checked::\n\n hg keyring_check https://bitbucket.org/Mekk/mercurial_keyring\n\nDeleting saved password (``hg keyring_clear``)\n-------------------------------------------------------\n\nThe ``keyring_clear`` command removes saved password related to given\npath. It can be used in two ways:\n\n- given alias as param, it drops password used by this alias::\n\n hg keyring_clear work\n\n- given full path, it drops password related to this path::\n\n hg keyring_clear https://bitbucket.org/Mekk/mercurial_keyring\n\nManaging passwords using GUI tools\n------------------------------------------------------\n\nMany password backends provide GUI tools for password management,\nfor example Gnome Keyring passwords can be managed using ``seahorse``,\nand KDE Wallet using ``kwalletmanager``. Those GUI tools can be used\nto review, edit, or delete saved passwords.\n\nUnfortunately, as I write, keyring_ library does not allow one to\nconfigure how/where exactly saved passwords are put in the hierarchy,\nand the place is not always intuitive. For example, in KDE Wallet, all\npasswords saved using ``mercurial_keyring`` show up in the folder\nnamed ``Python``.\n\n.. note::\n\n This is slightly problematic in case ``mercurial_keyring`` is not\n the only program using keyring_ library. Passwords saved by another\n Python application or script (which also uses keyring_) will be put\n into the same place, and it may be unclear which password belongs\n to which program. To remedy this, ``mercurial_keyring`` applies\n slightly unusual labels of the form\n ``\u00abusername\u00bb\ufeff@@\ufeff\u00aburlprefix\u00bb\ufeff@\ufeffMercurial`` - for example my bitbucket\n password is labelled ``Mekk\ufeff@@\ufeffhttps\ufeff://\ufeffbitbucket.org\ufeff@\ufeffMercurial``.\n\nImplementation details\n=======================================================\n\nThe extension is monkey-patching the mercurial ``passwordmgr`` class\nto replace the ``find_user_password`` method. Detailed order of operations\nis described in the comments inside `the code`_.\n\nFrequent problems\n=======================================================\n\nMost problems people face while using ``mercurial_keyring`` are in\nfact problems with ``keyring`` library and it's backends. In\nparticular, those can manifest by:\n\n- technical errors mentioning sentences like ``No recommended backend\n was available. Install the keyrings.alt package\u2026`` (or similar),\n\n- warnings like ``keyring: keyring backend doesn't seem to work\u2026``\n\n- password prompts on every action (= passwords not being saved).\n\nThose almost always mean that *natural* keyring backend for given\ndesktop type doesn't work, or is not present at all. For example,\nsome necessary runtime component can be down (say, you use Linux, but\nhave neither Gnome Keyring, nor KDE Wallet, running). Or appropriate\nbackend is not installed because it could not be build during\nkeyring_ library installation (maybe because some required library\nwas not present at the moment of keyring installation, or maybe because compiler\nas such is not present on the system).\n\nTo diagnose such problems, try using ``keyring`` utility, as described\non keyring_ documentation page, for example by::\n\n keyring --list-backends\n keyring -b keyrings.alt.Gnome.Keyring set testsvc testuser\n keyring -b keyrings.alt.Gnome.Keyring get testsvc testuser\n\n(of course using appropriate backend). If you miss the ``keyring`` command\nas such, try ``python -m keyring`` instead::\n\n python -m keyring --list-backends\n python -m keyring -b keyrings.alt.Gnome.Keyring set testsvc testuser\n python -m keyring -b keyrings.alt.Gnome.Keyring get testsvc testuser\n\nIf appropriate backend is missing (not listed), or doesn't work\n(second or third command fails), your keyring is broken. Try looking\nfor further pointers in keyring_ documentation, that project mailing\nlist, or issue tracker. Typically it will turn out, that you need to\ninstall some missing tool, or library, and reinstall keyring.\n\n.. note::\n\n Depending on keyring_ version, installation of some dependency may\n resolve problem. For example (as of late 2018), I got KDE Wallet\n backend working with pip-installed keyring after::\n\n pip install dbus-python\n\n\nIf ``keyring`` command works, but mercurial with mercurial_keyring does not,\ntry enforcing proper backend (by means of ``keyringrc.cfg``, see above).\nOnly if this doesn't help, there may be a bug in mercurial_keyring.\n\n.. note::\n\n By far easiest way to have properly working keyring is to use\n packaged binary version (like ``python-keyring`` Ubuntu package, or\n keyring bundled with TortoiseHG on some systems). If you pip-installed\n keyring and it doesn't work, you may consider ``pip uninstall keyring``\n and look for binary package instead.\n\n\n\n\nHistory\n=======================================================\n\nSee `HISTORY.txt`_.\n\nDevelopment\n=======================================================\n\nDevelopment is tracked on BitBucket, see \nhttp://bitbucket.org/Mekk/mercurial_keyring/\n\n\nAdditional notes\n=======================================================\n\nInformation about this extension is also available\non Mercurial Wiki: http://mercurial.selenic.com/wiki/KeyringExtension\n\nCheck also `other Mercurial extensions I wrote`_.\n\n.. _other Mercurial extensions I wrote: http://mekk.bitbucket.io/mercurial.html\n\n.. _HISTORY.txt: http://bitbucket.org/Mekk/mercurial_keyring/src/tip/HISTORY.txt\n.. _TortoiseHg: http://tortoisehg.bitbucket.org/\n.. _Mercurial: http://mercurial.selenic.com\n.. _mercurial_extension_utils: https://bitbucket.org/Mekk/mercurial-extension_utils/\n.. _Path Pattern: https://bitbucket.org/Mekk/mercurial-path_pattern/\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://bitbucket.org/Mekk/mercurial_keyring", "keywords": "mercurial hg keyring password", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "mercurial_keyring", "package_url": "https://pypi.org/project/mercurial_keyring/", "platform": "", "project_url": "https://pypi.org/project/mercurial_keyring/", "project_urls": { "Homepage": "http://bitbucket.org/Mekk/mercurial_keyring" }, "release_url": "https://pypi.org/project/mercurial_keyring/1.2.1/", "requires_dist": null, "requires_python": "", "summary": "Mercurial Keyring Extension", "version": "1.2.1" }, "last_serial": 4452979, "releases": { "0.3.0": [ { "comment_text": "", "digests": { "md5": "6117505374c67af096d681b5097b8e6a", "sha256": "3f46d276eae39763f61e9e0df61187129a0dc4ba363c61ca792e94f6b6012589" }, "downloads": -1, "filename": "mercurial_keyring-0.3.0.tar.gz", "has_sig": false, "md5_digest": "6117505374c67af096d681b5097b8e6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6553, "upload_time": "2009-12-06T20:07:02", "url": "https://files.pythonhosted.org/packages/2e/86/576076251320438c206631e85a7939a6e6c985f826561aff7a6f342dba99/mercurial_keyring-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "8f868b03ea89075421937490f876a32e", "sha256": "d14b566b302cfd3aabaef74d476d6d32bc1668852db36489ed901d5c6cc5b014" }, "downloads": -1, "filename": "mercurial_keyring-0.3.1.tar.gz", "has_sig": false, "md5_digest": "8f868b03ea89075421937490f876a32e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6587, "upload_time": "2009-12-06T20:08:28", "url": "https://files.pythonhosted.org/packages/8e/20/94a8bccc9dbb9bb04a469dc1a4de3b284bed732af5d56f1f1aac32fd870d/mercurial_keyring-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "26b56e039c2ad49e46bf6fe4fce0d690", "sha256": "1e9e5db158b51afd491b962a4ea8c0937ce80f576fc4360ac0fb518cef3b29e8" }, "downloads": -1, "filename": "mercurial_keyring-0.3.2.tar.gz", "has_sig": false, "md5_digest": "26b56e039c2ad49e46bf6fe4fce0d690", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7477, "upload_time": "2009-12-06T21:57:06", "url": "https://files.pythonhosted.org/packages/2c/cc/9d330145c487e8a5fa1cd63333b846b5468c80e0292e7f24a58e329454ec/mercurial_keyring-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "31015c152fd1b96ae2e1b4cefd5db5c5", "sha256": "39e443eb49971ff5b119cae11c3440374bfbd455b2cec0109d7998f9035122bd" }, "downloads": -1, "filename": "mercurial_keyring-0.3.3.tar.gz", "has_sig": false, "md5_digest": "31015c152fd1b96ae2e1b4cefd5db5c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7495, "upload_time": "2009-12-15T00:17:47", "url": "https://files.pythonhosted.org/packages/61/97/9aa785086d65cd5fd1285da96dc090bee7cc78e83b6aee3590791ea695f8/mercurial_keyring-0.3.3.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "6abaf44ee9d3aa462dbbfe2f465f765b", "sha256": "dee4f667d5b84a057fa4b9720886b1c117553dc22f434b381780967de2335e71" }, "downloads": -1, "filename": "mercurial_keyring-0.4.0.tar.gz", "has_sig": false, "md5_digest": "6abaf44ee9d3aa462dbbfe2f465f765b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7838, "upload_time": "2009-12-20T11:11:28", "url": "https://files.pythonhosted.org/packages/52/15/12b311737defb23c8ab3edc660860d781478ae0ef94fe919323b627e03f4/mercurial_keyring-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "734348db3be6c010dfe6cea5b83dc403", "sha256": "2f0e557c5373a76bf3e08f03813c1aff2b7e7b906baeedcf5bff8d3f35c8eb16" }, "downloads": -1, "filename": "mercurial_keyring-0.4.1.tar.gz", "has_sig": false, "md5_digest": "734348db3be6c010dfe6cea5b83dc403", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8267, "upload_time": "2010-01-09T22:10:47", "url": "https://files.pythonhosted.org/packages/c7/e2/4cd62f12a24e3e5733fb1b715201b38487022b0f9fce96c8cddff0885449/mercurial_keyring-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "ef2aaadb323e11115a21b110e405e5f9", "sha256": "36ee43151e8019927edb77aaae551ffab84c8595a69b581ac39e29563e9771fb" }, "downloads": -1, "filename": "mercurial_keyring-0.4.2.tar.gz", "has_sig": false, "md5_digest": "ef2aaadb323e11115a21b110e405e5f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8405, "upload_time": "2010-06-30T16:17:04", "url": "https://files.pythonhosted.org/packages/ac/40/a45ff0610d0986305b5f1537c2731f86a3e9d40ac48bb7115ede1c050942/mercurial_keyring-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "6c5044e4743eda1a9710a7a44b960e8e", "sha256": "f7a5c36284119de9ae376e77ffbb9bedbe06cb94143fb308328fe421ee6c1ccd" }, "downloads": -1, "filename": "mercurial_keyring-0.4.3.tar.gz", "has_sig": false, "md5_digest": "6c5044e4743eda1a9710a7a44b960e8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8493, "upload_time": "2010-11-17T22:52:10", "url": "https://files.pythonhosted.org/packages/77/dc/a1deda709ccace1c57b8aa132a0825f06d3850710661a380663d6fec4ac4/mercurial_keyring-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "af3822af5ee19a714b4e4fc7e66c25e7", "sha256": "6d9ea5e8c6f3aef5c6020e21b823a9440f9dfe312ee189ea4989de0f84f35927" }, "downloads": -1, "filename": "mercurial_keyring-0.4.4.tar.gz", "has_sig": false, "md5_digest": "af3822af5ee19a714b4e4fc7e66c25e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8548, "upload_time": "2011-02-15T08:03:51", "url": "https://files.pythonhosted.org/packages/24/35/fabd89869e9056ca48e00d690cc86f2b279bf5955e6b0d845ea144d1bee0/mercurial_keyring-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "7c24cd32f5f178bd14d3cccda564ccd3", "sha256": "c048557c0343e3b3906d57e27301149352f235a731b9bdd37fbe1604c5f36f7a" }, "downloads": -1, "filename": "mercurial_keyring-0.4.5.tar.gz", "has_sig": false, "md5_digest": "7c24cd32f5f178bd14d3cccda564ccd3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8661, "upload_time": "2011-05-11T10:48:57", "url": "https://files.pythonhosted.org/packages/5b/04/44d56836842402874629301da4b15f1b9664a7c3e9ec2c26839ca2e1b3d3/mercurial_keyring-0.4.5.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "327358a0df4129ec355ef0299a6c969b", "sha256": "433bc8f6efc6672261780e1ea66b9bfec053160a547fd709eb2310e1d6e9f9a8" }, "downloads": -1, "filename": "mercurial_keyring-0.4.6.tar.gz", "has_sig": false, "md5_digest": "327358a0df4129ec355ef0299a6c969b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8626, "upload_time": "2011-08-13T23:39:12", "url": "https://files.pythonhosted.org/packages/98/3a/3bb53e7dc538456cc989fcfa05b72b6823b76d0589af803f0116c1c709f0/mercurial_keyring-0.4.6.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "de875a5993731ad2479709dbe3ae1b95", "sha256": "45b9eb7fbce5d5e9a0323fd322403f82514a43961f5e63d30e375eb5616b2a73" }, "downloads": -1, "filename": "mercurial_keyring-0.5.0.tar.gz", "has_sig": false, "md5_digest": "de875a5993731ad2479709dbe3ae1b95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9064, "upload_time": "2012-01-19T23:00:13", "url": "https://files.pythonhosted.org/packages/d0/da/193d72cd408a08002c18a36c76c20ac20c7086db48fe5a882954d83b358a/mercurial_keyring-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "66e92288ec5ecbdaecabe6948df22bd8", "sha256": "e6c3b929f167f34498862f2ba7b8829d5c750d045de26ef673d9068cac62545e" }, "downloads": -1, "filename": "mercurial_keyring-0.5.1.tar.gz", "has_sig": false, "md5_digest": "66e92288ec5ecbdaecabe6948df22bd8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9154, "upload_time": "2012-05-17T12:28:09", "url": "https://files.pythonhosted.org/packages/28/28/32641965b0beb442ea3849ee7a4cd59c6a0b8b92ad5cb0dbfa7b3fd592c1/mercurial_keyring-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "72b4fa36fe488f44c4519c249960eef0", "sha256": "203d252a20db2a8e15a5b030ddad8a67a523824346b88adc163c7834823398e8" }, "downloads": -1, "filename": "mercurial_keyring-0.5.2.tar.gz", "has_sig": false, "md5_digest": "72b4fa36fe488f44c4519c249960eef0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9157, "upload_time": "2012-07-23T19:15:18", "url": "https://files.pythonhosted.org/packages/d7/63/ce9fc95b8b524eaf984458ab5f05ed686a3f1477a82163a1b3484a272c07/mercurial_keyring-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "2a533149815ca102ba84f09bc05538ed", "sha256": "364339775823d1da60479d0297a1e579a8af865b543144a351e8ef6edc89dad2" }, "downloads": -1, "filename": "mercurial_keyring-0.5.3.tar.gz", "has_sig": false, "md5_digest": "2a533149815ca102ba84f09bc05538ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9071, "upload_time": "2012-09-27T21:16:25", "url": "https://files.pythonhosted.org/packages/3d/51/e446e0e4eac8b6e7477b40b7c2be80d92369fb4675a36311126ef3b98992/mercurial_keyring-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "75bb797202571ccf0c90f45dae414cf5", "sha256": "6b69a5789e4409a777635d26123798b54d7cb0aa5f5676801acd58c5f34fcebd" }, "downloads": -1, "filename": "mercurial_keyring-0.5.4.tar.gz", "has_sig": false, "md5_digest": "75bb797202571ccf0c90f45dae414cf5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12118, "upload_time": "2013-02-12T17:21:06", "url": "https://files.pythonhosted.org/packages/11/bb/e51e141a1d29d62a4245d592d0b372321d93121ea42a5df08885afb96970/mercurial_keyring-0.5.4.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "b53830100c4700535e1bcdbbd2dc051e", "sha256": "c422750fb446eb96d9b04a1cb54d28804eb9ca8481fd3a6ac34d73d9b9c5c11d" }, "downloads": -1, "filename": "mercurial_keyring-0.5.5.tar.gz", "has_sig": false, "md5_digest": "b53830100c4700535e1bcdbbd2dc051e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12133, "upload_time": "2013-03-24T17:03:25", "url": "https://files.pythonhosted.org/packages/7f/77/15b0bcbd80c1a445dbeabd15058db102e837e49ef58f2d4acdbd8b2e40ee/mercurial_keyring-0.5.5.tar.gz" } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "488a67f7a0f26833df40bc298d34134d", "sha256": "0e387ac20ae5fea0f2083c7ddb15763d32afd755430875c19f020d36f990b6b1" }, "downloads": -1, "filename": "mercurial_keyring-0.5.6.tar.gz", "has_sig": false, "md5_digest": "488a67f7a0f26833df40bc298d34134d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12045, "upload_time": "2013-07-05T08:40:57", "url": "https://files.pythonhosted.org/packages/29/14/e067f248dbb5de32ea0586506bab79fec1a69de450527a3cf0c9527dac78/mercurial_keyring-0.5.6.tar.gz" } ], "0.5.7": [ { "comment_text": "", "digests": { "md5": "cc5f1fe30f79e20d7cce16ad3d150480", "sha256": "e57d0699129448936b6e4a89ffa6973db5e83aa564d7b91e0e6bdc049a7861a5" }, "downloads": -1, "filename": "mercurial_keyring-0.5.7.tar.gz", "has_sig": false, "md5_digest": "cc5f1fe30f79e20d7cce16ad3d150480", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12073, "upload_time": "2013-07-15T20:17:00", "url": "https://files.pythonhosted.org/packages/8b/ce/ac3ce3abef8e56598ef5799349a238c60869ae8aa6cb77c817ff9ca86667/mercurial_keyring-0.5.7.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "e3356862a6c4c5320264d46e92c5bb22", "sha256": "0d66cfd2dee8c17ee4c3ed9ebaac179312055a5cda49da34a8f7d98a99c977da" }, "downloads": -1, "filename": "mercurial_keyring-0.6.0.tar.gz", "has_sig": false, "md5_digest": "e3356862a6c4c5320264d46e92c5bb22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12222, "upload_time": "2013-08-24T13:58:51", "url": "https://files.pythonhosted.org/packages/de/d5/a958afdd70d85ddd9971a99c9df5fbef4eee60da4f267da32675f1f04f67/mercurial_keyring-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "9cbef7a55bd77a504b61280842be2e72", "sha256": "8b78f8c03d70f1c948f867970207ab0839b9750c0cfbd15137604f022e528056" }, "downloads": -1, "filename": "mercurial_keyring-0.6.1.tar.gz", "has_sig": false, "md5_digest": "9cbef7a55bd77a504b61280842be2e72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12271, "upload_time": "2013-10-02T22:23:03", "url": "https://files.pythonhosted.org/packages/87/62/5c22612e53d176876897d0ac63c3803b3ddba556aafc01b57058fc2a1d79/mercurial_keyring-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "6df175e7b3fbfa4423c5e13cc2f1515d", "sha256": "46d5c45a5fca4562d1bb6c67c226d50691792c4475267602886970d06df748fe" }, "downloads": -1, "filename": "mercurial_keyring-0.6.2.tar.gz", "has_sig": false, "md5_digest": "6df175e7b3fbfa4423c5e13cc2f1515d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12439, "upload_time": "2014-03-22T19:50:15", "url": "https://files.pythonhosted.org/packages/17/45/b3439ae7e188b7371c5c464c14ca29f34cd7b707f8ae718703bbaf66a8a1/mercurial_keyring-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "544fde999cff4b0845a8d9bd4e524a26", "sha256": "443fbe916a61ee43ab0ad16fd61ae145e2cd7934ea2d5dab3099d6055d581bbd" }, "downloads": -1, "filename": "mercurial_keyring-0.6.3.tar.gz", "has_sig": false, "md5_digest": "544fde999cff4b0845a8d9bd4e524a26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10966, "upload_time": "2015-01-04T01:23:34", "url": "https://files.pythonhosted.org/packages/fa/b5/c905d7719a9958fe486a1a02178af9492aa9d4ece3e0df014f8086206c5b/mercurial_keyring-0.6.3.tar.gz" } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "5b4e5f67a905e1174742f5a849d34df5", "sha256": "60ddc87338e359fcc92a03d6c8e21a0aba869d2ab94abc5e6cf6fc7bfb381c06" }, "downloads": -1, "filename": "mercurial_keyring-0.6.4.tar.gz", "has_sig": false, "md5_digest": "5b4e5f67a905e1174742f5a849d34df5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11001, "upload_time": "2015-01-09T20:14:34", "url": "https://files.pythonhosted.org/packages/ab/2a/a57efdbc70fb0400a3706e7a492c9884098ba8b539603b5cac9cefd1de4d/mercurial_keyring-0.6.4.tar.gz" } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "89a7c8aee552b6dae2e750b22308f005", "sha256": "1205d40f282311ced49b5d3ffdbb4f583711714d1a4c369fb20d5a44c5905a9d" }, "downloads": -1, "filename": "mercurial_keyring-0.6.5.tar.gz", "has_sig": false, "md5_digest": "89a7c8aee552b6dae2e750b22308f005", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11075, "upload_time": "2015-01-09T21:09:29", "url": "https://files.pythonhosted.org/packages/16/6f/fe81deeb57e23c9da68c28ad592f4da14d9dd4dfece6192cc75539fcefa4/mercurial_keyring-0.6.5.tar.gz" } ], "0.6.6": [ { "comment_text": "", "digests": { "md5": "1f2d6d5598e2c4e30aeacce657daab40", "sha256": "c0849e20dbf72aab19e3905354dda1f945499991a4f76705719d9df7b4c5c298" }, "downloads": -1, "filename": "mercurial_keyring-0.6.6.tar.gz", "has_sig": false, "md5_digest": "1f2d6d5598e2c4e30aeacce657daab40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11088, "upload_time": "2015-01-30T19:40:52", "url": "https://files.pythonhosted.org/packages/2e/e2/6cdf025d11d69edb9ae35da8a86893d7a12f0a44ce643f87caeb35a98198/mercurial_keyring-0.6.6.tar.gz" } ], "0.6.7": [ { "comment_text": "", "digests": { "md5": "1188569abb046692bf5ad1badf6d8c89", "sha256": "3fcb1c846a37188977677e288d36acada5a7c8d1933a60faff63013f343d737d" }, "downloads": -1, "filename": "mercurial_keyring-0.6.7.tar.gz", "has_sig": false, "md5_digest": "1188569abb046692bf5ad1badf6d8c89", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11853, "upload_time": "2015-02-26T23:41:52", "url": "https://files.pythonhosted.org/packages/33/03/cba9fcfb7229f5098c95efb4b05df38747e6274ef55f6bc2422bd301d694/mercurial_keyring-0.6.7.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "7b11383a51769b980949aca29fcf6d32", "sha256": "da08ea7b4a5b8159c9c04b776a10e3efa480e6503c7e5ccc921c8f3cea77eca9" }, "downloads": -1, "filename": "mercurial_keyring-0.7.0.tar.gz", "has_sig": false, "md5_digest": "7b11383a51769b980949aca29fcf6d32", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14153, "upload_time": "2015-10-15T22:53:43", "url": "https://files.pythonhosted.org/packages/6f/ca/25cf962786c72b5fc1c858a5a47aa45321ff06353f5d2e206f8010ad7e3e/mercurial_keyring-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "ca1c6948e0d5848095c1700661f387e0", "sha256": "1edd9938c7f61c99c03c862d076e67a77a473c83b3f29840348e16863f6aa2b5" }, "downloads": -1, "filename": "mercurial_keyring-0.7.1.tar.gz", "has_sig": false, "md5_digest": "ca1c6948e0d5848095c1700661f387e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14216, "upload_time": "2015-10-15T22:57:14", "url": "https://files.pythonhosted.org/packages/d2/3f/79d87bbd52a8a4d4e0f573dcfe90fd6e0eae1733295910f22c4328f0fb2e/mercurial_keyring-0.7.1.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "3943cacdf308f75952121b20a156e2b8", "sha256": "0844c644682e9e9db4f01ba04eaed94c43a6641669c62d977330d910bd87c7ea" }, "downloads": -1, "filename": "mercurial_keyring-0.8.0.tar.gz", "has_sig": false, "md5_digest": "3943cacdf308f75952121b20a156e2b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15466, "upload_time": "2015-10-28T23:07:00", "url": "https://files.pythonhosted.org/packages/d0/11/5d5804e36bdc0e74ee4550876632daa5e4a3a1cb7acc1fe089ec51f5527e/mercurial_keyring-0.8.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "c515871a8690b0e5dae4d4e2e0dd264d", "sha256": "e9bfaea8f790b23a43457ab37356d2de652d05f4f11baf55dec589377be4e447" }, "downloads": -1, "filename": "mercurial_keyring-1.0.0.tar.gz", "has_sig": false, "md5_digest": "c515871a8690b0e5dae4d4e2e0dd264d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18840, "upload_time": "2015-11-13T20:47:30", "url": "https://files.pythonhosted.org/packages/fc/34/6d7440a6ea06b13af38c6d89c483e007f1c3cc06af1a92fef6ce62f6363b/mercurial_keyring-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "6fac00929b59b895d6a3d5b88a024148", "sha256": "557e6ce197107e71577c6969b46e0ba88b8419853ec5548bf7b900b7c95357f0" }, "downloads": -1, "filename": "mercurial_keyring-1.0.1.tar.gz", "has_sig": false, "md5_digest": "6fac00929b59b895d6a3d5b88a024148", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19237, "upload_time": "2015-11-21T13:51:46", "url": "https://files.pythonhosted.org/packages/50/21/cd86a108fbfd9c6a4dcd3e63816e4940ea9a40a801a37ad333dcc340f01c/mercurial_keyring-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "6157869ee45b1166f34527cfd6484147", "sha256": "e4535639f55885e2374c7393e94848a6c3d72c416599e6a1dc8f9ee6b0c6ab79" }, "downloads": -1, "filename": "mercurial_keyring-1.1.0.tar.gz", "has_sig": false, "md5_digest": "6157869ee45b1166f34527cfd6484147", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19257, "upload_time": "2016-03-10T00:01:08", "url": "https://files.pythonhosted.org/packages/8e/16/560372c3b30c37d12b5aca01c4b28ca27621eab153476c97d3a51dad9299/mercurial_keyring-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "52ec0d98e5fe050490816ae92f791944", "sha256": "a97dab2bceb9c2ef3c8f5f33c709664fd5fa8ada966461038c236cbf0ada0712" }, "downloads": -1, "filename": "mercurial_keyring-1.1.1.tar.gz", "has_sig": false, "md5_digest": "52ec0d98e5fe050490816ae92f791944", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19347, "upload_time": "2016-03-10T00:47:48", "url": "https://files.pythonhosted.org/packages/41/57/2e471e94b303543961e2b5a7339847cbac09d270cc078025fb0c679bc872/mercurial_keyring-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "93e365518312184640d9dea3a700cadc", "sha256": "1275d270e00ca7c26a4779ad0f38f6e533ae1d68fcfc06c4023c4b392a2bc8f3" }, "downloads": -1, "filename": "mercurial_keyring-1.1.2.tar.gz", "has_sig": false, "md5_digest": "93e365518312184640d9dea3a700cadc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20611, "upload_time": "2016-03-10T20:25:16", "url": "https://files.pythonhosted.org/packages/c0/b8/6d1a8260525485c4d4983d37bae4bc76f13a565fab744df4d25b48e17a19/mercurial_keyring-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "7c29fa2426b2187ee72e4e868de2c585", "sha256": "9578cf62382662b79506c80cf7563c56738795e25a9849dcf79de2f046041d88" }, "downloads": -1, "filename": "mercurial_keyring-1.1.3.tar.gz", "has_sig": false, "md5_digest": "7c29fa2426b2187ee72e4e868de2c585", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20731, "upload_time": "2016-04-25T20:47:10", "url": "https://files.pythonhosted.org/packages/f7/ca/6778fd171f84bd7770026fd1af59504b2fffb872a01e77c168d2e42107a1/mercurial_keyring-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "50938c83e06bd7bb415f7fe9436ce6c2", "sha256": "e3d7a3056dad7224729c6c297c51cbe80609e865152a8574e7d69a0d4a8211db" }, "downloads": -1, "filename": "mercurial_keyring-1.1.4.tar.gz", "has_sig": false, "md5_digest": "50938c83e06bd7bb415f7fe9436ce6c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20988, "upload_time": "2016-06-18T10:40:34", "url": "https://files.pythonhosted.org/packages/2a/b1/ba67754e9998973ef7118c753c70d22ef57c7a44ec3db7d57d143c3bc9c7/mercurial_keyring-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "84eeebd57ff9817eec29806b645d1aac", "sha256": "badab4bfebecb7b3c86a7672f8c5fc106d4966dd87a3dc64b75da0ab74894d33" }, "downloads": -1, "filename": "mercurial_keyring-1.1.5.tar.gz", "has_sig": false, "md5_digest": "84eeebd57ff9817eec29806b645d1aac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21056, "upload_time": "2016-08-05T19:27:40", "url": "https://files.pythonhosted.org/packages/74/07/e76bd4008617d43400793fca971b2a0fc9044c78d31098ce5005bb5b951b/mercurial_keyring-1.1.5.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "ef166d553ed3d6765dfabc700594dc3b", "sha256": "94d023d867b0fc4d984920bca12e3bca57b5aebf67243393b8aff3dfdb85522b" }, "downloads": -1, "filename": "mercurial_keyring-1.1.6.tar.gz", "has_sig": false, "md5_digest": "ef166d553ed3d6765dfabc700594dc3b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21145, "upload_time": "2016-11-19T20:27:29", "url": "https://files.pythonhosted.org/packages/69/8a/7f974636e1b510fb2622d4367b52c4a484219fe5464f2ceccf2e5770e52d/mercurial_keyring-1.1.6.tar.gz" } ], "1.1.7": [ { "comment_text": "", "digests": { "md5": "04ca620feeb4f5d783d48cf4ba9e9af6", "sha256": "c44b136f41fdf3d482e9170b2353772f1a3ae815cb663b30a552a9aed3799fab" }, "downloads": -1, "filename": "mercurial_keyring-1.1.7.tar.gz", "has_sig": false, "md5_digest": "04ca620feeb4f5d783d48cf4ba9e9af6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21297, "upload_time": "2016-12-18T12:00:11", "url": "https://files.pythonhosted.org/packages/a4/be/7016ba742b19ad3527fbacb187e1f4f2752747b84529b149c5a3d400c1b8/mercurial_keyring-1.1.7.tar.gz" } ], "1.1.8": [ { "comment_text": "", "digests": { "md5": "56cedc08841f5df4035f983a60b588e0", "sha256": "f4a091307da2ee5b72ebc4077c830ca08e5659fcde839bf3ccf9c31d26214fa6" }, "downloads": -1, "filename": "mercurial_keyring-1.1.8.tar.gz", "has_sig": false, "md5_digest": "56cedc08841f5df4035f983a60b588e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18850, "upload_time": "2017-05-18T16:23:49", "url": "https://files.pythonhosted.org/packages/04/e6/b81545f5d58d0c5f55de9517632f6bc9fb83b30ee4d705fcc41281386cff/mercurial_keyring-1.1.8.tar.gz" } ], "1.1.9": [ { "comment_text": "", "digests": { "md5": "f7790495340ab536c60490578a7a5ce1", "sha256": "aaa70a8f78be4406d98ecea362dcce460173c724a6cb412b36f74a9562808ce4" }, "downloads": -1, "filename": "mercurial_keyring-1.1.9.tar.gz", "has_sig": false, "md5_digest": "f7790495340ab536c60490578a7a5ce1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21599, "upload_time": "2018-05-26T00:21:28", "url": "https://files.pythonhosted.org/packages/6c/98/b14f5f73dd78405c888ef5032f7a038aba0813a25d3518f1bd076707d48f/mercurial_keyring-1.1.9.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "7853d80beb11d8e9b57b92c717310654", "sha256": "dd1f0b28f257997d6f3790d7562b1154d6a972a84588b398d1332a7656d1326c" }, "downloads": -1, "filename": "mercurial_keyring-1.2.0.tar.gz", "has_sig": false, "md5_digest": "7853d80beb11d8e9b57b92c717310654", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23847, "upload_time": "2018-08-03T23:06:15", "url": "https://files.pythonhosted.org/packages/6c/a5/2eb8383fcf3334efc5ca3f26938d796db9c8a83c320308fbb9e6f6ec7eea/mercurial_keyring-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "b08c9ae234f380a84c072732f8285656", "sha256": "c602769fef3aca3e64f951fa394ba96789d974e1892aa24e3706efc21a618f2e" }, "downloads": -1, "filename": "mercurial_keyring-1.2.1.tar.gz", "has_sig": false, "md5_digest": "b08c9ae234f380a84c072732f8285656", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21286, "upload_time": "2018-11-05T13:52:43", "url": "https://files.pythonhosted.org/packages/94/24/a4a6a61332144a9b6ab9d394d3358939bd677be085fedb6dfaac0db79962/mercurial_keyring-1.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b08c9ae234f380a84c072732f8285656", "sha256": "c602769fef3aca3e64f951fa394ba96789d974e1892aa24e3706efc21a618f2e" }, "downloads": -1, "filename": "mercurial_keyring-1.2.1.tar.gz", "has_sig": false, "md5_digest": "b08c9ae234f380a84c072732f8285656", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21286, "upload_time": "2018-11-05T13:52:43", "url": "https://files.pythonhosted.org/packages/94/24/a4a6a61332144a9b6ab9d394d3358939bd677be085fedb6dfaac0db79962/mercurial_keyring-1.2.1.tar.gz" } ] }