{ "info": { "author": "Oliver Steele", "author_email": "steele@osteele.com", "bugtrack_url": null, "classifiers": [ "Framework :: IPython", "Framework :: Jupyter", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.6" ], "description": "IPython Secrets\n===============\n\n|PyPI version| |Doc Status| |License| |Supported Python|\n\n**IPython Secrets** makes it easier to use secrets in a Jupyter notebook.\n\nThe first time `get_secret` is called, it prompts the user for the password or\nother secret. After this value is read, it is saved in the system keyring, and\nthe Jupyter output cell is then cleared.\n\n|gif1|\n\nSubsequent calls to ``get_secret`` use the saved value. This is true even\nif they are called in a different process running in the same account -- for\nexample, if the machine has been rebooted, or the local Jupyter server has\notherwise been shut down and restarted.\n\n|gif2|\n\n.. note:: Install the `gsheet-keyring package`_ to use ipython-secrets on\n `Google Colaboratory`_: ``pip3 install gsheet-keyring``. The gsheet-keyring\n package provides a Keyring backend that is backed by Google Sheets. This is\n necessary since the Colaboratory environment doesn't provide a persistent\n file system, or the OS services that the Keyring's standard and alternative\n backends rely on.\n\n.. warning:: This package stores the secret on the Jupyter server. Don't trust\n it with secrets you don't trust the Jupyter server with. (This is true for\n all means of using a secret in a notebook.)\n\n.. warning:: The package is intended to reduce the likelihood of accidental\n disclosure of secrets in notebook source. It won't secure a secret from code\n that is running *in* the notebook; and it won't keep you from writing code\n that displays the secret in a notebook output cell -- in which case it has\n been disclosed to whoever can see the notebook.\n\nInstall\n-------\n\n.. code:: bash\n\n pip3 install ipython-secrets\n\nUsage\n-----\n\n.. code:: python\n\n from ipython_secrets import *\n\n TWILIO_API_KEY = get_secret('TWILIO_API_KEY')\n\nAlternatives\n------------\n\nSecrets can also be stored in an environment variable, and read from the\nnotebook. This is a best practice for applications (and especially web and other\n`server-side services`_), but I've found it inconvenient for notebooks -- the\nnotebook server must be re-started to pick up a new environment variable; and,\nit complicates the setup instructions for notebook users.\n\nDevelopment\n-----------\n\nInstall Pipenv, and required packages:\n\n.. code:: bash\n\n $ pip3 install pipenv\n $ pipenv install\n $ pipenv shell\n $ pip install flit\n\nInstall locally:\n\n.. code:: bash\n\n flit install --symlink\n\nAcknowledgements\n----------------\n\nThis package is a thin wrapper around Keyring_.\n\nLicense\n-------\n\nMIT\n\n.. |PyPI version| image:: https://img.shields.io/pypi/v/ipython-secrets.svg\n :target: https://pypi.python.org/pypi/ipython-secrets\n :alt: Latest PyPI Version\n.. |Doc Status| image:: https://readthedocs.org/projects/ipython-secrets/badge/?version=latest\n :target: http://ipython-secrets.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n.. |License| image:: https://img.shields.io/pypi/l/ipython-secrets.svg\n :target: https://pypi.python.org/pypi/ipython-secrets\n :alt: License\n.. |Supported Python| image:: https://img.shields.io/pypi/pyversions/ipython-secrets.svg\n :target: https://pypi.python.org/pypi/ipython-secrets\n :alt: Supported Python Versions\n\n.. _API documentation: http://ipython-secrets.readthedocs.io/en/latest/?badge=latest#module-ipython_secrets\n\n.. |gif1| image:: ./docs/images/first-time.gif\n.. |gif2| image:: ./docs/images/next-time.gif\n\n.. _Google Colaboratory: https://colab.research.google.com/\n.. _Hydrogen: https://nteract.io/atom\n.. _Keyring: https://pypi.python.org/pypi/keyring\n.. _Nteract: https://nteract.io\n.. _server-side services: https://12factor.net/\n.. _gsheet-keyring package: https://pypi.org/project/gsheet-keyring/\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/osteele/ipython-secrets", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "ipython-secrets", "package_url": "https://pypi.org/project/ipython-secrets/", "platform": "", "project_url": "https://pypi.org/project/ipython-secrets/", "project_urls": { "Documentation": "https://ipython-secrets.readthedocs.io/en/latest/", "Homepage": "https://github.com/osteele/ipython-secrets" }, "release_url": "https://pypi.org/project/ipython-secrets/1.1.1/", "requires_dist": [ "keyring", "ipython" ], "requires_python": ">=3.5", "summary": "This package provides functions for using secrets in a Jupyter notebook.", "version": "1.1.1" }, "last_serial": 3962118, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "e5214a1abeab09794a1634cb5074303a", "sha256": "206a24bbed5b5575ea9196977c81546234fe310ed4b7332de4e0e738bbbf0034" }, "downloads": -1, "filename": "ipython_secrets-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e5214a1abeab09794a1634cb5074303a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 7372, "upload_time": "2018-01-26T11:07:47", "url": "https://files.pythonhosted.org/packages/3d/56/58dc0278f68c535b80ae127b932423ea5b9049455593fca1e4181c3e987e/ipython_secrets-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4811ffc6f72f519805c3559d3d1a2d9c", "sha256": "c8e2a4ef333fcc77116f1a70d9fe74543fbee93cf778a2e7492b5cd16277da96" }, "downloads": -1, "filename": "ipython-secrets-0.1.1.tar.gz", "has_sig": false, "md5_digest": "4811ffc6f72f519805c3559d3d1a2d9c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 62749, "upload_time": "2018-01-26T11:07:52", "url": "https://files.pythonhosted.org/packages/22/1c/c498d30d29dcf30450961836a6093e83b6fe827933e26c6a6f85e77b421c/ipython-secrets-0.1.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "25f1b93d713e3aef91ba506488d058d9", "sha256": "49615e654e056ae2ce0511b58483bdc0b7664dd6267bc1ff9672634953498336" }, "downloads": -1, "filename": "ipython_secrets-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "25f1b93d713e3aef91ba506488d058d9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 7424, "upload_time": "2018-06-09T13:54:00", "url": "https://files.pythonhosted.org/packages/da/22/b1f9910b5cf50ad0cf7cf089363586793272aa5c037d7aea2456f177f4a5/ipython_secrets-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "06a21ecff5a5966ff02d52ef5db7298e", "sha256": "f117314580a6ff088f0b41d8540f9aa8335a240b1de2abb41cb4933b1cc99a4d" }, "downloads": -1, "filename": "ipython-secrets-1.0.0.tar.gz", "has_sig": false, "md5_digest": "06a21ecff5a5966ff02d52ef5db7298e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 69271, "upload_time": "2018-06-09T13:54:02", "url": "https://files.pythonhosted.org/packages/d9/a9/9248401916dda8e0cf7684c8260ec4781724ca53593cc7c08342f8c0a7ba/ipython-secrets-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "911160a2ce3922e262ec1fc1e620fedc", "sha256": "e63aea19a843cb3af790649ad5ef0e4be2f6a1342915c387074084d96b6111cb" }, "downloads": -1, "filename": "ipython_secrets-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "911160a2ce3922e262ec1fc1e620fedc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9546, "upload_time": "2018-06-10T17:41:29", "url": "https://files.pythonhosted.org/packages/c7/52/a8538374c0ddd6e0e7503b31befca0e34911f9b6d5b806c9480f0a51f7a2/ipython_secrets-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "92ec86f986dc3a20bb6e4a62ac886a52", "sha256": "b358c6836d5810b127716708c31a14b1d1c0d3ffbee464e3e29cf9c1bdc2b3b0" }, "downloads": -1, "filename": "ipython-secrets-1.1.0.tar.gz", "has_sig": false, "md5_digest": "92ec86f986dc3a20bb6e4a62ac886a52", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 70194, "upload_time": "2018-06-10T17:41:30", "url": "https://files.pythonhosted.org/packages/94/4f/7cdedfc6b74b7cca739ea96769efee3f0b748826595488c489830051fc87/ipython-secrets-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "84edb64d585bac89cd778e9db25feb8a", "sha256": "3d1f088e8095d51fec5dae5fd72aa2faf290dfe6914abdde7cb3ccf45eb4043b" }, "downloads": -1, "filename": "ipython_secrets-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "84edb64d585bac89cd778e9db25feb8a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9575, "upload_time": "2018-06-14T17:01:44", "url": "https://files.pythonhosted.org/packages/53/c3/8bf761aff37e08141bfe7f3086f276a9545b73b10ba935b48bb4dc036f54/ipython_secrets-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c8077525b2af9dc30c89eccabc12de8", "sha256": "346bbf40977e61196564328b3e134ec4c71fc6fbe2bb192ea90716bd951585b5" }, "downloads": -1, "filename": "ipython-secrets-1.1.1.tar.gz", "has_sig": false, "md5_digest": "3c8077525b2af9dc30c89eccabc12de8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 70217, "upload_time": "2018-06-14T17:01:45", "url": "https://files.pythonhosted.org/packages/4b/5d/7670d778e0469f341946e4318127f005ca41d670d32de6037e5df312c1e8/ipython-secrets-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "84edb64d585bac89cd778e9db25feb8a", "sha256": "3d1f088e8095d51fec5dae5fd72aa2faf290dfe6914abdde7cb3ccf45eb4043b" }, "downloads": -1, "filename": "ipython_secrets-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "84edb64d585bac89cd778e9db25feb8a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9575, "upload_time": "2018-06-14T17:01:44", "url": "https://files.pythonhosted.org/packages/53/c3/8bf761aff37e08141bfe7f3086f276a9545b73b10ba935b48bb4dc036f54/ipython_secrets-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c8077525b2af9dc30c89eccabc12de8", "sha256": "346bbf40977e61196564328b3e134ec4c71fc6fbe2bb192ea90716bd951585b5" }, "downloads": -1, "filename": "ipython-secrets-1.1.1.tar.gz", "has_sig": false, "md5_digest": "3c8077525b2af9dc30c89eccabc12de8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 70217, "upload_time": "2018-06-14T17:01:45", "url": "https://files.pythonhosted.org/packages/4b/5d/7670d778e0469f341946e4318127f005ca41d670d32de6037e5df312c1e8/ipython-secrets-1.1.1.tar.gz" } ] }