Skip to content

Commit

Permalink
πŸ”” feat(api): notifications πŸ”” (#235)
Browse files Browse the repository at this point in the history
* start notify

* add notifications

* implement pref exchange

* #patch

* handle low kraken bal

* rename crypto file

* enable notification and change forcepu.sh logo

* saved

* use list

* add emit_secret

* add test

* write more tests

* get complex number working

* get float working

* finish tests

* encrypt
  • Loading branch information
alkalescent authored May 28, 2023
1 parent e9765a1 commit 582b0f0
Show file tree
Hide file tree
Showing 7 changed files with 95 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .github/workflows/deps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,9 @@ jobs:
run: python scripts/visualize.py

- name: Predict signal
env:
SALT: ${{ secrets.SALT }}
EMIT_SECRET: ${{ secrets.DEV_EMIT_SECRET }}
run: python encrypted/predict_signal.py

- name: Execute order
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/predict.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ jobs:
S3_BUCKET: ${{ secrets.S3_BUCKET }}
POLYGON: ${{ secrets.POLYGON }}
GLASSNODE: ${{ secrets.GLASSNODE }}
EMIT_SECRET: ${{ secrets.EMIT_SECRET }}
SALT: ${{ secrets.SALT }}
RH_PASSWORD: ${{ secrets.RH_PASSWORD }}
run: |
python encrypted/predict_signal.py
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/sandbox.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,9 @@ jobs:
run: python scripts/visualize.py

- name: Predict signal
env:
SALT: ${{ secrets.SALT }}
EMIT_SECRET: ${{ secrets.DEV_EMIT_SECRET }}
run: python encrypted/predict_signal.py

- name: Execute order
Expand Down
2 changes: 1 addition & 1 deletion encrypted/predict_signal.py.encrypted
Original file line number Diff line number Diff line change
@@ -1 +1 @@
gAAAAABkOKHpZllVG1WdaERLbIOoFrAuolnqSbnFpdEAvIc7YsBvnD6PMj6WTrzB4LGNlrEhwWKePSM_ZCsoyerNbg1aCBBKPlMR3L9IcXyfIT-dXoCYdbE0-N-yyA2nZ27b33183xShao0EsAAZaOswumBpZD7SPJrxsmxYtJMSr_33CbFOMLtBDesWelxE066FGWwQjwqrop3klNTTjo6l8QfCqt1PXIVFQRC6ZZS01wGmzbFV8TZ7JRRj1e7j_j_q9sxn_Weon1X9OJKGynJt5eYn6edDLg4i920tbxFOiSoyfqSzd3KHaNkCv6QSK3EL7u8X9lLXoblDWBG5vG7WsT7VpLr4UbnmkXBMv7pYud4nugGZ46fWm4uKGVh7n_xXdf7aIv4ppmX6fNGv3uMScX8S-bRVZANrvfec8owsKcfRWSVfbzc-PmRqUIenHqnaHNUiUEuIneEh47HW_D1milb8JxonmpATMuYS2_ZiU8HRQDX1C8DzMIrUe-m0__5f0cixQyFPnOvsogo5S4GvYLuti4EwZZV-nNncY0xiK9OkGHhZ_E8_4wq6N9jslYrOAHPWsKoKQ0FsJxseAiQi26K5EtaQ6ak36r1GFUOl8i2FsXINrGrRTQQLaLi-6NFjg5ZiWGsEIIhegbfH7xDLUtK0xQAqyhOgJl14NmyRTnoHSNAhdGlZj08BX_Txa80qZa69aU0Ccr7uEn-Q9i0z2gClf5SeJLHViSOCNYjmjYVoUSKy16M70Ei1voe7_wrLbx48HrXXNYftJRog4Ga23KkbOq9sJ_jWtqD9qvYqWF8Vd-CrOnKTo5uWMHGnvtsez79vS4LE2N1dDCDBLF906280QVwtlIjtfxTME_MU3qqFwsD5RZ-6TVk6A5aHv_c2IUUVjJ2-nPDZO1BkkPLzx_PH1f0Q4sJyvqw4brdOHYQDTz8X9yhfPp4R_qmhfqyHjJc6-nvqJvkM6P6IE80t-WGHDIkTBNu-tcGMJXZka34p5ncUawVkpvGOxpFPVHggDqEiLmOuUYJBVUbLV7uTHyu5gJaxf8JDINdhEbn-7gSk6i9l1eBWcGu7EquSpHJZT9_dg1M9DczqxT1qR_GxhI6iL6HDl7Us6YErtmnCdMoIzsdxl_PEWQCTIfVPpEfAly6iMs8mFJJtF7wrHr5uOlDbbtzotcAfG0Qd6h9FWbAPiG5QG6pSo514AhwIscJxxRM4SQkTOxzDXwfP7eejudN3yEY6WrQMZM33ri878yYLOrw_UTorIA4W5re0KOB57vZXY3UNRyLEjwtt3DnlkIrzkHuuncvyaHq3brwaUxhoyo8nZHu-IT_PJfhYKw7Jhr0-UQxkkk8iYNEk98XVzXdanQGV8qEjQdib2PQzw3_Qigq9ba9F_f_cjs26H0fmJrBvNXCXIP1pikxmHff1rABjwD0xQ1Q2yMCdm7iLWE5qggzCyVq47fbdBQnUSDJRRpTHElqkBl5CXDEhGUOr9xzDAd2S5KeSHFYsYMZiKF410bsRd6wRl0-5-m-U-4SgvDM5_Tr_gZDm1vuuqyfInqKonV45ZxIv-xbNfeGRIAOnSl9Vzws8FOWK3aDG1sKapK-CjTbmxvX5HxsqGV003BvbOJvsOA6HlArHNYU9qcDGHDc3o_n4tHOz56xb-rLorgC63wc7N0ioYO9yqeYTVfi35NaKx8rP7iyah03BMjCL7QUF4vv5-Ym87XEkPzxw7rfczet-bZSP3MaFGvIkwcgfBWnxHgE2xdNdtTMfGW-wpDNW7KIDStkTnO_eIJWIx8tqoppj61CxZacBq8nIgHIMD245m8AeKQrl3ioCXBn_1TEwL2XjQqn30omrdTAm2VqdabH6Owpo3W0S0TWjYXVnOQLdhWo_4GVZGAuuYVC0mzQEySj5k9qGiG7udqkdjxrX3Td_G6n3bsZJUyvxMe5MoHju_rSYMCu6dH7BfYYVX6vLJStxX8X73dtIABRpncV865t2FDRPLtj3r0uFedyFckad8bAJ49dKwjoQjU21HoU157wLBLpptgpqEGigE46esAmgX5m4HvbszceL-CUwGN0EMo9k-t0dFhI2vjR5IZDJmfIA6_ymon-iPlVIYTAlEQnvJ-jWPnBStjpsSvsny4Qd8LA2uct3nwjUkgg18MSfVwxB8vrHjl8vB9xNa-A3371hbe71N6gXRd9LhByuwy-EHCfxFbmG6tNUcFVfIbUBLR5efjHuqQcID-dPZPjnX9o-NVFOb4H-893rIb7qAWeN2v5pXVJjjnsWQN8MJa9KCXZZ8ySmbVjlc7iqUoItg_yXGUbRYWicZlOATJd6OGnqroBtQ-ScP4gUL2SWadrNuObhh1H0Hsz_C4u9XaoeTh-IewETkgMQP98-0Nl8MH1sZkOrhD6nJPNRgaq5rdJl4_JmQxX2EoI7NH8iBo-e7RmWnsqvtLQ5egK28pWgv9E_Hta4gmTrN_aph5HX8Op2-QJeESN0WH4QNTOD5lQrqarSHrLjTp5rIknyAIQYodnk4GxjisIQVdd2LwzfGre_gRekdoB2PekBLPe_1mCHM8Hp4KIj1ERRCyQwuji_Unb32WKwyYVhz2M7WzWwC2DsL3f_1_q9M6Q_0D9BSdiepjEAp3aQtcZex-aMuqTrM1Llr7ZLMatHj_rsZXkQsT4rwyVk24V5VmjkOMa3zlmy6NRvPLdHgB5cBD4ddwZRCZoKqLp-Nd5CFuRffzSlAohwEtB1X8HE2TYoouiQsyMI8UgIpK-ljDmADEma1n1BTtqxEE37aJJCwh2UtnDExT7jaLT5RC3wqQgRaxh0Bq4o3a5rn0rFmrrkTq9aYTikuLncWPoEUqZWnj033kv62d0wgE5UYCK19IcnvOoJzD0BGbGnsQBsAgnIrdBV1-I9qj-b3QtHcJNPBYMNUcqzzpySSJOGAMR_34WYAZaSh6eSm-JI1Dds_NJLpaT7lorgNuHfeD7IeBiQNlPP-covxPbOHpv-xjK5Qzc5GHxKb_xR8qbnGuWRUBRI5oKzQb_40l1xbOHsMAmekrF-WygAkXX7QnX7DCIdyFpIT92AMPYbrv8Dbhki7ErbI8QoqHlqFtcfjcN35HXGBCJxEXbP9V_LtkVKSAWFDLqe4EwAcvgJzvUNhWat-nUgUVz7-YXSM4psKp-vsejTSKrjBxpcZaOMJ2zagHQ7kWzSacFptp9Kq3I9PLVjXO6plMf31CzC4eyidlURKBIQlOMIZSe6_Bb5vd7ibHdmlEMsXxadvpdo3NW_Ollfj4Otp1ZtY4YJ5XvGq-d2H44h4MX5p2pT4YjUDYUhtguXlflxqnrGv_tmCUySR85a856SiKkdVCsUji53N0J9IKr0N6K1FHLr68ZnTCCm6ocWqOBcQmJL5KLJ3QhazutPzo8pUcTj8sAt9a4dzYo3ZCKOAGhF_03bx1S2UML7DuwjdhyLZvr8Vf0ANWZVaLs2jUVgmtzgaX9MLMm1ZMt1rhmyLI3iR3S4Y-dA8JOtkV0CZ6L_SmPuN_P9sBcayCuZUp_psJd7hZhvGgOPOX4sjF5USQfydXpdWYtQtnTYvhO6ERxDGTHqio-TSioPGuacrvezMR96kpUVc48rwcYptaGJxj4njD45vC-ukkm7AyuL3wa10TwWSKdheKHp2wGPJBOpbPdzrdpbwUVyM9X4zzAigBcT891cVeUyBDBcN9n_a2uGMKT8VJQwWLUYyUBACUw1X3-pucWNZZJZXiwdlSkjHMvlYjeOTxvzi1t7l9YNeaA_w6AETYsC3q6X5mjoE-P2koaSLlq8b2rteel59qDLSrqzFUdYB3adTkNbuXTxfgzP5eYB0lOcSCc7DkYqKES5iaKwezAzf0T2Gd6iHTudSWT0AnTlppsFJJkwHYnO08tX6rn5dZk0wjiYeKDxRbZBKVYcBWDtE_SmrmWHaW9zQqKq8roLCVyxJ-YFKf9QPhghKK-eu60nokyTbwKw0ueUi_sJL1dW5PEOpNC0XOJ-bhAF4tmTbyy6sEL-tQ3cTj1Qkd4jfu8akaN349JlVkxo0W2_9J3w4w1_cV389KODIdqRsbNuwPkYKD28PGFWj7IQLiTvgBeEAClvpxwdgGxCJTxRcsaEA0HrmsAs8ukAbWH6XWKp-R8_lNNBYcWTk9KgHBM7WGIc8UyWPDLSO79yzXFjnEbZPoMQxW1nXL2dlRWvyCO6f-2oFzNUta85yeCDTnoF-zy7d1glqz-Eg_I1tOYhd6qKekSmehElfTqRco5jsEc9LaZueLxdnOTu_Hoe1_nB4OmHFRxNzL0ztvbeXt1NBrjvX5d3isONR4o3TMoiLAQwdSqYv3HogqVa2CUlHmsBKJskn_0SiLdB0tQuAbk84SB80GQBXSlydSnE4ImBpohzKmmCGFghx4IL9x2mvz4rknQjua_jBexE0gUiLMmIvwYEGTSfH1rXwWdLvy9CmqvSbiygVURnBKufQ72gNoEHkUHAe-TbGq4oJfprIJ6L4dg0n1nInB0OcFfWJ3KUmrgWVG_LjO9aqeFcmOa_L3AkfhtypNoeCyjZ6SXLxQCAqw9Cl7iuY5p1wBirsE-ID9psMfPen1OUxQmiKHOgEaEQ1u_bsmK0vv0cRANS2qaNnfPoUjDSpcPfcTIItyCEufj0hDt2vDJz1xcxw-tz96k6tjYLlM_H8Wx2FN0m32_eOXukaZqkNFKoSkkpnfbNBTVbhYolT9YJZqgHhF93rAiJMNkHFdVG2yVcRqztB7Io1L321ryqPsVzG_dOzMSlsi8FMCzAmbmi2Oj-CVLDy2lFdX2W_H-mQzGPnaHdyGsvzGMsJ0fM65YpM5Yq8goKohWchysPPJVlrNMeuSbTFaGAiCUKurDeUNIw3YL2H8ElwpPKc8avmSd1NzawtgqwpB8nXlsDrcTkl2oQB8hi_BR-A7av-mOhA9N3RO00987LPnAZhyGYKD25cws7R3V53kqV6YNJMWcTvnMPA-4kgE1JwldTvp-fOvH_gttEYeTVA4YufQubcfCk9V7hcPJA_OpwieAN-b9xJAR3jW8Xhv5Bl1XEyZ8QVLRdP_q49zX7wHDz-_lEmC-9oxnBWhdoBr23fZ5GnWk-UXqfyj8F_rWahb8GRA1b85f_TuvA5MC4QnzJxJ9jOTD2C3JhFRff981On1DWdzDdomPrva7rQgwOB4pEe-KiZcaeCyJ6IL7SdgA0cA_fUqKBIV-qxnhp1mireVNZFLMDKASs1dahIKxUe8nbZDgraD6mAru6NPiyLyrnQjIioV9JMZBijbXOMX9Y9-03A6_dhpfM-G9YNlzmBxw_EVIE-OZnDP-dIqMc3fJgObsv69afLDHqX11QW_PF748ndZOHKSkGV565Xtf-Motg_0lvwSCTLSOeULCcaP21p0hv6aSxkRGkWGJDYfAV3MCedyFuSv83Odadi1M4OSlCcMOLLaFejp3KXh46Ntaag-L8purCS6G2P9dxRE9owFqrLx-L_8rrenx-L63Vp3a3AnDfaH4pxPys4eCzwLL0rI2O8-yf0Mas19sxQQ4IFne6Q1GMzQcdU84TlLgNf_WXdtu-wVUZiinC4Z87aZKlEW4M6TtAZ4VQpEDWqpZw2YPdjJC9osd6I4JluuF7ScN7GDQouWedCVS0DdzmfW9AXA81Ws8H56BOGE_uglO3K-0Yt-xFOHZGq4ozdsThTCVcw92Yg6pMDHfTVdbL2j_9AcUK3wR7PibKya4WJ6ASqroFEluKa8yqJzXbg3ym-nrO3Ddm5MZBfWxkHpgTFWA7VY-mjQ==
gAAAAABkcrDpI7Wzbm0DWLUdtLkyRwmjk2dfVp3Yipq-B-rs2ct561Ax9CCqXbeKfHfRrqtjePswLWRKe-timCWAgynLYcKajclpJsQ0skqnZZTfr10G2fpW8TLFgvqHN_GxD1RvM2kSSFJ66nhoJFcjiJMrOwP4nbS9nWLyoO1jYv6lxpASAOoSO5qMr9hgfltzhUdMxqwDy85Flz1Z_9c-mKnj0pcZEwAwl2SP2Cve9R7KD8DlDPpWvmoj1hmtxhIgNXjFFuZtI-uSY3B4l2LkE27iCuG0KKaIWpeAHVG9NsCcKAYdPRTaAQNheQTE3LTtCq4aVVQgZcdqnCW5pBwQ8FFDc8aheqBdqQVMmAp_ssmkUcNFTGvgbl7TeY84Qg9n1dpfmoUnHVVVp5KyB378yRS2LJBnt5TrVB-P8u306Xwe6RdO5coRd5XA12QPB5MhLPSywZaqTxgQ0dBDigxCNqutLDpgBgxD-5tqCugRgGvvj0aCKIs2RUhzzgRWDYU0hwZoZb28Vyn6XMsOwiufPtLSvIPysqY-TraOk-YMAlzmfyBYQPPCWZnoZuGDg1kFrn1i20CsBiyPsON03fsUElq47qUZk4XH1PSAinZ7g-AGwHta0R0QWmqitGsnSknnChAD1HEV17ilzaupO7DgGj5IqbPTve2T7dlGlbQokhtpjh0Fw5So88pUNymozfBKeoqWnQpULLM6PqgulxcvjxHQ1B_y8s-_BQr7Rxv3u0LIH9IHPNathEULNDdupRbNEtbIHaQB5Dcvz0WHpHmEsogKe6abGSAJ7eV_zYBoPTafyFqBg-v7nPPHYhqaJ12WZ_UmoW5jv4qaCuFeYMUAFtSLIrrYkWZzYlhVKiTKBJxepl60uPvJo6191Vva0bRt0ytP1FSLoGSphU0hHA8s3KaXdHtLo0xXMrdtq1HcoNmL1TgGISQqvN70yR5e3FJPWZTUny_HpWTVgmkHzsrheTl4Ck0tqu3CeC29nGslQzdvdn1S7nAjnXNL0PqvWWMOSw8cNnvlhI8ZOFl43Y9RvhBcAnJP1RztwymmRYqXeoJ4cYotDzHdIVSOYFzlQIDhCacNnHPLW5gV0I6XOLBmRUUWUqg030do8ljWptknBEAceqQyLivVk_GGq-UoFtnrevu7Dg81QCzUHUFQ7H_BeCwgyxmlaTUbXY_x-Nj0kQDVuGopw1KFN5pAXlOPgmNIgB5hYc4MS-fxuixcVcyXChUj7JWwogGOtQG795ipazezHRtYzUY6r47HW0OU0Y7ygtMCBgsViqraJ0y49bFPcAd2d_gI2jOiNTDEELTbQdVT87fN13SAkthcfAAmB1kKHE80SSzXMckKTSocxGjifODVeyBsXrrQ9Z7uYa_F7wBHiV0xpz_4iR4khKDd6yLLfeCpRavfxxkZ8FFY-mp8PnKspyUy6Zg5kV6TMuI01QvObrW4bCK-jsIZdsOQX-NffJfQ25b8dsBMUKN7_OWLUsxHpNBkNyyPS4dufcuJX8OciO_aahfLg3KlLcx6qw-370rCCEVPGJvg4hrR0rjbVAjf5_9ADRcPAbLx9WbsE0flGrsLFjLxblwVNO77auGLYk4oifhJH47ZjLq1juKrGb4RJFTfSresRuQaNxy0VLWzgqR0s5mGctf4Q1KENXrH_IZFdYgC9cAz1z4HRfm60CpgY7LM6hdZ_2o4x_cSLPe_rqyxtyIR0Wj6HKo3KvvHo8A1oCoGhAQqh-pZwvm59J_-KToF2AnHTuo3agTnlTxAwuJazPdPjqVF2-l-WjNAVoNddM3qgJsg3GzpMUZK4nznYIUxoiwbp0HbwjxyNHysyMTsK18WX6yuaK9lM51NOPBuzF_q-zXHXw9bIIEBTHP1p5dTXgTbHSLMnIuFRiOqMRxpjsGisX_P4plluKCFyh4ZawOYcCX1tN4uCTsMe8Xzkpfp8FHzHlB9MWvRpfOty2wZab8h0GmfI_kmBeTOuMY9Zq_yHENoGK2x5lLcc1X_fJIZLW03iqVTJoRMsC246s1IuuHlHg5-han6lH4ZVgYuntyRDMxOqWYUiuJFesh1BAmVdtorNDzl2rV2NPPL1xT_TNjCYBUs6Mgja80fvs4gyKIQErBl4mpbhqF7KhS6B-FJOXMg1ACBzoCsJHvwXsNNDndvzeG8bchK8Y8rQqS9o7kYbYzhsQDK72TCuOJAFIDxzoWFFl4AU1SbSEKij_R6EcqbYbkSVdTuCmUMri12U-Py5gMNx2rwEqVjPJr7AKjCCOq_vE0-0gb-jvrzfvRzFjbi5QDGnA8JFQm_pN-ctj13cSv3ATlq4ipeNIDVe3C5WOsb721BuIZiTcusHeWU5Vj7eqkHbKq72r2AFJpQO_FyW6uCAA-ztTJL7Bq-wcAWo2VTeG1nDzLnsT97rAqHigPjNHPkd-K607U0IdmIl8N2EFxYassIKAmXw5FJnYF26gJ0scB3hhS-IJOTP-siHzQos0KIFm0TAQUUXrvWroBm141C1DQnpPVI6UCZciP82Nd2IyMuAoajqESBcw4UhFnq-qQRzVrxObMWVvd4w15DfvDf-DzVN6e-nSKYdQ5m9X-0GUumJYgg-KVnNzD2zQWW26dK-wAS-M8uOr92GNBsDkAQ4A7qOiNfMpXRFuzoIkVfFoUGbJy-q_2zVUDY4hdEDFAoL3JKx2Epa1fMlM9CA0FbTbsmmgL_dzFlDk9Ki1nglkQORZgAZiBW2x4TrWC5Dqg92yvvh2DYpDyhYSxZchDR_MqhItdH3OPxsw_tsG19nOSMCVsj6FJsOhvi0wRJtHnyYnPsI3dSw_N5lRux1S1dmQ1JVCy5feB6LCcmzEWB2QaJa2Ei-zw7-_oV7eCDHSwH6b6HeDFsTdiwv4UksqLJr7iKNWtIfPqGGyhII1rsPO4s7SjvIzDterjgb3nAC_lOl9CnvP5SCzPdiQvzamH-U8SQyPTvHlqpkjNNULF0OFEEqFBI2toqSUyxneG-4zpf6W2AapmTszZVA9I6Mvwo48UuD6LYWeJaTmMiCu1Fx8FgD0Xh442O9Lzk_6LkCnbPtefgM5gWZmDsaOYz5WUfZdvzhPt1n5_bxEGFUcdBptybjMsDc8VlChNXSrbB0l-BDjbN2rIsJL6khq3r6zUQrTDDkJ7LmojgbMRo-N0h311P738F_0taf0d_9uKdzXKCwXZXYBVRr8Bk92_taJelX02WHpithbzAjvl5NPgKXEDXzQ01wOFkVDhJEsbPQL8GaIE4PexDYiPB76W8nA1SejwfSpdfnoo7NzQLV5vj9d-71MZb2CztQHRDqQaYJhVYpkBWOKDNJV66ub5cgPx3EXXV-ZRhDZsHDf0CgzISXCQco_uJUB0Jij2Vfsbe6QNsyx5mWYtFglWfFGyTv2wiNBD_DNgx0YaijaRILayJGL-uy_1pMd3VnrzNElRtf1S_ZWhVRJIDbcombQh4ECkOTA5KnUyn_IsXWVz4zSXWsuBqdOEf3qV1fguo9ouucBnmyMhU47RAV8sGgiPgitI9NCIsEwvPEltQktCLf-yxNAW1fU5NL6_ztjBGbZOCjHl-Llsjn_qlrUKfTOeqozzGOaipF-VupGFI5MIcpid45s05VSW2wq0SqqFGricugvZlUDVePfGVN6J7ldLZFLXFNO-7k1fjAdiR0HR3xnRijtvsg4d2dEtEhQSkcg4eMBfujXhQ9aZJgFYds1_2cSz30bwPF2JF6qi9XrTqfml8tv5_-l0pkXQQm3QMKZQlR1k6ssdYXZYOOV2LeMU0tMQ8vzV1GOB1areUf1g_4zll0OeFNd4WP-XzuKLh27ZapIEJ3vndGGMYHepxWexB5HwfI-IOrtsaarwbH501IlMjoPQJUNFPJ4zW16jsYwWcgQyxbUXYRNtC7qeKSiLBLvFJhVDORyiNDiG8XIflYn20AcLdzvjEOC89m1xGDL_SejcTu2eVODm4RkhL6wnzwN2eo1_yhnOlAKbHLKn5hxIGgI19Dom7GFQXxZ3GDjPGHtI_qsxteUAqBVBLTMVXLA6USsVn-IeoII--qaCEZMOT5LbZ5ezqpUE447jcBg440g6RdFX3jmhPXW0eL1_qSDTWEMcdF8-iWGmSMSsPjZJnRtAp8grtB2VVMkwETNlBk1nFLw5ln-6pEYX1ETju27R0W4wPBzHQIuymxKr3K09G00k-bRLaDEofknrsMDpa9JWPBq-0FS6Drxov-AeMWxVGceZoDkiprn1s7mW_fZo9aFAoyXcZTb9DInv1PEt-v7AZWqP5wlzj82A9gglO_PsJR2g2Ssc-8bNaQtjxHFx--MZvF5h0KPpgreXYwvm41WHWGLtg4K9eV2EUCOggZ54uZQd7bob8QLiD7W9Us6PMUjUCm3URgsX5Yvlr2hXJYaZWDjXmpP7ERXM0CJqUi5dfa4PSrVyx0g3v0PILhOwilbYiGmRo14u5kpwcOtlVdy2DZ3Wgtj1j86GU665roh9ZaP6evwOBfKbLBUApimsxmlGU4Wot5ZJ3QAKtVtExO8UPuOfQjDcaB1NIzayHuROrh-SgCwqvV-ZBwX5UH_qEPRjer9K38ClvNLbCbdxqMwM0wBGloU4umvnoqAaI8S20lkJW1umecO4-8EhKfI07nG0Hglm19ZF4sPoX8t_EJhkB6nG3vLEs-ObjxQiB2am4BdirOzpnikncNBOkAOi9-UyNHKr0aQL5064jtWCvBzoFcTVesoUk2YwOoaPW0Hf8UCyjjCS6gCZpseEDUFLNrAm0ehHBLQV6RwrvNu4g3XM6P3peyAwzDbeRCTGCeqtSUE7-FDkceql9FrpquA2EKhGXC5DcQaTwmVb-r0AimPBC-Mbj7WPjpVpEltZb-UlWwxRX_wZSay488QEG9RCE7uBScZE-hNW3VOmUoJnOF0vVdMgtqOZwUolF4OMxIIxBrg7H0o8nBVQjpgqcjgSNv-sDy6b5OnU7Lqx0iFz0hgt0dMgv-VI5BQWomMEl1R7QcXsj8ArZBcanEZLMtWgz7RfaOvZy0vPm8GuPVg-aMTi2C8EQZf2KaQt3Z9c_2GrsIb5avGtVtccbvwTLqrGu00Fq8Zdo-AK7avDmC5eE8-CfjKpk8__hIZ7kiEPqYSpmlYWOPpNwG8Q6hRCCMaTxOQw1oNTc5Bur2d3PzcOo9uWnnnaM8YxGkqBEvw7drUROWAczcJAV-4Kf_gFbPP4mpVJTMqFuvfArvHhxtpxsTd7ZqYd9SFFB7x3vF9vfxPy3m6mU2aaO1Prl3VXAbSbxQah4H8Ulgkiq-Uygual6EVikrE9dRlyinlGcYrpOijG9cLaFhKDgahHmMjmJKUTYMcQAHXQlCyXYBf792wGf8CUHhRQ0AG6s8RCsFTZ8j0-SNhgu2L16aDNxygjFE76sqmErV59QzDBO44tFsrUnvOA03N0b1iZQpP7LfmEFvLjh8muJppDQO5yodcbWk-UW40BZby_spmfZ9ohaUxk9TQCymSmmiidPsbTIqak1baCt7ASzdDm1_vFi2wGaFe7F-vHtgN-JlYv8itxtt7-4v6Oth0OvFZbM4Odx-hJBzFJdjDZlInMFHi5j4xXq9VqSQBkGBLOLzJOSAOl2ZQi21rkEsopn6LHzWauf9Ii1tuXZcz1v95NG5OXIn-bdpmId0OB0lOJ9FhFLgnLDuTGqmRkmTc1PfgycsXla_jkPdEoe60mUj1DnziRF2kz4Pto5Fst9gF8xUwhE44C7AnXIYn9nmFAI4fISe63d94IAhjwL4Q9TglyTxB7dGL_rRNXUQolPc5aDC6bn2dwACKiTGoSW2fkqhJXCVbCsnK9GnpI3L8vKdqS8PdNzfvJ4LjwUNpffJDJe5ecXv3C7ti93uq_KsIYhahMZPZG-CATFiEz1b_ZviHTRs4Hb-dgJzOAXFH-YhBniXx9yDs4g6UmfNQVA9S9TPMclN9axW3yVtfMF3RA1PxxgxzuQHTinBpweU3vtyI_ta8GQ3wDDVXO7g4h4NxOFUAOk-O9GCV37wYrAzErkXGDnVEIVR-yLyggOTilzVkTgpLn1poUD9WOhbB2MmPmLIGKHCbwBbRvlpmNHzsCUaymCqhkpX_GHA0YkO_VDI_YLiZSub1xGHWXoQuKfWS5j6g9Y_cUjbM43p66WXlDwJvq0T4TZ8dYTEi4asEmfgl1Cl7RXi-eMlThVN7nhSiuvDuxMPjdo2yvrItk4S0WisbjxWVRQlUAwZxA5zgw7tJsMnUXMv2jVW_yXn3a9dli-GjOq8ApSibqjab9CD061M3gzaMAz_rk_sZ3oV8VMde3qxFc0RJwZ_phl3XyyAKgpXUPsuk7SbkM5Kmn3klxsGQ454TEdjK5w9kWuTjTQCueWRBJ_BTkQsRc=
30 changes: 30 additions & 0 deletions hyperdrive/Transformer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import json
import numpy as np


class NumpyEncoder(json.JSONEncoder):
""" Custom encoder for numpy data types """

def default(self, obj):
if isinstance(obj, (np.int_, np.intc, np.intp, np.int8,
np.int16, np.int32, np.int64, np.uint8,
np.uint16, np.uint32, np.uint64)):

return int(obj)

elif isinstance(obj, (np.float_, np.float16, np.float32, np.float64)):
return float(obj)

elif isinstance(obj, (np.complex_, np.complex64, np.complex128)):
return {'real': float(obj.real), 'imag': float(obj.imag)}

elif isinstance(obj, (np.ndarray,)):
return obj.tolist()

elif isinstance(obj, (np.bool_)):
return bool(obj)

elif isinstance(obj, (np.void)):
return None

return json.JSONEncoder.default(self, obj)
Binary file modified img/forcepush.png
100755 β†’ 100644
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
55 changes: 55 additions & 0 deletions test/test_Transformer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import sys
import json
import pytest
import numpy as np
sys.path.append('hyperdrive')
from Transformer import NumpyEncoder # noqa autopep8


encoder = NumpyEncoder()


class TestNumpyEncoder:
def test_default(self):
# list
arr = np.array([True, False])
with pytest.raises(TypeError):
json.dumps(arr)
assert json.dumps(NumpyEncoder().default(arr)) == '[true, false]'

# bool
val = np.True_
with pytest.raises(TypeError):
json.dumps(val)
assert json.dumps(NumpyEncoder().default(val)) == 'true'

# int
val = np.int64(1)
with pytest.raises(TypeError):
json.dumps(val)
assert json.dumps(NumpyEncoder().default(val)) == '1'

# # float
val = np.float64(0.5)
assert json.dumps(NumpyEncoder().default(val)) == '0.5'

# complex
val = np.complex64(1 + 2j)
with pytest.raises(TypeError):
json.dumps(val)
assert json.dumps(NumpyEncoder().default(
val)) == '{"real": 1.0, "imag": 2.0}'

# void
dt = np.dtype([('x', np.int64)])
x = np.array([(0)], dtype=dt)
val = x[0]
with pytest.raises(TypeError):
json.dumps(val)
assert json.dumps(NumpyEncoder().default(val)) == 'null'

# other
arr = []
with pytest.raises(TypeError):
json.dumps(NumpyEncoder().default(arr))
assert json.dumps(arr) == '[]'

0 comments on commit 582b0f0

Please sign in to comment.