{ "info": { "author": "Matt Yan", "author_email": "syan4@ualberta.ca", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Topic :: Software Development :: Build Tools" ], "description": "# Pipenv-Setup\n[![travis-badge](https://travis-ci.org/Madoshakalaka/pipenv-setup.svg?branch=master)](https://travis-ci.org/Madoshakalaka/pipenv-setup)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/pipenv-setup.svg)](https://pypi.python.org/pypi/pipenv-setup/)\n[![codecov](https://codecov.io/gh/Madoshakalaka/pipenv-setup/branch/master/graph/badge.svg)](https://codecov.io/gh/Madoshakalaka/pipenv-setup)\n\nSync dependencies in Pipfile.lock to setup.py\n\nA beautiful python package development tool.\n\nNever need again to change dependencies \nmanually in `setup.py` and enjoy the same\n dependency locking\n \n Or just check whether setup.py and pipfile are consistent and sync dependency when necessary\n### Install\n\n`$ pipenv install --dev pipenv-setup`\n\nit creates command line entry `$ pipenv-setup`\n\n## Features\n### Beautiful pipenv flavored help\n\n`$ pipenv-setup`\n\n ![help](https://raw.githubusercontent.com/Madoshakalaka/pipenv-setup/master/readme_assets/help.PNG)\n\n### Sync `Pipfile.lock` to `setup.py`\n- supports assorted package configuration. You can have a pipfile as ugly as you want:\n ```Pipfile\n [package]\n requests = { extras = ['socks'] }\n records = '>0.5.0'\n django = { git = 'https://github.com/django/django.git', ref = '1.11.4', editable = true }\n \"e682b37\" = {file = \"https://github.com/divio/django-cms/archive/release/3.4.x.zip\"}\n \"e1839a8\" = {path = \".\", editable = true}\n pywinusb = { version = \"*\", os_name = \"=='nt'\", index=\"pypi\"}\n ```\n `pipenv-setup` will still figure things out:\n \n `$ pipenv-setup sync`\n ```\n package e1839a8 is local, omitted in setup.py\n setup.py successfully updated\n 23 packages from Pipfile.lock synced to setup.py\n ```\n And things will be where they should be\n ```python\n # setup.py\n install_requires=[\n \"certifi==2017.7.27.1\",\n \"chardet==3.0.4\",\n \"pywinusb==0.4.2; os_name == 'nt'\",\n ...,\n \"xlrd==1.1.0\",\n \"xlwt==1.3.0\",\n ],\n dependency_links=[\n \"git+https://github.com/django/django.git@1.11.4#egg=django\",\n \"https://github.com/divio/django-cms/archive/release/3.4.x.zip\",\n ],\n ```\n- [Blackened](https://github.com/psf/black) setup.py file.\n- [Template](https://github.com/pypa/sampleproject/blob/master/setup.py) generation with filled dependencies in the absence of a setup file.\n\n `$ pipenv-setup sync`\n ```\n setup.py not found under current directory\n Creating boilerplate setup.py...\n setup.py successfully generated under current directory\n 23 packages moved from Pipfile.lock to setup.py\n Please edit the required fields in the generated file\n ```\n### Checks Only\nrun `$ pipenv-setup check`\n- checks four items\n - local package in default pipfile packages\n - Package version requirements in `install_requires` in setup.py that potentially violates Pipfile\n - Package version requirements in `dependency_links` in setup.py that differs from Pipfile\n - Default package in pipfile missing in `install_requires` or `dependency_links` in setup.py\n- exits with non-zero code when conflict found (can be used in travis-ci)\n- here is a somewhat extreme example\n \n ```\n $ pipenv-setup check\n \n package 'numpy' has version string: >=1.2 in setup.py, which potentially violates >=1.5 in pipfile\n package 'pywinusb' has version string: ==0.4.2 in setup.py, which is disjoint from ~=0.3.0 in pipfile\n package 'records' has version string: >=0.4.2,<0.5 in setup.py, which is disjoint from >0.5.0 in pipfile\n package 'django' has branch/version 1.11.5 in dependency_links, which is different than 1.11.4 listed in pipfile\n package 'requests' in pipfile but not in install_requires\n package 'e682b37' has a url in pipfile but not in dependency_links\n (exits with 1)\n ```\n\n\n- provide `--ignore-local` flag to allow local packages in pipfile\n \n ```\n $ pipenv-setup check\n \n local package found in default dependency: e1839a8.\n Do you mean to make it dev dependency \n (exits with 1)\n ```\n\n ```\n $ pipenv-setup check --ignore-local\n\n No version conflict or missing packages/dependencies found in setup.py!\n (exits with 0)\n ```\n\n- provide `--strict` flag to only pass identical version requirements\n\n By default `pipenv-setup check` passes when the version `setup.py` specifies is \"compatible\" with `Pipfile`, i.e. is a subset of it.\n\n For example, `pipfile`: django~=1.1 `setup.py`: django==1.2 is such a case.\n \n provide `--strict` to allow only identical requirements such as `pipfile`: django~=1.1 `setup.py`: django>=1.1,<2.0\n \n Example output:\n ```\n pipenv-setup check --strict\n \n package 'pywinusb' has version string: ==0.4.2 in setup.py, which specifies a subset of * in pipfile\n package 'django' has version string: >=0.5 in setup.py, which is disjoint from ~=0.3.0 in pipfile\n package 'records' has version string: ==0.5.2 in setup.py, which specifies a subset of >0.5.0 in pipfile\n package 'requests' has version string: ==2.18.4 in setup.py, which specifies a subset of * in pipfile\n (exits with 1)\n ```\n\n## Note\n`$ pipenv-setup sync` command syncs `Pipfile.lock` to `setup.py`\n\nWhile `$ pipenv-setup check` checks conflicts between `Pipfile` and `setup.py` (not `Pipfile.lock`!) \n\n\nThis means `sync` will copy pinned versions from `Pipfile.lock`. This ensures the releases runs with almost exact the same dependencies as the dev environment.\n\nWhile `check` allows more relaxed constraints (when you have semantic versioning in pipfile)\n\nThere is no philosophy behind this asymmetry and it makes a lot of sense to allow more user choice: add `sync --pipfile` and `check --lock` functionality. I welcome a feature request or PR :)", "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/Madoshakalaka/pipenv-setup", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pipenv-setup", "package_url": "https://pypi.org/project/pipenv-setup/", "platform": "", "project_url": "https://pypi.org/project/pipenv-setup/", "project_urls": { "Bug Reports": "https://github.com/Madoshakalaka/pipenv-setup/issues", "Homepage": "https://github.com/Madoshakalaka/pipenv-setup", "Say Thanks!": "https://github.com/Madoshakalaka/pipenv-setup", "Source": "https://github.com/Madoshakalaka/pipenv-setup" }, "release_url": "https://pypi.org/project/pipenv-setup/2.1.7/", "requires_dist": null, "requires_python": ">=3.6", "summary": "sync pipfile.lock to setup.py", "version": "2.1.7" }, "last_serial": 5993497, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "c0c51374836dc3c40985d8ba90d14088", "sha256": "241e210b3b2f85e62e976c0fc97f44ec278b0cd421a84d072396230b2d7b32db" }, "downloads": -1, "filename": "pipenv-setup-1.0.0.tar.gz", "has_sig": false, "md5_digest": "c0c51374836dc3c40985d8ba90d14088", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 9459, "upload_time": "2019-08-23T14:22:29", "url": "https://files.pythonhosted.org/packages/6d/63/1eed12f009ee2b323ba844d741a935addc69bc02cec7566acc3349a1a013/pipenv-setup-1.0.0.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "1abedb360f269ca09364bc4857804547", "sha256": "00fdc7aefa5dd7f284878654e31fbae7c424c327f82679a6de0f58e81622a785" }, "downloads": -1, "filename": "pipenv-setup-1.3.2.tar.gz", "has_sig": false, "md5_digest": "1abedb360f269ca09364bc4857804547", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10294, "upload_time": "2019-08-23T16:27:01", "url": "https://files.pythonhosted.org/packages/07/d8/67eb6c202cfc948fe92731a04195d4dd0ec81b8cd9776b7e94209cc131f9/pipenv-setup-1.3.2.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "93de5657c42fd509787d363503ccb0e6", "sha256": "f65fe799297facfe5ac1b03e2f55525135e0bf521ca7c175331bb59133c302b3" }, "downloads": -1, "filename": "pipenv-setup-2.0.0.tar.gz", "has_sig": false, "md5_digest": "93de5657c42fd509787d363503ccb0e6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15771, "upload_time": "2019-08-25T08:10:04", "url": "https://files.pythonhosted.org/packages/33/8d/48f76c690bceabf84c9d62e1c392f6b2965bc8dff71c4943b73f6f705a8f/pipenv-setup-2.0.0.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "32e29e023dda8a320807b5362cf99ca8", "sha256": "ac7008b824661c3485d82f5e558a359f52b716d7174c9bf536b255e65440e889" }, "downloads": -1, "filename": "pipenv-setup-2.0.2.tar.gz", "has_sig": false, "md5_digest": "32e29e023dda8a320807b5362cf99ca8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 18039, "upload_time": "2019-08-25T08:20:45", "url": "https://files.pythonhosted.org/packages/5f/4e/4115fedc623eb6f15bc7779b122d5be17f455695b1106f710b0e4ede5a37/pipenv-setup-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "3e1fe25240c0f686ac8b409d2b8beab7", "sha256": "ad20dc03dd4a7daab54fc04af022634ff4ade369d4045950d113733d33b38bb7" }, "downloads": -1, "filename": "pipenv-setup-2.0.3.tar.gz", "has_sig": false, "md5_digest": "3e1fe25240c0f686ac8b409d2b8beab7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15824, "upload_time": "2019-08-25T08:27:07", "url": "https://files.pythonhosted.org/packages/b0/f9/66c7ac0744b0b3bcf21e6493c4b1f59ac3cf6f90a267c04c575ec9a08a96/pipenv-setup-2.0.3.tar.gz" } ], "2.0.4": [ { "comment_text": "", "digests": { "md5": "9fb3e54f286de853396b0a3659b3df0e", "sha256": "2852757cf7a67f759e3893eec9bdc5ee390573ce371bfecac8bfab573d5de368" }, "downloads": -1, "filename": "pipenv-setup-2.0.4.tar.gz", "has_sig": false, "md5_digest": "9fb3e54f286de853396b0a3659b3df0e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15830, "upload_time": "2019-08-25T08:41:18", "url": "https://files.pythonhosted.org/packages/72/11/475833bbc25d05dd12e6c6f44579a93fd0170b3db4dcb62b5eec03131aac/pipenv-setup-2.0.4.tar.gz" } ], "2.0.5": [ { "comment_text": "", "digests": { "md5": "f5a6f35490f99171deb0a5b75faeea96", "sha256": "2efa299a1d18e58b72399b772671c4fc1674a86e786cb5b78e9931a4d8bf4466" }, "downloads": -1, "filename": "pipenv-setup-2.0.5.tar.gz", "has_sig": false, "md5_digest": "f5a6f35490f99171deb0a5b75faeea96", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16287, "upload_time": "2019-08-26T05:51:25", "url": "https://files.pythonhosted.org/packages/3b/7b/b674c08d731b808187c7c5f2bf5a43877dd801f05d7063b67af2752a9423/pipenv-setup-2.0.5.tar.gz" } ], "2.0.6": [ { "comment_text": "", "digests": { "md5": "1be48f80e5d3bd1c6ddb4dd7419c6aa8", "sha256": "59340a8cb1537fb99b1aec25b6bc8c3aca5f3791fb234e71ee0d1148bbd15cb2" }, "downloads": -1, "filename": "pipenv-setup-2.0.6.tar.gz", "has_sig": false, "md5_digest": "1be48f80e5d3bd1c6ddb4dd7419c6aa8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16293, "upload_time": "2019-08-26T06:25:45", "url": "https://files.pythonhosted.org/packages/e7/25/2e7165c7880b80081f57a2243f8c651ea89c0d059d020d0fa82eac12269d/pipenv-setup-2.0.6.tar.gz" } ], "2.1.6": [ { "comment_text": "", "digests": { "md5": "8bb3d97694edcd4c31bf9235780265f5", "sha256": "9c8bb190960150dc437bcb815bfa0b916ea6b76897488694e479efe79864ee6d" }, "downloads": -1, "filename": "pipenv-setup-2.1.6.tar.gz", "has_sig": false, "md5_digest": "8bb3d97694edcd4c31bf9235780265f5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 17407, "upload_time": "2019-09-12T05:27:38", "url": "https://files.pythonhosted.org/packages/35/c5/1c702e7372fead4621a7a901ea1dea4a68a6aac5ae4f661c4cc33d64561b/pipenv-setup-2.1.6.tar.gz" } ], "2.1.7": [ { "comment_text": "", "digests": { "md5": "646ecb07947a24c34483d2cb41a5bb9f", "sha256": "22e5946f4a8adc8212b680aa2332d62803922853a3f35cf29618d25b380d5b83" }, "downloads": -1, "filename": "pipenv-setup-2.1.7.tar.gz", "has_sig": false, "md5_digest": "646ecb07947a24c34483d2cb41a5bb9f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 19697, "upload_time": "2019-10-18T03:28:29", "url": "https://files.pythonhosted.org/packages/b6/e0/c01cbebaff5190b7e9e6863e8069958efd735db576d3fc02fb5b0a42bee3/pipenv-setup-2.1.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "646ecb07947a24c34483d2cb41a5bb9f", "sha256": "22e5946f4a8adc8212b680aa2332d62803922853a3f35cf29618d25b380d5b83" }, "downloads": -1, "filename": "pipenv-setup-2.1.7.tar.gz", "has_sig": false, "md5_digest": "646ecb07947a24c34483d2cb41a5bb9f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 19697, "upload_time": "2019-10-18T03:28:29", "url": "https://files.pythonhosted.org/packages/b6/e0/c01cbebaff5190b7e9e6863e8069958efd735db576d3fc02fb5b0a42bee3/pipenv-setup-2.1.7.tar.gz" } ] }