rules_pip: update to new version

rules_pip has a new version [1] of their rule system, incompatible with the
version we used, that fixes a bunch of issues, notably:
 - explicit tagging of repositories for PY2/PY3/PY23 support
 - removal of dependency on host pip (in exchange for having to vendor
   wheels)
 - higher quality tooling for locking

We update to the newer version of pip_rules, rename the external
repository to pydeps and move requirements.txt, the lockfile and the
newly vendored wheels to third_party/, where they belong.

[1] - https://github.com/apt-itude/rules_pip/issues/16

Change-Id: I1065ee2fc410e52fca2be89fcbdd4cc5a4755d55
diff --git a/third_party/py/requirements-lock.json b/third_party/py/requirements-lock.json
new file mode 100644
index 0000000..45334f9
--- /dev/null
+++ b/third_party/py/requirements-lock.json
@@ -0,0 +1,430 @@
+{
+  "environments": {
+    "linux_py3": {
+      "python_version": 3,
+      "requirements": {
+        "arrow": {
+          "dependencies": [
+            "python-dateutil"
+          ],
+          "is_direct": true,
+          "source": "arrow_0_14_5_py2_py3_none_any",
+          "version": "0.14.5"
+        },
+        "asn1crypto": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "asn1crypto_0_24_0_py2_py3_none_any",
+          "version": "0.24.0"
+        },
+        "bcrypt": {
+          "dependencies": [
+            "cffi",
+            "six"
+          ],
+          "is_direct": true,
+          "source": "bcrypt_3_1_5_cp34_abi3_manylinux1_x86_64",
+          "version": "3.1.5"
+        },
+        "certifi": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "certifi_2019_6_16_py2_py3_none_any",
+          "version": "2019.6.16"
+        },
+        "cffi": {
+          "dependencies": [
+            "pycparser"
+          ],
+          "is_direct": true,
+          "source": "cffi_1_11_5_cp36_cp36m_manylinux1_x86_64",
+          "version": "1.11.5"
+        },
+        "chardet": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "chardet_3_0_4_py2_py3_none_any",
+          "version": "3.0.4"
+        },
+        "click": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "Click_7_0_py2_py3_none_any",
+          "version": "7.0"
+        },
+        "cryptography": {
+          "dependencies": [
+            "asn1crypto",
+            "cffi",
+            "idna",
+            "six"
+          ],
+          "is_direct": true,
+          "source": "cryptography_2_4_2_cp34_abi3_manylinux1_x86_64",
+          "version": "2.4.2"
+        },
+        "django": {
+          "dependencies": [
+            "pytz",
+            "sqlparse"
+          ],
+          "is_direct": true,
+          "source": "Django_2_2_3_py3_none_any",
+          "version": "2.2.3"
+        },
+        "fabric": {
+          "dependencies": [
+            "cryptography",
+            "invoke",
+            "paramiko"
+          ],
+          "is_direct": true,
+          "source": "fabric_2_4_0_py2_py3_none_any",
+          "version": "2.4.0"
+        },
+        "flask": {
+          "dependencies": [
+            "click",
+            "itsdangerous",
+            "jinja2",
+            "werkzeug"
+          ],
+          "is_direct": true,
+          "source": "Flask_1_1_1_py2_py3_none_any",
+          "version": "1.1.1"
+        },
+        "flask-sqlalchemy": {
+          "dependencies": [
+            "flask",
+            "sqlalchemy"
+          ],
+          "is_direct": true,
+          "source": "Flask_SQLAlchemy_2_4_0_py2_py3_none_any",
+          "version": "2.4.0"
+        },
+        "future": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "future_0_17_1_py3_none_any",
+          "version": "0.17.1"
+        },
+        "gevent": {
+          "dependencies": [
+            "greenlet"
+          ],
+          "is_direct": true,
+          "source": "gevent_1_4_0_cp36_cp36m_manylinux1_x86_64",
+          "version": "1.4.0"
+        },
+        "greenlet": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "greenlet_0_4_15_cp36_cp36m_manylinux1_x86_64",
+          "version": "0.4.15"
+        },
+        "grpcio": {
+          "dependencies": [
+            "six"
+          ],
+          "is_direct": true,
+          "source": "grpcio_1_22_0_cp36_cp36m_manylinux1_x86_64",
+          "version": "1.22.0"
+        },
+        "gunicorn": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "gunicorn_19_9_0_py2_py3_none_any",
+          "version": "19.9.0"
+        },
+        "idna": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "idna_2_8_py2_py3_none_any",
+          "version": "2.8"
+        },
+        "invoke": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "invoke_1_2_0_py3_none_any",
+          "version": "1.2.0"
+        },
+        "itsdangerous": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "itsdangerous_1_1_0_py2_py3_none_any",
+          "version": "1.1.0"
+        },
+        "jinja2": {
+          "dependencies": [
+            "markupsafe"
+          ],
+          "is_direct": true,
+          "source": "Jinja2_2_10_1_py2_py3_none_any",
+          "version": "2.10.1"
+        },
+        "markupsafe": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "MarkupSafe_1_1_1_cp36_cp36m_manylinux1_x86_64",
+          "version": "1.1.1"
+        },
+        "paramiko": {
+          "dependencies": [
+            "bcrypt",
+            "cryptography",
+            "pyasn1",
+            "pynacl"
+          ],
+          "is_direct": true,
+          "source": "paramiko_2_4_2_py2_py3_none_any",
+          "version": "2.4.2"
+        },
+        "protobuf": {
+          "dependencies": [
+            "setuptools",
+            "six"
+          ],
+          "is_direct": true,
+          "source": "protobuf_3_9_0_cp36_cp36m_manylinux1_x86_64",
+          "version": "3.9.0"
+        },
+        "pyasn1": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "pyasn1_0_4_5_py2_py3_none_any",
+          "version": "0.4.5"
+        },
+        "pycparser": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "pycparser_2_19_py2_py3_none_any",
+          "version": "2.19"
+        },
+        "pynacl": {
+          "dependencies": [
+            "cffi",
+            "six"
+          ],
+          "is_direct": true,
+          "source": "PyNaCl_1_3_0_cp34_abi3_manylinux1_x86_64",
+          "version": "1.3.0"
+        },
+        "python-dateutil": {
+          "dependencies": [
+            "six"
+          ],
+          "is_direct": true,
+          "source": "python_dateutil_2_8_0_py2_py3_none_any",
+          "version": "2.8.0"
+        },
+        "pytz": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "pytz_2019_1_py2_py3_none_any",
+          "version": "2019.1"
+        },
+        "requests": {
+          "dependencies": [
+            "certifi",
+            "chardet",
+            "idna",
+            "urllib3"
+          ],
+          "is_direct": true,
+          "source": "requests_2_22_0_py2_py3_none_any",
+          "version": "2.22.0"
+        },
+        "setuptools": {
+          "dependencies": [],
+          "is_direct": false,
+          "source": "setuptools_41_2_0_py2_py3_none_any",
+          "version": "41.2.0"
+        },
+        "six": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "six_1_12_0_py2_py3_none_any",
+          "version": "1.12.0"
+        },
+        "sqlalchemy": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "SQLAlchemy_1_3_8_cp36_cp36m_linux_x86_64",
+          "version": "1.3.8"
+        },
+        "sqlparse": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "sqlparse_0_3_0_py2_py3_none_any",
+          "version": "0.3.0"
+        },
+        "urllib3": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "urllib3_1_25_3_py2_py3_none_any",
+          "version": "1.25.3"
+        },
+        "uwsgi": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "uWSGI_2_0_18_cp36_cp36m_linux_x86_64",
+          "version": "2.0.18"
+        },
+        "werkzeug": {
+          "dependencies": [],
+          "is_direct": true,
+          "source": "Werkzeug_0_15_5_py2_py3_none_any",
+          "version": "0.15.5"
+        }
+      },
+      "sys_platform": "linux"
+    }
+  },
+  "local_wheels_package": "@hscloud//third_party/py/wheels",
+  "sources": {
+    "Click_7_0_py2_py3_none_any": {
+      "sha256": "2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13",
+      "url": "https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl"
+    },
+    "Django_2_2_3_py3_none_any": {
+      "sha256": "6e974d4b57e3b29e4882b244d40171d6a75202ab8d2402b8e8adbd182e25cf0c",
+      "url": "https://files.pythonhosted.org/packages/39/b0/2138c31bf13e17afc32277239da53e9dfcce27bac8cb68cf1c0123f1fdf5/Django-2.2.3-py3-none-any.whl"
+    },
+    "Flask_1_1_1_py2_py3_none_any": {
+      "sha256": "45eb5a6fd193d6cf7e0cf5d8a5b31f83d5faae0293695626f539a823e93b13f6",
+      "url": "https://files.pythonhosted.org/packages/9b/93/628509b8d5dc749656a9641f4caf13540e2cdec85276964ff8f43bbb1d3b/Flask-1.1.1-py2.py3-none-any.whl"
+    },
+    "Flask_SQLAlchemy_2_4_0_py2_py3_none_any": {
+      "sha256": "8631bbea987bc3eb0f72b1f691d47bd37ceb795e73b59ab48586d76d75a7c605",
+      "url": "https://files.pythonhosted.org/packages/08/ca/582442cad71504a1514a2f053006c8bb128844133d6076a4df17117545fa/Flask_SQLAlchemy-2.4.0-py2.py3-none-any.whl"
+    },
+    "Jinja2_2_10_1_py2_py3_none_any": {
+      "sha256": "14dd6caf1527abb21f08f86c784eac40853ba93edb79552aa1e4b8aef1b61c7b",
+      "url": "https://files.pythonhosted.org/packages/1d/e7/fd8b501e7a6dfe492a433deb7b9d833d39ca74916fa8bc63dd1a4947a671/Jinja2-2.10.1-py2.py3-none-any.whl"
+    },
+    "MarkupSafe_1_1_1_cp36_cp36m_manylinux1_x86_64": {
+      "sha256": "717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e",
+      "url": "https://files.pythonhosted.org/packages/b2/5f/23e0023be6bb885d00ffbefad2942bc51a620328ee910f64abe5a8d18dd1/MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl"
+    },
+    "PyNaCl_1_3_0_cp34_abi3_manylinux1_x86_64": {
+      "sha256": "aabb0c5232910a20eec8563503c153a8e78bbf5459490c49ab31f6adf3f3a415",
+      "url": "https://files.pythonhosted.org/packages/27/15/2cd0a203f318c2240b42cd9dd13c931ddd61067809fee3479f44f086103e/PyNaCl-1.3.0-cp34-abi3-manylinux1_x86_64.whl"
+    },
+    "SQLAlchemy_1_3_8_cp36_cp36m_linux_x86_64": {
+      "file": "SQLAlchemy-1.3.8-cp36-cp36m-linux_x86_64.whl"
+    },
+    "Werkzeug_0_15_5_py2_py3_none_any": {
+      "sha256": "87ae4e5b5366da2347eb3116c0e6c681a0e939a33b2805e2c0cbd282664932c4",
+      "url": "https://files.pythonhosted.org/packages/d1/ab/d3bed6b92042622d24decc7aadc8877badf18aeca1571045840ad4956d3f/Werkzeug-0.15.5-py2.py3-none-any.whl"
+    },
+    "arrow_0_14_5_py2_py3_none_any": {
+      "sha256": "a12de0124d812d15061ed36c7eb4a421fa1b95026a502a0b2062e9ea00fc4446",
+      "url": "https://files.pythonhosted.org/packages/4f/c6/32df2c68e02e2d6b4457223fa499634edabb2d4ff74f00087ffff49b4be4/arrow-0.14.5-py2.py3-none-any.whl"
+    },
+    "asn1crypto_0_24_0_py2_py3_none_any": {
+      "sha256": "2f1adbb7546ed199e3c90ef23ec95c5cf3585bac7d11fb7eb562a3fe89c64e87",
+      "url": "https://files.pythonhosted.org/packages/ea/cd/35485615f45f30a510576f1a56d1e0a7ad7bd8ab5ed7cdc600ef7cd06222/asn1crypto-0.24.0-py2.py3-none-any.whl"
+    },
+    "bcrypt_3_1_5_cp34_abi3_manylinux1_x86_64": {
+      "sha256": "efcaace6e2915434d84e865c44f0cfe34e802269378afbb39a4aa6381aaec78b",
+      "url": "https://files.pythonhosted.org/packages/31/4b/4057d0716e7170c29ff12e19791eb6037422620835e4a58a01d4790e56d1/bcrypt-3.1.5-cp34-abi3-manylinux1_x86_64.whl"
+    },
+    "certifi_2019_6_16_py2_py3_none_any": {
+      "sha256": "046832c04d4e752f37383b628bc601a7ea7211496b4638f6514d0e5b9acc4939",
+      "url": "https://files.pythonhosted.org/packages/69/1b/b853c7a9d4f6a6d00749e94eb6f3a041e342a885b87340b79c1ef73e3a78/certifi-2019.6.16-py2.py3-none-any.whl"
+    },
+    "cffi_1_11_5_cp36_cp36m_manylinux1_x86_64": {
+      "sha256": "770f3782b31f50b68627e22f91cb182c48c47c02eb405fd689472aa7b7aa16dc",
+      "url": "https://files.pythonhosted.org/packages/6d/c0/47db8f624f3e4e2f3f27be03a93379d1ba16a1450a7b1aacfa0366e2c0dd/cffi-1.11.5-cp36-cp36m-manylinux1_x86_64.whl"
+    },
+    "chardet_3_0_4_py2_py3_none_any": {
+      "sha256": "fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691",
+      "url": "https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl"
+    },
+    "cryptography_2_4_2_cp34_abi3_manylinux1_x86_64": {
+      "sha256": "70596e90398574b77929cd87e1ac6e43edd0e29ba01e1365fed9c26bde295aa5",
+      "url": "https://files.pythonhosted.org/packages/60/c7/99b33c53cf3f20a97a4c4bfd3ab66dcc93d99da0a97cc9597aa36ae6bb62/cryptography-2.4.2-cp34-abi3-manylinux1_x86_64.whl"
+    },
+    "fabric_2_4_0_py2_py3_none_any": {
+      "sha256": "98538f2f3f63cf52497a8d0b24d18424ae83fe67ac7611225c72afb9e67f2cf6",
+      "url": "https://files.pythonhosted.org/packages/d9/e4/e6fa248c94ee5d45def54b609fcf70f39d0b7f7050f2d4405c5f156b5516/fabric-2.4.0-py2.py3-none-any.whl"
+    },
+    "future_0_17_1_py3_none_any": {
+      "file": "future-0.17.1-py3-none-any.whl"
+    },
+    "gevent_1_4_0_cp36_cp36m_manylinux1_x86_64": {
+      "sha256": "2711e69788ddb34c059a30186e05c55a6b611cb9e34ac343e69cf3264d42fe1c",
+      "url": "https://files.pythonhosted.org/packages/f2/ca/5b5962361ed832847b6b2f9a2d0452c8c2f29a93baef850bb8ad067c7bf9/gevent-1.4.0-cp36-cp36m-manylinux1_x86_64.whl"
+    },
+    "greenlet_0_4_15_cp36_cp36m_manylinux1_x86_64": {
+      "sha256": "23d12eacffa9d0f290c0fe0c4e81ba6d5f3a5b7ac3c30a5eaf0126bf4deda5c8",
+      "url": "https://files.pythonhosted.org/packages/bf/45/142141aa47e01a5779f0fa5a53b81f8379ce8f2b1cd13df7d2f1d751ae42/greenlet-0.4.15-cp36-cp36m-manylinux1_x86_64.whl"
+    },
+    "grpcio_1_22_0_cp36_cp36m_manylinux1_x86_64": {
+      "sha256": "561bca3b1bde6d6564306eb05848fd155136e9c3a25d2961129b1e2edba22fce",
+      "url": "https://files.pythonhosted.org/packages/f2/5d/b434403adb2db8853a97828d3d19f2032e79d630e0d11a8e95d243103a11/grpcio-1.22.0-cp36-cp36m-manylinux1_x86_64.whl"
+    },
+    "gunicorn_19_9_0_py2_py3_none_any": {
+      "sha256": "aa8e0b40b4157b36a5df5e599f45c9c76d6af43845ba3b3b0efe2c70473c2471",
+      "url": "https://files.pythonhosted.org/packages/8c/da/b8dd8deb741bff556db53902d4706774c8e1e67265f69528c14c003644e6/gunicorn-19.9.0-py2.py3-none-any.whl"
+    },
+    "idna_2_8_py2_py3_none_any": {
+      "sha256": "ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c",
+      "url": "https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl"
+    },
+    "invoke_1_2_0_py3_none_any": {
+      "sha256": "4f4de934b15c2276caa4fbc5a3b8a61c0eb0b234f2be1780d2b793321995c2d6",
+      "url": "https://files.pythonhosted.org/packages/be/9f/8508712c9cad73ac0c8eeb2c3e51c9ef65136653dda2b512bde64109f023/invoke-1.2.0-py3-none-any.whl"
+    },
+    "itsdangerous_1_1_0_py2_py3_none_any": {
+      "sha256": "b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749",
+      "url": "https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl"
+    },
+    "paramiko_2_4_2_py2_py3_none_any": {
+      "sha256": "3c16b2bfb4c0d810b24c40155dbfd113c0521e7e6ee593d704e84b4c658a1f3b",
+      "url": "https://files.pythonhosted.org/packages/cf/ae/94e70d49044ccc234bfdba20114fa947d7ba6eb68a2e452d89b920e62227/paramiko-2.4.2-py2.py3-none-any.whl"
+    },
+    "protobuf_3_9_0_cp36_cp36m_manylinux1_x86_64": {
+      "sha256": "2ad566b7b7cdd8717c7af1825e19f09e8fef2787b77fcb979588944657679604",
+      "url": "https://files.pythonhosted.org/packages/dc/0e/e7cdff89745986c984ba58e6ff6541bc5c388dd9ab9d7d312b3b1532584a/protobuf-3.9.0-cp36-cp36m-manylinux1_x86_64.whl"
+    },
+    "pyasn1_0_4_5_py2_py3_none_any": {
+      "sha256": "da6b43a8c9ae93bc80e2739efb38cc776ba74a886e3e9318d65fe81a8b8a2c6e",
+      "url": "https://files.pythonhosted.org/packages/7b/7c/c9386b82a25115cccf1903441bba3cbadcfae7b678a20167347fa8ded34c/pyasn1-0.4.5-py2.py3-none-any.whl"
+    },
+    "pycparser_2_19_py2_py3_none_any": {
+      "file": "pycparser-2.19-py2.py3-none-any.whl"
+    },
+    "python_dateutil_2_8_0_py2_py3_none_any": {
+      "sha256": "7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb",
+      "url": "https://files.pythonhosted.org/packages/41/17/c62faccbfbd163c7f57f3844689e3a78bae1f403648a6afb1d0866d87fbb/python_dateutil-2.8.0-py2.py3-none-any.whl"
+    },
+    "pytz_2019_1_py2_py3_none_any": {
+      "sha256": "303879e36b721603cc54604edcac9d20401bdbe31e1e4fdee5b9f98d5d31dfda",
+      "url": "https://files.pythonhosted.org/packages/3d/73/fe30c2daaaa0713420d0382b16fbb761409f532c56bdcc514bf7b6262bb6/pytz-2019.1-py2.py3-none-any.whl"
+    },
+    "requests_2_22_0_py2_py3_none_any": {
+      "sha256": "9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31",
+      "url": "https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl"
+    },
+    "setuptools_41_2_0_py2_py3_none_any": {
+      "sha256": "4380abcf2a4ffd1a5ba22d687c6d690dce83b2b51c70e9c6d09f7e8c7e8040dc",
+      "url": "https://files.pythonhosted.org/packages/b2/86/095d2f7829badc207c893dd4ac767e871f6cd547145df797ea26baea4e2e/setuptools-41.2.0-py2.py3-none-any.whl"
+    },
+    "six_1_12_0_py2_py3_none_any": {
+      "sha256": "3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c",
+      "url": "https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl"
+    },
+    "sqlparse_0_3_0_py2_py3_none_any": {
+      "sha256": "40afe6b8d4b1117e7dff5504d7a8ce07d9a1b15aeeade8a2d10f130a834f8177",
+      "url": "https://files.pythonhosted.org/packages/ef/53/900f7d2a54557c6a37886585a91336520e5539e3ae2423ff1102daf4f3a7/sqlparse-0.3.0-py2.py3-none-any.whl"
+    },
+    "uWSGI_2_0_18_cp36_cp36m_linux_x86_64": {
+      "file": "uWSGI-2.0.18-cp36-cp36m-linux_x86_64.whl"
+    },
+    "urllib3_1_25_3_py2_py3_none_any": {
+      "sha256": "b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1",
+      "url": "https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl"
+    }
+  }
+}
\ No newline at end of file