Closed budziq closed 9 hours ago
We have implemented a full validation mechanism for both Pipfile and Pipfile.lock in plette
, but it is not rolled into pipenv yet.
Rather than throwing an error, I prefer to normalize it silently for users.
This will be possibly solved with: https://github.com/pypa/pipenv/pull/5339
Hi!
Is your feature request related to a problem? Please describe.
Recently I've had few minutes wasted on debugging pipenv when working on legacy python script written by someone else that had error in the Pipfile
python_version
. Namely It had the version written without quotation marks as a float instead as a TOML string.running
$ pipenv lock
with Pipfile broken in such way results incryptic backtrace
``` Traceback (most recent call last): File "/home/budziq/.local/bin/pipenv", line 11, inWhich I was able to solve only after dropping to ipdb and seeing that somewhere in the backtrace the problematic variable was a toml.Float which led me to looking into the Pipfile closer. But for a few minutes I was certain that my installation of pipenv is broken.
Describe the solution you'd like
Ideally a nice error message suggesting broken Pipfile
Additional context
$ pipenv --support
Pipenv version: `'2018.11.26'` Pipenv location: `'/home/budziq/.local/lib/python3.5/site-packages/pipenv'` Python location: `'/usr/bin/python3'` Python installations found: - `3.5.2`: `/usr/bin/python3.5m` - `3.5.2`: `/usr/bin/python3.5` - `2.7.12`: `/usr/bin/python` PEP 508 Information: ``` {'implementation_name': 'cpython', 'implementation_version': '3.5.2', 'os_name': 'posix', 'platform_machine': 'x86_64', 'platform_python_implementation': 'CPython', 'platform_release': '4.15.0-42-generic', 'platform_system': 'Linux', 'platform_version': '#45~16.04.1-Ubuntu SMP Mon Nov 19 13:02:27 UTC 2018', 'python_full_version': '3.5.2', 'python_version': '3.5', 'sys_platform': 'linux'} ``` System environment variables: - `IRBRC` - `TMUX_PWD_%11` - `TMUX_PWD_%15` - `DBUS_SESSION_BUS_ADDRESS` - `LOGNAME` - `rvm_bin_path` - `GEM_HOME` - `PAGER` - `LC_CTYPE` - `PIP_SHIMS_BASE_MODULE` - `USER` - `rvm_prefix` - `GTK_OVERLAY_SCROLLING` - `SHLVL` - `/home/budziq/.cargo/bin:/home/budziq/.local/bin:/home/budziq/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin` - `TMUX_PWD_%9` - `QT_ACCESSIBILITY` - `rvm_version` - `XMODIFIERS` - `GEM_PATH` - `UPSTART_EVENTS` - `TMUX_PWD_%14` - `LSCOLORS` - `GDMSESSION` - `XAUTHORITY` - `TMUX_PWD_%4` - `LS_COLORS` - `SESSIONTYPE` - `DEFAULTS_PATH` - `LC_MEASUREMENT` - `TMUX_PWD_%3` - `TMUX_PWD_%7` - `_system_arch` - `TMUX_PWD_%17` - `XDG_SESSION_TYPE` - `XDG_CONFIG_DIRS` - `TMUX_PWD_%13` - `XDG_SEAT_PATH` - `QT_LINUX_ACCESSIBILITY_ALWAYS_ON` - `GPG_AGENT_INFO` - `IM_CONFIG_PHASE` - `GNOME_KEYRING_PID` - `CLUTTER_BACKEND` - `TMUX_PWD_%19` - `LESS` - `PATH` - `XDG_VTNR` - `LC_PAPER` - `XDG_SEAT` - `_` - `XDG_GREETER_DATA_DIR` - `SSH_AUTH_SOCK` - `QT_IM_MODULE` - `XDG_SESSION_DESKTOP` - `XDG_RUNTIME_DIR` - `LANGUAGE` - `TMUX_PWD_%8` - `PIP_PYTHON_PATH` - `GBS_ROOT` - `OLDPWD` - `CARGO_HOME` - `CLUTTER_IM_MODULE` - `rvm_path` - `LC_IDENTIFICATION` - `TERM` - `QT4_IM_MODULE` - `EVENT_NOEPOLL` - `SESSION_MANAGER` - `XDG_CURRENT_DESKTOP` - `RUST_SRC_PATH` - `QT_STYLE_OVERRIDE` - `PWD` - `LC_ADDRESS` - `XDG_MENU_PREFIX` - `LANG` - `TMUX_PWD_%1` - `PIP_DISABLE_PIP_VERSION_CHECK` - `TMUX_PWD_%12` - `J2REDIR` - `TMUX_PWD_%2` - `RUBY_VERSION` - `GLADE_MODULE_PATH` - `PYTHONDONTWRITEBYTECODE` - `INSTANCE` - `MANDATORY_PATH` - `TMUX_PWD_%10` - `SHELL` - `TMUX_PWD_%6` - `TMUX` - `LC_TELEPHONE` - `PYTHONFINDER_IGNORE_UNSUPPORTED` - `TMUX_PANE` - `VTE_VERSION` - `TMUX_PWD_%0` - `XDG_SESSION_PATH` - `TMUX_PWD_%5` - `TMUX_PWD_%18` - `MY_RUBY_HOME` - `GDM_LANG` - `DERBY_HOME` - `LC_NUMERIC` - `_system_version` - `JAVA_HOME` - `UPSTART_JOB` - `_system_name` - `_system_type` - `LC_MONETARY` - `GBS_RPMS` - `LC_TIME` - `UPSTART_INSTANCE` - `DISPLAY` - `GLADE_CATALOG_PATH` - `SESSION` - `J2SDKDIR` - `GLADE_PIXMAP_PATH` - `UPSTART_SESSION` - `TMUX_PWD_%16` - `HAWK3_BUILD_CONF` - `XDG_DATA_DIRS` - `GNOME_KEYRING_CONTROL` - `DESKTOP_SESSION` - `LC_NAME` - `GTK_IM_MODULE` - `HOME` - `XDG_SESSION_ID` - `JOB` Pipenv–specific environment variables: Debug–specific environment variables: - `PATH`: `/home/budziq/.rvm/gems/ruby-head/bin:/home/budziq/.rvm/gems/ruby-head@global/bin:/home/budziq/.rvm/rubies/ruby-head/bin:/home/budziq/.cargo/bin:/home/budziq/.local/bin:/home/budziq/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/home/budziq/arm-2010q1/bin:/home/budziq/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/budziq/dotfiles/bin:/home/budziq/.rvm/bin:/usr/local/go/bin:/home/budziq/.cargo/bin` - `SHELL`: `/usr/bin/zsh` - `LANG`: `en_US.UTF-8` - `PWD`: `/ssd_drive/muxpi` --------------------------- Contents of `Pipfile` ('/ssd_drive/muxpi/Pipfile'): ```toml [[source]] name = "pypi" verify_ssl = true url = "https://pypi.org/simple" [packages] requests = "*" serial = "*" [dev-packages] pylint = "*" ipython = "*" [requires] python_version = 3.5 ``` Contents of `Pipfile.lock` ('/ssd_drive/muxpi/Pipfile.lock'): ```json { "_meta": { "hash": { "sha256": "0509f9b3dc5b51b31e06f09662b4d4fd0795a6ee8d89862c77b4813e72152b36" }, "pipfile-spec": 6, "requires": { "python_version": "3.5" }, "sources": [ { "name": "pypi", "url": "https://pypi.org/simple", "verify_ssl": true } ] }, "default": { "certifi": { "hashes": [ "sha256:47f9c83ef4c0c621eaef743f133f09fa8a74a9b75f037e8624f83bd1b6626cb7", "sha256:993f830721089fef441cdfeb4b2c8c9df86f0c63239f06bd025a76a7daddb033" ], "version": "==2018.11.29" }, "chardet": { "hashes": [ "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" ], "version": "==3.0.4" }, "future": { "hashes": [ "sha256:67045236dcfd6816dc439556d009594abf643e5eb48992e36beac09c2ca659b8" ], "version": "==0.17.1" }, "idna": { "hashes": [ "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c" ], "version": "==2.8" }, "iso8601": { "hashes": [ "sha256:210e0134677cc0d02f6028087fee1df1e1d76d372ee1db0bf30bf66c5c1c89a3", "sha256:49c4b20e1f38aa5cf109ddcd39647ac419f928512c869dc01d5c7098eddede82", "sha256:bbbae5fb4a7abfe71d4688fd64bff70b91bbd74ef6a99d964bab18f7fdf286dd" ], "version": "==0.1.12" }, "pyyaml": { "hashes": [ "sha256:3d7da3009c0f3e783b2c873687652d83b1bbfd5c88e9813fb7e5b03c0dd3108b", "sha256:3ef3092145e9b70e3ddd2c7ad59bdd0252a94dfe3949721633e41344de00a6bf", "sha256:40c71b8e076d0550b2e6380bada1f1cd1017b882f7e16f09a65be98e017f211a", "sha256:558dd60b890ba8fd982e05941927a3911dc409a63dcb8b634feaa0cda69330d3", "sha256:a7c28b45d9f99102fa092bb213aa12e0aaf9a6a1f5e395d36166639c1f96c3a1", "sha256:aa7dd4a6a427aed7df6fb7f08a580d68d9b118d90310374716ae90b710280af1", "sha256:bc558586e6045763782014934bfaf39d48b8ae85a2713117d16c39864085c613", "sha256:d46d7982b62e0729ad0175a9bc7e10a566fc07b224d2c79fafb5e032727eaa04", "sha256:d5eef459e30b09f5a098b9cea68bebfeb268697f78d647bd255a085371ac7f3f", "sha256:e01d3203230e1786cd91ccfdc8f8454c8069c91bee3962ad93b87a4b2860f537", "sha256:e170a9e6fcfd19021dd29845af83bb79236068bf5fd4df3327c1be18182b2531" ], "version": "==3.13" }, "requests": { "hashes": [ "sha256:502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e", "sha256:7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b" ], "index": "pypi", "version": "==2.21.0" }, "serial": { "hashes": [ "sha256:3968852238bb5d6d12176cf0a39f2b83d47f06fa75845973de9a9286b467f87f", "sha256:e29dfed56168ccdb7b02e0becfe572e5f93536b885563f647e0fc3aa9f7c9077" ], "index": "pypi", "version": "==0.0.70" }, "urllib3": { "hashes": [ "sha256:61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39", "sha256:de9529817c93f27c8ccbfead6985011db27bd0ddfcdb2d86f3f663385c6a9c22" ], "version": "==1.24.1" } }, "develop": { "astroid": { "hashes": [ "sha256:35b032003d6a863f5dcd7ec11abd5cd5893428beaa31ab164982403bcb311f22", "sha256:6a5d668d7dc69110de01cdf7aeec69a679ef486862a0850cc0fd5571505b6b7e" ], "version": "==2.1.0" }, "backcall": { "hashes": [ "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4", "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2" ], "version": "==0.1.0" }, "decorator": { "hashes": [ "sha256:2c51dff8ef3c447388fe5e4453d24a2bf128d3a4c32af3fabef1f01c6851ab82", "sha256:c39efa13fbdeb4506c476c9b3babf6a718da943dab7811c206005a4a956c080c" ], "version": "==4.3.0" }, "ipython": { "hashes": [ "sha256:6a9496209b76463f1dec126ab928919aaf1f55b38beb9219af3fe202f6bbdd12", "sha256:f69932b1e806b38a7818d9a1e918e5821b685715040b48e59c657b3c7961b742" ], "index": "pypi", "version": "==7.2.0" }, "ipython-genutils": { "hashes": [ "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" ], "version": "==0.2.0" }, "isort": { "hashes": [ "sha256:1153601da39a25b14ddc54955dbbacbb6b2d19135386699e2ad58517953b34af", "sha256:b9c40e9750f3d77e6e4d441d8b0266cf555e7cdabdcff33c4fd06366ca761ef8", "sha256:ec9ef8f4a9bc6f71eec99e1806bfa2de401650d996c59330782b89a5555c1497" ], "version": "==4.3.4" }, "jedi": { "hashes": [ "sha256:571702b5bd167911fe9036e5039ba67f820d6502832285cde8c881ab2b2149fd", "sha256:c8481b5e59d34a5c7c42e98f6625e633f6ef59353abea6437472c7ec2093f191" ], "version": "==0.13.2" }, "lazy-object-proxy": { "hashes": [ "sha256:0ce34342b419bd8f018e6666bfef729aec3edf62345a53b537a4dcc115746a33", "sha256:1b668120716eb7ee21d8a38815e5eb3bb8211117d9a90b0f8e21722c0758cc39", "sha256:209615b0fe4624d79e50220ce3310ca1a9445fd8e6d3572a896e7f9146bbf019", "sha256:27bf62cb2b1a2068d443ff7097ee33393f8483b570b475db8ebf7e1cba64f088", "sha256:27ea6fd1c02dcc78172a82fc37fcc0992a94e4cecf53cb6d73f11749825bd98b", "sha256:2c1b21b44ac9beb0fc848d3993924147ba45c4ebc24be19825e57aabbe74a99e", "sha256:2df72ab12046a3496a92476020a1a0abf78b2a7db9ff4dc2036b8dd980203ae6", "sha256:320ffd3de9699d3892048baee45ebfbbf9388a7d65d832d7e580243ade426d2b", "sha256:50e3b9a464d5d08cc5227413db0d1c4707b6172e4d4d915c1c70e4de0bbff1f5", "sha256:5276db7ff62bb7b52f77f1f51ed58850e315154249aceb42e7f4c611f0f847ff", "sha256:61a6cf00dcb1a7f0c773ed4acc509cb636af2d6337a08f362413c76b2b47a8dd", "sha256:6ae6c4cb59f199d8827c5a07546b2ab7e85d262acaccaacd49b62f53f7c456f7", "sha256:7661d401d60d8bf15bb5da39e4dd72f5d764c5aff5a86ef52a042506e3e970ff", "sha256:7bd527f36a605c914efca5d3d014170b2cb184723e423d26b1fb2fd9108e264d", "sha256:7cb54db3535c8686ea12e9535eb087d32421184eacc6939ef15ef50f83a5e7e2", "sha256:7f3a2d740291f7f2c111d86a1c4851b70fb000a6c8883a59660d95ad57b9df35", "sha256:81304b7d8e9c824d058087dcb89144842c8e0dea6d281c031f59f0acf66963d4", "sha256:933947e8b4fbe617a51528b09851685138b49d511af0b6c0da2539115d6d4514", "sha256:94223d7f060301b3a8c09c9b3bc3294b56b2188e7d8179c762a1cda72c979252", "sha256:ab3ca49afcb47058393b0122428358d2fbe0408cf99f1b58b295cfeb4ed39109", "sha256:bd6292f565ca46dee4e737ebcc20742e3b5be2b01556dafe169f6c65d088875f", "sha256:cb924aa3e4a3fb644d0c463cad5bc2572649a6a3f68a7f8e4fbe44aaa6d77e4c", "sha256:d0fc7a286feac9077ec52a927fc9fe8fe2fabab95426722be4c953c9a8bede92", "sha256:ddc34786490a6e4ec0a855d401034cbd1242ef186c20d79d2166d6a4bd449577", "sha256:e34b155e36fa9da7e1b7c738ed7767fc9491a62ec6af70fe9da4a057759edc2d", "sha256:e5b9e8f6bda48460b7b143c3821b21b452cb3a835e6bbd5dd33aa0c8d3f5137d", "sha256:e81ebf6c5ee9684be8f2c87563880f93eedd56dd2b6146d8a725b50b7e5adb0f", "sha256:eb91be369f945f10d3a49f5f9be8b3d0b93a4c2be8f8a5b83b0571b8123e0a7a", "sha256:f460d1ceb0e4a5dcb2a652db0904224f367c9b3c1470d5a7683c0480e582468b" ], "version": "==1.3.1" }, "mccabe": { "hashes": [ "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" ], "version": "==0.6.1" }, "parso": { "hashes": [ "sha256:35704a43a3c113cce4de228ddb39aab374b8004f4f2407d070b6a2ca784ce8a2", "sha256:895c63e93b94ac1e1690f5fdd40b65f07c8171e3e53cbd7793b5b96c0e0a7f24" ], "version": "==0.3.1" }, "pexpect": { "hashes": [ "sha256:2a8e88259839571d1251d278476f3eec5db26deb73a70be5ed5dc5435e418aba", "sha256:3fbd41d4caf27fa4a377bfd16fef87271099463e6fa73e92a52f92dfee5d425b" ], "markers": "sys_platform != 'win32'", "version": "==4.6.0" }, "pickleshare": { "hashes": [ "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" ], "version": "==0.7.5" }, "prompt-toolkit": { "hashes": [ "sha256:c1d6aff5252ab2ef391c2fe498ed8c088066f66bc64a8d5c095bbf795d9fec34", "sha256:d4c47f79b635a0e70b84fdb97ebd9a274203706b1ee5ed44c10da62755cf3ec9", "sha256:fd17048d8335c1e6d5ee403c3569953ba3eb8555d710bfc548faf0712666ea39" ], "version": "==2.0.7" }, "ptyprocess": { "hashes": [ "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0", "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f" ], "version": "==0.6.0" }, "pygments": { "hashes": [ "sha256:5ffada19f6203563680669ee7f53b64dabbeb100eb51b61996085e99c03b284a", "sha256:e8218dd399a61674745138520d0d4cf2621d7e032439341bc3f647bff125818d" ], "version": "==2.3.1" }, "pylint": { "hashes": [ "sha256:689de29ae747642ab230c6d37be2b969bf75663176658851f456619aacf27492", "sha256:771467c434d0d9f081741fec1d64dfb011ed26e65e12a28fe06ca2f61c4d556c" ], "index": "pypi", "version": "==2.2.2" }, "six": { "hashes": [ "sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", "sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73" ], "version": "==1.12.0" }, "traitlets": { "hashes": [ "sha256:9c4bd2d267b7153df9152698efb1050a5d84982d3384a37b2c1f7723ba3e7835", "sha256:c6cb5e6f57c5a9bdaa40fa71ce7b4af30298fbab9ece9815b5d995ab6217c7d9" ], "version": "==4.3.2" }, "typed-ast": { "hashes": [ "sha256:0555eca1671ebe09eb5f2176723826f6f44cca5060502fea259de9b0e893ab53", "sha256:0ca96128ea66163aea13911c9b4b661cb345eb729a20be15c034271360fc7474", "sha256:16ccd06d614cf81b96de42a37679af12526ea25a208bce3da2d9226f44563868", "sha256:1e21ae7b49a3f744958ffad1737dfbdb43e1137503ccc59f4e32c4ac33b0bd1c", "sha256:37670c6fd857b5eb68aa5d193e14098354783b5138de482afa401cc2644f5a7f", "sha256:46d84c8e3806619ece595aaf4f37743083f9454c9ea68a517f1daa05126daf1d", "sha256:5b972bbb3819ece283a67358103cc6671da3646397b06e7acea558444daf54b2", "sha256:6306ffa64922a7b58ee2e8d6f207813460ca5a90213b4a400c2e730375049246", "sha256:6cb25dc95078931ecbd6cbcc4178d1b8ae8f2b513ae9c3bd0b7f81c2191db4c6", "sha256:7e19d439fee23620dea6468d85bfe529b873dace39b7e5b0c82c7099681f8a22", "sha256:7f5cd83af6b3ca9757e1127d852f497d11c7b09b4716c355acfbebf783d028da", "sha256:81e885a713e06faeef37223a5b1167615db87f947ecc73f815b9d1bbd6b585be", "sha256:94af325c9fe354019a29f9016277c547ad5d8a2d98a02806f27a7436b2da6735", "sha256:b1e5445c6075f509d5764b84ce641a1535748801253b97f3b7ea9d948a22853a", "sha256:cb061a959fec9a514d243831c514b51ccb940b58a5ce572a4e209810f2507dcf", "sha256:cc8d0b703d573cbabe0d51c9d68ab68df42a81409e4ed6af45a04a95484b96a5", "sha256:da0afa955865920edb146926455ec49da20965389982f91e926389666f5cf86a", "sha256:dc76738331d61818ce0b90647aedde17bbba3d3f9e969d83c1d9087b4f978862", "sha256:e7ec9a1445d27dbd0446568035f7106fa899a36f55e52ade28020f7b3845180d", "sha256:f741ba03feb480061ab91a465d1a3ed2d40b52822ada5b4017770dfcb88f839f", "sha256:fe800a58547dd424cd286b7270b967b5b3316b993d86453ede184a17b5a6b17d" ], "markers": "python_version < '3.7' and implementation_name == 'cpython'", "version": "==1.1.1" }, "wcwidth": { "hashes": [ "sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e", "sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c" ], "version": "==0.1.7" }, "wrapt": { "hashes": [ "sha256:d4d560d479f2c21e1b5443bbd15fe7ec4b37fe7e53d335d3b9b0a7b1226fe3c6" ], "version": "==1.10.11" } } } ```