{ "info": { "author": "Dave Smith", "author_email": "dave.k.smith@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: Microsoft :: Windows :: Windows 10", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# import-ready\n[![image](https://img.shields.io/github/license/dksmiffs/import-ready.svg)](https://github.com/dksmiffs/import-ready)\n[![image](https://img.shields.io/github/release/dksmiffs/import-ready.svg)](https://github.com/dksmiffs/import-ready/releases)\n[![image](https://img.shields.io/pypi/v/import-ready.svg)](https://pypi.org/project/import-ready/)\n[![image](https://img.shields.io/travis/dksmiffs/import-ready.svg)](https://travis-ci.org/dksmiffs/import-ready)\n[![image](https://img.shields.io/codecov/c/github/dksmiffs/import-ready.svg)](https://codecov.io/gh/dksmiffs/import-ready)\n[![image](https://img.shields.io/codacy/grade/d02f4f80df0445738821c692f4bbe16f.svg)](https://app.codacy.com/project/dksmiffs/import-ready/dashboard)\n\nThis repository demonstrates steps needed to publish an importable Python package first to [TestPyPI][1], and second to [PyPI][7]. If this demonstration deviates from best practice in any way, please submit an [issue][8] on GitHub.\n\nInside _import-ready_ is a package called `huntsville_havoc` that divulges a couple of bona fide secrets that most diehard SPHL [Huntsville Havoc][6] fans don't know.\n\n## Prepare the Package\n1. [Prepare your environment][2] before installing Python packages.\n2. Update version in setup.py per [semantic versioning][3] guidance.\n\n## Test in Development Environment\nRun as follows from the top level directory in a clean venv with [pip-tools][12] installed:\n
python -m piptools compile --upgrade --generate-hashes dev-requirements.in\npython -m piptools sync dev-requirements.txt\npython -m pytest -s tests
\n\n## Publish to TestPyPI\n1. Git commit, tag, & push all desired edits for release.\n2. Create a new release in GitHub to mirror your new version.\n3. [Generate distribution archives][4] for your package.\n4. [Upload your package][5] to TestPyPI.\n\n## Test the TestPyPI-Published Package\nRun as follows from the `tests` directory in another clean venv with [pip-tools][12] installed:\n
TEST_PYPI_FLAG='--extra-index-url https://test.pypi.org/simple/'\npython -m piptools compile --upgrade --generate-hashes $TEST_PYPI_FLAG \\\n      --output-file testpypi-requirements.txt pub-requirements.in\npython -m piptools sync $TEST_PYPI_FLAG testpypi-requirements.txt\npython -m pytest -s
\n\n## Publish to PyPI\nAfter passing the above tests, [upload your package][9] to PyPI.\n\n## Test the PyPI-Published Package\nRun as follows from the `tests` directory in _yet another_ clean venv with [pip-tools][12] installed:\n
python -m piptools compile --upgrade --generate-hashes \\\n      --output-file pypi-requirements.txt pub-requirements.in\npython -m piptools sync pypi-requirements.txt\npython -m pytest -s
\n\n## [Thanks][11]\n\n## License\n[MIT][10]\n\n[1]: https://test.pypi.org/\n[2]: https://packaging.python.org/tutorials/installing-packages/#requirements-for-installing-packages\n[3]: https://semver.org/\n[4]: https://packaging.python.org/tutorials/packaging-projects/#generating-distribution-archives\n[5]: https://packaging.python.org/tutorials/packaging-projects/#uploading-the-distribution-archives\n[6]: http://huntsvillehavoc.com/view/huntsvillehavoc\n[7]: https://pypi.org/\n[8]: https://github.com/dksmiffs/import-ready/issues\n[9]: https://packaging.python.org/tutorials/packaging-projects/#next-steps\n[10]: https://gitlab.com/dave.k.smith/import-ready/raw/master/LICENSE\n[11]: https://github.com/dksmiffs/import-ready/blob/master/THANKS.md\n[12]: https://github.com/jazzband/pip-tools\n[13]: https://github.com/jazzband/pip-tools/issues/638\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://gitlab.com/dave.k.smith/import-ready", "keywords": "import package huntsville havoc testpypi travisci pytest codecov codacy", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "import-ready", "package_url": "https://pypi.org/project/import-ready/", "platform": "", "project_url": "https://pypi.org/project/import-ready/", "project_urls": { "Homepage": "https://gitlab.com/dave.k.smith/import-ready" }, "release_url": "https://pypi.org/project/import-ready/0.12.0/", "requires_dist": [ "pytest" ], "requires_python": "", "summary": "A simple importable Python package", "version": "0.12.0" }, "last_serial": 5527130, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "142f3e1e33bc46f1172c03985787db7a", "sha256": "9e291ce8277eca91a6899b101ea942f911ea770296e896bc696a430849a22481" }, "downloads": -1, "filename": "import_ready-0.10.0-py3-none-any.whl", "has_sig": false, "md5_digest": "142f3e1e33bc46f1172c03985787db7a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4049, "upload_time": "2019-06-29T19:24:24", "url": "https://files.pythonhosted.org/packages/ba/0d/dc260aba4ec0bf425ccfcd6ac18dbef339aeb53761a394b72e02c1b9147f/import_ready-0.10.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ee9fbea8460fe091c350bc22b4904385", "sha256": "9d708170569d3d28bc614dabfa973592e821f8e7b2711f0897205a5af0c326e2" }, "downloads": -1, "filename": "import-ready-0.10.0.tar.gz", "has_sig": false, "md5_digest": "ee9fbea8460fe091c350bc22b4904385", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3945, "upload_time": "2019-06-29T19:24:25", "url": "https://files.pythonhosted.org/packages/43/9b/976f09af40cea80902996bc4948d7861e46502b072ff1e43e3f975aa6577/import-ready-0.10.0.tar.gz" } ], "0.10.2": [ { "comment_text": "", "digests": { "md5": "643171870604bfd2c4316aa535ffdb94", "sha256": "ffb302d9ec5003da2eb22310fdf3e45f0654beb48014148b6ddcf1ebfaefea12" }, "downloads": -1, "filename": "import_ready-0.10.2-py3-none-any.whl", "has_sig": false, "md5_digest": "643171870604bfd2c4316aa535ffdb94", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4048, "upload_time": "2019-06-29T19:41:37", "url": "https://files.pythonhosted.org/packages/b7/e3/53c738428e247368979d46f893e613d2481eea28c4e1537fcc7b0e261f07/import_ready-0.10.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "77266488d1ff413f5bfc8259ad532d41", "sha256": "e00922b5ca936651efa1444560ccc6b9ef690ded692c60d5372be3127f4bb61b" }, "downloads": -1, "filename": "import-ready-0.10.2.tar.gz", "has_sig": false, "md5_digest": "77266488d1ff413f5bfc8259ad532d41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3945, "upload_time": "2019-06-29T19:41:38", "url": "https://files.pythonhosted.org/packages/72/bd/3901c95e6ea839128fbba65a77cee0589b26cd91cf059b2d1fe7fbd376eb/import-ready-0.10.2.tar.gz" } ], "0.10.3": [ { "comment_text": "", "digests": { "md5": "821e60339648ebee1bd530f0a5543465", "sha256": "b315d7609357e93573c671312dc6032ac9c3a94f26b9e4c155ae8d056bb34e46" }, "downloads": -1, "filename": "import_ready-0.10.3-py3-none-any.whl", "has_sig": false, "md5_digest": "821e60339648ebee1bd530f0a5543465", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4046, "upload_time": "2019-06-29T21:48:29", "url": "https://files.pythonhosted.org/packages/5b/8d/eff95a7584973542d00dab4cd770a0a7c7c31a6219020b105b5db3a40724/import_ready-0.10.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e2729c01daa96e0461b53db037863d5a", "sha256": "2bd4723991fa4ddb333fd3d7f0ba448a7353a7a09c28cd444de9b1b4e4ed6c63" }, "downloads": -1, "filename": "import-ready-0.10.3.tar.gz", "has_sig": false, "md5_digest": "e2729c01daa96e0461b53db037863d5a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3945, "upload_time": "2019-06-29T21:48:30", "url": "https://files.pythonhosted.org/packages/17/cf/b783a08c0b57748b896f72172063b5c8ad83333595e787cb2c5cf6d50099/import-ready-0.10.3.tar.gz" } ], "0.10.4": [ { "comment_text": "", "digests": { "md5": "09ece1137236f0d84a096cdca8860872", "sha256": "37d7339a79e7731c9a6fc8815b7826167f7e4af7b88bba615cae2c35ec468da9" }, "downloads": -1, "filename": "import_ready-0.10.4-py3-none-any.whl", "has_sig": false, "md5_digest": "09ece1137236f0d84a096cdca8860872", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3937, "upload_time": "2019-06-30T14:56:03", "url": "https://files.pythonhosted.org/packages/7f/b2/5daa73949c589c42c7266daa0102f2ae3d674505c4ea1242e9e122b5879c/import_ready-0.10.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "230b51917829a5cccc046381702e1226", "sha256": "a34e31347fcf03e8be0d1f66d332b0d9fb8f1a62f67f02f0beadab64f524150e" }, "downloads": -1, "filename": "import-ready-0.10.4.tar.gz", "has_sig": false, "md5_digest": "230b51917829a5cccc046381702e1226", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3754, "upload_time": "2019-06-30T14:56:05", "url": "https://files.pythonhosted.org/packages/8d/ca/9899308b0c9bbcbb45ecddcf757c6591dc5301e42c6ce71f31d9ecd4e058/import-ready-0.10.4.tar.gz" } ], "0.11.1": [ { "comment_text": "", "digests": { "md5": "102d318a847a763332104d6eff84efcb", "sha256": "5dd5c635d42448c7d457ce402e3cc155cff62f352da65e11d588aaea323c69b3" }, "downloads": -1, "filename": "import_ready-0.11.1-py3-none-any.whl", "has_sig": false, "md5_digest": "102d318a847a763332104d6eff84efcb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3971, "upload_time": "2019-07-03T00:23:37", "url": "https://files.pythonhosted.org/packages/88/4b/3e5fa4725b8aef0703e992662f1f44c9382be3daa23f3bf9e14ac7222ad6/import_ready-0.11.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "97291281bab8855ae250f8ffea52134d", "sha256": "ba0d551b117bf7f8f722a2c105ff9eb060b5e236d34c686a8d9b5238dd833865" }, "downloads": -1, "filename": "import-ready-0.11.1.tar.gz", "has_sig": false, "md5_digest": "97291281bab8855ae250f8ffea52134d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3793, "upload_time": "2019-07-03T00:23:38", "url": "https://files.pythonhosted.org/packages/7d/0c/129616dd31d08fb3ee7663589da2feb686396a08c3dd603d331334f1be95/import-ready-0.11.1.tar.gz" } ], "0.11.3": [ { "comment_text": "", "digests": { "md5": "8007bb6e017218e63f40657b7c7bc485", "sha256": "794c1598416cd1211ff05c7247609c41e6e3d59745016d2ae77df1b56d54eb9d" }, "downloads": -1, "filename": "import_ready-0.11.3-py3-none-any.whl", "has_sig": false, "md5_digest": "8007bb6e017218e63f40657b7c7bc485", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3982, "upload_time": "2019-07-12T20:43:48", "url": "https://files.pythonhosted.org/packages/5c/c2/7ff8735bb094010a9a1a003133311ee3616b0cfc0fe2f11f70e32e7a4f2a/import_ready-0.11.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "01e6c96a3c247edb7f94d7ed9055812e", "sha256": "dcabe4dd8143b900da39750e6056a049295b27a38f02fa9a6ff6686e9c752f40" }, "downloads": -1, "filename": "import-ready-0.11.3.tar.gz", "has_sig": false, "md5_digest": "01e6c96a3c247edb7f94d7ed9055812e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3813, "upload_time": "2019-07-12T20:43:49", "url": "https://files.pythonhosted.org/packages/40/30/df339996a821ba8e36576051d6a67b58d28e30ae35f3c37ccffcd64c9b68/import-ready-0.11.3.tar.gz" } ], "0.12.0": [ { "comment_text": "", "digests": { "md5": "8b843aa2ad479e5cd563308f404c7a35", "sha256": "082a0107cbc41efef7e4dbc07d8c33ea2ee453a6329c1630cb31671b350eae74" }, "downloads": -1, "filename": "import_ready-0.12.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8b843aa2ad479e5cd563308f404c7a35", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4017, "upload_time": "2019-07-13T15:02:44", "url": "https://files.pythonhosted.org/packages/37/65/9eb32acc15a2559b8a5f229b0974e05f2f5172a2242800d35b37aeaa9ecf/import_ready-0.12.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "92812d66b8056beefbde04c72c4f416d", "sha256": "ef690e05da568ea4e7aa389d6884aa10931ef5935992b5dc26ff6f9492479ebc" }, "downloads": -1, "filename": "import-ready-0.12.0.tar.gz", "has_sig": false, "md5_digest": "92812d66b8056beefbde04c72c4f416d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3899, "upload_time": "2019-07-13T15:02:45", "url": "https://files.pythonhosted.org/packages/21/b9/30b75564bf575821c0271722d3dcf3881169440eeaae758bbc27a9cec871/import-ready-0.12.0.tar.gz" } ], "0.9.8": [ { "comment_text": "", "digests": { "md5": "d96eaf044826fe3dcef729c180b54d2f", "sha256": "99d50f32a820c16f68395b800d0b583ab56cb7437d19a9d89625b9f339e851a8" }, "downloads": -1, "filename": "import_ready-0.9.8-py3-none-any.whl", "has_sig": false, "md5_digest": "d96eaf044826fe3dcef729c180b54d2f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4247, "upload_time": "2019-06-16T04:49:55", "url": "https://files.pythonhosted.org/packages/da/f4/776ee73cd9ad9aae36f1025dd2bd9080eadc4ab02e4f95fdda6fa3bdf2d5/import_ready-0.9.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "75549a710c4096d199247bd6beb0f3b7", "sha256": "42dd80c4b4652935dcbdff28338a2e27b9947d4897b284e8433c01442ca17fd4" }, "downloads": -1, "filename": "import-ready-0.9.8.tar.gz", "has_sig": false, "md5_digest": "75549a710c4096d199247bd6beb0f3b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3636, "upload_time": "2019-06-16T04:49:57", "url": "https://files.pythonhosted.org/packages/10/28/281e5bfc303c86d8285a00d2e2228cb9932a38389c782518a42615e674e5/import-ready-0.9.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8b843aa2ad479e5cd563308f404c7a35", "sha256": "082a0107cbc41efef7e4dbc07d8c33ea2ee453a6329c1630cb31671b350eae74" }, "downloads": -1, "filename": "import_ready-0.12.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8b843aa2ad479e5cd563308f404c7a35", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4017, "upload_time": "2019-07-13T15:02:44", "url": "https://files.pythonhosted.org/packages/37/65/9eb32acc15a2559b8a5f229b0974e05f2f5172a2242800d35b37aeaa9ecf/import_ready-0.12.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "92812d66b8056beefbde04c72c4f416d", "sha256": "ef690e05da568ea4e7aa389d6884aa10931ef5935992b5dc26ff6f9492479ebc" }, "downloads": -1, "filename": "import-ready-0.12.0.tar.gz", "has_sig": false, "md5_digest": "92812d66b8056beefbde04c72c4f416d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3899, "upload_time": "2019-07-13T15:02:45", "url": "https://files.pythonhosted.org/packages/21/b9/30b75564bf575821c0271722d3dcf3881169440eeaae758bbc27a9cec871/import-ready-0.12.0.tar.gz" } ] }