{
"info": {
"author": "Niteo",
"author_email": "info@niteo.co",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Framework :: Pylons",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.7",
"Topic :: Internet :: WWW/HTTP",
"Topic :: Internet :: WWW/HTTP :: WSGI",
"Topic :: Software Development :: Libraries :: Python Modules"
],
"description": "pyramid_heroku\n==============\n\nIntroduction\n------------\n\npyramid_heroku is a collection of tweens and helpers to successfully run `Pyramid `_ on `Heroku `_\n\nIt provides the following:\n\n* ``ClientAddr`` tween that sets real user's IP to ``request.client_addr``\n* ``HerokuappAccess`` tween that denies access to your app's\n ``.herokuapp.com`` domain for any non-whitelisted IPs.\n* ``migrate.py`` script for automatically running alembic migrations on\n deploy.\n\n\nInstallation\n------------\n\nJust do\n\n``pip install pyramid_heroku``\n\nor\n\n``easy_install pyramid_heroku``\n\n\nCompatibility\n-------------\n\npyramid_heroku runs with pyramid>=1.7 and python>=3.6.\nOther versions might also work.\n\n\nDocumentation\n-------------\n\nUsage example for tweens::\n\n def main(global_config, **settings):$ cat .heroku/release.sh\n config = Configurator(settings=settings)\n config.include('pyramid_heroku.client_addr')\n config.include('pyramid_heroku.herokuapp_access')\n return config.make_wsgi_app()\n\nThe `pyramid_heroku.herokuapp_access` tween depends on\n`pyramid_heroku.client_addr` tween and it requires you to list whitelisted IPs\nin the `pyramid_heroku.herokuapp_whitelist` setting.\n\nUsage example for automatic alembic migration script::\n\n $ cat .heroku/release.sh\n #!/usr/bin/env bash\n\n set -e\n\n echo \"Running migrations\"\n python -m pyramid_heroku.migrate my_app etc/production.ini\n\n echo \"DONE!\"\n\nFor migration script to work, you need to set the ``MIGRATE_API_SECRET_HEROKU``\nenv var in Heroku. This allows the migration script to use the Heroku API.\n\nSee tests for more examples.\n\nIf you use structlog, add the following configuration setting to your INI file to enable structlog-like logging::\n\n pyramid_heroku.structlog = true\n\n\nReleasing\n---------\n\n#. Update CHANGES.rst.\n#. Update setup.py version.\n#. Run ``pipenv run python setup.py check -rs``.\n#. Run ``pipenv run python setup.py sdist upload``.\n\n\nWe're hiring!\n-------------\n\nAt Niteo we regularly contribute back to the Open Source community. If you do too, we'd like to invite you to `join our team\n`_!\n\n=======\nChanges\n=======\n\n0.6.0\n-----\n\n* Update how alembic should be called in migrate.py. This is to reflect the\n latest changes to pyramid_deferred_sqla:\n https://github.com/niteoweb/pyramid_deferred_sqla/commit/b963702cab3934116fb00b6ef186959bc1627026\n [zupo]\n\n\n0.5.0\n-----\n\n * Prefer empty string than None. `{'VAL': '${VAR}'}` will expand into\n `{'VAL': ''}` instead of `{'VAL': None}` if the value of `VAR` is not exported or\n is an empty string.\n [sayanarijit]\n\n * To enforce that `$VAR` must be set, `${VAR:?custom error message}` syntax can be used.\n [sayanarijit]\n\n0.4.0\n-----\n\n * Supports bash style environment variable expansion.\n e.g. to declare default value, use `${DATABASE_URL:-sqlite:///database.db}`\n [sayanarijit]\n\n\n0.3.2\n-----\n\n * Shell now prints stderr/stdout even on non-zero exit code.\n [iElectric]\n\n\n0.3.1\n-----\n\n * Fix auth bug in migrate.py.\n [zupo]\n\n\n0.3\n---\n\n * Drop support for zc.buildout environments.\n [zupo]\n\n\n0.2\n---\n\n* Expand all environment variables in the settings dictionary. This allows you\n to have, for example `${DATABASE_URL}` to get db connection string from\n environment into your `production.ini` file.\n [zupo]\n\n* Use pipenv for setting up development.\n [zupo]\n\n* Add basic type hinting.\n [zupo]\n\n* Drop support for Python versions older than 3.7.\n [zupo]\n\n\n0.1.5\n-----\n\n* Brown bag release.\n [karantan]\n\n\n0.1.4\n-----\n\n* Fix return value in migrate.shell. `subprocess.check_output` changed in\n python 3.6 and is now returning byte and not str.\n [karantan]\n\n0.1.3\n-----\n\n* Provided default values for migrate.py - https://github.com/niteoweb/pyramid_heroku/issues/2\n [enkidulan]\n\n0.1.2\n-----\n\n* The request.client_addr cannot be set directly, so we need to go around.\n [zupo]\n\n\n0.1.1\n-----\n\n* Fix tween paths.\n [zupo]\n\n\n\n0.1\n---\n\n* Initial release.\n [dz0ny, zupo]\n\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/niteoweb/pyramid_heroku",
"keywords": "pyramid heroku pylons web",
"license": "BSD",
"maintainer": "",
"maintainer_email": "",
"name": "pyramid_heroku",
"package_url": "https://pypi.org/project/pyramid_heroku/",
"platform": "",
"project_url": "https://pypi.org/project/pyramid_heroku/",
"project_urls": {
"Homepage": "https://github.com/niteoweb/pyramid_heroku"
},
"release_url": "https://pypi.org/project/pyramid_heroku/0.6.0/",
"requires_dist": null,
"requires_python": "",
"summary": "A bunch of helpers for successfully running Pyramid on Heroku.",
"version": "0.6.0"
},
"last_serial": 5709597,
"releases": {
"0.1": [
{
"comment_text": "",
"digests": {
"md5": "d50a07f97dd5181164290a4fccd68e07",
"sha256": "bd61784ea2ce16031302ab033cd71d1619ea60c9071cb2ab5166adf316ab43af"
},
"downloads": -1,
"filename": "pyramid_heroku-0.1.tar.gz",
"has_sig": false,
"md5_digest": "d50a07f97dd5181164290a4fccd68e07",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6075,
"upload_time": "2017-08-03T11:21:20",
"url": "https://files.pythonhosted.org/packages/c8/ba/b9567eb64b015a3114f189106cf02d9934c18840e967290344012cd2b3f3/pyramid_heroku-0.1.tar.gz"
}
],
"0.1.1": [
{
"comment_text": "",
"digests": {
"md5": "401fe7e7a10530b30686def1c556474e",
"sha256": "641eb0c7f1fa93a5301e93659cf1e2c9a6ff70d89036cceb315acb12a1244879"
},
"downloads": -1,
"filename": "pyramid_heroku-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "401fe7e7a10530b30686def1c556474e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6113,
"upload_time": "2017-08-03T11:33:05",
"url": "https://files.pythonhosted.org/packages/a3/15/ae1b085878318be340a0c5ddc1f2bc95cac8e448b8235543b4a03b0a19cb/pyramid_heroku-0.1.1.tar.gz"
}
],
"0.1.2": [
{
"comment_text": "",
"digests": {
"md5": "474a889e92729843b56ef74feef51552",
"sha256": "99dd98a9bbb5ff7fad5d98358f04a34fdf0cc2822dbcf77ea779f5614dff757e"
},
"downloads": -1,
"filename": "pyramid_heroku-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "474a889e92729843b56ef74feef51552",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6211,
"upload_time": "2017-08-03T12:23:31",
"url": "https://files.pythonhosted.org/packages/51/da/18e8761b34e5f9193b1698e88b533e121e676228786a8e1e814af91cefb9/pyramid_heroku-0.1.2.tar.gz"
}
],
"0.1.3": [
{
"comment_text": "",
"digests": {
"md5": "c0698232c9782c53ef373e366b8e1ab7",
"sha256": "c6416e8b3156accdfccb0fd63e2d68454758c55baa8221ba5bdb22e7863b51bb"
},
"downloads": -1,
"filename": "pyramid_heroku-0.1.3.zip",
"has_sig": false,
"md5_digest": "c0698232c9782c53ef373e366b8e1ab7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15206,
"upload_time": "2017-08-07T16:15:13",
"url": "https://files.pythonhosted.org/packages/3f/64/dfd862c5ab6831cb52a87909747591ec7b55f03c9bc36b700359b1903123/pyramid_heroku-0.1.3.zip"
}
],
"0.1.4": [
{
"comment_text": "",
"digests": {
"md5": "26e6e2361dd676ce7075300a7c0e1b56",
"sha256": "6659bfca7c5c2a7a857641c7c38c1bad76367689705a32f16d1fe64d7c634b29"
},
"downloads": -1,
"filename": "pyramid_heroku-0.1.4.tar.gz",
"has_sig": false,
"md5_digest": "26e6e2361dd676ce7075300a7c0e1b56",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6493,
"upload_time": "2018-07-09T14:12:00",
"url": "https://files.pythonhosted.org/packages/e1/02/f38bace5fc1db23aecc635f626fccc2dfbef74e4c670e7471cac4d2d6bf4/pyramid_heroku-0.1.4.tar.gz"
}
],
"0.1.5": [
{
"comment_text": "",
"digests": {
"md5": "927ea9ea93e39a742b0deb7bf3e96f81",
"sha256": "65af26d19556e8af59c51fa1e58f4818590388ce8485c9d798c8a30002ff056d"
},
"downloads": -1,
"filename": "pyramid_heroku-0.1.5.tar.gz",
"has_sig": false,
"md5_digest": "927ea9ea93e39a742b0deb7bf3e96f81",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6523,
"upload_time": "2018-07-09T14:45:34",
"url": "https://files.pythonhosted.org/packages/09/96/32fe960b3bf7cf3e2692a447a412fb8f43b8f1eb477c48be9ac8f369e33b/pyramid_heroku-0.1.5.tar.gz"
}
],
"0.2": [
{
"comment_text": "",
"digests": {
"md5": "793049163fe4134257ca39c1eba406bf",
"sha256": "10e81a44be1276f6464402a337331ec69a37190e84db79d6542f63d8f4d288ad"
},
"downloads": -1,
"filename": "pyramid_heroku-0.2.tar.gz",
"has_sig": false,
"md5_digest": "793049163fe4134257ca39c1eba406bf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7169,
"upload_time": "2018-07-26T07:44:45",
"url": "https://files.pythonhosted.org/packages/4e/6e/a9b183b3be04f8fb357c18b7ebcf2ae1fe2f9473bae85b214eb31fd93480/pyramid_heroku-0.2.tar.gz"
}
],
"0.3": [
{
"comment_text": "",
"digests": {
"md5": "c87cf4ed3876b2c5fb9d4944d6b9bf29",
"sha256": "3d4a73047234667d26d3ea7c43af16b6dccd9114ad9d92543c91ef937a17f6d5"
},
"downloads": -1,
"filename": "pyramid_heroku-0.3.tar.gz",
"has_sig": false,
"md5_digest": "c87cf4ed3876b2c5fb9d4944d6b9bf29",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7203,
"upload_time": "2018-07-26T16:49:52",
"url": "https://files.pythonhosted.org/packages/a3/f4/d9b945f23cdbc85639cd73e270de9e65843f707c46755b198ba621245743/pyramid_heroku-0.3.tar.gz"
}
],
"0.3.1": [
{
"comment_text": "",
"digests": {
"md5": "1ab35278904998a3ab002b83754474b3",
"sha256": "ec1d71d993fc4e58d4a26be9b0c547f30ab466c1e647684b62325c9c202c6d44"
},
"downloads": -1,
"filename": "pyramid_heroku-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "1ab35278904998a3ab002b83754474b3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7244,
"upload_time": "2018-07-26T17:49:51",
"url": "https://files.pythonhosted.org/packages/da/78/5ccdd27393a723ee192f903c8c416750fc0e3c33a398d5de2c074b5d9adb/pyramid_heroku-0.3.1.tar.gz"
}
],
"0.3.2": [
{
"comment_text": "",
"digests": {
"md5": "919bd85983be1826c272487147dd3d66",
"sha256": "29775745ea11c4184eb78ce7431f7d0beb5a28a6e1fa7973685dff26cd97308e"
},
"downloads": -1,
"filename": "pyramid_heroku-0.3.2.tar.gz",
"has_sig": false,
"md5_digest": "919bd85983be1826c272487147dd3d66",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7335,
"upload_time": "2018-08-17T13:17:02",
"url": "https://files.pythonhosted.org/packages/99/e2/1e0b429bbca9192f53af27da9b536c1eca178ee5c83ea31e6d7611414354/pyramid_heroku-0.3.2.tar.gz"
}
],
"0.4.0": [
{
"comment_text": "",
"digests": {
"md5": "da26c1f2145fe3310a80fad73e311aed",
"sha256": "ee20238f94a5834f57f49cd049fc52a203f8f363f9ef877a29098cf3fbe14d82"
},
"downloads": -1,
"filename": "pyramid_heroku-0.4.0.tar.gz",
"has_sig": false,
"md5_digest": "da26c1f2145fe3310a80fad73e311aed",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7614,
"upload_time": "2019-05-31T14:12:12",
"url": "https://files.pythonhosted.org/packages/1a/b4/5257368ec9daf39fce30a6d7add723c5a4b3b43586d33a77727d44d3aca4/pyramid_heroku-0.4.0.tar.gz"
}
],
"0.5.0": [
{
"comment_text": "",
"digests": {
"md5": "a88ef48f849dffdb6820cc869aa0faaa",
"sha256": "e38b09c8ff88a9377e0a685185b1497a4a2171d43efbb091beefb12678763f7b"
},
"downloads": -1,
"filename": "pyramid_heroku-0.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a88ef48f849dffdb6820cc869aa0faaa",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 8666,
"upload_time": "2019-06-27T05:45:44",
"url": "https://files.pythonhosted.org/packages/b0/f7/b37b771f10af41537c706fa67260e4d785bbfeb0539a47c7f9faf51d560b/pyramid_heroku-0.5.0-py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "ca688c703f17c57f237e6a90238e8e22",
"sha256": "e8c4a1e3381562dd4e0f7c4a47019222b9e1f9332cc165e28f2ae86c697311b1"
},
"downloads": -1,
"filename": "pyramid_heroku-0.5.0.tar.gz",
"has_sig": false,
"md5_digest": "ca688c703f17c57f237e6a90238e8e22",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7767,
"upload_time": "2019-06-27T05:45:45",
"url": "https://files.pythonhosted.org/packages/cd/e5/64bd2312100e7b631218f655955e31f49a32f2ce60bcd8fee7b99f7270a7/pyramid_heroku-0.5.0.tar.gz"
}
],
"0.6.0": [
{
"comment_text": "",
"digests": {
"md5": "6deec99a89157dea4ea7911ce72a8913",
"sha256": "d5eaaa19ed286f7b54499cea0349403ff7a5d50398fa8699482b2dcd77e75311"
},
"downloads": -1,
"filename": "pyramid_heroku-0.6.0.tar.gz",
"has_sig": false,
"md5_digest": "6deec99a89157dea4ea7911ce72a8913",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7883,
"upload_time": "2019-08-21T13:03:19",
"url": "https://files.pythonhosted.org/packages/a1/f5/79c5c8d6c4adb47dd2ff07a54295c43c72b3190abe87e93d4fb2534743ae/pyramid_heroku-0.6.0.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "6deec99a89157dea4ea7911ce72a8913",
"sha256": "d5eaaa19ed286f7b54499cea0349403ff7a5d50398fa8699482b2dcd77e75311"
},
"downloads": -1,
"filename": "pyramid_heroku-0.6.0.tar.gz",
"has_sig": false,
"md5_digest": "6deec99a89157dea4ea7911ce72a8913",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7883,
"upload_time": "2019-08-21T13:03:19",
"url": "https://files.pythonhosted.org/packages/a1/f5/79c5c8d6c4adb47dd2ff07a54295c43c72b3190abe87e93d4fb2534743ae/pyramid_heroku-0.6.0.tar.gz"
}
]
}