2023-02-24T03:51:19,266 Created temporary directory: /tmp/pip-ephem-wheel-cache-cizoeuda 2023-02-24T03:51:19,272 Created temporary directory: /tmp/pip-build-tracker-61w6quq4 2023-02-24T03:51:19,273 Initialized build tracking at /tmp/pip-build-tracker-61w6quq4 2023-02-24T03:51:19,273 Created build tracker: /tmp/pip-build-tracker-61w6quq4 2023-02-24T03:51:19,273 Entered build tracker: /tmp/pip-build-tracker-61w6quq4 2023-02-24T03:51:19,275 Created temporary directory: /tmp/pip-wheel-b1qtjuw7 2023-02-24T03:51:19,285 DEPRECATION: --no-binary currently disables reading from the cache of locally built wheels. In the future --no-binary will not influence the wheel cache. pip 23.1 will enforce this behaviour change. A possible replacement is to use the --no-cache-dir option. You can use the flag --use-feature=no-binary-enable-wheel-cache to test the upcoming behaviour. Discussion can be found at https://github.com/pypa/pip/issues/11453 2023-02-24T03:51:19,290 Created temporary directory: /tmp/pip-ephem-wheel-cache-i50g5xej 2023-02-24T03:51:19,349 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-02-24T03:51:19,356 2 location(s) to search for versions of wrds2pg: 2023-02-24T03:51:19,356 * https://pypi.org/simple/wrds2pg/ 2023-02-24T03:51:19,356 * https://www.piwheels.org/simple/wrds2pg/ 2023-02-24T03:51:19,357 Fetching project page and analyzing links: https://pypi.org/simple/wrds2pg/ 2023-02-24T03:51:19,359 Getting page https://pypi.org/simple/wrds2pg/ 2023-02-24T03:51:19,362 Found index url https://pypi.org/simple 2023-02-24T03:51:19,472 Fetched page https://pypi.org/simple/wrds2pg/ as application/vnd.pypi.simple.v1+json 2023-02-24T03:51:19,500 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/36/4d/10bef13832bdc17990beac4a20b47a77976768547aa4bd6137cbafd46f83/wrds2pg-0.1.17-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,502 Found link https://files.pythonhosted.org/packages/ae/9c/ee0b12002821c2c8e21625c915081fc315d9f1ceef100cb330e9116f2d0d/wrds2pg-0.1.17.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 0.1.17 2023-02-24T03:51:19,503 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/ac/24/35ec84d1b765955286a326d0f0c98423730b5818f33c5cdc3e2a2d528adf/wrds2pg-0.1.18-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,504 Found link https://files.pythonhosted.org/packages/dd/4f/6c631513b90802ad1fae0c3fb3dbf65efc603d3fee00a1cae4af45f6b2c5/wrds2pg-0.1.18.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 0.1.18 2023-02-24T03:51:19,505 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/42/1a/cbdac7035e9b7836ed96c6a9e493b556d3f595245c4f0b239c9ba639d53e/wrds2pg-0.1.20-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,506 Found link https://files.pythonhosted.org/packages/14/81/4c94b875ec21dccdefb6a1846bc4f4d4a6a529a0a6921cbbf580e07f8b6b/wrds2pg-0.1.20.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 0.1.20 2023-02-24T03:51:19,507 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/e7/a1/192e3bf4b1e122d0b12a094f4ee4fd1667276cb87cbe5d0a53412dc1a9bc/wrds2pg-0.1.21-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,508 Found link https://files.pythonhosted.org/packages/4d/4c/5fa9cc2e936e16d0be4a56ce2e8cf03b3ba0f59f49afdebd29f1eda99df4/wrds2pg-0.1.21.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 0.1.21 2023-02-24T03:51:19,509 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/4a/52/d9134119b39cf9e939e7cc5ab1317627406af4229fcbdf1085df366e01b4/wrds2pg-0.1.22-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,510 Found link https://files.pythonhosted.org/packages/5b/db/ebbf903d32ac113cdd0b3637f1e5dc37a4abf9f63f18dd56835f3611a465/wrds2pg-0.1.22.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 0.1.22 2023-02-24T03:51:19,511 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/c9/47/a040be2f7d67c120396a27beb1f5e3a6eb97fd24e17cd485ec6d332dad6e/wrds2pg-0.1.23-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,512 Found link https://files.pythonhosted.org/packages/4e/aa/b4f4227ff1d464462f243592bddd638d07e886aa39018ef2bb486624e2f5/wrds2pg-0.1.23.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 0.1.23 2023-02-24T03:51:19,513 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/7b/bf/a713b52aff61a20e5e9d851a69d7c4936d14018ed62759dd78629bfe12cf/wrds2pg-0.1.24-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,514 Found link https://files.pythonhosted.org/packages/ca/e9/81095cbac75110e7f53e915ebee06a9925bb32b6d8a307c7a709f9b74dd5/wrds2pg-0.1.24.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 0.1.24 2023-02-24T03:51:19,515 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/01/5d/cfd9a9cfe8194d52e16c24ef053b49225e85f0996c471226fc0cf5522e31/wrds2pg-1.0.0-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,516 Found link https://files.pythonhosted.org/packages/af/8f/069eed28514231a859da3b110112a0b2078f2c879e3cc5489909982ef2af/wrds2pg-1.0.0.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.0 2023-02-24T03:51:19,517 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/90/3d/1fc327c68c63a7540a964879a5a124e9104c5a80cd058a5f0659d2945dd5/wrds2pg-1.0.2-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,518 Found link https://files.pythonhosted.org/packages/fa/b0/49292467a2256c3ecdd7e7fdbd1c4729386bddc06f3a986483a311539f2b/wrds2pg-1.0.2.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.2 2023-02-24T03:51:19,519 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/41/99/2866d67e2fcd10684ccc913eaa896ebcc00c60982133a5adfaa8a39b7aa1/wrds2pg-1.0.3-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,520 Found link https://files.pythonhosted.org/packages/0f/bf/b1032fff1645c597e292ac8d588c33bad73ca567c01e52fb149f4aa503d1/wrds2pg-1.0.3.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.3 2023-02-24T03:51:19,521 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/0b/6c/bc13811b3a339ec1455a10a03b077d0a7fc7e43b3311201abbfc67d77fde/wrds2pg-1.0.4-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,522 Found link https://files.pythonhosted.org/packages/dc/f4/166d8822216116c22615377ab6493a7c44bd205b8853ae2b0ad51792d9e6/wrds2pg-1.0.4.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.4 2023-02-24T03:51:19,523 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/78/a7/afce414cb2df44692f2dd5af0e28578c349e337110fb7c73b893cef3c048/wrds2pg-1.0.5-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,524 Found link https://files.pythonhosted.org/packages/64/a7/18d7edab1e04462bf1aafd2fe6ffc9132f0aa11be6daaf14927c532b73d3/wrds2pg-1.0.5.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.5 2023-02-24T03:51:19,525 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/2b/8f/02f345286a6b878468948ab7bc6a56026077f0cbfb25d11440284519ba7a/wrds2pg-1.0.6-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,526 Found link https://files.pythonhosted.org/packages/8c/06/abb4c39f3e3f730fffe349e03e1172e31c95fbb9edf4c9257bfb0b6e2c62/wrds2pg-1.0.6.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.6 2023-02-24T03:51:19,527 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/3f/b5/99b90fee6aaf0b150803cfbd6d86e0052d292257dd101e803df4d945ad7b/wrds2pg-1.0.8-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,528 Found link https://files.pythonhosted.org/packages/eb/9f/a506b309ee9299d4d9cd3f5c1407e05da30c09cbbe8acf67e60de11a1b4e/wrds2pg-1.0.8.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.8 2023-02-24T03:51:19,529 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/80/6d/34291718af062c4c329fbaeaaa582e011da15ce1193364f668581c3bd983/wrds2pg-1.0.9-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,530 Found link https://files.pythonhosted.org/packages/27/20/2b9788aef9e54ea3d590a456caa294d1c177fd05029e8f70b99022369f68/wrds2pg-1.0.9.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.9 2023-02-24T03:51:19,531 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/99/ac/4d765cf6d5048798219506138f491e7218d56226bd1d4a1ab994e5efcf33/wrds2pg-1.0.10-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,532 Found link https://files.pythonhosted.org/packages/f4/6a/630cd948c36f331db42c9bac9e414e721e779efbb692210419563d9f4ec1/wrds2pg-1.0.10.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.10 2023-02-24T03:51:19,533 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/4b/8f/7a43a074a7f9fb3b14acbe6a7fdfe50e99d8489334adcc941ed6b4ca328b/wrds2pg-1.0.11-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,534 Found link https://files.pythonhosted.org/packages/e8/2b/f8c9e8ea4d651a9e15946e91b9f1708582a8631b6a76ddb16ad9275bb7a5/wrds2pg-1.0.11.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.11 2023-02-24T03:51:19,535 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/20/62/e4cff4d188653aa99e511ec9db794706d3e0eca3a072847c47b59fb281ba/wrds2pg-1.0.12-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,536 Found link https://files.pythonhosted.org/packages/14/9c/6db066ea90188c63fbacdfb53d2efd52e3ffb2f86ac229616b5ded27dabb/wrds2pg-1.0.12.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.12 2023-02-24T03:51:19,537 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/00/0d/9122175d258c706db78ca1df2f46092a8f7caf9b85bb55fbb05bf8149b43/wrds2pg-1.0.13-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,538 Found link https://files.pythonhosted.org/packages/21/32/ed7df674875559e6afaacdfe2a846a78e88355b187349fb0890a00a9c87b/wrds2pg-1.0.13.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.13 2023-02-24T03:51:19,538 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/98/27/a36bbe15df3fdbcf27a96e7a5b5f48c13d379465e4daf4889b5fd556eea0/wrds2pg-1.0.14-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,540 Found link https://files.pythonhosted.org/packages/30/5c/79161fc26f5a5c96b45c5d9f96c49164b7e32ff106d04ba0e6bf2e321b05/wrds2pg-1.0.14.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.14 2023-02-24T03:51:19,540 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/6f/56/b5f28563dbd278bc973e9b09d08b701083b92dc9facf367208f412bae2b1/wrds2pg-1.0.15-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,542 Found link https://files.pythonhosted.org/packages/7f/ae/a9479ffa558cb219a91c2233d27c8cb0a1151361563f417f9a49414f9a9a/wrds2pg-1.0.15.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.15 2023-02-24T03:51:19,542 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/bd/a2/1d66cc227f78fb727160e17d625347dd9ce5a4934e9dc670946b36cb4a92/wrds2pg-1.0.16-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,544 Found link https://files.pythonhosted.org/packages/ec/17/b23b515c3360befddb0e907abe4226ddfdd0573d7924902fc835f9619fce/wrds2pg-1.0.16.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.16 2023-02-24T03:51:19,544 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/49/e4/64ec56d95ae7ca0c1fe4b799b5754885b5b8c9d8142d6467a146b098ca35/wrds2pg-1.0.17-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,546 Found link https://files.pythonhosted.org/packages/75/70/98e83341d542d3326bce285d748f86da9228a911370d23255e177dbe3789/wrds2pg-1.0.17.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.17 2023-02-24T03:51:19,546 Skipping link: No binaries permitted for wrds2pg: https://files.pythonhosted.org/packages/88/8d/834a67d927ed1035f5b44fdf0756a52bf6c7e5e6dd00bbc84a0c3fbc31bd/wrds2pg-1.0.18-py3-none-any.whl (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,548 Found link https://files.pythonhosted.org/packages/89/ee/528ff63a2445d7054239dd15a2dcf61a8e38dfdddf15ea922fb2d5f4fb3b/wrds2pg-1.0.18.tar.gz (from https://pypi.org/simple/wrds2pg/) (requires-python:>=3), version: 1.0.18 2023-02-24T03:51:19,549 Fetching project page and analyzing links: https://www.piwheels.org/simple/wrds2pg/ 2023-02-24T03:51:19,549 Getting page https://www.piwheels.org/simple/wrds2pg/ 2023-02-24T03:51:19,551 Found index url https://www.piwheels.org/simple 2023-02-24T03:51:19,784 Fetched page https://www.piwheels.org/simple/wrds2pg/ as text/html 2023-02-24T03:51:19,803 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.17-py3-none-any.whl#sha256=381f568a66ebb1a992cc9ca11b938ef34d98788ce84e7367b53b53fe2564326d (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,804 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.16-py3-none-any.whl#sha256=b42a003e724ff3690da66991638a7180c1b39d37529ed63df71168693a20f532 (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,804 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.15-py3-none-any.whl#sha256=d8d869592634a4a6230d73cb1fd31a0b954cd53251250d096d8c28a269527d0c (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,805 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.14-py3-none-any.whl#sha256=53fe3952f56473e22acc56e2dfd684dcf50d6e10ae4df2b9564d783a0323f3cc (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,805 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.13-py3-none-any.whl#sha256=dbb6b8140842cdf6dd074f31a847e5a7d6901706af211e0aff676dfb0a2dc5d5 (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,806 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.12-py3-none-any.whl#sha256=a49ec8094e122aa39eaf87b3eaf04951ba358b7de814db7232d3d23db0ee7321 (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,806 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.11-py3-none-any.whl#sha256=10c887b1d51113a546d42a5ff5c773acceb67e44b4dbc7f2c8e185e146bdbe3b (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,807 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.10-py3-none-any.whl#sha256=d7a91f736c8b935d21aaef6d5b729044c3b27fa3fe740e21bf54aeece56e3f13 (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,807 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.9-py3-none-any.whl#sha256=544627010f3f3125f38a8b442475cb841a1e7b63e9644d7ed1c98245e5e8ffeb (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,808 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.8-py3-none-any.whl#sha256=4bca52110d40065aada2ca48ed090ab85a34add55c09c804f9586fd454ae3205 (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,808 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.6-py3-none-any.whl#sha256=ba63b46b31e7f735db37bebf8ad301e976085a10628fcb01be40dbc9325267f9 (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,809 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.5-py3-none-any.whl#sha256=21abfd3fabf17eba315d7110979b9ed42f54051f205d859da68568b4699e291b (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,810 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.4-py3-none-any.whl#sha256=8197d920152df0686f6cd8ca31af2f46820802334c63a0991ca0ddd1c215c909 (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,810 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.3-py3-none-any.whl#sha256=12de805441cbd63af3d66e6a2c651f8f7d15e77dc5c3714035cd450ea1708785 (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,811 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.2-py3-none-any.whl#sha256=73be788eb7aee9fce430717615f683c7f912a817238a33697f41f26b85726147 (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,811 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-1.0.0-py3-none-any.whl#sha256=89d17b1aae3ffc78c0c02e87a2f663b83648460da7a8406027d62ae7c9ceb164 (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,812 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-0.1.24-py3-none-any.whl#sha256=8bfd551d615500576f778b977f5771b5011d87a962c1d43e8b7aae7c42f6bafb (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,812 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-0.1.23-py3-none-any.whl#sha256=24b5f15364dc798de6d21d3f2d117ce1d7c6e6e0768e8268e7b196943d36d1bd (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,813 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-0.1.22-py3-none-any.whl#sha256=bfa8fbfc09819fe5524153f82e6fc631069dab5096b0013b03aae5600346a2ab (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,813 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-0.1.21-py3-none-any.whl#sha256=f9ab26b51603e3bf82196a52410a990d95685ee6bedc4a88572340686d09affc (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,814 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-0.1.20-py3-none-any.whl#sha256=bdca9bdaa2e54c59f2120c519804dc52bf271a35e03a80dd8b1f65f961f28ff6 (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,814 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-0.1.18-py3-none-any.whl#sha256=896ccb2badb2923b55bb6fbe62a8d74604733c8c9c0181b144e2e2f9aabb629c (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,815 Skipping link: No binaries permitted for wrds2pg: https://www.piwheels.org/simple/wrds2pg/wrds2pg-0.1.17-py3-none-any.whl#sha256=3471efec23d7b15c86751d79adc43cb425d7ad46016afc247f1e1992b78083b9 (from https://www.piwheels.org/simple/wrds2pg/) (requires-python:>=3) 2023-02-24T03:51:19,815 Skipping link: not a file: https://www.piwheels.org/simple/wrds2pg/ 2023-02-24T03:51:19,816 Skipping link: not a file: https://pypi.org/simple/wrds2pg/ 2023-02-24T03:51:19,854 Given no hashes to check 1 links for project 'wrds2pg': discarding no candidates 2023-02-24T03:51:19,881 Collecting wrds2pg==1.0.18 2023-02-24T03:51:19,886 Created temporary directory: /tmp/pip-unpack-4oyuos88 2023-02-24T03:51:20,113 Downloading wrds2pg-1.0.18.tar.gz (11 kB) 2023-02-24T03:51:20,192 Added wrds2pg==1.0.18 from https://files.pythonhosted.org/packages/89/ee/528ff63a2445d7054239dd15a2dcf61a8e38dfdddf15ea922fb2d5f4fb3b/wrds2pg-1.0.18.tar.gz to build tracker '/tmp/pip-build-tracker-61w6quq4' 2023-02-24T03:51:20,201 Created temporary directory: /tmp/pip-build-env-2hg7612h 2023-02-24T03:51:20,222 Installing build dependencies: started 2023-02-24T03:51:20,224 Running command pip subprocess to install build dependencies 2023-02-24T03:51:22,914 Using pip 23.0.1 from /usr/local/lib/python3.7/dist-packages/pip (python 3.7) 2023-02-24T03:51:24,096 DEPRECATION: --no-binary currently disables reading from the cache of locally built wheels. In the future --no-binary will not influence the wheel cache. pip 23.1 will enforce this behaviour change. A possible replacement is to use the --no-cache-dir option. You can use the flag --use-feature=no-binary-enable-wheel-cache to test the upcoming behaviour. Discussion can be found at https://github.com/pypa/pip/issues/11453 2023-02-24T03:51:24,158 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-02-24T03:51:28,101 Collecting setuptools>=42 2023-02-24T03:51:28,371 Using cached https://www.piwheels.org/simple/setuptools/setuptools-67.4.0-py3-none-any.whl (1.1 MB) 2023-02-24T03:51:29,006 Collecting wheel 2023-02-24T03:51:29,068 Using cached https://www.piwheels.org/simple/wheel/wheel-0.38.4-py3-none-any.whl (36 kB) 2023-02-24T03:51:33,666 Installing collected packages: wheel, setuptools 2023-02-24T03:51:33,956 Creating /tmp/pip-build-env-2hg7612h/overlay/bin 2023-02-24T03:51:33,961 changing mode of /tmp/pip-build-env-2hg7612h/overlay/bin/wheel to 755 2023-02-24T03:51:38,264 Successfully installed setuptools-67.4.0 wheel-0.38.4 2023-02-24T03:51:39,200 Installing build dependencies: finished with status 'done' 2023-02-24T03:51:39,212 Getting requirements to build wheel: started 2023-02-24T03:51:39,214 Running command Getting requirements to build wheel 2023-02-24T03:51:40,483 # WRDS (or SAS) to PostgreSQL 2023-02-24T03:51:40,484 This software has two functions: 2023-02-24T03:51:40,485 - Download tables from [WRDS](https://wrds-web.wharton.upenn.edu/wrds/) and feed them to a PostgreSQL database. (Requires access to WRDS and to the data in question.) 2023-02-24T03:51:40,485 - Import a SAS file (`*.sas7dbat`) into a PostgreSQL database. 2023-02-24T03:51:40,486 ## Requirements 2023-02-24T03:51:40,487 ### 1. Python 2023-02-24T03:51:40,487 The software uses Python 3 and depends on Pandas, SQLAlchemy and Paramiko. In addition, the Python scripts generally interact with PostgreSQL using SQLAlchemy and the [Psycopg](http://initd.org/psycopg/) library. 2023-02-24T03:51:40,488 These dependencies are installed when you use Pip (see instructions below). 2023-02-24T03:51:40,488 ### 2. A WRDS ID 2023-02-24T03:51:40,489 To use public-key authentication to access WRDS, follow hints taken from [here](https://debian-administration.org/article/152/Password-less_logins_with_OpenSSH) to set up a public key. 2023-02-24T03:51:40,489 Copy that key to the WRDS server from the terminal on your computer. 2023-02-24T03:51:40,489 (Note that this code assumes you have a directory `.ssh` in your home directory. If not, log into WRDS via SSH, then type `mkdir ~/.ssh` to create this.) 2023-02-24T03:51:40,490 Here's code (for me) to create the key and send it to WRDS: 2023-02-24T03:51:40,490 ``` 2023-02-24T03:51:40,490 ssh-keygen -t rsa 2023-02-24T03:51:40,491 cat ~/.ssh/id_rsa.pub | ssh iangow@wrds-cloud.wharton.upenn.edu "cat >> ~/.ssh/authorized_keys" 2023-02-24T03:51:40,491 ``` 2023-02-24T03:51:40,491 Use an empty passphrase in setting up the key so that the scripts can run without user intervention. 2023-02-24T03:51:40,492 ### 3. PostgreSQL 2023-02-24T03:51:40,492 You should have a PostgreSQL database to store the data. 2023-02-24T03:51:40,493 ### 4. Environment variables 2023-02-24T03:51:40,494 Environment variables that the code can use include: 2023-02-24T03:51:40,495 - `PGDATABASE`: The name of the PostgreSQL database you use. 2023-02-24T03:51:40,495 - `PGUSER`: Your username on the PostgreSQL database. 2023-02-24T03:51:40,496 - `PGHOST`: Where the PostgreSQL database is to be found (this will be `localhost` if its on the same machine as you're running the code on) 2023-02-24T03:51:40,496 - `WRDS_ID`: Your [WRDS](https://wrds-web.wharton.upenn.edu/wrds/) ID. 2023-02-24T03:51:40,497 I set these environment variables in `~/.profile`: 2023-02-24T03:51:40,498 ``` 2023-02-24T03:51:40,498 export PGHOST="localhost" 2023-02-24T03:51:40,499 export PGDATABASE="crsp" 2023-02-24T03:51:40,499 export WRDS_ID="iangow" 2023-02-24T03:51:40,499 export PGUSER="igow" 2023-02-24T03:51:40,500 ``` 2023-02-24T03:51:40,501 ## Using the function `wrds_update`. 2023-02-24T03:51:40,501 Two arguments `table_name` and `schema` are required. 2023-02-24T03:51:40,502 ### 1. WRDS Settings 2023-02-24T03:51:40,503 Set `WRDS_ID` using either `wrds_id=your_wrds_id` in the function call or the environment variable `WRDS_ID`. 2023-02-24T03:51:40,504 ### 2. Environment variables 2023-02-24T03:51:40,504 The software will use the environment variables `PGHOST`, `PGDATABASE`, and `PGUSER` if you If you have set them. Otherwise, you need to provide values as arguments to `wrds_udpate()`. Default `PGPORT` is`5432`. 2023-02-24T03:51:40,505 ### 3. Table settings 2023-02-24T03:51:40,505 To tailor your request, specify the following arguments: 2023-02-24T03:51:40,506 - `fix_missing`: set to `True` to fix missing values. This addresses special missign values, which SAS's `PROC EXPORT` dumps as strings. Default value is `False`. 2023-02-24T03:51:40,506 - `fix_cr`: set to `True` to fix characters. Default value is `False`. 2023-02-24T03:51:40,507 - `drop`: add column names to be dropped (e.g., `drop="id name"` will drop columns `id` and `name`). 2023-02-24T03:51:40,507 - `obs`: add maxium number of observations (e.g., `obs=10` will import the first 10 rows from the table on WRDS). 2023-02-24T03:51:40,508 - `rename`: rename columns (e.g., `rename="fee=mngt_fee"` renames `fee` to `mngt_fee`). 2023-02-24T03:51:40,508 - `force`: set to `True` to force update. Default value is `False`. 2023-02-24T03:51:40,509 ## Importing SAS data into PostgreSQL 2023-02-24T03:51:40,510 The software can also upload SAS file directly to PostgreSQL. 2023-02-24T03:51:40,510 You need to have local SAS in order to use this function. 2023-02-24T03:51:40,511 Use `fpath` to specify the path to the file to be imported 2023-02-24T03:51:40,511 ### Examples 2023-02-24T03:51:40,512 Here are some examples. 2023-02-24T03:51:40,512 If you are at the home directory of this git repo, you can import and use the software as shown below. 2023-02-24T03:51:40,513 To install it from Github: 2023-02-24T03:51:40,514 ``` 2023-02-24T03:51:40,514 sudo -H pip3 install git+https://github.com/iangow/wrds2pg --upgrade 2023-02-24T03:51:40,514 ``` 2023-02-24T03:51:40,515 This software is also available from PyPI. To install it from [PyPI](https://pypi.org/project/wrds2pg/): 2023-02-24T03:51:40,515 ``` 2023-02-24T03:51:40,516 pip3 install wrds2pg 2023-02-24T03:51:40,516 ``` 2023-02-24T03:51:40,517 Example usage: 2023-02-24T03:51:40,517 ```py 2023-02-24T03:51:40,517 from wrds2pg import wrds_update 2023-02-24T03:51:40,518 # 1. Download crsp.mcti from wrds and upload to pg as crps.mcti 2023-02-24T03:51:40,518 # Simplest version 2023-02-24T03:51:40,518 wrds_update(table_name="mcti", schema="crsp") 2023-02-24T03:51:40,519 # Tailored arguments 2023-02-24T03:51:40,519 wrds_update(table_name="mcti", schema="crsp", host=your_pghost, 2023-02-24T03:51:40,520 dbname=your_pg_database, 2023-02-24T03:51:40,520 fix_missing=True, fix_cr=True, drop="b30ret b30ind", obs=10, 2023-02-24T03:51:40,520 rename="caldt=calendar_date", force=True) 2023-02-24T03:51:40,521 # 2. Upload test.sas7dbat to pg as crsp.mcti 2023-02-24T03:51:40,521 wrds_update(table_name="mcti", schema="crsp", fpath="your_path/test.sas7dbat") 2023-02-24T03:51:40,521 ``` 2023-02-24T03:51:40,522 ### Report bugs 2023-02-24T03:51:40,522 Author: Ian Gow, 2023-02-24T03:51:40,523 Contributor: Jingyu Zhang, 2023-02-24T03:51:40,524 running egg_info 2023-02-24T03:51:40,524 writing wrds2pg.egg-info/PKG-INFO 2023-02-24T03:51:40,524 writing dependency_links to wrds2pg.egg-info/dependency_links.txt 2023-02-24T03:51:40,525 writing requirements to wrds2pg.egg-info/requires.txt 2023-02-24T03:51:40,525 writing top-level names to wrds2pg.egg-info/top_level.txt 2023-02-24T03:51:40,548 reading manifest file 'wrds2pg.egg-info/SOURCES.txt' 2023-02-24T03:51:40,552 adding license file 'LICENCE' 2023-02-24T03:51:40,557 writing manifest file 'wrds2pg.egg-info/SOURCES.txt' 2023-02-24T03:51:40,672 Getting requirements to build wheel: finished with status 'done' 2023-02-24T03:51:40,694 Created temporary directory: /tmp/pip-modern-metadata-egutrp3w 2023-02-24T03:51:40,699 Preparing metadata (pyproject.toml): started 2023-02-24T03:51:40,702 Running command Preparing metadata (pyproject.toml) 2023-02-24T03:51:41,883 # WRDS (or SAS) to PostgreSQL 2023-02-24T03:51:41,884 This software has two functions: 2023-02-24T03:51:41,885 - Download tables from [WRDS](https://wrds-web.wharton.upenn.edu/wrds/) and feed them to a PostgreSQL database. (Requires access to WRDS and to the data in question.) 2023-02-24T03:51:41,885 - Import a SAS file (`*.sas7dbat`) into a PostgreSQL database. 2023-02-24T03:51:41,886 ## Requirements 2023-02-24T03:51:41,887 ### 1. Python 2023-02-24T03:51:41,887 The software uses Python 3 and depends on Pandas, SQLAlchemy and Paramiko. In addition, the Python scripts generally interact with PostgreSQL using SQLAlchemy and the [Psycopg](http://initd.org/psycopg/) library. 2023-02-24T03:51:41,887 These dependencies are installed when you use Pip (see instructions below). 2023-02-24T03:51:41,888 ### 2. A WRDS ID 2023-02-24T03:51:41,888 To use public-key authentication to access WRDS, follow hints taken from [here](https://debian-administration.org/article/152/Password-less_logins_with_OpenSSH) to set up a public key. 2023-02-24T03:51:41,889 Copy that key to the WRDS server from the terminal on your computer. 2023-02-24T03:51:41,889 (Note that this code assumes you have a directory `.ssh` in your home directory. If not, log into WRDS via SSH, then type `mkdir ~/.ssh` to create this.) 2023-02-24T03:51:41,889 Here's code (for me) to create the key and send it to WRDS: 2023-02-24T03:51:41,890 ``` 2023-02-24T03:51:41,890 ssh-keygen -t rsa 2023-02-24T03:51:41,890 cat ~/.ssh/id_rsa.pub | ssh iangow@wrds-cloud.wharton.upenn.edu "cat >> ~/.ssh/authorized_keys" 2023-02-24T03:51:41,891 ``` 2023-02-24T03:51:41,891 Use an empty passphrase in setting up the key so that the scripts can run without user intervention. 2023-02-24T03:51:41,892 ### 3. PostgreSQL 2023-02-24T03:51:41,892 You should have a PostgreSQL database to store the data. 2023-02-24T03:51:41,893 ### 4. Environment variables 2023-02-24T03:51:41,893 Environment variables that the code can use include: 2023-02-24T03:51:41,894 - `PGDATABASE`: The name of the PostgreSQL database you use. 2023-02-24T03:51:41,894 - `PGUSER`: Your username on the PostgreSQL database. 2023-02-24T03:51:41,895 - `PGHOST`: Where the PostgreSQL database is to be found (this will be `localhost` if its on the same machine as you're running the code on) 2023-02-24T03:51:41,895 - `WRDS_ID`: Your [WRDS](https://wrds-web.wharton.upenn.edu/wrds/) ID. 2023-02-24T03:51:41,896 I set these environment variables in `~/.profile`: 2023-02-24T03:51:41,897 ``` 2023-02-24T03:51:41,897 export PGHOST="localhost" 2023-02-24T03:51:41,897 export PGDATABASE="crsp" 2023-02-24T03:51:41,898 export WRDS_ID="iangow" 2023-02-24T03:51:41,898 export PGUSER="igow" 2023-02-24T03:51:41,899 ``` 2023-02-24T03:51:41,899 ## Using the function `wrds_update`. 2023-02-24T03:51:41,900 Two arguments `table_name` and `schema` are required. 2023-02-24T03:51:41,901 ### 1. WRDS Settings 2023-02-24T03:51:41,901 Set `WRDS_ID` using either `wrds_id=your_wrds_id` in the function call or the environment variable `WRDS_ID`. 2023-02-24T03:51:41,902 ### 2. Environment variables 2023-02-24T03:51:41,902 The software will use the environment variables `PGHOST`, `PGDATABASE`, and `PGUSER` if you If you have set them. Otherwise, you need to provide values as arguments to `wrds_udpate()`. Default `PGPORT` is`5432`. 2023-02-24T03:51:41,903 ### 3. Table settings 2023-02-24T03:51:41,904 To tailor your request, specify the following arguments: 2023-02-24T03:51:41,904 - `fix_missing`: set to `True` to fix missing values. This addresses special missign values, which SAS's `PROC EXPORT` dumps as strings. Default value is `False`. 2023-02-24T03:51:41,904 - `fix_cr`: set to `True` to fix characters. Default value is `False`. 2023-02-24T03:51:41,905 - `drop`: add column names to be dropped (e.g., `drop="id name"` will drop columns `id` and `name`). 2023-02-24T03:51:41,905 - `obs`: add maxium number of observations (e.g., `obs=10` will import the first 10 rows from the table on WRDS). 2023-02-24T03:51:41,906 - `rename`: rename columns (e.g., `rename="fee=mngt_fee"` renames `fee` to `mngt_fee`). 2023-02-24T03:51:41,906 - `force`: set to `True` to force update. Default value is `False`. 2023-02-24T03:51:41,907 ## Importing SAS data into PostgreSQL 2023-02-24T03:51:41,907 The software can also upload SAS file directly to PostgreSQL. 2023-02-24T03:51:41,908 You need to have local SAS in order to use this function. 2023-02-24T03:51:41,908 Use `fpath` to specify the path to the file to be imported 2023-02-24T03:51:41,909 ### Examples 2023-02-24T03:51:41,909 Here are some examples. 2023-02-24T03:51:41,910 If you are at the home directory of this git repo, you can import and use the software as shown below. 2023-02-24T03:51:41,911 To install it from Github: 2023-02-24T03:51:41,911 ``` 2023-02-24T03:51:41,912 sudo -H pip3 install git+https://github.com/iangow/wrds2pg --upgrade 2023-02-24T03:51:41,912 ``` 2023-02-24T03:51:41,913 This software is also available from PyPI. To install it from [PyPI](https://pypi.org/project/wrds2pg/): 2023-02-24T03:51:41,913 ``` 2023-02-24T03:51:41,913 pip3 install wrds2pg 2023-02-24T03:51:41,914 ``` 2023-02-24T03:51:41,914 Example usage: 2023-02-24T03:51:41,914 ```py 2023-02-24T03:51:41,915 from wrds2pg import wrds_update 2023-02-24T03:51:41,915 # 1. Download crsp.mcti from wrds and upload to pg as crps.mcti 2023-02-24T03:51:41,916 # Simplest version 2023-02-24T03:51:41,916 wrds_update(table_name="mcti", schema="crsp") 2023-02-24T03:51:41,917 # Tailored arguments 2023-02-24T03:51:41,917 wrds_update(table_name="mcti", schema="crsp", host=your_pghost, 2023-02-24T03:51:41,918 dbname=your_pg_database, 2023-02-24T03:51:41,918 fix_missing=True, fix_cr=True, drop="b30ret b30ind", obs=10, 2023-02-24T03:51:41,919 rename="caldt=calendar_date", force=True) 2023-02-24T03:51:41,919 # 2. Upload test.sas7dbat to pg as crsp.mcti 2023-02-24T03:51:41,920 wrds_update(table_name="mcti", schema="crsp", fpath="your_path/test.sas7dbat") 2023-02-24T03:51:41,920 ``` 2023-02-24T03:51:41,921 ### Report bugs 2023-02-24T03:51:41,921 Author: Ian Gow, 2023-02-24T03:51:41,921 Contributor: Jingyu Zhang, 2023-02-24T03:51:41,922 running dist_info 2023-02-24T03:51:41,924 creating /tmp/pip-modern-metadata-egutrp3w/wrds2pg.egg-info 2023-02-24T03:51:41,933 writing /tmp/pip-modern-metadata-egutrp3w/wrds2pg.egg-info/PKG-INFO 2023-02-24T03:51:41,938 writing dependency_links to /tmp/pip-modern-metadata-egutrp3w/wrds2pg.egg-info/dependency_links.txt 2023-02-24T03:51:41,943 writing requirements to /tmp/pip-modern-metadata-egutrp3w/wrds2pg.egg-info/requires.txt 2023-02-24T03:51:41,945 writing top-level names to /tmp/pip-modern-metadata-egutrp3w/wrds2pg.egg-info/top_level.txt 2023-02-24T03:51:41,948 writing manifest file '/tmp/pip-modern-metadata-egutrp3w/wrds2pg.egg-info/SOURCES.txt' 2023-02-24T03:51:41,985 reading manifest file '/tmp/pip-modern-metadata-egutrp3w/wrds2pg.egg-info/SOURCES.txt' 2023-02-24T03:51:41,989 adding license file 'LICENCE' 2023-02-24T03:51:41,994 writing manifest file '/tmp/pip-modern-metadata-egutrp3w/wrds2pg.egg-info/SOURCES.txt' 2023-02-24T03:51:41,996 creating '/tmp/pip-modern-metadata-egutrp3w/wrds2pg-1.0.18.dist-info' 2023-02-24T03:51:42,494 Preparing metadata (pyproject.toml): finished with status 'done' 2023-02-24T03:51:42,509 Source in /tmp/pip-wheel-b1qtjuw7/wrds2pg_92440323da044cccaa8623061aa8e4f6 has version 1.0.18, which satisfies requirement wrds2pg==1.0.18 from https://files.pythonhosted.org/packages/89/ee/528ff63a2445d7054239dd15a2dcf61a8e38dfdddf15ea922fb2d5f4fb3b/wrds2pg-1.0.18.tar.gz 2023-02-24T03:51:42,511 Removed wrds2pg==1.0.18 from https://files.pythonhosted.org/packages/89/ee/528ff63a2445d7054239dd15a2dcf61a8e38dfdddf15ea922fb2d5f4fb3b/wrds2pg-1.0.18.tar.gz from build tracker '/tmp/pip-build-tracker-61w6quq4' 2023-02-24T03:51:42,525 Created temporary directory: /tmp/pip-unpack-0imsw3zu 2023-02-24T03:51:42,526 Building wheels for collected packages: wrds2pg 2023-02-24T03:51:42,537 Created temporary directory: /tmp/pip-wheel-2eswsyut 2023-02-24T03:51:42,537 Destination directory: /tmp/pip-wheel-2eswsyut 2023-02-24T03:51:42,542 Building wheel for wrds2pg (pyproject.toml): started 2023-02-24T03:51:42,544 Running command Building wheel for wrds2pg (pyproject.toml) 2023-02-24T03:51:43,954 # WRDS (or SAS) to PostgreSQL 2023-02-24T03:51:43,956 This software has two functions: 2023-02-24T03:51:43,956 - Download tables from [WRDS](https://wrds-web.wharton.upenn.edu/wrds/) and feed them to a PostgreSQL database. (Requires access to WRDS and to the data in question.) 2023-02-24T03:51:43,957 - Import a SAS file (`*.sas7dbat`) into a PostgreSQL database. 2023-02-24T03:51:43,958 ## Requirements 2023-02-24T03:51:43,959 ### 1. Python 2023-02-24T03:51:43,959 The software uses Python 3 and depends on Pandas, SQLAlchemy and Paramiko. In addition, the Python scripts generally interact with PostgreSQL using SQLAlchemy and the [Psycopg](http://initd.org/psycopg/) library. 2023-02-24T03:51:43,959 These dependencies are installed when you use Pip (see instructions below). 2023-02-24T03:51:43,960 ### 2. A WRDS ID 2023-02-24T03:51:43,960 To use public-key authentication to access WRDS, follow hints taken from [here](https://debian-administration.org/article/152/Password-less_logins_with_OpenSSH) to set up a public key. 2023-02-24T03:51:43,961 Copy that key to the WRDS server from the terminal on your computer. 2023-02-24T03:51:43,961 (Note that this code assumes you have a directory `.ssh` in your home directory. If not, log into WRDS via SSH, then type `mkdir ~/.ssh` to create this.) 2023-02-24T03:51:43,961 Here's code (for me) to create the key and send it to WRDS: 2023-02-24T03:51:43,962 ``` 2023-02-24T03:51:43,962 ssh-keygen -t rsa 2023-02-24T03:51:43,962 cat ~/.ssh/id_rsa.pub | ssh iangow@wrds-cloud.wharton.upenn.edu "cat >> ~/.ssh/authorized_keys" 2023-02-24T03:51:43,963 ``` 2023-02-24T03:51:43,963 Use an empty passphrase in setting up the key so that the scripts can run without user intervention. 2023-02-24T03:51:43,964 ### 3. PostgreSQL 2023-02-24T03:51:43,964 You should have a PostgreSQL database to store the data. 2023-02-24T03:51:43,965 ### 4. Environment variables 2023-02-24T03:51:43,965 Environment variables that the code can use include: 2023-02-24T03:51:43,966 - `PGDATABASE`: The name of the PostgreSQL database you use. 2023-02-24T03:51:43,966 - `PGUSER`: Your username on the PostgreSQL database. 2023-02-24T03:51:43,967 - `PGHOST`: Where the PostgreSQL database is to be found (this will be `localhost` if its on the same machine as you're running the code on) 2023-02-24T03:51:43,967 - `WRDS_ID`: Your [WRDS](https://wrds-web.wharton.upenn.edu/wrds/) ID. 2023-02-24T03:51:43,968 I set these environment variables in `~/.profile`: 2023-02-24T03:51:43,968 ``` 2023-02-24T03:51:43,969 export PGHOST="localhost" 2023-02-24T03:51:43,969 export PGDATABASE="crsp" 2023-02-24T03:51:43,969 export WRDS_ID="iangow" 2023-02-24T03:51:43,970 export PGUSER="igow" 2023-02-24T03:51:43,970 ``` 2023-02-24T03:51:43,971 ## Using the function `wrds_update`. 2023-02-24T03:51:43,972 Two arguments `table_name` and `schema` are required. 2023-02-24T03:51:43,973 ### 1. WRDS Settings 2023-02-24T03:51:43,973 Set `WRDS_ID` using either `wrds_id=your_wrds_id` in the function call or the environment variable `WRDS_ID`. 2023-02-24T03:51:43,974 ### 2. Environment variables 2023-02-24T03:51:43,975 The software will use the environment variables `PGHOST`, `PGDATABASE`, and `PGUSER` if you If you have set them. Otherwise, you need to provide values as arguments to `wrds_udpate()`. Default `PGPORT` is`5432`. 2023-02-24T03:51:43,975 ### 3. Table settings 2023-02-24T03:51:43,976 To tailor your request, specify the following arguments: 2023-02-24T03:51:43,977 - `fix_missing`: set to `True` to fix missing values. This addresses special missign values, which SAS's `PROC EXPORT` dumps as strings. Default value is `False`. 2023-02-24T03:51:43,978 - `fix_cr`: set to `True` to fix characters. Default value is `False`. 2023-02-24T03:51:43,979 - `drop`: add column names to be dropped (e.g., `drop="id name"` will drop columns `id` and `name`). 2023-02-24T03:51:43,979 - `obs`: add maxium number of observations (e.g., `obs=10` will import the first 10 rows from the table on WRDS). 2023-02-24T03:51:43,980 - `rename`: rename columns (e.g., `rename="fee=mngt_fee"` renames `fee` to `mngt_fee`). 2023-02-24T03:51:43,981 - `force`: set to `True` to force update. Default value is `False`. 2023-02-24T03:51:43,982 ## Importing SAS data into PostgreSQL 2023-02-24T03:51:43,982 The software can also upload SAS file directly to PostgreSQL. 2023-02-24T03:51:43,983 You need to have local SAS in order to use this function. 2023-02-24T03:51:43,983 Use `fpath` to specify the path to the file to be imported 2023-02-24T03:51:43,984 ### Examples 2023-02-24T03:51:43,984 Here are some examples. 2023-02-24T03:51:43,985 If you are at the home directory of this git repo, you can import and use the software as shown below. 2023-02-24T03:51:43,986 To install it from Github: 2023-02-24T03:51:43,987 ``` 2023-02-24T03:51:43,987 sudo -H pip3 install git+https://github.com/iangow/wrds2pg --upgrade 2023-02-24T03:51:43,987 ``` 2023-02-24T03:51:43,988 This software is also available from PyPI. To install it from [PyPI](https://pypi.org/project/wrds2pg/): 2023-02-24T03:51:43,988 ``` 2023-02-24T03:51:43,989 pip3 install wrds2pg 2023-02-24T03:51:43,989 ``` 2023-02-24T03:51:43,989 Example usage: 2023-02-24T03:51:43,990 ```py 2023-02-24T03:51:43,990 from wrds2pg import wrds_update 2023-02-24T03:51:43,991 # 1. Download crsp.mcti from wrds and upload to pg as crps.mcti 2023-02-24T03:51:43,991 # Simplest version 2023-02-24T03:51:43,992 wrds_update(table_name="mcti", schema="crsp") 2023-02-24T03:51:43,993 # Tailored arguments 2023-02-24T03:51:43,993 wrds_update(table_name="mcti", schema="crsp", host=your_pghost, 2023-02-24T03:51:43,993 dbname=your_pg_database, 2023-02-24T03:51:43,994 fix_missing=True, fix_cr=True, drop="b30ret b30ind", obs=10, 2023-02-24T03:51:43,994 rename="caldt=calendar_date", force=True) 2023-02-24T03:51:43,994 # 2. Upload test.sas7dbat to pg as crsp.mcti 2023-02-24T03:51:43,995 wrds_update(table_name="mcti", schema="crsp", fpath="your_path/test.sas7dbat") 2023-02-24T03:51:43,995 ``` 2023-02-24T03:51:43,996 ### Report bugs 2023-02-24T03:51:43,996 Author: Ian Gow, 2023-02-24T03:51:43,996 Contributor: Jingyu Zhang, 2023-02-24T03:51:43,997 running bdist_wheel 2023-02-24T03:51:44,030 running build 2023-02-24T03:51:44,031 running build_py 2023-02-24T03:51:44,047 creating build 2023-02-24T03:51:44,048 creating build/lib 2023-02-24T03:51:44,050 creating build/lib/wrds2pg 2023-02-24T03:51:44,052 copying wrds2pg/wrds2pg.py -> build/lib/wrds2pg 2023-02-24T03:51:44,057 copying wrds2pg/__init__.py -> build/lib/wrds2pg 2023-02-24T03:51:44,091 installing to build/bdist.linux-armv7l/wheel 2023-02-24T03:51:44,092 running install 2023-02-24T03:51:44,150 running install_lib 2023-02-24T03:51:44,165 creating build/bdist.linux-armv7l 2023-02-24T03:51:44,166 creating build/bdist.linux-armv7l/wheel 2023-02-24T03:51:44,170 creating build/bdist.linux-armv7l/wheel/wrds2pg 2023-02-24T03:51:44,172 copying build/lib/wrds2pg/wrds2pg.py -> build/bdist.linux-armv7l/wheel/wrds2pg 2023-02-24T03:51:44,178 copying build/lib/wrds2pg/__init__.py -> build/bdist.linux-armv7l/wheel/wrds2pg 2023-02-24T03:51:44,181 running install_egg_info 2023-02-24T03:51:44,234 running egg_info 2023-02-24T03:51:44,243 writing wrds2pg.egg-info/PKG-INFO 2023-02-24T03:51:44,246 writing dependency_links to wrds2pg.egg-info/dependency_links.txt 2023-02-24T03:51:44,250 writing requirements to wrds2pg.egg-info/requires.txt 2023-02-24T03:51:44,252 writing top-level names to wrds2pg.egg-info/top_level.txt 2023-02-24T03:51:44,268 reading manifest file 'wrds2pg.egg-info/SOURCES.txt' 2023-02-24T03:51:44,272 adding license file 'LICENCE' 2023-02-24T03:51:44,277 writing manifest file 'wrds2pg.egg-info/SOURCES.txt' 2023-02-24T03:51:44,280 Copying wrds2pg.egg-info to build/bdist.linux-armv7l/wheel/wrds2pg-1.0.18-py3.7.egg-info 2023-02-24T03:51:44,299 running install_scripts 2023-02-24T03:51:44,330 creating build/bdist.linux-armv7l/wheel/wrds2pg-1.0.18.dist-info/WHEEL 2023-02-24T03:51:44,336 creating '/tmp/pip-wheel-2eswsyut/.tmp-y7y3pg56/wrds2pg-1.0.18-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2023-02-24T03:51:44,341 adding 'wrds2pg/__init__.py' 2023-02-24T03:51:44,348 adding 'wrds2pg/wrds2pg.py' 2023-02-24T03:51:44,353 adding 'wrds2pg-1.0.18.dist-info/LICENCE' 2023-02-24T03:51:44,356 adding 'wrds2pg-1.0.18.dist-info/METADATA' 2023-02-24T03:51:44,358 adding 'wrds2pg-1.0.18.dist-info/WHEEL' 2023-02-24T03:51:44,360 adding 'wrds2pg-1.0.18.dist-info/top_level.txt' 2023-02-24T03:51:44,361 adding 'wrds2pg-1.0.18.dist-info/RECORD' 2023-02-24T03:51:44,364 removing build/bdist.linux-armv7l/wheel 2023-02-24T03:51:44,520 Building wheel for wrds2pg (pyproject.toml): finished with status 'done' 2023-02-24T03:51:44,532 Created wheel for wrds2pg: filename=wrds2pg-1.0.18-py3-none-any.whl size=9680 sha256=0970135447d68b94dc197fa962f947d92967207bac9a08776eb9b1690918d523 2023-02-24T03:51:44,534 Stored in directory: /tmp/pip-ephem-wheel-cache-i50g5xej/wheels/99/3d/63/47ab166dc17936a16cc7655a0cd25df06bb80ddb23398c503a 2023-02-24T03:51:44,560 Successfully built wrds2pg 2023-02-24T03:51:44,568 Removed build tracker: '/tmp/pip-build-tracker-61w6quq4'