{ "info": { "author": "Preetam Shingavi", "author_email": "p.shingavi@yahoo.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# waddle\nthe penguins api and tooling around aws's parameter store\n![codebuild](https://codebuild.us-east-2.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoiUU82MEFwb2JTUzJ2OFJSOUI4eURSc01BNnBNb04zVTRvaUZxTERxb3U3Ui9HdkVJRUllOHBUdlNXVGpGVXpUeXllVkVncVE4cDIxcFBIMzh6SFFMUWFzPSIsIml2UGFyYW1ldGVyU3BlYyI6IkJlcmc3clNIbVVBaFRCWFUiLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D&branch=master)\n\n## ParamBunch\n\nLets you access secrets stored in a file or from parameter store!\n\n### From a file\n\nCreate a file called test.yml that will hold your config. \nIt can include both secrets and non-secrets\n\n```yaml\nmeta:\n kms_key: dev\n region: us-west-2\n profile: mycompany\naws.username: aws-user\n```\n\nNow add a secret to that file using the waddle cli\n\n```bash\nwaddle -f /path/to/test.yml aws.password\n```\n\nwaddle will prompt you to enter in the secret. As long as you have a \nkms key called dev, waddle will add a kms-data-key-encrypted secret into \n`test.yml`. \n\nNow you can access configuration values in the test.yml configuration file\nusing the following syntax:\n\n```python\nfrom waddle import ParamBunch\nconf = ParamBunch(filename='/path/to/test.yml')\nAWS_USERNAME = conf.aws.username\nAWS_PASSWORD = conf.get('aws.password', 'some default value')\n``` \n\n### But I want to use parameter store \n\nYou can also load configs straight from AWS parameter store by providing a \nprefix.\n\n```python\nfrom waddle import ParamBunch\nconf = ParamBunch(prefix='/path/to/parameters')\n# Access /path/to/paramaters/aws/username\nAWS_USERNAME = conf.aws.username\n``` \n\n## want to waddle your secrets up to SSM from a file?\n\nIn certain cases, you may want to keep files locally, but then push them\nto aws as part of CI/CD. For example, if you want to keep a centralized \nrepository of your secrets that is shared among developers, you can encrypt\nsecrets in your config files using waddle. For application deployment, you can\npush those files up to ssm using `waddle deploy` and/or delete them from ssm\nusing `waddle undeploy`.\n\n```bash\nwaddle deploy -f /path/to/params.yml\n```\n\n- or -\n\n```bash\nwaddle undeploy -f /path/to/params.yml\n```\n\n## Bunch\n\nA class that offers pathy semantics \nto access values in a dictionary.\n\n### Bunch -- general usage\ne.g.,\n\n```python\nfrom waddle import Bunch\nvalues = {\n 'a': {\n 'b': {\n 'c': True,\n 'd': False,\n }, \n },\n}\na = Bunch(values)\nassert a.b.c == True\nassert a.b.d == False\na.cat.name = 'mycat'\nassert a['cat.name'] == 'mycat'\nassert 'cat.age' in a == False\nassert a.get('cat.age', 22) == 22\nassert a.setdefault('cat.age', 45) == 45\n``` \n\n### Bunch -- env\n\nYou can use the built-in `env` function to use\nthe dictionary as a set of default values that\ncan be overridden by environment variables.\n\ne.g.,\n\n```python\nimport os\nfrom waddle import Bunch\nos.environ['FTP_PASSWORD'] = 'password'\nconfig = {\n 'ftp': {\n 'host': '127.0.0.1',\n 'user': 'user',\n }\n}\nconfig = Bunch(config)\nenv = config.env()\nassert env('FTP_PASSWORD') == 'password'\nassert env('FTP_HOST') == '127.0.0.1'\n```\n\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/angry-penguins/waddle", "keywords": "aws python parameter-store kms", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "waddle", "package_url": "https://pypi.org/project/waddle/", "platform": "", "project_url": "https://pypi.org/project/waddle/", "project_urls": { "Homepage": "https://github.com/angry-penguins/waddle" }, "release_url": "https://pypi.org/project/waddle/0.8/", "requires_dist": [ "pyyaml", "boto3 (>=1.9.0)", "click (>=7.0)", "murmuration (>=0.5)", "ruamel.yaml (>=0.15.87)", "halo (>=0.0.26)" ], "requires_python": "", "summary": "A pathy wrapper around aws parameter store", "version": "0.8" }, "last_serial": 5691904, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "799546de93bd524ede1b73c022e51c51", "sha256": "c92a59766e919c451f4e6cc7192680a58fc6cbe5757f4ac352c044d72f958f8b" }, "downloads": -1, "filename": "waddle-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "799546de93bd524ede1b73c022e51c51", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8858, "upload_time": "2019-02-14T07:52:58", "url": "https://files.pythonhosted.org/packages/61/69/447157babda74953b32c688e77cb19d22eab27106f4be870c67f47299e94/waddle-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3e2b489259ef2500dff379761663f2b7", "sha256": "5d38f2ea2c3512ea5f82d090b98ab98a46ef74a4c40e2d582eb1477bddb8c1d0" }, "downloads": -1, "filename": "waddle-0.1.tar.gz", "has_sig": false, "md5_digest": "3e2b489259ef2500dff379761663f2b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7480, "upload_time": "2019-02-14T07:53:00", "url": "https://files.pythonhosted.org/packages/b1/54/5645c2690ff4460229a80d106277b4e8dbc14442a8967730b5660bb07112/waddle-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "b5e40827002810afa322de116b9e35f4", "sha256": "51ff42f2c88198b93abad0fac995b962776e28fd6ebf9927ef90fbbf65ae4291" }, "downloads": -1, "filename": "waddle-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b5e40827002810afa322de116b9e35f4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9004, "upload_time": "2019-02-18T22:27:50", "url": "https://files.pythonhosted.org/packages/f8/97/356ec0cbe37567d4a01cd6102cb384923a76c8a29b809dff5a8dcae8c50c/waddle-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "333ba5a3a1b4b4917223fa43dd7709e0", "sha256": "f9ce0c0959b54fe7301a2d4965f1b089eac957a2c9525b90752bda4a14f43f35" }, "downloads": -1, "filename": "waddle-0.2.tar.gz", "has_sig": false, "md5_digest": "333ba5a3a1b4b4917223fa43dd7709e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8016, "upload_time": "2019-02-18T22:27:51", "url": "https://files.pythonhosted.org/packages/5a/cc/e5ffddd9043f6be3ddbceb5800ee0e8f08537ef7bb9266fc7e08927e0944/waddle-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "5f5c1d7f957b89690aa2ef15b6a6a51d", "sha256": "87acbd4b61317de1be87e394b8b53ee8b9d9ec42694fed33ebba520ec9455723" }, "downloads": -1, "filename": "waddle-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5f5c1d7f957b89690aa2ef15b6a6a51d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9236, "upload_time": "2019-02-19T05:39:35", "url": "https://files.pythonhosted.org/packages/e2/19/0923a279572ef0d1dcaab9d3fbe091ddc7246c14e0f60d575105110171b4/waddle-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c410ccb7cf29393f2036e762e061e093", "sha256": "88ec6be1fbe1174e517bb0bad2c47842d9ed7f004d071c1ade2bddd78f73af72" }, "downloads": -1, "filename": "waddle-0.3.tar.gz", "has_sig": false, "md5_digest": "c410ccb7cf29393f2036e762e061e093", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8331, "upload_time": "2019-02-19T05:39:36", "url": "https://files.pythonhosted.org/packages/ab/e7/048fabeaeb9ec8d8a6ca97a60ca0f9d05d31d256d8304cbbaa62e13a19a3/waddle-0.3.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "cce6261f836617e52eb6bca41861c331", "sha256": "22d2d6ed08d19351d319e9d295740f7efa7e0cb85ab2f0428abcfaad841172ad" }, "downloads": -1, "filename": "waddle-0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "cce6261f836617e52eb6bca41861c331", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10724, "upload_time": "2019-06-06T07:58:39", "url": "https://files.pythonhosted.org/packages/1c/39/f6a1657addfbadb3a0cec3734791be045d2d878675e4bd7c1b7d208c74ad/waddle-0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4e4e691f3550dd671360a3cbf45e827f", "sha256": "70a3c8672ed96f64606eb26aebf0ca6fd0f162f94a7c44b3f21f8ae0decf02be" }, "downloads": -1, "filename": "waddle-0.5.tar.gz", "has_sig": false, "md5_digest": "4e4e691f3550dd671360a3cbf45e827f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10685, "upload_time": "2019-06-06T07:58:41", "url": "https://files.pythonhosted.org/packages/db/d3/03fd6ffd7ac86a6d657159e432200a1ed25f0b6ccd57f897fa6ee2c0f3c3/waddle-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "503a1a44f310e3dd96efca27e59c37f1", "sha256": "e975dc574b57bc0e6b34c6754e2931fce13b78e92d1806acb0268a58b40c407d" }, "downloads": -1, "filename": "waddle-0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "503a1a44f310e3dd96efca27e59c37f1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10741, "upload_time": "2019-06-08T17:42:50", "url": "https://files.pythonhosted.org/packages/a2/bc/d4ee26d1af770b160993efdf501fc6137b37f214b916658e786746969f0a/waddle-0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d2ba4113274194912ebc34ddc0138d78", "sha256": "0829afb4b9e349f03e67fecdeccbe9cb82f5b94bdc0d1beed72a7ae4810a26a7" }, "downloads": -1, "filename": "waddle-0.6.tar.gz", "has_sig": false, "md5_digest": "d2ba4113274194912ebc34ddc0138d78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10712, "upload_time": "2019-06-08T17:42:51", "url": "https://files.pythonhosted.org/packages/da/9c/ffdfa709baf19c241c77dbd399ee4f3ebb554ed3bf74ca0d5aabc3998179/waddle-0.6.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "fed74d3eaa7c1555b480a9dbbf9202d0", "sha256": "d127ea9cf11a97da2088bfc785f24e51b560b1a805e670d2984ec6a7c6bc1871" }, "downloads": -1, "filename": "waddle-0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "fed74d3eaa7c1555b480a9dbbf9202d0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10836, "upload_time": "2019-08-17T15:24:18", "url": "https://files.pythonhosted.org/packages/a1/10/83ffee9f5f99acf407e4289ffcd7186b7ab34ff0dd271159185faf6ed759/waddle-0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "249e389fb59987f644665d651b6b0db6", "sha256": "14b3a04be75a73ff2161e0820a7cbef9072f6e1e7bb20d56e72beb0fafe6e095" }, "downloads": -1, "filename": "waddle-0.8.tar.gz", "has_sig": false, "md5_digest": "249e389fb59987f644665d651b6b0db6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10768, "upload_time": "2019-08-17T15:24:20", "url": "https://files.pythonhosted.org/packages/9d/77/a5b464360d95d5b9be64a51b4bd1c214cbbedd01a4f970d54193a463bb19/waddle-0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fed74d3eaa7c1555b480a9dbbf9202d0", "sha256": "d127ea9cf11a97da2088bfc785f24e51b560b1a805e670d2984ec6a7c6bc1871" }, "downloads": -1, "filename": "waddle-0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "fed74d3eaa7c1555b480a9dbbf9202d0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10836, "upload_time": "2019-08-17T15:24:18", "url": "https://files.pythonhosted.org/packages/a1/10/83ffee9f5f99acf407e4289ffcd7186b7ab34ff0dd271159185faf6ed759/waddle-0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "249e389fb59987f644665d651b6b0db6", "sha256": "14b3a04be75a73ff2161e0820a7cbef9072f6e1e7bb20d56e72beb0fafe6e095" }, "downloads": -1, "filename": "waddle-0.8.tar.gz", "has_sig": false, "md5_digest": "249e389fb59987f644665d651b6b0db6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10768, "upload_time": "2019-08-17T15:24:20", "url": "https://files.pythonhosted.org/packages/9d/77/a5b464360d95d5b9be64a51b4bd1c214cbbedd01a4f970d54193a463bb19/waddle-0.8.tar.gz" } ] }