From 61520fc83dec9b6aab6a6744fbbe25c5e3b96e7a Mon Sep 17 00:00:00 2001 From: Aksel Stokseth <36400733+aksestok@users.noreply.github.com> Date: Thu, 9 Sep 2021 15:14:10 +0200 Subject: [PATCH] Add update to entity, relationship, relationship type and signal in the Python SDK (#39) * Upgrade to pylint 2.10.2 * Add update to entity, relationship and signal * Bump SDK version * Ignore too many instance attributes in pylint --- .pylintrc | 2 +- Pipfile.lock | 496 +++++++++++------- .../api/api_client/entity_api_client.py | 5 + .../api/api_client/grpc/entity_grpc_client.py | 5 + .../grpc/relationship_grpc_client.py | 14 + .../api/api_client/grpc/signal_grpc_client.py | 9 + .../api/api_client/http/entity_http_client.py | 4 + .../http/relationship_http_client.py | 15 + .../api/api_client/http/signal_http_client.py | 9 + .../api/api_client/relationship_api_client.py | 10 + .../api/api_client/signal_api_client.py | 5 + exabel_data_sdk/client/api/entity_api.py | 17 + .../client/api/relationship_api.py | 38 ++ exabel_data_sdk/client/api/signal_api.py | 17 + exabel_data_sdk/scripts/login.py | 6 +- setup.py | 2 +- 16 files changed, 453 insertions(+), 201 deletions(-) diff --git a/.pylintrc b/.pylintrc index bca5425..84248ca 100644 --- a/.pylintrc +++ b/.pylintrc @@ -13,7 +13,7 @@ disable=duplicate-code, too-many-arguments, too-many-locals, too-many-return-statements, - unsubscriptable-object # Due to a pylint bug which appears when run with Python 3.9. + too-many-instance-attributes, [BASIC] diff --git a/Pipfile.lock b/Pipfile.lock index c7b4e50..c88c074 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -25,11 +25,11 @@ }, "astroid": { "hashes": [ - "sha256:4db03ab5fc3340cf619dbc25e42c2cc3755154ce6009469766d7143d1fc2ee4e", - "sha256:8a398dfce302c13f14bab13e2b14fe385d32b73f4e4853b9bdfb64598baa1975" + "sha256:3b680ce0419b8a771aba6190139a3998d14b413852506d99aff8dc2bf65ee67c", + "sha256:dc1e8b28427d6bbef6b8842b18765ab58f558c42bb80540bd7648c98412af25e" ], "markers": "python_version ~= '3.6'", - "version": "==2.5.6" + "version": "==2.7.3" }, "black": { "hashes": [ @@ -40,11 +40,11 @@ }, "bleach": { "hashes": [ - "sha256:6123ddc1052673e52bab52cdc955bcb57a015264a1c57d37bea2f6b817af0125", - "sha256:98b3170739e5e83dd9dc19633f074727ad848cbedb6026708c8ac2d3b697a433" + "sha256:0900d8b37eba61a802ee40ac0061f8c2b5dee29c1927dd1d233e075ebf5a71da", + "sha256:4d2651ab93271d1129ac9cbc679f524565cc8a1b791909c4a51eac4446a15994" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==3.3.0" + "markers": "python_version >= '3.6'", + "version": "==4.1.0" }, "certifi": { "hashes": [ @@ -53,13 +53,63 @@ ], "version": "==2021.5.30" }, - "chardet": { - "hashes": [ - "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", - "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==4.0.0" + "cffi": { + "hashes": [ + "sha256:06c54a68935738d206570b20da5ef2b6b6d92b38ef3ec45c5422c0ebaf338d4d", + "sha256:0c0591bee64e438883b0c92a7bed78f6290d40bf02e54c5bf0978eaf36061771", + "sha256:19ca0dbdeda3b2615421d54bef8985f72af6e0c47082a8d26122adac81a95872", + "sha256:22b9c3c320171c108e903d61a3723b51e37aaa8c81255b5e7ce102775bd01e2c", + "sha256:26bb2549b72708c833f5abe62b756176022a7b9a7f689b571e74c8478ead51dc", + "sha256:33791e8a2dc2953f28b8d8d300dde42dd929ac28f974c4b4c6272cb2955cb762", + "sha256:3c8d896becff2fa653dc4438b54a5a25a971d1f4110b32bd3068db3722c80202", + "sha256:4373612d59c404baeb7cbd788a18b2b2a8331abcc84c3ba40051fcd18b17a4d5", + "sha256:487d63e1454627c8e47dd230025780e91869cfba4c753a74fda196a1f6ad6548", + "sha256:48916e459c54c4a70e52745639f1db524542140433599e13911b2f329834276a", + "sha256:4922cd707b25e623b902c86188aca466d3620892db76c0bdd7b99a3d5e61d35f", + "sha256:55af55e32ae468e9946f741a5d51f9896da6b9bf0bbdd326843fec05c730eb20", + "sha256:57e555a9feb4a8460415f1aac331a2dc833b1115284f7ded7278b54afc5bd218", + "sha256:5d4b68e216fc65e9fe4f524c177b54964af043dde734807586cf5435af84045c", + "sha256:64fda793737bc4037521d4899be780534b9aea552eb673b9833b01f945904c2e", + "sha256:6d6169cb3c6c2ad50db5b868db6491a790300ade1ed5d1da29289d73bbe40b56", + "sha256:7bcac9a2b4fdbed2c16fa5681356d7121ecabf041f18d97ed5b8e0dd38a80224", + "sha256:80b06212075346b5546b0417b9f2bf467fea3bfe7352f781ffc05a8ab24ba14a", + "sha256:818014c754cd3dba7229c0f5884396264d51ffb87ec86e927ef0be140bfdb0d2", + "sha256:8eb687582ed7cd8c4bdbff3df6c0da443eb89c3c72e6e5dcdd9c81729712791a", + "sha256:99f27fefe34c37ba9875f224a8f36e31d744d8083e00f520f133cab79ad5e819", + "sha256:9f3e33c28cd39d1b655ed1ba7247133b6f7fc16fa16887b120c0c670e35ce346", + "sha256:a8661b2ce9694ca01c529bfa204dbb144b275a31685a075ce123f12331be790b", + "sha256:a9da7010cec5a12193d1af9872a00888f396aba3dc79186604a09ea3ee7c029e", + "sha256:aedb15f0a5a5949ecb129a82b72b19df97bbbca024081ed2ef88bd5c0a610534", + "sha256:b315d709717a99f4b27b59b021e6207c64620790ca3e0bde636a6c7f14618abb", + "sha256:ba6f2b3f452e150945d58f4badd92310449876c4c954836cfb1803bdd7b422f0", + "sha256:c33d18eb6e6bc36f09d793c0dc58b0211fccc6ae5149b808da4a62660678b156", + "sha256:c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd", + "sha256:c9e005e9bd57bc987764c32a1bee4364c44fdc11a3cc20a40b93b444984f2b87", + "sha256:d2ad4d668a5c0645d281dcd17aff2be3212bc109b33814bbb15c4939f44181cc", + "sha256:d950695ae4381ecd856bcaf2b1e866720e4ab9a1498cba61c602e56630ca7195", + "sha256:e22dcb48709fc51a7b58a927391b23ab37eb3737a98ac4338e2448bef8559b33", + "sha256:e8c6a99be100371dbb046880e7a282152aa5d6127ae01783e37662ef73850d8f", + "sha256:e9dc245e3ac69c92ee4c167fbdd7428ec1956d4e754223124991ef29eb57a09d", + "sha256:eb687a11f0a7a1839719edd80f41e459cc5366857ecbed383ff376c4e3cc6afd", + "sha256:eb9e2a346c5238a30a746893f23a9535e700f8192a68c07c0258e7ece6ff3728", + "sha256:ed38b924ce794e505647f7c331b22a693bee1538fdf46b0222c4717b42f744e7", + "sha256:f0010c6f9d1a4011e429109fda55a225921e3206e7f62a0c22a35344bfd13cca", + "sha256:f0c5d1acbfca6ebdd6b1e3eded8d261affb6ddcf2186205518f1428b8569bb99", + "sha256:f10afb1004f102c7868ebfe91c28f4a712227fe4cb24974350ace1f90e1febbf", + "sha256:f174135f5609428cc6e1b9090f9268f5c8935fddb1b25ccb8255a2d50de6789e", + "sha256:f3ebe6e73c319340830a9b2825d32eb6d8475c1dac020b4f0aa774ee3b898d1c", + "sha256:f627688813d0a4140153ff532537fbe4afea5a3dffce1f9deb7f91f848a832b5", + "sha256:fd4305f86f53dfd8cd3522269ed7fc34856a8ee3709a5e28b2836b2db9d4cd69" + ], + "version": "==1.14.6" + }, + "charset-normalizer": { + "hashes": [ + "sha256:0c8911edd15d19223366a194a513099a302055a962bca2cec0f54b8b63175d8b", + "sha256:f23667ebe1084be45f6ae0538e4a5a865206544097e4e8bbcacf42cd02a348f3" + ], + "markers": "python_version >= '3'", + "version": "==2.0.4" }, "click": { "hashes": [ @@ -77,6 +127,29 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==0.4.4" }, + "cryptography": { + "hashes": [ + "sha256:0a7dcbcd3f1913f664aca35d47c1331fce738d44ec34b7be8b9d332151b0b01e", + "sha256:1eb7bb0df6f6f583dd8e054689def236255161ebbcf62b226454ab9ec663746b", + "sha256:21ca464b3a4b8d8e86ba0ee5045e103a1fcfac3b39319727bc0fc58c09c6aff7", + "sha256:34dae04a0dce5730d8eb7894eab617d8a70d0c97da76b905de9efb7128ad7085", + "sha256:3520667fda779eb788ea00080124875be18f2d8f0848ec00733c0ec3bb8219fc", + "sha256:3fa3a7ccf96e826affdf1a0a9432be74dc73423125c8f96a909e3835a5ef194a", + "sha256:5b0fbfae7ff7febdb74b574055c7466da334a5371f253732d7e2e7525d570498", + "sha256:8695456444f277af73a4877db9fc979849cd3ee74c198d04fc0776ebc3db52b9", + "sha256:94cc5ed4ceaefcbe5bf38c8fba6a21fc1d365bb8fb826ea1688e3370b2e24a1c", + "sha256:94fff993ee9bc1b2440d3b7243d488c6a3d9724cc2b09cdb297f6a886d040ef7", + "sha256:9965c46c674ba8cc572bc09a03f4c649292ee73e1b683adb1ce81e82e9a6a0fb", + "sha256:a00cf305f07b26c351d8d4e1af84ad7501eca8a342dedf24a7acb0e7b7406e14", + "sha256:a305600e7a6b7b855cd798e00278161b681ad6e9b7eca94c721d5f588ab212af", + "sha256:cd65b60cfe004790c795cc35f272e41a3df4631e2fb6b35aa7ac6ef2859d554e", + "sha256:d2a6e5ef66503da51d2110edf6c403dc6b494cc0082f85db12f54e9c5d4c3ec5", + "sha256:d9ec0e67a14f9d1d48dd87a2531009a9b251c02ea42851c060b25c782516ff06", + "sha256:f44d141b8c4ea5eb4dbc9b3ad992d45580c1d22bf5e24363f2fbf50c2d7ae8a7" + ], + "markers": "python_version >= '3.6'", + "version": "==3.4.8" + }, "dataclasses": { "hashes": [ "sha256:0201d89fa866f68c8ebd9d08ee6ff50c0b255f8ec63a71c16fda7af82bb887bf", @@ -95,92 +168,93 @@ }, "grpcio": { "hashes": [ - "sha256:0247b045feb7b138754c91efcca9ea7f7d2cc9f0bd2cc73f6588c523f38873c3", - "sha256:07abf6b36c138bf247cef7ac0bad9f8ab1c8242f7c1302af23bb8e6877d08163", - "sha256:0ab78d4c16d7f3924718711689f5e301aec52cfcf38eb4143bed0f74b7c4fd10", - "sha256:10a6c62e0cddd456db91f9f04b53a8cccf67d86d7ca814d989423939099c2723", - "sha256:1c11041ecb69d962d49e8a38a35736cdc6fc74230867b5f0ac6138770387a950", - "sha256:1d157a2ac6632d31a3ff21f56bbe73420e1d7a21e4fe89d8c7ac792b79c1a589", - "sha256:1d212af1008bdbfd4b8a287e17a8e63e14d72ac450475307452f20c1bbb6bae4", - "sha256:1e88a8d5d961df958362f61b1b79ad3981a8b051f99224717b09308546298902", - "sha256:25028420d004fe33d64015f5d4d97207c53530acdb493310e217fac76dcd2513", - "sha256:2736b109ec5bd9fcf580bf871b5fd4f136c6ae9728407f344a3c64ad87bb6519", - "sha256:277faad1d8d462bd1b986f43a47a2c2fe795b2e0de72c9318e11826d921e665a", - "sha256:291dcde4139bc25629de6a743cfcc0ca861e289e3547421ecd2273b51d95b8e1", - "sha256:2c26cb7566e8942542ff1aee71f10ed35e2f9ee95c2f27179b198af0727fbebb", - "sha256:32067791bd56a13614399f1994454afea9e2475019fcabc4abd3112f09892005", - "sha256:34fb08d46a70750bef6566c9556a16b98e08af6345a3bad6574477eb0b08c3dd", - "sha256:3cacfee78310b5a89769b2fac20b8cd723470130f5b1ba0c960da8db39e74a97", - "sha256:4a1dd16ccf76ddc18c1cde900049c04ed996e6c02e0588d88d06396c398e6023", - "sha256:604da72df5bece8844a15990ce0b3f2f8c5243a1333d3dcc02371048bf6f9269", - "sha256:6461d69a8ae20e7abce4c6d9cc2603e9f16f4d6b64865eddd0e664127349c04d", - "sha256:6824567e2372dde1bd70214427d23b709d09f1a02a552133d1e0f504b616c84e", - "sha256:7466eef3b57b5ac8c7585251b26b917b093ab015750bf98aab4e0836c39e2a2b", - "sha256:752593a275e26ef250dc4d93a6f7917dd9986396b41eabcc114b0e0315ec1bf6", - "sha256:7b74c48b2e41dd506f889a4a9974d40b3eead965b0fd2e0b1d55a9b3c0e3bc6e", - "sha256:897bcd54890e6ec6359063affb35e19a61a58ba37bc61c9e8ac6b464b854233e", - "sha256:8c4f39ad529fb4a33cd6e58d1d860c3b583902208547614b4b5b75fc306f13f6", - "sha256:924552099365ea1dd32237dc161849452cd567d931efc57e8427260d8f0eacdb", - "sha256:9a2216df1be9fdbc3c1ebd3c5184d1ef4afb387c29224fce00346b9ddec7c7e3", - "sha256:9f1747b81d44daed0649ff10395b58c4f29b03139a628afeb058f3e942ba6893", - "sha256:a0d7c88b4cf9748147cd6c16e14569a124b683a3eb5d7787f43eb9d48cf86755", - "sha256:a4789014f9d9e9ff29551314a004266b1ac90225c8a009dc87947aaf823fd83c", - "sha256:a836f21a1d08d28c8344e149b28729649ff4732c318a59a3628451bbd6c3c9ac", - "sha256:a8f9fcf5623282e4804595166a4ee1401cf4ccfc16fe84bb69e1eb23ffd836ac", - "sha256:abbf9c8c3df4d5233d5888c6cfa85c1bb68a6923749bd4dd1abc6e1e93986f17", - "sha256:ac05434a7a7f444b2ddd109d72f87f4704364be159aea42a04bd6ea2ba6e10e4", - "sha256:b4cd8fb4e3725e8852b1da734904edb3579c76660ae26a72283ac580779e5bf0", - "sha256:b86a1b0654804b5f2248d9262c77a9d5f19882481fc21df53eb2823d0875b86d", - "sha256:be83ca2d24321c8bf6516b9cd1064da15ac3ff3978c6c502643be114e2a54af2", - "sha256:c47e85eae34af5d17d1c2007a1f0b13a0293d4b7a6d8c8ae23761d718293803e", - "sha256:cbd2754da81bf5f18454c7808b4afe5b57c6736955a742fb599b32b6353fe99f", - "sha256:cd220606259f8aa2403bc0f4a4483bae5e36be879364ca3e256f0304ac44f575", - "sha256:d3566acd87a65a0bc93875125a7064293ab2b6ffb9327333030939681d269f4f", - "sha256:d631304e66c908d5d2d1a3cc9c02d372d2f8bed8c3632902d6f3f77d7ca34ac2", - "sha256:db01eaea57e7a1898c69271e35a84341cf8150cfdec5f0411eddcfb65b5f590e", - "sha256:e3072b9ebb573fe1f6757a55b610e4975979d2d58247cbe18ff4385f5aaa81a5", - "sha256:e72dd202c982a5922c3b846976cae3b699e3fa8d2355d9d5bad119d066cf23ee", - "sha256:e83ab148911e6c8ae4ec5e1334e6d800c6b84c432b92eb0ebf0808087117cb39", - "sha256:f19bd4b5bcf88ee059f478c4ab46a1607f09835587750294038fbd0120f1a9dc", - "sha256:f2c4ff0e8c98418c5d55c28ba4ff954e3a5d3c723af5008e8d3ddeae8f0ecb41", - "sha256:f6f6d51c9efbfe56af9eb9eeb4881cad1b869e4c0e2a32c1d345897fd0979ee3", - "sha256:f8dd51b05e7fde843d7a3140b058f02801fbec5784a036d5f6abb374450d4608", - "sha256:f9b3678920017842a1b576de3524ecf8f6a2bf4b39f86fb25b870693141e0584" + "sha256:005fe14e67291498989da67d454d805be31d57a988af28ed3a2a0a7cabb05c53", + "sha256:1708a0ba90c798b4313f541ffbcc25ed47e790adaafb02111204362723dabef0", + "sha256:17ed13d43450ef9d1f9b78cc932bcf42844ca302235b93026dfd07fb5208d146", + "sha256:1d9eabe2eb2f78208f9ae67a591f73b024488449d4e0a5b27c7fca2d6901a2d4", + "sha256:1f9ccc9f5c0d5084d1cd917a0b5ff0142a8d269d0755592d751f8ce9e7d3d7f1", + "sha256:24277aab99c346ca36a1aa8589a0624e19a8e6f2b74c83f538f7bb1cc5ee8dbc", + "sha256:27dee6dcd1c04c4e9ceea49f6143003569292209d2c24ca100166660805e2440", + "sha256:33dc4259fecb96e6eac20f760656b911bcb1616aa3e58b3a1d2f125714a2f5d3", + "sha256:3d172158fe886a2604db1b6e17c2de2ab465fe0fe36aba2ec810ca8441cefe3a", + "sha256:41e250ec7cd7523bf49c815b5509d5821728c26fac33681d4b0d1f5f34f59f06", + "sha256:45704b9b5b85f9bcb027f90f2563d11d995c1b870a9ee4b3766f6c7ff6fc3505", + "sha256:49155dfdf725c0862c428039123066b25ce61bd38ce50a21ce325f1735aac1bd", + "sha256:4967949071c9e435f9565ec2f49700cebeda54836a04710fe21f7be028c0125a", + "sha256:4c2baa438f51152c9b7d0835ff711add0b4bc5056c0f5df581a6112153010696", + "sha256:5729ca9540049f52c2e608ca110048cfabab3aeaa0d9f425361d9f8ba8506cac", + "sha256:5f6d6b638698fa6decf7f040819aade677b583eaa21b43366232cb254a2bbac8", + "sha256:5ff0dcf66315f3f00e1a8eb7244c6a49bdb0cc59bef4fb65b9db8adbd78e6acb", + "sha256:6b9b432f5665dfc802187384693b6338f05c7fc3707ebf003a89bd5132074e27", + "sha256:6f8f581787e739945e6cda101f312ea8a7e7082bdbb4993901eb828da6a49092", + "sha256:72b7b8075ee822dad4b39c150d73674c1398503d389e38981e9e35a894c476de", + "sha256:886d056f5101ac513f4aefe4d21a816d98ee3f9a8e77fc3bcb4ae1a3a24efe26", + "sha256:8a35b5f87247c893b01abf2f4f7493a18c2c5bf8eb3923b8dd1654d8377aa1a7", + "sha256:913916823efa2e487b2ee9735b7759801d97fd1974bacdb1900e3bbd17f7d508", + "sha256:a4389e26a8f9338ca91effdc5436dfec67d6ecd296368dba115799ae8f8e5bdb", + "sha256:a66a30513d2e080790244a7ac3d7a3f45001f936c5c2c9613e41e2a5d7a11794", + "sha256:a812164ceb48cb62c3217bd6245274e693c624cc2ac0c1b11b4cea96dab054dd", + "sha256:a93490e6eff5fce3748fb2757cb4273dc21eb1b56732b8c9640fd82c1997b215", + "sha256:b1b34e5a6f1285d1576099c663dae28c07b474015ed21e35a243aff66a0c2aed", + "sha256:ba9dd97ea1738be3e81d34e6bab8ff91a0b80668a4ec81454b283d3c828cebde", + "sha256:bf114be0023b145f7101f392a344692c1efd6de38a610c54a65ed3cba035e669", + "sha256:c26de909cfd54bacdb7e68532a1591a128486af47ee3a5f828df9aa2165ae457", + "sha256:d271e52038dec0db7c39ad9303442d6087c55e09b900e2931b86e837cf0cbc2e", + "sha256:d3b4b41eb0148fca3e6e6fc61d1332a7e8e7c4074fb0d1543f0b255d7f5f1588", + "sha256:d487b4daf84a14741ca1dc1c061ffb11df49d13702cd169b5837fafb5e84d9c0", + "sha256:d760a66c9773780837915be85a39d2cd4ab42ef32657c5f1d28475e23ab709fc", + "sha256:e12d776a240fee3ebd002519c02d165d94ec636d3fe3d6185b361bfc9a2d3106", + "sha256:e19de138199502d575fcec5cf68ae48815a6efe7e5c0d0b8c97eba8c77ae9f0e", + "sha256:e2367f2b18dd4ba64cdcd9f626a920f9ec2e8228630839dc8f4a424d461137ea", + "sha256:ecfd80e8ea03c46b3ea7ed37d2040fcbfe739004b9e4329b8b602d06ac6fb113", + "sha256:edddc849bed3c5dfe215a9f9532a9bd9f670b57d7b8af603be80148b4c69e9a8", + "sha256:eedc8c3514c10b6f11c6f406877e424ca29610883b97bb97e33b1dd2a9077f6c", + "sha256:f06e07161c21391682bfcac93a181a037a8aa3d561546690e9d0501189729aac", + "sha256:fb06708e3d173e387326abcd5182d52beb60e049db5c3d317bd85509e938afdc", + "sha256:fbe3b66bfa2c2f94535f6063f6db62b5b150d55a120f2f9e1175d3087429c4d9" ], "index": "pypi", - "version": "==1.38.0" + "version": "==1.40.0" }, "idna": { "hashes": [ - "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", - "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" + "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a", + "sha256:467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.10" + "markers": "python_version >= '3'", + "version": "==3.2" }, "importlib-metadata": { "hashes": [ - "sha256:833b26fb89d5de469b24a390e9df088d4e52e4ba33b01dc5e0e4f41b81a16c00", - "sha256:b142cc1dd1342f31ff04bb7d022492b09920cb64fed867cd3ea6f80fe3ebd139" + "sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15", + "sha256:f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1" ], "markers": "python_version < '3.8'", - "version": "==4.5.0" + "version": "==4.8.1" }, "isort": { "hashes": [ - "sha256:0a943902919f65c5684ac4e0154b1ad4fac6dcaa5d9f3426b732f1c8b5419be6", - "sha256:2bb1680aad211e3c9944dbce1d4ba09a989f04e238296c87fe2139faa26d655d" + "sha256:9c2ea1e62d871267b78307fe511c0838ba0da28698c5732d54e2790bf3ba9899", + "sha256:e17d6e2b81095c9db0a03a8025a957f334d6ea30b26f9ec70805411e5c7c81f2" ], "index": "pypi", - "version": "==5.8.0" + "version": "==5.9.3" + }, + "jeepney": { + "hashes": [ + "sha256:1b5a0ea5c0e7b166b2f5895b91a08c14de8915afda4407fb5022a195224958ac", + "sha256:fa9e232dfa0c498bd0b8a3a73b8d8a31978304dcef0515adc859d4e096f96f4f" + ], + "markers": "sys_platform == 'linux'", + "version": "==0.7.1" }, "keyring": { "hashes": [ - "sha256:045703609dd3fccfcdb27da201684278823b72af515aedec1a8515719a038cb8", - "sha256:8f607d7d1cc502c43a932a275a56fe47db50271904513a379d39df1af277ac48" + "sha256:b32397fd7e7063f8dd74a26db910c9862fc2109285fa16e3b5208bcb42a3e579", + "sha256:b7e0156667f5dcc73c1f63a518005cd18a4eb23fe77321194fefcc03748b21a4" ], "markers": "python_version >= '3.6'", - "version": "==23.0.1" + "version": "==23.1.0" }, "lazy-object-proxy": { "hashes": [ @@ -219,32 +293,32 @@ }, "mypy": { "hashes": [ - "sha256:0190fb77e93ce971954c9e54ea61de2802065174e5e990c9d4c1d0f54fbeeca2", - "sha256:0756529da2dd4d53d26096b7969ce0a47997123261a5432b48cc6848a2cb0bd4", - "sha256:2f9fedc1f186697fda191e634ac1d02f03d4c260212ccb018fabbb6d4b03eee8", - "sha256:353aac2ce41ddeaf7599f1c73fed2b75750bef3b44b6ad12985a991bc002a0da", - "sha256:3f12705eabdd274b98f676e3e5a89f247ea86dc1af48a2d5a2b080abac4e1243", - "sha256:4efc67b9b3e2fddbe395700f91d5b8deb5980bfaaccb77b306310bd0b9e002eb", - "sha256:517e7528d1be7e187a5db7f0a3e479747307c1b897d9706b1c662014faba3116", - "sha256:68a098c104ae2b75e946b107ef69dd8398d54cb52ad57580dfb9fc78f7f997f0", - "sha256:746e0b0101b8efec34902810047f26a8c80e1efbb4fc554956d848c05ef85d76", - "sha256:8be7bbd091886bde9fcafed8dd089a766fa76eb223135fe5c9e9798f78023a20", - "sha256:9236c21194fde5df1b4d8ebc2ef2c1f2a5dc7f18bcbea54274937cae2e20a01c", - "sha256:9ef5355eaaf7a23ab157c21a44c614365238a7bdb3552ec3b80c393697d974e1", - "sha256:9f1d74eeb3f58c7bd3f3f92b8f63cb1678466a55e2c4612bf36909105d0724ab", - "sha256:a26d0e53e90815c765f91966442775cf03b8a7514a4e960de7b5320208b07269", - "sha256:ae94c31bb556ddb2310e4f913b706696ccbd43c62d3331cd3511caef466871d2", - "sha256:b5ba1f0d5f9087e03bf5958c28d421a03a4c1ad260bf81556195dffeccd979c4", - "sha256:b5dfcd22c6bab08dfeded8d5b44bdcb68c6f1ab261861e35c470b89074f78a70", - "sha256:cd01c599cf9f897b6b6c6b5d8b182557fb7d99326bcdf5d449a0fbbb4ccee4b9", - "sha256:e89880168c67cf4fde4506b80ee42f1537ad66ad366c101d388b3fd7d7ce2afd", - "sha256:ebe2bc9cb638475f5d39068d2dbe8ae1d605bb8d8d3ff281c695df1670ab3987", - "sha256:f89bfda7f0f66b789792ab64ce0978e4a991a0e4dd6197349d0767b0f1095b21", - "sha256:fc4d63da57ef0e8cd4ab45131f3fe5c286ce7dd7f032650d0fbc239c6190e167", - "sha256:fd634bc17b1e2d6ce716f0e43446d0d61cdadb1efcad5c56ca211c22b246ebc8" + "sha256:088cd9c7904b4ad80bec811053272986611b84221835e079be5bcad029e79dd9", + "sha256:0aadfb2d3935988ec3815952e44058a3100499f5be5b28c34ac9d79f002a4a9a", + "sha256:119bed3832d961f3a880787bf621634ba042cb8dc850a7429f643508eeac97b9", + "sha256:1a85e280d4d217150ce8cb1a6dddffd14e753a4e0c3cf90baabb32cefa41b59e", + "sha256:3c4b8ca36877fc75339253721f69603a9c7fdb5d4d5a95a1a1b899d8b86a4de2", + "sha256:3e382b29f8e0ccf19a2df2b29a167591245df90c0b5a2542249873b5c1d78212", + "sha256:42c266ced41b65ed40a282c575705325fa7991af370036d3f134518336636f5b", + "sha256:53fd2eb27a8ee2892614370896956af2ff61254c275aaee4c230ae771cadd885", + "sha256:704098302473cb31a218f1775a873b376b30b4c18229421e9e9dc8916fd16150", + "sha256:7df1ead20c81371ccd6091fa3e2878559b5c4d4caadaf1a484cf88d93ca06703", + "sha256:866c41f28cee548475f146aa4d39a51cf3b6a84246969f3759cb3e9c742fc072", + "sha256:a155d80ea6cee511a3694b108c4494a39f42de11ee4e61e72bc424c490e46457", + "sha256:adaeee09bfde366d2c13fe6093a7df5df83c9a2ba98638c7d76b010694db760e", + "sha256:b6fb13123aeef4a3abbcfd7e71773ff3ff1526a7d3dc538f3929a49b42be03f0", + "sha256:b94e4b785e304a04ea0828759172a15add27088520dc7e49ceade7834275bedb", + "sha256:c0df2d30ed496a08de5daed2a9ea807d07c21ae0ab23acf541ab88c24b26ab97", + "sha256:c6c2602dffb74867498f86e6129fd52a2770c48b7cd3ece77ada4fa38f94eba8", + "sha256:ceb6e0a6e27fb364fb3853389607cf7eb3a126ad335790fa1e14ed02fba50811", + "sha256:d9dd839eb0dc1bbe866a288ba3c1afc33a202015d2ad83b31e875b5905a079b6", + "sha256:e4dab234478e3bd3ce83bac4193b2ecd9cf94e720ddd95ce69840273bf44f6de", + "sha256:ec4e0cd079db280b6bdabdc807047ff3e199f334050db5cbb91ba3e959a67504", + "sha256:ecd2c3fe726758037234c93df7e98deb257fd15c24c9180dacf1ef829da5f921", + "sha256:ef565033fa5a958e62796867b1df10c40263ea9ded87164d67572834e57a174d" ], "index": "pypi", - "version": "==0.902" + "version": "==0.910" }, "mypy-extensions": { "hashes": [ @@ -295,11 +369,11 @@ }, "packaging": { "hashes": [ - "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5", - "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a" + "sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7", + "sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==20.9" + "markers": "python_version >= '3.6'", + "version": "==21.0" }, "pandas": { "hashes": [ @@ -333,17 +407,25 @@ }, "pathspec": { "hashes": [ - "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd", - "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d" + "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a", + "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1" ], - "version": "==0.8.1" + "version": "==0.9.0" }, "pkginfo": { "hashes": [ - "sha256:029a70cb45c6171c329dfc890cde0879f8c52d6f3922794796e06f577bb03db4", - "sha256:9fdbea6495622e022cc72c2e5e1b735218e4ffb2a2a69cde2694a6c1f16afb75" + "sha256:37ecd857b47e5f55949c41ed061eb51a0bee97a87c969219d144c0e023982779", + "sha256:e7432f81d08adec7297633191bbf0bd47faf13cd8724c3a13250e51d542635bd" ], - "version": "==1.7.0" + "version": "==1.7.1" + }, + "platformdirs": { + "hashes": [ + "sha256:15b056538719b1c94bdaccb29e5f81879c7f7f0f4a153f46086d155dffcd4f0f", + "sha256:8003ac87717ae2c7ee1ea5a84a1a61e87f3fbd16eb5aadba194ea30a9019f648" + ], + "markers": "python_version >= '3.6'", + "version": "==2.3.0" }, "protobuf": { "hashes": [ @@ -355,19 +437,23 @@ "sha256:2ae692bb6d1992afb6b74348e7bb648a75bb0d3565a3f5eea5bec8f62bd06d87", "sha256:2bfb815216a9cd9faec52b16fd2bfa68437a44b67c56bee59bc3926522ecb04e", "sha256:4ffbd23640bb7403574f7aff8368e2aeb2ec9a5c6306580be48ac59a6bac8bde", + "sha256:59e5cf6b737c3a376932fbfb869043415f7c16a0cf176ab30a5bbc419cd709c1", "sha256:6902a1e4b7a319ec611a7345ff81b6b004b36b0d2196ce7a748b3493da3d226d", "sha256:6ce4d8bf0321e7b2d4395e253f8002a1a5ffbcfd7bcc0a6ba46712c07d47d0b4", "sha256:6d847c59963c03fd7a0cd7c488cadfa10cda4fff34d8bc8cba92935a91b7a037", "sha256:72804ea5eaa9c22a090d2803813e280fb273b62d5ae497aaf3553d141c4fdd7b", "sha256:7a4c97961e9e5b03a56f9a6c82742ed55375c4a25f2692b625d4087d02ed31b9", + "sha256:85d6303e4adade2827e43c2b54114d9a6ea547b671cb63fafd5011dc47d0e13d", "sha256:8727ee027157516e2c311f218ebf2260a18088ffb2d29473e82add217d196b1c", "sha256:99938f2a2d7ca6563c0ade0c5ca8982264c484fdecf418bd68e880a7ab5730b1", "sha256:9b7a5c1022e0fa0dbde7fd03682d07d14624ad870ae52054849d8960f04bc764", "sha256:a22b3a0dbac6544dacbafd4c5f6a29e389a50e3b193e2c70dae6bbf7930f651d", + "sha256:a38bac25f51c93e4be4092c88b2568b9f407c27217d3dd23c7a57fa522a17554", "sha256:a981222367fb4210a10a929ad5983ae93bd5a050a0824fc35d6371c07b78caf6", "sha256:ab6bb0e270c6c58e7ff4345b3a803cc59dbee19ddf77a4719c5b635f1d547aa8", "sha256:c56c050a947186ba51de4f94ab441d7f04fcd44c56df6e922369cc2e1a92d683", "sha256:e76d9686e088fece2450dbc7ee905f9be904e427341d289acbe9ad00b78ebd47", + "sha256:ebcb546f10069b56dc2e3da35e003a02076aaa377caf8530fe9789570984a8d2", "sha256:f0e59430ee953184a703a324b8ec52f571c6c4259d496a19d1cabcdc19dabc62", "sha256:ffea251f5cd3c0b9b43c7a7a912777e0bc86263436a87c2555242a348817221b" ], @@ -382,21 +468,29 @@ "index": "pypi", "version": "==2.7.0" }, + "pycparser": { + "hashes": [ + "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", + "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.20" + }, "pygments": { "hashes": [ - "sha256:a18f47b506a429f6f4b9df81bb02beab9ca21d0a5fee38ed15aef65f0545519f", - "sha256:d66e804411278594d764fc69ec36ec13d9ae9147193a1740cd34d272ca383b8e" + "sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380", + "sha256:f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6" ], "markers": "python_version >= '3.5'", - "version": "==2.9.0" + "version": "==2.10.0" }, "pylint": { "hashes": [ - "sha256:0a049c5d47b629d9070c3932d13bff482b12119b6a241a93bc460b0be16953c8", - "sha256:792b38ff30903884e4a9eab814ee3523731abd3c463f3ba48d7b627e87013484" + "sha256:6758cce3ddbab60c52b57dcc07f0c5d779e5daf0cf50f6faacbef1d3ea62d2a1", + "sha256:e178e96b6ba171f8ef51fbce9ca30931e6acbea4a155074d80cc081596c9e852" ], "index": "pypi", - "version": "==2.8.3" + "version": "==2.10.2" }, "pyparsing": { "hashes": [ @@ -408,11 +502,11 @@ }, "python-dateutil": { "hashes": [ - "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", - "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a" + "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", + "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.8.1" + "version": "==2.8.2" }, "pytz": { "hashes": [ @@ -430,57 +524,57 @@ }, "regex": { "hashes": [ - "sha256:01afaf2ec48e196ba91b37451aa353cb7eda77efe518e481707e0515025f0cd5", - "sha256:11d773d75fa650cd36f68d7ca936e3c7afaae41b863b8c387a22aaa78d3c5c79", - "sha256:18c071c3eb09c30a264879f0d310d37fe5d3a3111662438889ae2eb6fc570c31", - "sha256:1e1c20e29358165242928c2de1482fb2cf4ea54a6a6dea2bd7a0e0d8ee321500", - "sha256:281d2fd05555079448537fe108d79eb031b403dac622621c78944c235f3fcf11", - "sha256:314d66636c494ed9c148a42731b3834496cc9a2c4251b1661e40936814542b14", - "sha256:32e65442138b7b76dd8173ffa2cf67356b7bc1768851dded39a7a13bf9223da3", - "sha256:339456e7d8c06dd36a22e451d58ef72cef293112b559010db3d054d5560ef439", - "sha256:3916d08be28a1149fb97f7728fca1f7c15d309a9f9682d89d79db75d5e52091c", - "sha256:3a9cd17e6e5c7eb328517969e0cb0c3d31fd329298dd0c04af99ebf42e904f82", - "sha256:47bf5bf60cf04d72bf6055ae5927a0bd9016096bf3d742fa50d9bf9f45aa0711", - "sha256:4c46e22a0933dd783467cf32b3516299fb98cfebd895817d685130cc50cd1093", - "sha256:4c557a7b470908b1712fe27fb1ef20772b78079808c87d20a90d051660b1d69a", - "sha256:52ba3d3f9b942c49d7e4bc105bb28551c44065f139a65062ab7912bef10c9afb", - "sha256:563085e55b0d4fb8f746f6a335893bda5c2cef43b2f0258fe1020ab1dd874df8", - "sha256:598585c9f0af8374c28edd609eb291b5726d7cbce16be6a8b95aa074d252ee17", - "sha256:619d71c59a78b84d7f18891fe914446d07edd48dc8328c8e149cbe0929b4e000", - "sha256:67bdb9702427ceddc6ef3dc382455e90f785af4c13d495f9626861763ee13f9d", - "sha256:6d1b01031dedf2503631d0903cb563743f397ccaf6607a5e3b19a3d76fc10480", - "sha256:741a9647fcf2e45f3a1cf0e24f5e17febf3efe8d4ba1281dcc3aa0459ef424dc", - "sha256:7c2a1af393fcc09e898beba5dd59196edaa3116191cc7257f9224beaed3e1aa0", - "sha256:7d9884d86dd4dd489e981d94a65cd30d6f07203d90e98f6f657f05170f6324c9", - "sha256:90f11ff637fe8798933fb29f5ae1148c978cccb0452005bf4c69e13db951e765", - "sha256:919859aa909429fb5aa9cf8807f6045592c85ef56fdd30a9a3747e513db2536e", - "sha256:96fcd1888ab4d03adfc9303a7b3c0bd78c5412b2bfbe76db5b56d9eae004907a", - "sha256:97f29f57d5b84e73fbaf99ab3e26134e6687348e95ef6b48cfd2c06807005a07", - "sha256:980d7be47c84979d9136328d882f67ec5e50008681d94ecc8afa8a65ed1f4a6f", - "sha256:a91aa8619b23b79bcbeb37abe286f2f408d2f2d6f29a17237afda55bb54e7aac", - "sha256:ade17eb5d643b7fead300a1641e9f45401c98eee23763e9ed66a43f92f20b4a7", - "sha256:b9c3db21af35e3b3c05764461b262d6f05bbca08a71a7849fd79d47ba7bc33ed", - "sha256:bd28bc2e3a772acbb07787c6308e00d9626ff89e3bfcdebe87fa5afbfdedf968", - "sha256:bf5824bfac591ddb2c1f0a5f4ab72da28994548c708d2191e3b87dd207eb3ad7", - "sha256:c0502c0fadef0d23b128605d69b58edb2c681c25d44574fc673b0e52dce71ee2", - "sha256:c38c71df845e2aabb7fb0b920d11a1b5ac8526005e533a8920aea97efb8ec6a4", - "sha256:ce15b6d103daff8e9fee13cf7f0add05245a05d866e73926c358e871221eae87", - "sha256:d3029c340cfbb3ac0a71798100ccc13b97dddf373a4ae56b6a72cf70dfd53bc8", - "sha256:e512d8ef5ad7b898cdb2d8ee1cb09a8339e4f8be706d27eaa180c2f177248a10", - "sha256:e8e5b509d5c2ff12f8418006d5a90e9436766133b564db0abaec92fd27fcee29", - "sha256:ee54ff27bf0afaf4c3b3a62bcd016c12c3fdb4ec4f413391a90bd38bc3624605", - "sha256:fa4537fb4a98fe8fde99626e4681cc644bdcf2a795038533f9f711513a862ae6", - "sha256:fd45ff9293d9274c5008a2054ecef86a9bfe819a67c7be1afb65e69b405b3042" - ], - "version": "==2021.4.4" + "sha256:04f6b9749e335bb0d2f68c707f23bb1773c3fb6ecd10edf0f04df12a8920d468", + "sha256:08d74bfaa4c7731b8dac0a992c63673a2782758f7cfad34cf9c1b9184f911354", + "sha256:0fc1f8f06977c2d4f5e3d3f0d4a08089be783973fc6b6e278bde01f0544ff308", + "sha256:121f4b3185feaade3f85f70294aef3f777199e9b5c0c0245c774ae884b110a2d", + "sha256:1413b5022ed6ac0d504ba425ef02549a57d0f4276de58e3ab7e82437892704fc", + "sha256:1743345e30917e8c574f273f51679c294effba6ad372db1967852f12c76759d8", + "sha256:28fc475f560d8f67cc8767b94db4c9440210f6958495aeae70fac8faec631797", + "sha256:31a99a4796bf5aefc8351e98507b09e1b09115574f7c9dbb9cf2111f7220d2e2", + "sha256:328a1fad67445550b982caa2a2a850da5989fd6595e858f02d04636e7f8b0b13", + "sha256:473858730ef6d6ff7f7d5f19452184cd0caa062a20047f6d6f3e135a4648865d", + "sha256:4cde065ab33bcaab774d84096fae266d9301d1a2f5519d7bd58fc55274afbf7a", + "sha256:5f6a808044faae658f546dd5f525e921de9fa409de7a5570865467f03a626fc0", + "sha256:610b690b406653c84b7cb6091facb3033500ee81089867ee7d59e675f9ca2b73", + "sha256:66256b6391c057305e5ae9209941ef63c33a476b73772ca967d4a2df70520ec1", + "sha256:6eebf512aa90751d5ef6a7c2ac9d60113f32e86e5687326a50d7686e309f66ed", + "sha256:79aef6b5cd41feff359acaf98e040844613ff5298d0d19c455b3d9ae0bc8c35a", + "sha256:808ee5834e06f57978da3e003ad9d6292de69d2bf6263662a1a8ae30788e080b", + "sha256:8e44769068d33e0ea6ccdf4b84d80c5afffe5207aa4d1881a629cf0ef3ec398f", + "sha256:999ad08220467b6ad4bd3dd34e65329dd5d0df9b31e47106105e407954965256", + "sha256:9b006628fe43aa69259ec04ca258d88ed19b64791693df59c422b607b6ece8bb", + "sha256:9d05ad5367c90814099000442b2125535e9d77581855b9bee8780f1b41f2b1a2", + "sha256:a577a21de2ef8059b58f79ff76a4da81c45a75fe0bfb09bc8b7bb4293fa18983", + "sha256:a617593aeacc7a691cc4af4a4410031654f2909053bd8c8e7db837f179a630eb", + "sha256:abb48494d88e8a82601af905143e0de838c776c1241d92021e9256d5515b3645", + "sha256:ac88856a8cbccfc14f1b2d0b829af354cc1743cb375e7f04251ae73b2af6adf8", + "sha256:b4c220a1fe0d2c622493b0a1fd48f8f991998fb447d3cd368033a4b86cf1127a", + "sha256:b844fb09bd9936ed158ff9df0ab601e2045b316b17aa8b931857365ea8586906", + "sha256:bdc178caebd0f338d57ae445ef8e9b737ddf8fbc3ea187603f65aec5b041248f", + "sha256:c206587c83e795d417ed3adc8453a791f6d36b67c81416676cad053b4104152c", + "sha256:c61dcc1cf9fd165127a2853e2c31eb4fb961a4f26b394ac9fe5669c7a6592892", + "sha256:c7cb4c512d2d3b0870e00fbbac2f291d4b4bf2634d59a31176a87afe2777c6f0", + "sha256:d4a332404baa6665b54e5d283b4262f41f2103c255897084ec8f5487ce7b9e8e", + "sha256:d5111d4c843d80202e62b4fdbb4920db1dcee4f9366d6b03294f45ed7b18b42e", + "sha256:e1e8406b895aba6caa63d9fd1b6b1700d7e4825f78ccb1e5260551d168db38ed", + "sha256:e8690ed94481f219a7a967c118abaf71ccc440f69acd583cab721b90eeedb77c", + "sha256:ed283ab3a01d8b53de3a05bfdf4473ae24e43caee7dcb5584e86f3f3e5ab4374", + "sha256:ed4b50355b066796dacdd1cf538f2ce57275d001838f9b132fab80b75e8c84dd", + "sha256:ee329d0387b5b41a5dddbb6243a21cb7896587a651bebb957e2d2bb8b63c0791", + "sha256:f3bf1bc02bc421047bfec3343729c4bbbea42605bcfd6d6bfe2c07ade8b12d2a", + "sha256:f585cbbeecb35f35609edccb95efd95a3e35824cd7752b586503f7e6087303f1", + "sha256:f60667673ff9c249709160529ab39667d1ae9fd38634e006bec95611f632e759" + ], + "version": "==2021.8.28" }, "requests": { "hashes": [ - "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", - "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" + "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24", + "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7" ], "index": "pypi", - "version": "==2.25.1" + "version": "==2.26.0" }, "requests-toolbelt": { "hashes": [ @@ -496,6 +590,14 @@ ], "version": "==1.5.0" }, + "secretstorage": { + "hashes": [ + "sha256:422d82c36172d88d6a0ed5afdec956514b189ddbfb72fefab0c8a1cee4eaf71f", + "sha256:fd666c51a6bf200643495a04abb261f83229dcb6fd8472ec393df7ffc8b6f195" + ], + "markers": "sys_platform == 'linux'", + "version": "==3.3.1" + }, "six": { "hashes": [ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", @@ -514,19 +616,19 @@ }, "tqdm": { "hashes": [ - "sha256:736524215c690621b06fc89d0310a49822d75e599fcd0feb7cc742b98d692493", - "sha256:cd5791b5d7c3f2f1819efc81d36eb719a38e0906a7380365c556779f585ea042" + "sha256:80aead664e6c1672c4ae20dc50e1cdc5e20eeff9b14aa23ecd426375b28be588", + "sha256:a4d6d112e507ef98513ac119ead1159d286deab17dffedd96921412c2d236ff5" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==4.61.0" + "version": "==4.62.2" }, "twine": { "hashes": [ - "sha256:16f706f2f1687d7ce30e7effceee40ed0a09b7c33b9abb5ef6434e5551565d83", - "sha256:a56c985264b991dc8a8f4234eb80c5af87fa8080d0c224ad8f2cd05a2c22e83b" + "sha256:087328e9bb405e7ce18527a2dca4042a84c7918658f951110b38bc135acab218", + "sha256:4caec0f1ed78dc4c9b83ad537e453d03ce485725f2aea57f1bb3fdde78dae936" ], "index": "pypi", - "version": "==3.4.1" + "version": "==3.4.2" }, "typed-ast": { "hashes": [ @@ -566,47 +668,51 @@ }, "types-futures": { "hashes": [ - "sha256:98d999e13837ca2c05a3ba37765d09b8dc12b222e86fb25e324362ddfde17f5f" + "sha256:45f44bba0d2c6baa4da8f56b8bc8e218ae492a4eb3f3c49d59013835d2e200dc", + "sha256:dc69cb11201d8fa858b18301d792cadccd2f28858b70e2076e2518772294214d" ], - "version": "==0.1.3" + "version": "==3.3.0" }, "types-protobuf": { "hashes": [ - "sha256:d6f8fbfd3640a3584fdb38d0cc5a9cee93fea91933387b614f839fdc759ef6da" + "sha256:36cfec22f0096c9be2d9e44ad33480eb91969ffa72a51fa55842597cf59f8264", + "sha256:b6f53af01ab19b6d19a979c00a06dc73723180f8bf0129761542cfadc46fdd34" ], "index": "pypi", - "version": "==0.1.11" + "version": "==3.17.4" }, "types-python-dateutil": { "hashes": [ - "sha256:498492e71dfb983ecc47924fb4f0987d205901ebd1d59f9a1c6603f3f970a62b" + "sha256:540c6c53c3a52433d7088254e3afdc3f6c86b5ae452aaa1b796c26d01c9fd73c", + "sha256:9954d87dc982344bb2aad73a7fe505bdca72f89088ef653c4c40f52649183437" ], "index": "pypi", - "version": "==0.1.2" + "version": "==2.8.0" }, "types-requests": { "hashes": [ - "sha256:24a51b692d36101e5b81f08733d74b944ccae3e90589fb712e4dfc6f36965c35" + "sha256:a5a305b43ea57bf64d6731f89816946a405b591eff6de28d4c0fd58422cee779", + "sha256:e21541c0f55c066c491a639309159556dd8c5833e49fcde929c4c47bdb0002ee" ], "index": "pypi", - "version": "==0.1.9" + "version": "==2.25.6" }, "typing-extensions": { "hashes": [ - "sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497", - "sha256:50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342", - "sha256:779383f6086d90c99ae41cf0ff39aac8a7937a9283ce0a414e5dd782f4c94a84" + "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e", + "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7", + "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34" ], "markers": "python_version < '3.8'", - "version": "==3.10.0.0" + "version": "==3.10.0.2" }, "urllib3": { "hashes": [ - "sha256:753a0374df26658f99d826cfe40394a686d05985786d946fbe4165b5148f5a7c", - "sha256:a7acd0977125325f516bda9735fa7142b909a8d01e8b2e4c8108d0984e6e0098" + "sha256:39fb8672126159acb139a7718dd10806104dec1e2f0f6c88aab05d17df10c8d4", + "sha256:f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.5" + "version": "==1.26.6" }, "webencodings": { "hashes": [ @@ -617,11 +723,11 @@ }, "wheel": { "hashes": [ - "sha256:78b5b185f0e5763c26ca1e324373aadd49182ca90e825f7853f4b2509215dc0e", - "sha256:e11eefd162658ea59a60a0f6c7d493a7190ea4b9a85e335b33489d9f17e0245e" + "sha256:21014b2bd93c6d0034b6ba5d35e4eb284340e09d63c59aef6fc14b0f346146fd", + "sha256:e2ef7239991699e3355d54f8e968a21bb940a1dbf34a4d226741e64462516fad" ], "index": "pypi", - "version": "==0.36.2" + "version": "==0.37.0" }, "wrapt": { "hashes": [ @@ -631,11 +737,11 @@ }, "zipp": { "hashes": [ - "sha256:3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76", - "sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098" + "sha256:957cfda87797e389580cb8b9e3870841ca991e2125350677b2ca83a0e99390a3", + "sha256:f5812b1e007e48cff63449a5e9f4e7ebea716b4111f9c4f9a645f91d579bf0c4" ], "markers": "python_version >= '3.6'", - "version": "==3.4.1" + "version": "==3.5.0" } }, "develop": {} diff --git a/exabel_data_sdk/client/api/api_client/entity_api_client.py b/exabel_data_sdk/client/api/api_client/entity_api_client.py index 54b250f..679c4da 100644 --- a/exabel_data_sdk/client/api/api_client/entity_api_client.py +++ b/exabel_data_sdk/client/api/api_client/entity_api_client.py @@ -13,6 +13,7 @@ ListEntityTypesResponse, SearchEntitiesRequest, SearchEntitiesResponse, + UpdateEntityRequest, ) @@ -41,6 +42,10 @@ def get_entity(self, request: GetEntityRequest) -> Entity: def create_entity(self, request: CreateEntityRequest) -> Entity: """Create an entity.""" + @abstractmethod + def update_entity(self, request: UpdateEntityRequest) -> Entity: + """Update an entity.""" + @abstractmethod def delete_entity(self, request: DeleteEntityRequest) -> None: """Delete an entity.""" diff --git a/exabel_data_sdk/client/api/api_client/grpc/entity_grpc_client.py b/exabel_data_sdk/client/api/api_client/grpc/entity_grpc_client.py index 47f51b5..f03a431 100644 --- a/exabel_data_sdk/client/api/api_client/grpc/entity_grpc_client.py +++ b/exabel_data_sdk/client/api/api_client/grpc/entity_grpc_client.py @@ -15,6 +15,7 @@ ListEntityTypesResponse, SearchEntitiesRequest, SearchEntitiesResponse, + UpdateEntityRequest, ) from exabel_data_sdk.stubs.exabel.api.data.v1.all_pb2_grpc import EntityServiceStub @@ -50,6 +51,10 @@ def get_entity(self, request: GetEntityRequest) -> Entity: def create_entity(self, request: CreateEntityRequest) -> Entity: return self.stub.CreateEntity(request, metadata=self.metadata, timeout=self.config.timeout) + @handle_grpc_error + def update_entity(self, request: UpdateEntityRequest) -> Entity: + return self.stub.UpdateEntity(request, metadata=self.metadata, timeout=self.config.timeout) + @handle_grpc_error def delete_entity(self, request: DeleteEntityRequest) -> None: self.stub.DeleteEntity(request, metadata=self.metadata, timeout=self.config.timeout) diff --git a/exabel_data_sdk/client/api/api_client/grpc/relationship_grpc_client.py b/exabel_data_sdk/client/api/api_client/grpc/relationship_grpc_client.py index 83e3272..3692b9d 100644 --- a/exabel_data_sdk/client/api/api_client/grpc/relationship_grpc_client.py +++ b/exabel_data_sdk/client/api/api_client/grpc/relationship_grpc_client.py @@ -15,6 +15,8 @@ ListRelationshipTypesResponse, Relationship, RelationshipType, + UpdateRelationshipRequest, + UpdateRelationshipTypeRequest, ) from exabel_data_sdk.stubs.exabel.api.data.v1.all_pb2_grpc import RelationshipServiceStub @@ -48,6 +50,12 @@ def create_relationship_type(self, request: CreateRelationshipTypeRequest) -> Re request, metadata=self.metadata, timeout=self.config.timeout ) + @handle_grpc_error + def update_relationship_type(self, request: UpdateRelationshipTypeRequest) -> RelationshipType: + return self.stub.UpdateRelationshipType( + request, metadata=self.metadata, timeout=self.config.timeout + ) + @handle_grpc_error def delete_relationship_type(self, request: DeleteRelationshipTypeRequest) -> None: return self.stub.DeleteRelationshipType( @@ -72,6 +80,12 @@ def create_relationship(self, request: CreateRelationshipRequest) -> Relationshi request, metadata=self.metadata, timeout=self.config.timeout ) + @handle_grpc_error + def update_relationship(self, request: UpdateRelationshipRequest) -> Relationship: + return self.stub.UpdateRelationship( + request, metadata=self.metadata, timeout=self.config.timeout + ) + @handle_grpc_error def delete_relationship(self, request: DeleteRelationshipRequest) -> None: self.stub.DeleteRelationship(request, metadata=self.metadata, timeout=self.config.timeout) diff --git a/exabel_data_sdk/client/api/api_client/grpc/signal_grpc_client.py b/exabel_data_sdk/client/api/api_client/grpc/signal_grpc_client.py index ab76e00..54a5d8e 100644 --- a/exabel_data_sdk/client/api/api_client/grpc/signal_grpc_client.py +++ b/exabel_data_sdk/client/api/api_client/grpc/signal_grpc_client.py @@ -9,6 +9,7 @@ ListSignalsRequest, ListSignalsResponse, Signal, + UpdateSignalRequest, ) from exabel_data_sdk.stubs.exabel.api.data.v1.all_pb2_grpc import SignalServiceStub @@ -46,6 +47,14 @@ def create_signal(self, request: CreateSignalRequest) -> Signal: timeout=self.config.timeout, ) + @handle_grpc_error + def update_signal(self, request: UpdateSignalRequest) -> Signal: + return self.stub.UpdateSignal( + request, + metadata=self.metadata, + timeout=self.config.timeout, + ) + @handle_grpc_error def delete_signal(self, request: DeleteSignalRequest) -> None: self.stub.DeleteSignal( diff --git a/exabel_data_sdk/client/api/api_client/http/entity_http_client.py b/exabel_data_sdk/client/api/api_client/http/entity_http_client.py index d1e4a56..e1d331c 100644 --- a/exabel_data_sdk/client/api/api_client/http/entity_http_client.py +++ b/exabel_data_sdk/client/api/api_client/http/entity_http_client.py @@ -13,6 +13,7 @@ ListEntityTypesResponse, SearchEntitiesRequest, SearchEntitiesResponse, + UpdateEntityRequest, ) @@ -38,6 +39,9 @@ def get_entity(self, request: GetEntityRequest) -> Entity: def create_entity(self, request: CreateEntityRequest) -> Entity: return self._request("POST", f"{request.parent}/entities", Entity(), body=request.entity) + def update_entity(self, request: UpdateEntityRequest) -> Entity: + return self._request("PATCH", f"{request.entity.name}", Entity(), body=request.entity) + def delete_entity(self, request: DeleteEntityRequest) -> None: return self._request("DELETE", f"{request.name}", None) diff --git a/exabel_data_sdk/client/api/api_client/http/relationship_http_client.py b/exabel_data_sdk/client/api/api_client/http/relationship_http_client.py index a5e5410..f3901b2 100644 --- a/exabel_data_sdk/client/api/api_client/http/relationship_http_client.py +++ b/exabel_data_sdk/client/api/api_client/http/relationship_http_client.py @@ -14,6 +14,8 @@ ListRelationshipTypesResponse, Relationship, RelationshipType, + UpdateRelationshipRequest, + UpdateRelationshipTypeRequest, ) @@ -35,6 +37,11 @@ def create_relationship_type(self, request: CreateRelationshipTypeRequest) -> Re "POST", "relationshipTypes", RelationshipType(), body=request.relationship_type ) + def update_relationship_type(self, request: UpdateRelationshipTypeRequest) -> RelationshipType: + return self._request( + "PATCH", "relationshipTypes", RelationshipType(), body=request.relationship_type + ) + def delete_relationship_type(self, request: DeleteRelationshipTypeRequest) -> None: return self._request("DELETE", request.name, None) @@ -62,5 +69,13 @@ def create_relationship(self, request: CreateRelationshipRequest) -> Relationshi body=request.relationship, ) + def update_relationship(self, request: UpdateRelationshipRequest) -> Relationship: + return self._request( + "PATCH", + f"{request.relationship.parent}/relationships", + Relationship(), + body=request.relationship, + ) + def delete_relationship(self, request: DeleteRelationshipRequest) -> None: return self._request("DELETE", f"{request.parent}/relationships", None, body=request) diff --git a/exabel_data_sdk/client/api/api_client/http/signal_http_client.py b/exabel_data_sdk/client/api/api_client/http/signal_http_client.py index 6f47e32..ea0d3cf 100644 --- a/exabel_data_sdk/client/api/api_client/http/signal_http_client.py +++ b/exabel_data_sdk/client/api/api_client/http/signal_http_client.py @@ -7,6 +7,7 @@ ListSignalsRequest, ListSignalsResponse, Signal, + UpdateSignalRequest, ) @@ -29,5 +30,13 @@ def create_signal(self, request: CreateSignalRequest) -> Signal: request.signal, ) + def update_signal(self, request: UpdateSignalRequest) -> Signal: + return self._request( + "PATCH", + request.signal.name, + Signal(), + request.signal, + ) + def delete_signal(self, request: DeleteSignalRequest) -> None: self._request("DELETE", request.name, None) diff --git a/exabel_data_sdk/client/api/api_client/relationship_api_client.py b/exabel_data_sdk/client/api/api_client/relationship_api_client.py index d9679a7..fa0543c 100644 --- a/exabel_data_sdk/client/api/api_client/relationship_api_client.py +++ b/exabel_data_sdk/client/api/api_client/relationship_api_client.py @@ -13,6 +13,8 @@ ListRelationshipTypesResponse, Relationship, RelationshipType, + UpdateRelationshipRequest, + UpdateRelationshipTypeRequest, ) @@ -35,6 +37,10 @@ def get_relationship_type(self, request: GetRelationshipTypeRequest) -> Relation def create_relationship_type(self, request: CreateRelationshipTypeRequest) -> RelationshipType: """Create a relationship type.""" + @abstractmethod + def update_relationship_type(self, request: UpdateRelationshipTypeRequest) -> RelationshipType: + """Update a relationship type.""" + @abstractmethod def delete_relationship_type(self, request: DeleteRelationshipTypeRequest) -> None: """Delete a relationship type.""" @@ -51,6 +57,10 @@ def get_relationship(self, request: GetRelationshipRequest) -> Relationship: def create_relationship(self, request: CreateRelationshipRequest) -> Relationship: """Create a relationship.""" + @abstractmethod + def update_relationship(self, request: UpdateRelationshipRequest) -> Relationship: + """Update a relationship.""" + @abstractmethod def delete_relationship(self, request: DeleteRelationshipRequest) -> None: """Delete a relationship.""" diff --git a/exabel_data_sdk/client/api/api_client/signal_api_client.py b/exabel_data_sdk/client/api/api_client/signal_api_client.py index ba3e7eb..276182a 100644 --- a/exabel_data_sdk/client/api/api_client/signal_api_client.py +++ b/exabel_data_sdk/client/api/api_client/signal_api_client.py @@ -7,6 +7,7 @@ ListSignalsRequest, ListSignalsResponse, Signal, + UpdateSignalRequest, ) @@ -27,6 +28,10 @@ def get_signal(self, request: GetSignalRequest) -> Signal: def create_signal(self, request: CreateSignalRequest) -> Signal: """Create a signal.""" + @abstractmethod + def update_signal(self, request: UpdateSignalRequest) -> Signal: + """Update a signal.""" + @abstractmethod def delete_signal(self, request: DeleteSignalRequest) -> None: """Delete a signal.""" diff --git a/exabel_data_sdk/client/api/entity_api.py b/exabel_data_sdk/client/api/entity_api.py index def18e1..68c90a8 100644 --- a/exabel_data_sdk/client/api/entity_api.py +++ b/exabel_data_sdk/client/api/entity_api.py @@ -1,5 +1,7 @@ from typing import Optional, Sequence +from google.protobuf.field_mask_pb2 import FieldMask + from exabel_data_sdk.client.api.api_client.grpc.entity_grpc_client import EntityGrpcClient from exabel_data_sdk.client.api.api_client.http.entity_http_client import EntityHttpClient from exabel_data_sdk.client.api.data_classes.entity import Entity @@ -17,6 +19,7 @@ ListEntityTypesRequest, SearchEntitiesRequest, SearchTerm, + UpdateEntityRequest, ) @@ -124,6 +127,20 @@ def create_entity(self, entity: Entity, entity_type: str) -> Entity: ) return Entity.from_proto(response) + def update_entity(self, entity: Entity, update_mask: FieldMask = None) -> Entity: + """ + Update an entity. + + Args: + entity: The entity to update. + update_mask: Fields to update. If not specified, the update behaves as a full update, + overwriting all existing fields and properties. + """ + response = self.client.update_entity( + UpdateEntityRequest(entity=entity.to_proto(), update_mask=update_mask) + ) + return Entity.from_proto(response) + def delete_entity(self, name: str) -> None: """ Delete one entity. diff --git a/exabel_data_sdk/client/api/relationship_api.py b/exabel_data_sdk/client/api/relationship_api.py index 29a98ff..511ba41 100644 --- a/exabel_data_sdk/client/api/relationship_api.py +++ b/exabel_data_sdk/client/api/relationship_api.py @@ -1,5 +1,7 @@ from typing import Optional +from google.protobuf.field_mask_pb2 import FieldMask + from exabel_data_sdk.client.api.api_client.grpc.relationship_grpc_client import ( RelationshipGrpcClient, ) @@ -20,6 +22,8 @@ GetRelationshipTypeRequest, ListRelationshipsRequest, ListRelationshipTypesRequest, + UpdateRelationshipRequest, + UpdateRelationshipTypeRequest, ) @@ -81,6 +85,24 @@ def create_relationship_type(self, relationship_type: RelationshipType) -> Relat ) return RelationshipType.from_proto(response) + def update_relationship_type( + self, relationship_type: RelationshipType, update_mask: FieldMask = None + ) -> RelationshipType: + """ + Update a relationship type. + + Args: + relationship_type: The relationship type to update. + update_mask: The fields to update. If not specified, the update behaves as a + full update, overwriting all existing fields and properties. + """ + response = self.client.update_relationship_type( + UpdateRelationshipTypeRequest( + relationship_type=relationship_type.to_proto(), update_mask=update_mask + ) + ) + return RelationshipType.from_proto(response) + def delete_relationship_type(self, relationship_type: str) -> None: """ Delete a relationship type. @@ -200,6 +222,22 @@ def create_relationship(self, relationship: Relationship) -> Relationship: ) return Relationship.from_proto(response) + def update_relationship( + self, relationship: Relationship, update_mask: FieldMask = None + ) -> Relationship: + """ + Update a relationship between two entities. + + Args: + relationship: The relationship to update. + update_mask: The fields to update. If not specified, the update behaves as a + full update, overwriting all existing fields and properties. + """ + response = self.client.update_relationship( + UpdateRelationshipRequest(relationship=relationship.to_proto(), update_mask=update_mask) + ) + return Relationship.from_proto(response) + def delete_relationship(self, relationship_type: str, from_entity: str, to_entity: str) -> None: """ Delete a relationship. diff --git a/exabel_data_sdk/client/api/signal_api.py b/exabel_data_sdk/client/api/signal_api.py index d5ee2ca..d8273e7 100644 --- a/exabel_data_sdk/client/api/signal_api.py +++ b/exabel_data_sdk/client/api/signal_api.py @@ -1,5 +1,7 @@ from typing import Optional +from google.protobuf.field_mask_pb2 import FieldMask + from exabel_data_sdk.client.api.api_client.grpc.signal_grpc_client import SignalGrpcClient from exabel_data_sdk.client.api.api_client.http.signal_http_client import SignalHttpClient from exabel_data_sdk.client.api.data_classes.paging_result import PagingResult @@ -11,6 +13,7 @@ DeleteSignalRequest, GetSignalRequest, ListSignalsRequest, + UpdateSignalRequest, ) @@ -74,6 +77,20 @@ def create_signal(self, signal: Signal, create_library_signal: bool = False) -> ) return Signal.from_proto(response) + def update_signal(self, signal: Signal, update_mask: FieldMask = None) -> Signal: + """ + Update one signal and return it. + + Args: + signal: The signal to update. + update_mask: The fields to update. If not specified, the update behaves as a + full update, overwriting all existing fields and properties. + """ + response = self.client.update_signal( + UpdateSignalRequest(signal=signal.to_proto(), update_mask=update_mask), + ) + return Signal.from_proto(response) + def delete_signal(self, name: str) -> None: """ Delete one signal. diff --git a/exabel_data_sdk/scripts/login.py b/exabel_data_sdk/scripts/login.py index caa69be..9fd2a52 100644 --- a/exabel_data_sdk/scripts/login.py +++ b/exabel_data_sdk/scripts/login.py @@ -30,8 +30,6 @@ class CliLogin: login.access_token """ - # pylint: disable=too-many-instance-attributes - def __init__( self, auth0: str, @@ -72,13 +70,13 @@ def read_refresh_token(self) -> None: """Read the refresh token from the user’s home directory.""" filename = os.path.expanduser("~/.exabel") if os.path.isfile(filename): - with open(filename) as file: + with open(filename, encoding="utf-8") as file: self.refresh_token = file.read() def write_refresh_token(self) -> None: """Write the refresh token to the user’s home directory.""" filename = os.path.expanduser("~/.exabel") - with open(filename, "w") as file: + with open(filename, "w", encoding="utf-8") as file: file.write(self.refresh_token) def get_access_token(self) -> bool: diff --git a/setup.py b/setup.py index 99e10c2..470db2b 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="exabel-data-sdk", - version="0.0.20", + version="0.0.21", author="Exabel", author_email="support@exabel.com", description="Python SDK for the Exabel Data API",