From 0e1da54368ac96b6a8c8cdcc234525d604e0375d Mon Sep 17 00:00:00 2001 From: Joe Moorhouse Date: Sun, 15 Oct 2023 22:19:39 +0100 Subject: [PATCH 1/2] Add generic wind vulnerability model; overhaul score-based risk measures and update Pydantic version Signed-off-by: Joe Moorhouse --- Pipfile | 2 +- Pipfile.lock | 1090 +++++++++-------- .../Wind/Table_A2_Impact_Function_Slope.csv | 12 + ...S2_V_half_individual_fitting_per_event.csv | 474 +++++++ .../Wind/onboard.ipynb | 266 ++++ setup.cfg | 2 +- src/physrisk/api/v1/common.py | 4 +- src/physrisk/api/v1/exposure_req_resp.py | 4 +- src/physrisk/api/v1/hazard_data.py | 24 +- src/physrisk/api/v1/impact_req_resp.py | 135 +- src/physrisk/data/inventory.py | 4 +- src/physrisk/data/inventory_reader.py | 6 +- src/physrisk/hazard_models/core_hazards.py | 23 +- src/physrisk/kernel/calculation.py | 5 +- src/physrisk/kernel/hazards.py | 12 + src/physrisk/kernel/risk.py | 67 +- src/physrisk/kernel/vulnerability_model.py | 52 +- src/physrisk/requests.py | 101 +- src/physrisk/risk_models/risk_models.py | 106 +- .../real_estate_models.py | 43 +- src/test/api/test_data_requests.py | 22 +- src/test/api/test_impact_requests.py | 2 + src/test/api/test_lat_lons.json.zip | Bin 0 -> 196491 bytes src/test/kernel/test_exposure.py | 2 +- src/test/kernel/test_live_services.py | 21 + src/test/models/test_wind_models.py | 93 ++ src/test/risk_models/test_risk_models.py | 21 +- 27 files changed, 1948 insertions(+), 645 deletions(-) create mode 100644 notebooks/vulnerability_onboarding/Wind/Table_A2_Impact_Function_Slope.csv create mode 100644 notebooks/vulnerability_onboarding/Wind/Table_S2_V_half_individual_fitting_per_event.csv create mode 100644 notebooks/vulnerability_onboarding/Wind/onboard.ipynb create mode 100644 src/test/api/test_lat_lons.json.zip create mode 100644 src/test/kernel/test_live_services.py create mode 100644 src/test/models/test_wind_models.py diff --git a/Pipfile b/Pipfile index 80141836..567b8974 100644 --- a/Pipfile +++ b/Pipfile @@ -6,7 +6,7 @@ name = "pypi" [packages] affine = "==2.3.0" numpy = "==1.22.0" -pydantic = "==1.9.0" +pydantic = "==2.4.2" python-dotenv = "==0.19.2" requests = "==2.27.1" scipy = "==1.7.3" diff --git a/Pipfile.lock b/Pipfile.lock index 4d880f73..5990ab1f 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "34b11e3f01fe2bbc75a5d9c500e3a20a6e07fb300186698b9b8a64c2da20e660" + "sha256": "173c9dd806cde686f53d8da71d5ebe54009d37bfa0d70e7c7279b31f33fa78ba" }, "pipfile-spec": 6, "requires": { @@ -26,103 +26,104 @@ }, "aiobotocore": { "hashes": [ - "sha256:00fd7f43cc0484d8ed274fd0be492aa16a7fea679dbea96a602bb722ca4c2d22" + "sha256:00fd7f43cc0484d8ed274fd0be492aa16a7fea679dbea96a602bb722ca4c2d22", + "sha256:132a7ccae3bbd35d44dce84a0f4bd77cdac8653f676575afba10ce4879605836" ], "markers": "python_version >= '3.6'", "version": "==2.1.2" }, "aiohttp": { "hashes": [ - "sha256:03543dcf98a6619254b409be2d22b51f21ec66272be4ebda7b04e6412e4b2e14", - "sha256:03baa76b730e4e15a45f81dfe29a8d910314143414e528737f8589ec60cf7391", - "sha256:0a63f03189a6fa7c900226e3ef5ba4d3bd047e18f445e69adbd65af433add5a2", - "sha256:10c8cefcff98fd9168cdd86c4da8b84baaa90bf2da2269c6161984e6737bf23e", - "sha256:147ae376f14b55f4f3c2b118b95be50a369b89b38a971e80a17c3fd623f280c9", - "sha256:176a64b24c0935869d5bbc4c96e82f89f643bcdf08ec947701b9dbb3c956b7dd", - "sha256:17b79c2963db82086229012cff93ea55196ed31f6493bb1ccd2c62f1724324e4", - "sha256:1a45865451439eb320784918617ba54b7a377e3501fb70402ab84d38c2cd891b", - "sha256:1b3ea7edd2d24538959c1c1abf97c744d879d4e541d38305f9bd7d9b10c9ec41", - "sha256:22f6eab15b6db242499a16de87939a342f5a950ad0abaf1532038e2ce7d31567", - "sha256:3032dcb1c35bc330134a5b8a5d4f68c1a87252dfc6e1262c65a7e30e62298275", - "sha256:33587f26dcee66efb2fff3c177547bd0449ab7edf1b73a7f5dea1e38609a0c54", - "sha256:34ce9f93a4a68d1272d26030655dd1b58ff727b3ed2a33d80ec433561b03d67a", - "sha256:3a80464982d41b1fbfe3154e440ba4904b71c1a53e9cd584098cd41efdb188ef", - "sha256:3b90467ebc3d9fa5b0f9b6489dfb2c304a1db7b9946fa92aa76a831b9d587e99", - "sha256:3d89efa095ca7d442a6d0cbc755f9e08190ba40069b235c9886a8763b03785da", - "sha256:3d8ef1a630519a26d6760bc695842579cb09e373c5f227a21b67dc3eb16cfea4", - "sha256:3f43255086fe25e36fd5ed8f2ee47477408a73ef00e804cb2b5cba4bf2ac7f5e", - "sha256:40653609b3bf50611356e6b6554e3a331f6879fa7116f3959b20e3528783e699", - "sha256:41a86a69bb63bb2fc3dc9ad5ea9f10f1c9c8e282b471931be0268ddd09430b04", - "sha256:493f5bc2f8307286b7799c6d899d388bbaa7dfa6c4caf4f97ef7521b9cb13719", - "sha256:4a6cadebe132e90cefa77e45f2d2f1a4b2ce5c6b1bfc1656c1ddafcfe4ba8131", - "sha256:4c745b109057e7e5f1848c689ee4fb3a016c8d4d92da52b312f8a509f83aa05e", - "sha256:4d347a172f866cd1d93126d9b239fcbe682acb39b48ee0873c73c933dd23bd0f", - "sha256:4dac314662f4e2aa5009977b652d9b8db7121b46c38f2073bfeed9f4049732cd", - "sha256:4ddaae3f3d32fc2cb4c53fab020b69a05c8ab1f02e0e59665c6f7a0d3a5be54f", - "sha256:5393fb786a9e23e4799fec788e7e735de18052f83682ce2dfcabaf1c00c2c08e", - "sha256:59f029a5f6e2d679296db7bee982bb3d20c088e52a2977e3175faf31d6fb75d1", - "sha256:5a7bdf9e57126dc345b683c3632e8ba317c31d2a41acd5800c10640387d193ed", - "sha256:5b3f2e06a512e94722886c0827bee9807c86a9f698fac6b3aee841fab49bbfb4", - "sha256:5ce45967538fb747370308d3145aa68a074bdecb4f3a300869590f725ced69c1", - "sha256:5e14f25765a578a0a634d5f0cd1e2c3f53964553a00347998dfdf96b8137f777", - "sha256:618c901dd3aad4ace71dfa0f5e82e88b46ef57e3239fc7027773cb6d4ed53531", - "sha256:652b1bff4f15f6287550b4670546a2947f2a4575b6c6dff7760eafb22eacbf0b", - "sha256:6c08e8ed6fa3d477e501ec9db169bfac8140e830aa372d77e4a43084d8dd91ab", - "sha256:6ddb2a2026c3f6a68c3998a6c47ab6795e4127315d2e35a09997da21865757f8", - "sha256:6e601588f2b502c93c30cd5a45bfc665faaf37bbe835b7cfd461753068232074", - "sha256:6e74dd54f7239fcffe07913ff8b964e28b712f09846e20de78676ce2a3dc0bfc", - "sha256:7235604476a76ef249bd64cb8274ed24ccf6995c4a8b51a237005ee7a57e8643", - "sha256:7ab43061a0c81198d88f39aaf90dae9a7744620978f7ef3e3708339b8ed2ef01", - "sha256:7c7837fe8037e96b6dd5cfcf47263c1620a9d332a87ec06a6ca4564e56bd0f36", - "sha256:80575ba9377c5171407a06d0196b2310b679dc752d02a1fcaa2bc20b235dbf24", - "sha256:80a37fe8f7c1e6ce8f2d9c411676e4bc633a8462844e38f46156d07a7d401654", - "sha256:8189c56eb0ddbb95bfadb8f60ea1b22fcfa659396ea36f6adcc521213cd7b44d", - "sha256:854f422ac44af92bfe172d8e73229c270dc09b96535e8a548f99c84f82dde241", - "sha256:880e15bb6dad90549b43f796b391cfffd7af373f4646784795e20d92606b7a51", - "sha256:8b631e26df63e52f7cce0cce6507b7a7f1bc9b0c501fcde69742130b32e8782f", - "sha256:8c29c77cc57e40f84acef9bfb904373a4e89a4e8b74e71aa8075c021ec9078c2", - "sha256:91f6d540163f90bbaef9387e65f18f73ffd7c79f5225ac3d3f61df7b0d01ad15", - "sha256:92c0cea74a2a81c4c76b62ea1cac163ecb20fb3ba3a75c909b9fa71b4ad493cf", - "sha256:9bcb89336efa095ea21b30f9e686763f2be4478f1b0a616969551982c4ee4c3b", - "sha256:a1f4689c9a1462f3df0a1f7e797791cd6b124ddbee2b570d34e7f38ade0e2c71", - "sha256:a3fec6a4cb5551721cdd70473eb009d90935b4063acc5f40905d40ecfea23e05", - "sha256:a5d794d1ae64e7753e405ba58e08fcfa73e3fad93ef9b7e31112ef3c9a0efb52", - "sha256:a86d42d7cba1cec432d47ab13b6637bee393a10f664c425ea7b305d1301ca1a3", - "sha256:adfbc22e87365a6e564c804c58fc44ff7727deea782d175c33602737b7feadb6", - "sha256:aeb29c84bb53a84b1a81c6c09d24cf33bb8432cc5c39979021cc0f98c1292a1a", - "sha256:aede4df4eeb926c8fa70de46c340a1bc2c6079e1c40ccf7b0eae1313ffd33519", - "sha256:b744c33b6f14ca26b7544e8d8aadff6b765a80ad6164fb1a430bbadd593dfb1a", - "sha256:b7a00a9ed8d6e725b55ef98b1b35c88013245f35f68b1b12c5cd4100dddac333", - "sha256:bb96fa6b56bb536c42d6a4a87dfca570ff8e52de2d63cabebfd6fb67049c34b6", - "sha256:bbcf1a76cf6f6dacf2c7f4d2ebd411438c275faa1dc0c68e46eb84eebd05dd7d", - "sha256:bca5f24726e2919de94f047739d0a4fc01372801a3672708260546aa2601bf57", - "sha256:bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c", - "sha256:c4eb3b82ca349cf6fadcdc7abcc8b3a50ab74a62e9113ab7a8ebc268aad35bb9", - "sha256:c6cc15d58053c76eacac5fa9152d7d84b8d67b3fde92709195cb984cfb3475ea", - "sha256:c6cd05ea06daca6ad6a4ca3ba7fe7dc5b5de063ff4daec6170ec0f9979f6c332", - "sha256:c844fd628851c0bc309f3c801b3a3d58ce430b2ce5b359cd918a5a76d0b20cb5", - "sha256:c9cb1565a7ad52e096a6988e2ee0397f72fe056dadf75d17fa6b5aebaea05622", - "sha256:cab9401de3ea52b4b4c6971db5fb5c999bd4260898af972bf23de1c6b5dd9d71", - "sha256:cd468460eefef601ece4428d3cf4562459157c0f6523db89365202c31b6daebb", - "sha256:d1e6a862b76f34395a985b3cd39a0d949ca80a70b6ebdea37d3ab39ceea6698a", - "sha256:d1f9282c5f2b5e241034a009779e7b2a1aa045f667ff521e7948ea9b56e0c5ff", - "sha256:d265f09a75a79a788237d7f9054f929ced2e69eb0bb79de3798c468d8a90f945", - "sha256:db3fc6120bce9f446d13b1b834ea5b15341ca9ff3f335e4a951a6ead31105480", - "sha256:dbf3a08a06b3f433013c143ebd72c15cac33d2914b8ea4bea7ac2c23578815d6", - "sha256:de04b491d0e5007ee1b63a309956eaed959a49f5bb4e84b26c8f5d49de140fa9", - "sha256:e4b09863aae0dc965c3ef36500d891a3ff495a2ea9ae9171e4519963c12ceefd", - "sha256:e595432ac259af2d4630008bf638873d69346372d38255774c0e286951e8b79f", - "sha256:e75b89ac3bd27d2d043b234aa7b734c38ba1b0e43f07787130a0ecac1e12228a", - "sha256:ea9eb976ffdd79d0e893869cfe179a8f60f152d42cb64622fca418cd9b18dc2a", - "sha256:eafb3e874816ebe2a92f5e155f17260034c8c341dad1df25672fb710627c6949", - "sha256:ee3c36df21b5714d49fc4580247947aa64bcbe2939d1b77b4c8dcb8f6c9faecc", - "sha256:f352b62b45dff37b55ddd7b9c0c8672c4dd2eb9c0f9c11d395075a84e2c40f75", - "sha256:fabb87dd8850ef0f7fe2b366d44b77d7e6fa2ea87861ab3844da99291e81e60f", - "sha256:fe11310ae1e4cd560035598c3f29d86cef39a83d244c7466f95c27ae04850f10", - "sha256:fe7ba4a51f33ab275515f66b0a236bcde4fb5561498fe8f898d4e549b2e4509f" + "sha256:002f23e6ea8d3dd8d149e569fd580c999232b5fbc601c48d55398fbc2e582e8c", + "sha256:01770d8c04bd8db568abb636c1fdd4f7140b284b8b3e0b4584f070180c1e5c62", + "sha256:0912ed87fee967940aacc5306d3aa8ba3a459fcd12add0b407081fbefc931e53", + "sha256:0cccd1de239afa866e4ce5c789b3032442f19c261c7d8a01183fd956b1935349", + "sha256:0fa375b3d34e71ccccf172cab401cd94a72de7a8cc01847a7b3386204093bb47", + "sha256:13da35c9ceb847732bf5c6c5781dcf4780e14392e5d3b3c689f6d22f8e15ae31", + "sha256:14cd52ccf40006c7a6cd34a0f8663734e5363fd981807173faf3a017e202fec9", + "sha256:16d330b3b9db87c3883e565340d292638a878236418b23cc8b9b11a054aaa887", + "sha256:1bed815f3dc3d915c5c1e556c397c8667826fbc1b935d95b0ad680787896a358", + "sha256:1d84166673694841d8953f0a8d0c90e1087739d24632fe86b1a08819168b4566", + "sha256:1f13f60d78224f0dace220d8ab4ef1dbc37115eeeab8c06804fec11bec2bbd07", + "sha256:229852e147f44da0241954fc6cb910ba074e597f06789c867cb7fb0621e0ba7a", + "sha256:253bf92b744b3170eb4c4ca2fa58f9c4b87aeb1df42f71d4e78815e6e8b73c9e", + "sha256:255ba9d6d5ff1a382bb9a578cd563605aa69bec845680e21c44afc2670607a95", + "sha256:2817b2f66ca82ee699acd90e05c95e79bbf1dc986abb62b61ec8aaf851e81c93", + "sha256:2b8d4e166e600dcfbff51919c7a3789ff6ca8b3ecce16e1d9c96d95dd569eb4c", + "sha256:2d5b785c792802e7b275c420d84f3397668e9d49ab1cb52bd916b3b3ffcf09ad", + "sha256:3161ce82ab85acd267c8f4b14aa226047a6bee1e4e6adb74b798bd42c6ae1f80", + "sha256:33164093be11fcef3ce2571a0dccd9041c9a93fa3bde86569d7b03120d276c6f", + "sha256:39a312d0e991690ccc1a61f1e9e42daa519dcc34ad03eb6f826d94c1190190dd", + "sha256:3b2ab182fc28e7a81f6c70bfbd829045d9480063f5ab06f6e601a3eddbbd49a0", + "sha256:3c68330a59506254b556b99a91857428cab98b2f84061260a67865f7f52899f5", + "sha256:3f0e27e5b733803333bb2371249f41cf42bae8884863e8e8965ec69bebe53132", + "sha256:3f5c7ce535a1d2429a634310e308fb7d718905487257060e5d4598e29dc17f0b", + "sha256:3fd194939b1f764d6bb05490987bfe104287bbf51b8d862261ccf66f48fb4096", + "sha256:41bdc2ba359032e36c0e9de5a3bd00d6fb7ea558a6ce6b70acedf0da86458321", + "sha256:41d55fc043954cddbbd82503d9cc3f4814a40bcef30b3569bc7b5e34130718c1", + "sha256:42c89579f82e49db436b69c938ab3e1559e5a4409eb8639eb4143989bc390f2f", + "sha256:45ad816b2c8e3b60b510f30dbd37fe74fd4a772248a52bb021f6fd65dff809b6", + "sha256:4ac39027011414dbd3d87f7edb31680e1f430834c8cef029f11c66dad0670aa5", + "sha256:4d4cbe4ffa9d05f46a28252efc5941e0462792930caa370a6efaf491f412bc66", + "sha256:4fcf3eabd3fd1a5e6092d1242295fa37d0354b2eb2077e6eb670accad78e40e1", + "sha256:5d791245a894be071d5ab04bbb4850534261a7d4fd363b094a7b9963e8cdbd31", + "sha256:6c43ecfef7deaf0617cee936836518e7424ee12cb709883f2c9a1adda63cc460", + "sha256:6c5f938d199a6fdbdc10bbb9447496561c3a9a565b43be564648d81e1102ac22", + "sha256:6e2f9cc8e5328f829f6e1fb74a0a3a939b14e67e80832975e01929e320386b34", + "sha256:713103a8bdde61d13490adf47171a1039fd880113981e55401a0f7b42c37d071", + "sha256:71783b0b6455ac8f34b5ec99d83e686892c50498d5d00b8e56d47f41b38fbe04", + "sha256:76b36b3124f0223903609944a3c8bf28a599b2cc0ce0be60b45211c8e9be97f8", + "sha256:7bc88fc494b1f0311d67f29fee6fd636606f4697e8cc793a2d912ac5b19aa38d", + "sha256:7ee912f7e78287516df155f69da575a0ba33b02dd7c1d6614dbc9463f43066e3", + "sha256:86f20cee0f0a317c76573b627b954c412ea766d6ada1a9fcf1b805763ae7feeb", + "sha256:89341b2c19fb5eac30c341133ae2cc3544d40d9b1892749cdd25892bbc6ac951", + "sha256:8a9b5a0606faca4f6cc0d338359d6fa137104c337f489cd135bb7fbdbccb1e39", + "sha256:8d399dade330c53b4106160f75f55407e9ae7505263ea86f2ccca6bfcbdb4921", + "sha256:8e31e9db1bee8b4f407b77fd2507337a0a80665ad7b6c749d08df595d88f1cf5", + "sha256:90c72ebb7cb3a08a7f40061079817133f502a160561d0675b0a6adf231382c92", + "sha256:918810ef188f84152af6b938254911055a72e0f935b5fbc4c1a4ed0b0584aed1", + "sha256:93c15c8e48e5e7b89d5cb4613479d144fda8344e2d886cf694fd36db4cc86865", + "sha256:96603a562b546632441926cd1293cfcb5b69f0b4159e6077f7c7dbdfb686af4d", + "sha256:99c5ac4ad492b4a19fc132306cd57075c28446ec2ed970973bbf036bcda1bcc6", + "sha256:9c19b26acdd08dd239e0d3669a3dddafd600902e37881f13fbd8a53943079dbc", + "sha256:9de50a199b7710fa2904be5a4a9b51af587ab24c8e540a7243ab737b45844543", + "sha256:9e2ee0ac5a1f5c7dd3197de309adfb99ac4617ff02b0603fd1e65b07dc772e4b", + "sha256:a2ece4af1f3c967a4390c284797ab595a9f1bc1130ef8b01828915a05a6ae684", + "sha256:a3628b6c7b880b181a3ae0a0683698513874df63783fd89de99b7b7539e3e8a8", + "sha256:ad1407db8f2f49329729564f71685557157bfa42b48f4b93e53721a16eb813ed", + "sha256:b04691bc6601ef47c88f0255043df6f570ada1a9ebef99c34bd0b72866c217ae", + "sha256:b0cf2a4501bff9330a8a5248b4ce951851e415bdcce9dc158e76cfd55e15085c", + "sha256:b2fe42e523be344124c6c8ef32a011444e869dc5f883c591ed87f84339de5976", + "sha256:b30e963f9e0d52c28f284d554a9469af073030030cef8693106d918b2ca92f54", + "sha256:bb54c54510e47a8c7c8e63454a6acc817519337b2b78606c4e840871a3e15349", + "sha256:bd111d7fc5591ddf377a408ed9067045259ff2770f37e2d94e6478d0f3fc0c17", + "sha256:bdf70bfe5a1414ba9afb9d49f0c912dc524cf60141102f3a11143ba3d291870f", + "sha256:ca80e1b90a05a4f476547f904992ae81eda5c2c85c66ee4195bb8f9c5fb47f28", + "sha256:caf486ac1e689dda3502567eb89ffe02876546599bbf915ec94b1fa424eeffd4", + "sha256:ccc360e87341ad47c777f5723f68adbb52b37ab450c8bc3ca9ca1f3e849e5fe2", + "sha256:d25036d161c4fe2225d1abff2bd52c34ed0b1099f02c208cd34d8c05729882f0", + "sha256:d52d5dc7c6682b720280f9d9db41d36ebe4791622c842e258c9206232251ab2b", + "sha256:d67f8baed00870aa390ea2590798766256f31dc5ed3ecc737debb6e97e2ede78", + "sha256:d76e8b13161a202d14c9584590c4df4d068c9567c99506497bdd67eaedf36403", + "sha256:d95fc1bf33a9a81469aa760617b5971331cdd74370d1214f0b3109272c0e1e3c", + "sha256:de6a1c9f6803b90e20869e6b99c2c18cef5cc691363954c93cb9adeb26d9f3ae", + "sha256:e1d8cb0b56b3587c5c01de3bf2f600f186da7e7b5f7353d1bf26a8ddca57f965", + "sha256:e2a988a0c673c2e12084f5e6ba3392d76c75ddb8ebc6c7e9ead68248101cd446", + "sha256:e3f1e3f1a1751bb62b4a1b7f4e435afcdade6c17a4fd9b9d43607cebd242924a", + "sha256:e6a00ffcc173e765e200ceefb06399ba09c06db97f401f920513a10c803604ca", + "sha256:e827d48cf802de06d9c935088c2924e3c7e7533377d66b6f31ed175c1620e05e", + "sha256:ebf3fd9f141700b510d4b190094db0ce37ac6361a6806c153c161dc6c041ccda", + "sha256:ec00c3305788e04bf6d29d42e504560e159ccaf0be30c09203b468a6c1ccd3b2", + "sha256:ec4fd86658c6a8964d75426517dc01cbf840bbf32d055ce64a9e63a40fd7b771", + "sha256:efd2fcf7e7b9d7ab16e6b7d54205beded0a9c8566cb30f09c1abe42b4e22bdcb", + "sha256:f0f03211fd14a6a0aed2997d4b1c013d49fb7b50eeb9ffdf5e51f23cfe2c77fa", + "sha256:f628dbf3c91e12f4d6c8b3f092069567d8eb17814aebba3d7d60c149391aee3a", + "sha256:f8ef51e459eb2ad8e7a66c1d6440c808485840ad55ecc3cafefadea47d1b1ba2", + "sha256:fc37e9aef10a696a5a4474802930079ccfc14d9f9c10b4662169671ff034b7df", + "sha256:fdee8405931b0615220e5ddf8cd7edd8592c606a8e4ca2a00704883c396e4479" ], "markers": "python_version >= '3.6'", - "version": "==3.8.4" + "version": "==3.8.6" }, "aioitertools": { "hashes": [ @@ -140,6 +141,14 @@ "markers": "python_version >= '3.7'", "version": "==1.3.1" }, + "annotated-types": { + "hashes": [ + "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43", + "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d" + ], + "markers": "python_version >= '3.8'", + "version": "==0.6.0" + }, "asciitree": { "hashes": [ "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e" @@ -148,19 +157,19 @@ }, "async-timeout": { "hashes": [ - "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", - "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" + "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f", + "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028" ], - "markers": "python_version >= '3.6'", - "version": "==4.0.2" + "markers": "python_version >= '3.7'", + "version": "==4.0.3" }, "attrs": { "hashes": [ - "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836", - "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99" + "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", + "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015" ], - "markers": "python_version >= '3.6'", - "version": "==22.2.0" + "markers": "python_version >= '3.7'", + "version": "==23.1.0" }, "botocore": { "hashes": [ @@ -172,11 +181,11 @@ }, "certifi": { "hashes": [ - "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", - "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" + "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082", + "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9" ], "markers": "python_version >= '3.6'", - "version": "==2022.12.7" + "version": "==2023.7.22" }, "charset-normalizer": { "hashes": [ @@ -262,101 +271,80 @@ "index": "pypi", "version": "==4.41.0" }, - "entrypoints": { - "hashes": [ - "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4", - "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f" - ], - "markers": "python_version >= '3.6'", - "version": "==0.4" - }, "fasteners": { "hashes": [ - "sha256:1d4caf5f8db57b0e4107d94fd5a1d02510a450dced6ca77d1839064c1bacf20c", - "sha256:cb7c13ef91e0c7e4fe4af38ecaf6b904ec3f5ce0dda06d34924b6b74b869d953" + "sha256:758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237", + "sha256:b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c" ], "markers": "python_version >= '3.6'", - "version": "==0.18" + "version": "==0.19" }, "frozenlist": { "hashes": [ - "sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c", - "sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f", - "sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a", - "sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784", - "sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27", - "sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d", - "sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3", - "sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678", - "sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a", - "sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483", - "sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8", - "sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf", - "sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99", - "sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c", - "sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48", - "sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5", - "sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56", - "sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e", - "sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1", - "sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401", - "sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4", - "sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e", - "sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649", - "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a", - "sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d", - "sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0", - "sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6", - "sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d", - "sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b", - "sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6", - "sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf", - "sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef", - "sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7", - "sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842", - "sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba", - "sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420", - "sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b", - "sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d", - "sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332", - "sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936", - "sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816", - "sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91", - "sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420", - "sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448", - "sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411", - "sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4", - "sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32", - "sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b", - "sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0", - "sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530", - "sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669", - "sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7", - "sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1", - "sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5", - "sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce", - "sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4", - "sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e", - "sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2", - "sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d", - "sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9", - "sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642", - "sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0", - "sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703", - "sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb", - "sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1", - "sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13", - "sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab", - "sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38", - "sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb", - "sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb", - "sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81", - "sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8", - "sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd", - "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4" + "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6", + "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01", + "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251", + "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9", + "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b", + "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87", + "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf", + "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f", + "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0", + "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2", + "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b", + "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc", + "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c", + "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467", + "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9", + "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1", + "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a", + "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79", + "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167", + "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300", + "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf", + "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea", + "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2", + "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab", + "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3", + "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb", + "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087", + "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc", + "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8", + "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62", + "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f", + "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326", + "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c", + "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431", + "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963", + "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7", + "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef", + "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3", + "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956", + "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781", + "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472", + "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc", + "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839", + "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672", + "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3", + "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503", + "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d", + "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8", + "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b", + "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc", + "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f", + "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559", + "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b", + "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95", + "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb", + "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963", + "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919", + "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f", + "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3", + "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1", + "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e" ], - "markers": "python_version >= '3.7'", - "version": "==1.3.3" + "markers": "python_version >= '3.8'", + "version": "==1.4.0" }, "fsspec": { "hashes": [ @@ -376,11 +364,11 @@ }, "importlib-metadata": { "hashes": [ - "sha256:43ce9281e097583d758c2c708c4376371261a02c34682491a8e98352365aad20", - "sha256:ff80f3b5394912eb1b108fcfd444dc78b7f1f3e16b16188054bd01cb9cb86f09" + "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb", + "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743" ], "markers": "python_version < '3.9'", - "version": "==6.1.0" + "version": "==6.8.0" }, "jmespath": { "hashes": [ @@ -536,26 +524,31 @@ "sha256:fcdf84ba3ed8124eb7234adfbb8792f311991cbf8aed1cad4b1b1a7ee08380c1" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.56.4" }, "numcodecs": { "hashes": [ - "sha256:0c240858bf29e0ff254b1db60430e8b2658b8c8328b684f80033289d94807a7c", - "sha256:0fabc7dfdf64a9555bf8a34911e05b415793c67a1377207dc79cd96342291fa1", - "sha256:11596b71267417425ea8afb407477a67d684f434c8b07b1dd59c25a97d5c3ccb", - "sha256:32697785b786bb0039d3feeaabdc10f25eda6c149700cde954653aaa47637832", - "sha256:694dc2e80b1f169b7deb14bdd0a04b20e5f17ef32cb0f81b71ab690406ec6bd9", - "sha256:6c058b321de84a1729299b0eae4d652b2e48ea1ca7f9df0da65cb13470e635eb", - "sha256:7dae3f5678f247336c84e7315a0c59a4fec7c33eb7db72d78ff5c776479a812e", - "sha256:8c2f36b21162c6ebccc05d3fe896f86b91dcf8709946809f730cc23a37f8234d", - "sha256:bd05cdb853c7bcfde2efc809a9df2c5e205b96f70405b810e5788b45d0d81f73", - "sha256:bf3925eeb37aed0e6c04d7fb9614133a3c8426dc77f8bda54c99c601a44b3bd3", - "sha256:c0bc116752be45b4f9dca4315e5a2b4185e3b46f68c997dbb84aef334ceb5a1d", - "sha256:c27dfca402f69fbfa01c46fb572086e77f38121192160cc8ed1177dc30702c52", - "sha256:ee5bda16e9d26a7a39fc20b6c1cec23b4debc314df5cfae3ed505149c2eeafc4" + "sha256:01f5457c0c81a556812240a2318c6022ca5c6f66fe2a51f619bdf8b0c855b5f2", + "sha256:0c1f679b148bfdc9341686814485d03ad652ea551a90debadbbf9da3fb4cc003", + "sha256:182458355f5cad297575f9a16e804fe345c22c7a1b796ee9a0a8bce5a9f66c60", + "sha256:1fe66c7a2b016e772a60dc8d68479958ae8c9ce306bcc318ee3d2ca883930e94", + "sha256:3a265db9177bd4a19939651b68722b72044bc92bb0b646e2a0d55835c0acb9d5", + "sha256:3b5a0be940093d81eb49b0adba62615d3b973174d8167dbd63cc6d392e157bf6", + "sha256:488ba767d956f8dbf794c4c30df1983a385f048a4f1bc670dd0761b8fe7fd7a3", + "sha256:6388e5f4e94d18a7165fbd1c9d3637673b74157cff8bc644005f9e2a4c717d6e", + "sha256:68b3a18a93a96cba0a1d367ae76c02a74f29f93790e1c8b0423eacc4ce5d421a", + "sha256:98c2cedb3d6dd1238b033657da0b710689a9600813bfece28fd7c158328c0d4d", + "sha256:98dbc61366e2974a1bdc28e08ed790c74d39c9cb40ce3f487ae6e6a76da843dd", + "sha256:aa78ffc79a94aa78234821639c253219d8a26455f020c760ad1b331144363849", + "sha256:bd746cd6e7af4925bd2d3e902b5027147d71590cdc8e9e2ad999014fc2405c3b", + "sha256:e03960dd507e00bc102ff4ca2f14fa40b0cfc2ba7279752d31558d0787431a53", + "sha256:e9fc2f2abcb09c301c8e1db16e4d5dc9faf93be8c46d88ac3974e023f0a3533b", + "sha256:eae479f65b75af0e75a20049bf83beff154c4662a233695b4f7848d5eee0ef2d", + "sha256:f16787a674d1badd55f827b01bbc62b3ef2adecbed59a7db7139a328f0744e4a" ], "markers": "python_version >= '3.8'", - "version": "==0.11.0" + "version": "==0.12.0" }, "numpy": { "hashes": [ @@ -583,6 +576,7 @@ "sha256:f71d57cc8645f14816ae249407d309be250ad8de93ef61d9709b45a0ddf4050c" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==1.22.0" }, "pillow": { @@ -666,48 +660,129 @@ "sha256:fb5c1ad6bad98c57482236a21bf985ab0ef42bd51f7ad4e4538e89a997624e12" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==9.4.0" }, "pydantic": { "hashes": [ - "sha256:085ca1de245782e9b46cefcf99deecc67d418737a1fd3f6a4f511344b613a5b3", - "sha256:086254884d10d3ba16da0588604ffdc5aab3f7f09557b998373e885c690dd398", - "sha256:0b6037175234850ffd094ca77bf60fb54b08b5b22bc85865331dd3bda7a02fa1", - "sha256:0fe476769acaa7fcddd17cadd172b156b53546ec3614a4d880e5d29ea5fbce65", - "sha256:1d5278bd9f0eee04a44c712982343103bba63507480bfd2fc2790fa70cd64cf4", - "sha256:2cc6a4cb8a118ffec2ca5fcb47afbacb4f16d0ab8b7350ddea5e8ef7bcc53a16", - "sha256:2ee7e3209db1e468341ef41fe263eb655f67f5c5a76c924044314e139a1103a2", - "sha256:3011b975c973819883842c5ab925a4e4298dffccf7782c55ec3580ed17dc464c", - "sha256:3c3b035103bd4e2e4a28da9da7ef2fa47b00ee4a9cf4f1a735214c1bcd05e0f6", - "sha256:4c68c3bc88dbda2a6805e9a142ce84782d3930f8fdd9655430d8576315ad97ce", - "sha256:574936363cd4b9eed8acdd6b80d0143162f2eb654d96cb3a8ee91d3e64bf4cf9", - "sha256:5a79330f8571faf71bf93667d3ee054609816f10a259a109a0738dac983b23c3", - "sha256:5e48ef4a8b8c066c4a31409d91d7ca372a774d0212da2787c0d32f8045b1e034", - "sha256:6c5b77947b9e85a54848343928b597b4f74fc364b70926b3c4441ff52620640c", - "sha256:742645059757a56ecd886faf4ed2441b9c0cd406079c2b4bee51bcc3fbcd510a", - "sha256:7bdfdadb5994b44bd5579cfa7c9b0e1b0e540c952d56f627eb227851cda9db77", - "sha256:815ddebb2792efd4bba5488bc8fde09c29e8ca3227d27cf1c6990fc830fd292b", - "sha256:8b5ac0f1c83d31b324e57a273da59197c83d1bb18171e512908fe5dc7278a1d6", - "sha256:96f240bce182ca7fe045c76bcebfa0b0534a1bf402ed05914a6f1dadff91877f", - "sha256:a733965f1a2b4090a5238d40d983dcd78f3ecea221c7af1497b845a9709c1721", - "sha256:ab624700dc145aa809e6f3ec93fb8e7d0f99d9023b713f6a953637429b437d37", - "sha256:b2571db88c636d862b35090ccf92bf24004393f85c8870a37f42d9f23d13e032", - "sha256:bbbc94d0c94dd80b3340fc4f04fd4d701f4b038ebad72c39693c794fd3bc2d9d", - "sha256:c0727bda6e38144d464daec31dff936a82917f431d9c39c39c60a26567eae3ed", - "sha256:c556695b699f648c58373b542534308922c46a1cda06ea47bc9ca45ef5b39ae6", - "sha256:c86229333cabaaa8c51cf971496f10318c4734cf7b641f08af0a6fbf17ca3054", - "sha256:c8d7da6f1c1049eefb718d43d99ad73100c958a5367d30b9321b092771e96c25", - "sha256:c8e9dcf1ac499679aceedac7e7ca6d8641f0193c591a2d090282aaf8e9445a46", - "sha256:cb23bcc093697cdea2708baae4f9ba0e972960a835af22560f6ae4e7e47d33f5", - "sha256:d1e4c28f30e767fd07f2ddc6f74f41f034d1dd6bc526cd59e63a82fe8bb9ef4c", - "sha256:d9c9bdb3af48e242838f9f6e6127de9be7063aad17b32215ccc36a09c5cf1070", - "sha256:dee5ef83a76ac31ab0c78c10bd7d5437bfdb6358c95b91f1ba7ff7b76f9996a1", - "sha256:e0896200b6a40197405af18828da49f067c2fa1f821491bc8f5bde241ef3f7d7", - "sha256:f5a64b64ddf4c99fe201ac2724daada8595ada0d102ab96d019c1555c2d6441d", - "sha256:f947352c3434e8b937e3aa8f96f47bdfe6d92779e44bb3f41e4c213ba6a32145" + "sha256:94f336138093a5d7f426aac732dcfe7ab4eb4da243c88f891d65deb4a2556ee7", + "sha256:bc3ddf669d234f4220e6e1c4d96b061abe0998185a8d7855c0126782b7abc8c1" ], "index": "pypi", - "version": "==1.9.0" + "markers": "python_version >= '3.7'", + "version": "==2.4.2" + }, + "pydantic-core": { + "hashes": [ + "sha256:042462d8d6ba707fd3ce9649e7bf268633a41018d6a998fb5fbacb7e928a183e", + "sha256:0523aeb76e03f753b58be33b26540880bac5aa54422e4462404c432230543f33", + "sha256:05560ab976012bf40f25d5225a58bfa649bb897b87192a36c6fef1ab132540d7", + "sha256:0675ba5d22de54d07bccde38997e780044dcfa9a71aac9fd7d4d7a1d2e3e65f7", + "sha256:073d4a470b195d2b2245d0343569aac7e979d3a0dcce6c7d2af6d8a920ad0bea", + "sha256:07ec6d7d929ae9c68f716195ce15e745b3e8fa122fc67698ac6498d802ed0fa4", + "sha256:0880e239827b4b5b3e2ce05e6b766a7414e5f5aedc4523be6b68cfbc7f61c5d0", + "sha256:0c27f38dc4fbf07b358b2bc90edf35e82d1703e22ff2efa4af4ad5de1b3833e7", + "sha256:0d8a8adef23d86d8eceed3e32e9cca8879c7481c183f84ed1a8edc7df073af94", + "sha256:0e2a35baa428181cb2270a15864ec6286822d3576f2ed0f4cd7f0c1708472aff", + "sha256:0f8682dbdd2f67f8e1edddcbffcc29f60a6182b4901c367fc8c1c40d30bb0a82", + "sha256:0fa467fd300a6f046bdb248d40cd015b21b7576c168a6bb20aa22e595c8ffcdd", + "sha256:128552af70a64660f21cb0eb4876cbdadf1a1f9d5de820fed6421fa8de07c893", + "sha256:1396e81b83516b9d5c9e26a924fa69164156c148c717131f54f586485ac3c15e", + "sha256:149b8a07712f45b332faee1a2258d8ef1fb4a36f88c0c17cb687f205c5dc6e7d", + "sha256:14ac492c686defc8e6133e3a2d9eaf5261b3df26b8ae97450c1647286750b901", + "sha256:14cfbb00959259e15d684505263d5a21732b31248a5dd4941f73a3be233865b9", + "sha256:14e09ff0b8fe6e46b93d36a878f6e4a3a98ba5303c76bb8e716f4878a3bee92c", + "sha256:154ea7c52e32dce13065dbb20a4a6f0cc012b4f667ac90d648d36b12007fa9f7", + "sha256:15d6bca84ffc966cc9976b09a18cf9543ed4d4ecbd97e7086f9ce9327ea48891", + "sha256:1d40f55222b233e98e3921df7811c27567f0e1a4411b93d4c5c0f4ce131bc42f", + "sha256:25bd966103890ccfa028841a8f30cebcf5875eeac8c4bde4fe221364c92f0c9a", + "sha256:2cf5bb4dd67f20f3bbc1209ef572a259027c49e5ff694fa56bed62959b41e1f9", + "sha256:2e0e2959ef5d5b8dc9ef21e1a305a21a36e254e6a34432d00c72a92fdc5ecda5", + "sha256:320f14bd4542a04ab23747ff2c8a778bde727158b606e2661349557f0770711e", + "sha256:3625578b6010c65964d177626fde80cf60d7f2e297d56b925cb5cdeda6e9925a", + "sha256:39215d809470f4c8d1881758575b2abfb80174a9e8daf8f33b1d4379357e417c", + "sha256:3f0ac9fb8608dbc6eaf17956bf623c9119b4db7dbb511650910a82e261e6600f", + "sha256:417243bf599ba1f1fef2bb8c543ceb918676954734e2dcb82bf162ae9d7bd514", + "sha256:420a692b547736a8d8703c39ea935ab5d8f0d2573f8f123b0a294e49a73f214b", + "sha256:443fed67d33aa85357464f297e3d26e570267d1af6fef1c21ca50921d2976302", + "sha256:48525933fea744a3e7464c19bfede85df4aba79ce90c60b94d8b6e1eddd67096", + "sha256:485a91abe3a07c3a8d1e082ba29254eea3e2bb13cbbd4351ea4e5a21912cc9b0", + "sha256:4a5be350f922430997f240d25f8219f93b0c81e15f7b30b868b2fddfc2d05f27", + "sha256:4d966c47f9dd73c2d32a809d2be529112d509321c5310ebf54076812e6ecd884", + "sha256:524ff0ca3baea164d6d93a32c58ac79eca9f6cf713586fdc0adb66a8cdeab96a", + "sha256:53df009d1e1ba40f696f8995683e067e3967101d4bb4ea6f667931b7d4a01357", + "sha256:5994985da903d0b8a08e4935c46ed8daf5be1cf217489e673910951dc533d430", + "sha256:5cabb9710f09d5d2e9e2748c3e3e20d991a4c5f96ed8f1132518f54ab2967221", + "sha256:5fdb39f67c779b183b0c853cd6b45f7db84b84e0571b3ef1c89cdb1dfc367325", + "sha256:600d04a7b342363058b9190d4e929a8e2e715c5682a70cc37d5ded1e0dd370b4", + "sha256:631cb7415225954fdcc2a024119101946793e5923f6c4d73a5914d27eb3d3a05", + "sha256:63974d168b6233b4ed6a0046296803cb13c56637a7b8106564ab575926572a55", + "sha256:64322bfa13e44c6c30c518729ef08fda6026b96d5c0be724b3c4ae4da939f875", + "sha256:655f8f4c8d6a5963c9a0687793da37b9b681d9ad06f29438a3b2326d4e6b7970", + "sha256:6835451b57c1b467b95ffb03a38bb75b52fb4dc2762bb1d9dbed8de31ea7d0fc", + "sha256:6db2eb9654a85ada248afa5a6db5ff1cf0f7b16043a6b070adc4a5be68c716d6", + "sha256:7c4d1894fe112b0864c1fa75dffa045720a194b227bed12f4be7f6045b25209f", + "sha256:7eb037106f5c6b3b0b864ad226b0b7ab58157124161d48e4b30c4a43fef8bc4b", + "sha256:8282bab177a9a3081fd3d0a0175a07a1e2bfb7fcbbd949519ea0980f8a07144d", + "sha256:82f55187a5bebae7d81d35b1e9aaea5e169d44819789837cdd4720d768c55d15", + "sha256:8572cadbf4cfa95fb4187775b5ade2eaa93511f07947b38f4cd67cf10783b118", + "sha256:8cdbbd92154db2fec4ec973d45c565e767ddc20aa6dbaf50142676484cbff8ee", + "sha256:8f6e6aed5818c264412ac0598b581a002a9f050cb2637a84979859e70197aa9e", + "sha256:92f675fefa977625105708492850bcbc1182bfc3e997f8eecb866d1927c98ae6", + "sha256:962ed72424bf1f72334e2f1e61b68f16c0e596f024ca7ac5daf229f7c26e4208", + "sha256:9badf8d45171d92387410b04639d73811b785b5161ecadabf056ea14d62d4ede", + "sha256:9c120c9ce3b163b985a3b966bb701114beb1da4b0468b9b236fc754783d85aa3", + "sha256:9f6f3e2598604956480f6c8aa24a3384dbf6509fe995d97f6ca6103bb8c2534e", + "sha256:a1254357f7e4c82e77c348dabf2d55f1d14d19d91ff025004775e70a6ef40ada", + "sha256:a1392e0638af203cee360495fd2cfdd6054711f2db5175b6e9c3c461b76f5175", + "sha256:a1c311fd06ab3b10805abb72109f01a134019739bd3286b8ae1bc2fc4e50c07a", + "sha256:a5cb87bdc2e5f620693148b5f8f842d293cae46c5f15a1b1bf7ceeed324a740c", + "sha256:a7a7902bf75779bc12ccfc508bfb7a4c47063f748ea3de87135d433a4cca7a2f", + "sha256:aad7bd686363d1ce4ee930ad39f14e1673248373f4a9d74d2b9554f06199fb58", + "sha256:aafdb89fdeb5fe165043896817eccd6434aee124d5ee9b354f92cd574ba5e78f", + "sha256:ae8a8843b11dc0b03b57b52793e391f0122e740de3df1474814c700d2622950a", + "sha256:b00bc4619f60c853556b35f83731bd817f989cba3e97dc792bb8c97941b8053a", + "sha256:b1f22a9ab44de5f082216270552aa54259db20189e68fc12484873d926426921", + "sha256:b3c01c2fb081fced3bbb3da78510693dc7121bb893a1f0f5f4b48013201f362e", + "sha256:b3dcd587b69bbf54fc04ca157c2323b8911033e827fffaecf0cafa5a892a0904", + "sha256:b4a6db486ac8e99ae696e09efc8b2b9fea67b63c8f88ba7a1a16c24a057a0776", + "sha256:bec7dd208a4182e99c5b6c501ce0b1f49de2802448d4056091f8e630b28e9a52", + "sha256:c0877239307b7e69d025b73774e88e86ce82f6ba6adf98f41069d5b0b78bd1bf", + "sha256:caa48fc31fc7243e50188197b5f0c4228956f97b954f76da157aae7f67269ae8", + "sha256:cfe1090245c078720d250d19cb05d67e21a9cd7c257698ef139bc41cf6c27b4f", + "sha256:d43002441932f9a9ea5d6f9efaa2e21458221a3a4b417a14027a1d530201ef1b", + "sha256:d64728ee14e667ba27c66314b7d880b8eeb050e58ffc5fec3b7a109f8cddbd63", + "sha256:d6495008733c7521a89422d7a68efa0a0122c99a5861f06020ef5b1f51f9ba7c", + "sha256:d8f1ebca515a03e5654f88411420fea6380fc841d1bea08effb28184e3d4899f", + "sha256:d99277877daf2efe074eae6338453a4ed54a2d93fb4678ddfe1209a0c93a2468", + "sha256:da01bec0a26befab4898ed83b362993c844b9a607a86add78604186297eb047e", + "sha256:db9a28c063c7c00844ae42a80203eb6d2d6bbb97070cfa00194dff40e6f545ab", + "sha256:dda81e5ec82485155a19d9624cfcca9be88a405e2857354e5b089c2a982144b2", + "sha256:e357571bb0efd65fd55f18db0a2fb0ed89d0bb1d41d906b138f088933ae618bb", + "sha256:e544246b859f17373bed915182ab841b80849ed9cf23f1f07b73b7c58baee5fb", + "sha256:e562617a45b5a9da5be4abe72b971d4f00bf8555eb29bb91ec2ef2be348cd132", + "sha256:e570ffeb2170e116a5b17e83f19911020ac79d19c96f320cbfa1fa96b470185b", + "sha256:e6f31a17acede6a8cd1ae2d123ce04d8cca74056c9d456075f4f6f85de055607", + "sha256:e9121b4009339b0f751955baf4543a0bfd6bc3f8188f8056b1a25a2d45099934", + "sha256:ebedb45b9feb7258fac0a268a3f6bec0a2ea4d9558f3d6f813f02ff3a6dc6698", + "sha256:ecaac27da855b8d73f92123e5f03612b04c5632fd0a476e469dfc47cd37d6b2e", + "sha256:ecdbde46235f3d560b18be0cb706c8e8ad1b965e5c13bbba7450c86064e96561", + "sha256:ed550ed05540c03f0e69e6d74ad58d026de61b9eaebebbaaf8873e585cbb18de", + "sha256:eeb3d3d6b399ffe55f9a04e09e635554012f1980696d6b0aca3e6cf42a17a03b", + "sha256:ef337945bbd76cce390d1b2496ccf9f90b1c1242a3a7bc242ca4a9fc5993427a", + "sha256:f1365e032a477c1430cfe0cf2856679529a2331426f8081172c4a74186f1d595", + "sha256:f23b55eb5464468f9e0e9a9935ce3ed2a870608d5f534025cd5536bca25b1402", + "sha256:f2e9072d71c1f6cfc79a36d4484c82823c560e6f5599c43c1ca6b5cdbd54f881", + "sha256:f323306d0556351735b54acbf82904fe30a27b6a7147153cbe6e19aaaa2aa429", + "sha256:f36a3489d9e28fe4b67be9992a23029c3cec0babc3bd9afb39f49844a8c721c5", + "sha256:f64f82cc3443149292b32387086d02a6c7fb39b8781563e0ca7b8d7d9cf72bd7", + "sha256:f6defd966ca3b187ec6c366604e9296f585021d922e666b99c47e78738b5666c", + "sha256:f7c2b8eb9fc872e68b46eeaf835e86bccc3a58ba57d0eedc109cbb14177be531", + "sha256:fa7db7558607afeccb33c0e4bf1c9a9a835e26599e76af6fe2fcea45904083a6", + "sha256:fcb83175cc4936a5425dde3356f079ae03c0802bbdf8ff82c035f8a54b333521" + ], + "markers": "python_version >= '3.7'", + "version": "==2.10.1" }, "python-dateutil": { "hashes": [ @@ -723,6 +798,7 @@ "sha256:a5de49a31e953b45ff2d2fd434bbc2670e8db5273606c1e737cc6b93eff3655f" ], "index": "pypi", + "markers": "python_version >= '3.5'", "version": "==0.19.2" }, "requests": { @@ -731,6 +807,7 @@ "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d" ], "index": "pypi", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==2.27.1" }, "s3fs": { @@ -739,6 +816,7 @@ "sha256:6bafc1f6b4e935ea59512c0f38d5cb9c299dbbfe738e40c3d1de8f67b4ee1fd4" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==2022.1.0" }, "scipy": { @@ -774,15 +852,16 @@ "sha256:f99d206db1f1ae735a8192ab93bd6028f3a42f6fa08467d37a14eb96c9dd34a3" ], "index": "pypi", + "markers": "python_version < '3.11' and python_version >= '3.7'", "version": "==1.7.3" }, "setuptools": { "hashes": [ - "sha256:2ee892cd5f29f3373097f5a814697e397cf3ce313616df0af11231e2ad118077", - "sha256:b78aaa36f6b90a074c1fa651168723acbf45d14cb1196b6f02c0fd07f17623b2" + "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87", + "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a" ], - "markers": "python_version >= '3.7'", - "version": "==67.6.0" + "markers": "python_version >= '3.8'", + "version": "==68.2.2" }, "six": { "hashes": [ @@ -794,19 +873,19 @@ }, "typing-extensions": { "hashes": [ - "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb", - "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4" + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], - "markers": "python_version >= '3.7'", - "version": "==4.5.0" + "markers": "python_version >= '3.8'", + "version": "==4.8.0" }, "urllib3": { "hashes": [ - "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305", - "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42" + "sha256:24d6a242c28d29af46c3fae832c36db3bbebcc533dd1bb549172cd739c82df21", + "sha256:94a757d178c9be92ef5539b8840d48dc9cf1b2709c9d6b588232a055c524458b" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==1.26.15" + "version": "==1.26.17" }, "wrapt": { "hashes": [ @@ -891,83 +970,83 @@ }, "yarl": { "hashes": [ - "sha256:009a028127e0a1755c38b03244c0bea9d5565630db9c4cf9572496e947137a87", - "sha256:0414fd91ce0b763d4eadb4456795b307a71524dbacd015c657bb2a39db2eab89", - "sha256:0978f29222e649c351b173da2b9b4665ad1feb8d1daa9d971eb90df08702668a", - "sha256:0ef8fb25e52663a1c85d608f6dd72e19bd390e2ecaf29c17fb08f730226e3a08", - "sha256:10b08293cda921157f1e7c2790999d903b3fd28cd5c208cf8826b3b508026996", - "sha256:1684a9bd9077e922300ecd48003ddae7a7474e0412bea38d4631443a91d61077", - "sha256:1b372aad2b5f81db66ee7ec085cbad72c4da660d994e8e590c997e9b01e44901", - "sha256:1e21fb44e1eff06dd6ef971d4bdc611807d6bd3691223d9c01a18cec3677939e", - "sha256:2305517e332a862ef75be8fad3606ea10108662bc6fe08509d5ca99503ac2aee", - "sha256:24ad1d10c9db1953291f56b5fe76203977f1ed05f82d09ec97acb623a7976574", - "sha256:272b4f1599f1b621bf2aabe4e5b54f39a933971f4e7c9aa311d6d7dc06965165", - "sha256:2a1fca9588f360036242f379bfea2b8b44cae2721859b1c56d033adfd5893634", - "sha256:2b4fa2606adf392051d990c3b3877d768771adc3faf2e117b9de7eb977741229", - "sha256:3150078118f62371375e1e69b13b48288e44f6691c1069340081c3fd12c94d5b", - "sha256:326dd1d3caf910cd26a26ccbfb84c03b608ba32499b5d6eeb09252c920bcbe4f", - "sha256:34c09b43bd538bf6c4b891ecce94b6fa4f1f10663a8d4ca589a079a5018f6ed7", - "sha256:388a45dc77198b2460eac0aca1efd6a7c09e976ee768b0d5109173e521a19daf", - "sha256:3adeef150d528ded2a8e734ebf9ae2e658f4c49bf413f5f157a470e17a4a2e89", - "sha256:3edac5d74bb3209c418805bda77f973117836e1de7c000e9755e572c1f7850d0", - "sha256:3f6b4aca43b602ba0f1459de647af954769919c4714706be36af670a5f44c9c1", - "sha256:3fc056e35fa6fba63248d93ff6e672c096f95f7836938241ebc8260e062832fe", - "sha256:418857f837347e8aaef682679f41e36c24250097f9e2f315d39bae3a99a34cbf", - "sha256:42430ff511571940d51e75cf42f1e4dbdded477e71c1b7a17f4da76c1da8ea76", - "sha256:44ceac0450e648de86da8e42674f9b7077d763ea80c8ceb9d1c3e41f0f0a9951", - "sha256:47d49ac96156f0928f002e2424299b2c91d9db73e08c4cd6742923a086f1c863", - "sha256:48dd18adcf98ea9cd721a25313aef49d70d413a999d7d89df44f469edfb38a06", - "sha256:49d43402c6e3013ad0978602bf6bf5328535c48d192304b91b97a3c6790b1562", - "sha256:4d04acba75c72e6eb90745447d69f84e6c9056390f7a9724605ca9c56b4afcc6", - "sha256:57a7c87927a468e5a1dc60c17caf9597161d66457a34273ab1760219953f7f4c", - "sha256:58a3c13d1c3005dbbac5c9f0d3210b60220a65a999b1833aa46bd6677c69b08e", - "sha256:5df5e3d04101c1e5c3b1d69710b0574171cc02fddc4b23d1b2813e75f35a30b1", - "sha256:63243b21c6e28ec2375f932a10ce7eda65139b5b854c0f6b82ed945ba526bff3", - "sha256:64dd68a92cab699a233641f5929a40f02a4ede8c009068ca8aa1fe87b8c20ae3", - "sha256:6604711362f2dbf7160df21c416f81fac0de6dbcf0b5445a2ef25478ecc4c778", - "sha256:6c4fcfa71e2c6a3cb568cf81aadc12768b9995323186a10827beccf5fa23d4f8", - "sha256:6d88056a04860a98341a0cf53e950e3ac9f4e51d1b6f61a53b0609df342cc8b2", - "sha256:705227dccbe96ab02c7cb2c43e1228e2826e7ead880bb19ec94ef279e9555b5b", - "sha256:728be34f70a190566d20aa13dc1f01dc44b6aa74580e10a3fb159691bc76909d", - "sha256:74dece2bfc60f0f70907c34b857ee98f2c6dd0f75185db133770cd67300d505f", - "sha256:75c16b2a900b3536dfc7014905a128a2bea8fb01f9ee26d2d7d8db0a08e7cb2c", - "sha256:77e913b846a6b9c5f767b14dc1e759e5aff05502fe73079f6f4176359d832581", - "sha256:7a66c506ec67eb3159eea5096acd05f5e788ceec7b96087d30c7d2865a243918", - "sha256:8c46d3d89902c393a1d1e243ac847e0442d0196bbd81aecc94fcebbc2fd5857c", - "sha256:93202666046d9edadfe9f2e7bf5e0782ea0d497b6d63da322e541665d65a044e", - "sha256:97209cc91189b48e7cfe777237c04af8e7cc51eb369004e061809bcdf4e55220", - "sha256:a48f4f7fea9a51098b02209d90297ac324241bf37ff6be6d2b0149ab2bd51b37", - "sha256:a783cd344113cb88c5ff7ca32f1f16532a6f2142185147822187913eb989f739", - "sha256:ae0eec05ab49e91a78700761777f284c2df119376e391db42c38ab46fd662b77", - "sha256:ae4d7ff1049f36accde9e1ef7301912a751e5bae0a9d142459646114c70ecba6", - "sha256:b05df9ea7496df11b710081bd90ecc3a3db6adb4fee36f6a411e7bc91a18aa42", - "sha256:baf211dcad448a87a0d9047dc8282d7de59473ade7d7fdf22150b1d23859f946", - "sha256:bb81f753c815f6b8e2ddd2eef3c855cf7da193b82396ac013c661aaa6cc6b0a5", - "sha256:bcd7bb1e5c45274af9a1dd7494d3c52b2be5e6bd8d7e49c612705fd45420b12d", - "sha256:bf071f797aec5b96abfc735ab97da9fd8f8768b43ce2abd85356a3127909d146", - "sha256:c15163b6125db87c8f53c98baa5e785782078fbd2dbeaa04c6141935eb6dab7a", - "sha256:cb6d48d80a41f68de41212f3dfd1a9d9898d7841c8f7ce6696cf2fd9cb57ef83", - "sha256:ceff9722e0df2e0a9e8a79c610842004fa54e5b309fe6d218e47cd52f791d7ef", - "sha256:cfa2bbca929aa742b5084fd4663dd4b87c191c844326fcb21c3afd2d11497f80", - "sha256:d617c241c8c3ad5c4e78a08429fa49e4b04bedfc507b34b4d8dceb83b4af3588", - "sha256:d881d152ae0007809c2c02e22aa534e702f12071e6b285e90945aa3c376463c5", - "sha256:da65c3f263729e47351261351b8679c6429151ef9649bba08ef2528ff2c423b2", - "sha256:de986979bbd87272fe557e0a8fcb66fd40ae2ddfe28a8b1ce4eae22681728fef", - "sha256:df60a94d332158b444301c7f569659c926168e4d4aad2cfbf4bce0e8fb8be826", - "sha256:dfef7350ee369197106805e193d420b75467b6cceac646ea5ed3049fcc950a05", - "sha256:e59399dda559688461762800d7fb34d9e8a6a7444fd76ec33220a926c8be1516", - "sha256:e6f3515aafe0209dd17fb9bdd3b4e892963370b3de781f53e1746a521fb39fc0", - "sha256:e7fd20d6576c10306dea2d6a5765f46f0ac5d6f53436217913e952d19237efc4", - "sha256:ebb78745273e51b9832ef90c0898501006670d6e059f2cdb0e999494eb1450c2", - "sha256:efff27bd8cbe1f9bd127e7894942ccc20c857aa8b5a0327874f30201e5ce83d0", - "sha256:f37db05c6051eff17bc832914fe46869f8849de5b92dc4a3466cd63095d23dfd", - "sha256:f8ca8ad414c85bbc50f49c0a106f951613dfa5f948ab69c10ce9b128d368baf8", - "sha256:fb742dcdd5eec9f26b61224c23baea46c9055cf16f62475e11b9b15dfd5c117b", - "sha256:fc77086ce244453e074e445104f0ecb27530d6fd3a46698e33f6c38951d5a0f1", - "sha256:ff205b58dc2929191f68162633d5e10e8044398d7a45265f90a0f1d51f85f72c" + "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571", + "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3", + "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3", + "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c", + "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7", + "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04", + "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191", + "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea", + "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4", + "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4", + "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095", + "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e", + "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74", + "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef", + "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33", + "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde", + "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45", + "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf", + "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b", + "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac", + "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0", + "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528", + "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716", + "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb", + "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18", + "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72", + "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6", + "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582", + "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5", + "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368", + "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc", + "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9", + "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be", + "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a", + "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80", + "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8", + "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6", + "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417", + "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574", + "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59", + "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608", + "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82", + "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1", + "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3", + "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d", + "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8", + "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc", + "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac", + "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8", + "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955", + "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0", + "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367", + "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb", + "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a", + "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623", + "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2", + "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6", + "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7", + "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4", + "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051", + "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938", + "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8", + "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9", + "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3", + "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5", + "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9", + "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333", + "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185", + "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3", + "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560", + "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b", + "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7", + "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78", + "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" ], "markers": "python_version >= '3.7'", - "version": "==1.8.2" + "version": "==1.9.2" }, "zarr": { "hashes": [ @@ -975,80 +1054,79 @@ "sha256:76932665c2146ebdf15f6dba254f9e0030552fbfcf9322dea822bff96fbce693" ], "index": "pypi", + "markers": "python_version >= '3.7' and python_version < '4'", "version": "==2.10.3" }, "zipp": { "hashes": [ - "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b", - "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556" + "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31", + "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0" ], - "markers": "python_version >= '3.7'", - "version": "==3.15.0" + "markers": "python_version >= '3.8'", + "version": "==3.17.0" } }, "develop": { "black": { "hashes": [ - "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5", - "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915", - "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326", - "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940", - "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b", - "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30", - "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c", - "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c", - "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab", - "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27", - "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2", - "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961", - "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9", - "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb", - "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70", - "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331", - "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2", - "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266", - "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d", - "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6", - "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b", - "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925", - "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8", - "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4", - "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3" + "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f", + "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7", + "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100", + "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573", + "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d", + "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f", + "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9", + "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300", + "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948", + "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325", + "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9", + "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71", + "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186", + "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f", + "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe", + "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855", + "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80", + "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393", + "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c", + "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204", + "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377", + "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301" ], "index": "pypi", - "version": "==23.3.0" + "markers": "python_version >= '3.8'", + "version": "==23.9.1" }, "cachetools": { "hashes": [ - "sha256:13dfddc7b8df938c21a940dfa6557ce6e94a2f1cdfa58eb90c805721d58f2c14", - "sha256:429e1a1e845c008ea6c85aa35d4b98b65d6a9763eeef3e37e92728a12d1de9d4" + "sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590", + "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b" ], - "markers": "python_version ~= '3.7'", - "version": "==5.3.0" + "markers": "python_version >= '3.7'", + "version": "==5.3.1" }, "cfgv": { "hashes": [ - "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426", - "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736" + "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", + "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560" ], - "markers": "python_full_version >= '3.6.1'", - "version": "==3.3.1" + "markers": "python_version >= '3.8'", + "version": "==3.4.0" }, "chardet": { "hashes": [ - "sha256:0d62712b956bc154f85fb0a266e2a3c5913c2967e00348701b32411d6def31e5", - "sha256:362777fb014af596ad31334fde1e8c327dfdb076e1960d1694662d46a6917ab9" + "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", + "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970" ], "markers": "python_version >= '3.7'", - "version": "==5.1.0" + "version": "==5.2.0" }, "click": { "hashes": [ - "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", - "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" + "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", + "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de" ], "markers": "python_version >= '3.7'", - "version": "==8.1.3" + "version": "==8.1.7" }, "colorama": { "hashes": [ @@ -1060,34 +1138,35 @@ }, "distlib": { "hashes": [ - "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46", - "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e" + "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057", + "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8" ], - "version": "==0.3.6" + "version": "==0.3.7" }, "filelock": { "hashes": [ - "sha256:3618c0da67adcc0506b015fd11ef7faf1b493f0b40d87728e19986b536890c37", - "sha256:f08a52314748335c6460fc8fe40cd5638b85001225db78c2aa01c8c0db83b318" + "sha256:08c21d87ded6e2b9da6728c3dff51baf1dcecf973b768ef35bcbc3447edb9ad4", + "sha256:2e6f249f1f3654291606e046b09f1fd5eac39b360664c27f5aad072012f8bcbd" ], - "markers": "python_version >= '3.7'", - "version": "==3.11.0" + "markers": "python_version >= '3.8'", + "version": "==3.12.4" }, "flake8": { "hashes": [ - "sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7", - "sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181" + "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23", + "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5" ], "index": "pypi", - "version": "==6.0.0" + "markers": "python_full_version >= '3.8.1'", + "version": "==6.1.0" }, "identify": { "hashes": [ - "sha256:f0faad595a4687053669c112004178149f6c326db71ee999ae4636685753ad2f", - "sha256:f7a93d6cf98e29bd07663c60728e7a4057615068d7a639d132dc883b2d54d31e" + "sha256:afe67f26ae29bab007ec21b03d4114f41316ab9dd15aa8736a167481e108da54", + "sha256:f302a4256a15c849b91cfcdcec052a8ce914634b2f77ae87dad29cd749f2d88d" ], - "markers": "python_version >= '3.7'", - "version": "==2.5.22" + "markers": "python_version >= '3.8'", + "version": "==2.5.30" }, "isort": { "hashes": [ @@ -1095,6 +1174,7 @@ "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6" ], "index": "pypi", + "markers": "python_full_version >= '3.8.0'", "version": "==5.12.0" }, "mccabe": { @@ -1107,35 +1187,37 @@ }, "mypy": { "hashes": [ - "sha256:023fe9e618182ca6317ae89833ba422c411469156b690fde6a315ad10695a521", - "sha256:031fc69c9a7e12bcc5660b74122ed84b3f1c505e762cc4296884096c6d8ee140", - "sha256:2de7babe398cb7a85ac7f1fd5c42f396c215ab3eff731b4d761d68d0f6a80f48", - "sha256:2e93a8a553e0394b26c4ca683923b85a69f7ccdc0139e6acd1354cc884fe0128", - "sha256:390bc685ec209ada4e9d35068ac6988c60160b2b703072d2850457b62499e336", - "sha256:3a2d219775a120581a0ae8ca392b31f238d452729adbcb6892fa89688cb8306a", - "sha256:3efde4af6f2d3ccf58ae825495dbb8d74abd6d176ee686ce2ab19bd025273f41", - "sha256:4a99fe1768925e4a139aace8f3fb66db3576ee1c30b9c0f70f744ead7e329c9f", - "sha256:4b41412df69ec06ab141808d12e0bf2823717b1c363bd77b4c0820feaa37249e", - "sha256:4c8d8c6b80aa4a1689f2a179d31d86ae1367ea4a12855cc13aa3ba24bb36b2d8", - "sha256:4d19f1a239d59f10fdc31263d48b7937c585810288376671eaf75380b074f238", - "sha256:4e4a682b3f2489d218751981639cffc4e281d548f9d517addfd5a2917ac78119", - "sha256:695c45cea7e8abb6f088a34a6034b1d273122e5530aeebb9c09626cea6dca4cb", - "sha256:701189408b460a2ff42b984e6bd45c3f41f0ac9f5f58b8873bbedc511900086d", - "sha256:70894c5345bea98321a2fe84df35f43ee7bb0feec117a71420c60459fc3e1eed", - "sha256:8293a216e902ac12779eb7a08f2bc39ec6c878d7c6025aa59464e0c4c16f7eb9", - "sha256:8d26b513225ffd3eacece727f4387bdce6469192ef029ca9dd469940158bc89e", - "sha256:a197ad3a774f8e74f21e428f0de7f60ad26a8d23437b69638aac2764d1e06a6a", - "sha256:bea55fc25b96c53affab852ad94bf111a3083bc1d8b0c76a61dd101d8a388cf5", - "sha256:c9a084bce1061e55cdc0493a2ad890375af359c766b8ac311ac8120d3a472950", - "sha256:d0e9464a0af6715852267bf29c9553e4555b61f5904a4fc538547a4d67617937", - "sha256:d8e9187bfcd5ffedbe87403195e1fc340189a68463903c39e2b63307c9fa0394", - "sha256:eaeaa0888b7f3ccb7bcd40b50497ca30923dba14f385bde4af78fac713d6d6f6", - "sha256:f46af8d162f3d470d8ffc997aaf7a269996d205f9d746124a179d3abe05ac602", - "sha256:f70a40410d774ae23fcb4afbbeca652905a04de7948eaf0b1789c8d1426b72d1", - "sha256:fe91be1c51c90e2afe6827601ca14353bbf3953f343c2129fa1e247d55fd95ba" + "sha256:091f53ff88cb093dcc33c29eee522c087a438df65eb92acd371161c1f4380ff0", + "sha256:1a69db3018b87b3e6e9dd28970f983ea6c933800c9edf8c503c3135b3274d5ad", + "sha256:24f3de8b9e7021cd794ad9dfbf2e9fe3f069ff5e28cb57af6f873ffec1cb0425", + "sha256:31eba8a7a71f0071f55227a8057468b8d2eb5bf578c8502c7f01abaec8141b2f", + "sha256:3c8835a07b8442da900db47ccfda76c92c69c3a575872a5b764332c4bacb5a0a", + "sha256:3df87094028e52766b0a59a3e46481bb98b27986ed6ded6a6cc35ecc75bb9182", + "sha256:49499cf1e464f533fc45be54d20a6351a312f96ae7892d8e9f1708140e27ce41", + "sha256:4c192445899c69f07874dabda7e931b0cc811ea055bf82c1ababf358b9b2a72c", + "sha256:4f3d27537abde1be6d5f2c96c29a454da333a2a271ae7d5bc7110e6d4b7beb3f", + "sha256:7469545380dddce5719e3656b80bdfbb217cfe8dbb1438532d6abc754b828fed", + "sha256:7807a2a61e636af9ca247ba8494031fb060a0a744b9fee7de3a54bed8a753323", + "sha256:856bad61ebc7d21dbc019b719e98303dc6256cec6dcc9ebb0b214b81d6901bd8", + "sha256:89513ddfda06b5c8ebd64f026d20a61ef264e89125dc82633f3c34eeb50e7d60", + "sha256:8e0db37ac4ebb2fee7702767dfc1b773c7365731c22787cb99f507285014fcaf", + "sha256:971104bcb180e4fed0d7bd85504c9036346ab44b7416c75dd93b5c8c6bb7e28f", + "sha256:9e1589ca150a51d9d00bb839bfeca2f7a04f32cd62fad87a847bc0818e15d7dc", + "sha256:9f8464ed410ada641c29f5de3e6716cbdd4f460b31cf755b2af52f2d5ea79ead", + "sha256:ab98b8f6fdf669711f3abe83a745f67f50e3cbaea3998b90e8608d2b459fd566", + "sha256:b19006055dde8a5425baa5f3b57a19fa79df621606540493e5e893500148c72f", + "sha256:c69051274762cccd13498b568ed2430f8d22baa4b179911ad0c1577d336ed849", + "sha256:d2dad072e01764823d4b2f06bc7365bb1d4b6c2f38c4d42fade3c8d45b0b4b67", + "sha256:dccd850a2e3863891871c9e16c54c742dba5470f5120ffed8152956e9e0a5e13", + "sha256:e28d7b221898c401494f3b77db3bac78a03ad0a0fff29a950317d87885c655d2", + "sha256:e4b7a99275a61aa22256bab5839c35fe8a6887781862471df82afb4b445daae6", + "sha256:eb7ff4007865833c470a601498ba30462b7374342580e2346bf7884557e40531", + "sha256:f8598307150b5722854f035d2e70a1ad9cc3c72d392c34fffd8c66d888c90f17", + "sha256:fea451a3125bf0bfe716e5d7ad4b92033c471e4b5b3e154c67525539d14dc15a" ], "index": "pypi", - "version": "==1.2.0" + "markers": "python_version >= '3.8'", + "version": "==1.6.0" }, "mypy-extensions": { "hashes": [ @@ -1147,129 +1229,140 @@ }, "nodeenv": { "hashes": [ - "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e", - "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b" + "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2", + "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", - "version": "==1.7.0" + "version": "==1.8.0" }, "packaging": { "hashes": [ - "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2", - "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97" + "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", + "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" ], "markers": "python_version >= '3.7'", - "version": "==23.0" + "version": "==23.2" }, "pathspec": { "hashes": [ - "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687", - "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293" + "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20", + "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3" ], "markers": "python_version >= '3.7'", - "version": "==0.11.1" + "version": "==0.11.2" }, "platformdirs": { "hashes": [ - "sha256:d5b638ca397f25f979350ff789db335903d7ea010ab28903f57b27e1b16c2b08", - "sha256:ebe11c0d7a805086e99506aa331612429a72ca7cd52a1f0d277dc4adc20cb10e" + "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3", + "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e" ], "markers": "python_version >= '3.7'", - "version": "==3.2.0" + "version": "==3.11.0" }, "pluggy": { "hashes": [ - "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159", - "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3" + "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12", + "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7" ], - "markers": "python_version >= '3.6'", - "version": "==1.0.0" + "markers": "python_version >= '3.8'", + "version": "==1.3.0" }, "pre-commit": { "hashes": [ - "sha256:0b4210aea813fe81144e87c5a291f09ea66f199f367fa1df41b55e1d26e1e2b4", - "sha256:5b808fcbda4afbccf6d6633a56663fed35b6c2bc08096fd3d47ce197ac351d9d" + "sha256:5804465c675b659b0862f07907f96295d490822a450c4c40e747d0b1c6ebcb32", + "sha256:841dc9aef25daba9a0238cd27984041fa0467b4199fc4852e27950664919f660" ], "index": "pypi", - "version": "==3.2.2" + "markers": "python_version >= '3.8'", + "version": "==3.5.0" }, "pycodestyle": { "hashes": [ - "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053", - "sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610" + "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f", + "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67" ], - "markers": "python_version >= '3.6'", - "version": "==2.10.0" + "markers": "python_version >= '3.8'", + "version": "==2.11.1" }, "pyflakes": { "hashes": [ - "sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf", - "sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd" + "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774", + "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc" ], - "markers": "python_version >= '3.6'", - "version": "==3.0.1" + "markers": "python_version >= '3.8'", + "version": "==3.1.0" }, "pyproject-api": { "hashes": [ - "sha256:435f46547a9ff22cf4208ee274fca3e2869aeb062a4834adfc99a4dd64af3cf9", - "sha256:4698a3777c2e0f6b624f8a4599131e2a25376d90fe8d146d7ac74c67c6f97c43" + "sha256:1817dc018adc0d1ff9ca1ed8c60e1623d5aaca40814b953af14a9cf9a5cae538", + "sha256:4c0116d60476b0786c88692cf4e325a9814965e2469c5998b830bba16b183675" ], - "markers": "python_version >= '3.7'", - "version": "==1.5.1" + "markers": "python_version >= '3.8'", + "version": "==1.6.1" }, "pyyaml": { "hashes": [ - "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", - "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", - "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", - "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", - "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", - "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", - "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", - "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", - "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", - "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", - "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", - "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", - "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", - "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", - "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", - "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", - "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", - "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", - "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", - "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", - "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", - "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", - "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", - "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", - "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", - "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", - "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", - "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", - "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", - "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", - "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", - "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", - "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", - "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", - "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", - "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", - "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", - "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", - "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", - "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" + "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5", + "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc", + "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df", + "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741", + "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206", + "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27", + "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595", + "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62", + "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98", + "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696", + "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290", + "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9", + "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d", + "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6", + "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867", + "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47", + "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486", + "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6", + "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3", + "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007", + "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938", + "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0", + "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c", + "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735", + "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d", + "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28", + "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4", + "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba", + "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8", + "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5", + "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd", + "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3", + "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0", + "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515", + "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c", + "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c", + "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924", + "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34", + "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43", + "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859", + "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673", + "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54", + "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a", + "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b", + "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab", + "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa", + "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c", + "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585", + "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d", + "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" ], "markers": "python_version >= '3.6'", - "version": "==6.0" + "version": "==6.0.1" }, "setuptools": { "hashes": [ - "sha256:257de92a9d50a60b8e22abfcbb771571fde0dbf3ec234463212027a4eeecbe9a", - "sha256:e728ca814a823bf7bf60162daf9db95b93d532948c4c0bea762ce62f60189078" + "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87", + "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a" ], - "markers": "python_version >= '3.7'", - "version": "==67.6.1" + "markers": "python_version >= '3.8'", + "version": "==68.2.2" }, "tomli": { "hashes": [ @@ -1281,27 +1374,28 @@ }, "tox": { "hashes": [ - "sha256:6fa4dbd933d0e335b5392c81e9cd467630119b3669705dbad47814a93b6c9586", - "sha256:cd88e41aef9c71f0ba02b6d7939f102760b192b63458fbe04dbbaed82f7bf5f5" + "sha256:5039f68276461fae6a9452a3b2c7295798f00a0e92edcd9a3b78ba1a73577951", + "sha256:599af5e5bb0cad0148ac1558a0b66f8fff219ef88363483b8d92a81e4246f28f" ], "index": "pypi", - "version": "==4.4.11" + "markers": "python_version >= '3.8'", + "version": "==4.11.3" }, "typing-extensions": { "hashes": [ - "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb", - "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4" + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], - "markers": "python_version >= '3.7'", - "version": "==4.5.0" + "markers": "python_version >= '3.8'", + "version": "==4.8.0" }, "virtualenv": { "hashes": [ - "sha256:31712f8f2a17bd06234fa97fdf19609e789dd4e3e4bf108c3da71d710651adbc", - "sha256:f50e3e60f990a0757c9b68333c9fdaa72d7188caa417f96af9e52407831a3b68" + "sha256:b80039f280f4919c77b30f1c23294ae357c4c8701042086e3fc005963e4e537b", + "sha256:e8361967f6da6fbdf1426483bfe9fca8287c242ac0bc30429905721cefbff752" ], "markers": "python_version >= '3.7'", - "version": "==20.21.0" + "version": "==20.24.5" } } } diff --git a/notebooks/vulnerability_onboarding/Wind/Table_A2_Impact_Function_Slope.csv b/notebooks/vulnerability_onboarding/Wind/Table_A2_Impact_Function_Slope.csv new file mode 100644 index 00000000..c6ff7ec6 --- /dev/null +++ b/notebooks/vulnerability_onboarding/Wind/Table_A2_Impact_Function_Slope.csv @@ -0,0 +1,12 @@ +region,nb_countries,nb_events,vhalf_a,vhalf_b,vhalf_c,rmsf_a,rmsf_b,rmsf_c,tdr_a,tdr_b,tdr_c +NA1,21,73,74.7,59.6,66.3,11.8,9.8,10.3,0.68,1.44,1 +NA2,2,43,74.7,86,89.2,9.5,8.7,8.7,2.11,1.16,1 +NI,6,31,74.7,58.7,70.8,7.8,6,7.2,0.85,2.03,1 +OC,11,48,74.7,49.7,64.1,22.5,14.7,17.7,0.6,2.31,1 +SI,2,19,74.7,46.8,52.4,20.1,8.6,9.1,0.2,1.8,1 +WP1,4,43,74.7,56.7,66.4,15.2,11.3,12.6,0.62,2.05,1 +WP2,1,83,74.7,84.7,188.4,38.2,36.7,104.9,25.89,16.44,1 +WP3,1,69,74.7,80.2,112.8,15.2,14.8,20.5,5.32,3.83,1 +WP4,5,64,74.7,135.6,190.5,73.8,35.9,43.8,35.56,3.35,1 +Combined,53,473,74.7,–,–,22.2,16.8,24.4,4.69,2.15,1 +Global calibration,53,473,74.7,73.4,110.1,22.2,22.2,33.1,4.69,4.84,1 \ No newline at end of file diff --git a/notebooks/vulnerability_onboarding/Wind/Table_S2_V_half_individual_fitting_per_event.csv b/notebooks/vulnerability_onboarding/Wind/Table_S2_V_half_individual_fitting_per_event.csv new file mode 100644 index 00000000..36399467 --- /dev/null +++ b/notebooks/vulnerability_onboarding/Wind/Table_S2_V_half_individual_fitting_per_event.csv @@ -0,0 +1,474 @@ +EM_ID,ibtracsID,v_half_fitted [m/s],country,country_id,region,year,Reported_Damage [USD],reference_year,Normalized_Reported_Damage [USD],Simulated_Damage [USD],log_ratio,unique_ID +1980-0036,1980081S12170,39.2,FJI,242,OC,1980,2256000,2014,8410828.037,8395962.204,-0.001769027,1980-0036FJI +1980-0080,1980214N11330,106.8,USA,840,NA2,1980,860000000,2014,5264166323,5256769039,-0.001406203,1980-0080USA +1980-0099,1980296N05165,58.4,PHL,608,WP2,1980,102300000,2014,897149786.7,897162024.7,1.36E-05,1980-0099PHL +1980-0133,1980126N08150,70.1,PHL,608,WP2,1980,289000,2014,2534470.072,2539189.469,0.001860353,1980-0133PHL +1981-0083,1981256N10150,37.6,PHL,608,WP2,1981,6700000,2014,53489704.34,53126575,-0.006811919,1981-0083PHL +1981-0101,1981319N07163,86.5,PHL,608,WP2,1981,35000000,2014,279423828.6,279356846.9,-0.000239743,1981-0101PHL +1981-0110,1981351S12060,25.8,MDG,450,SI,1981,250000000,2014,742274546.2,139581097.2,-1.671073409,1981-0110MDG +1981-0111,1981353S09172,147.1,NCL,540,OC,1981,200000,2014,551603.3058,552274.4408,0.001215959,1981-0111NCL +1981-0112,1981355N07149,106.6,PHL,608,WP2,1981,26000000,2014,207571987,207434161.8,-0.000664208,1981-0112PHL +1981-0134,1981176N08150,37.1,PHL,608,WP2,1981,7609000,2014,60746740.34,60552182.26,-0.003207914,1981-0134PHL +1981-0138,1981317N14153,325.7,PHL,608,WP2,1981,167000,2014,1333250.839,4690972.593,1.258019737,1981-0138PHL +1982-0034,1982058S10185,78.8,TON,776,OC,1982,21200000,2014,151622251.2,151685209.3,0.000415144,1982-0034TON +1982-0090,1982202N11165,169.7,JPN,392,WP4,1982,137000000,2014,585717153.3,585156603.8,-0.000957489,1982-0090JPN +1982-0093,1982227N09140,136.2,PHL,608,WP2,1982,6500000,2014,49805902.91,49825948.18,0.000402387,1982-0093PHL +1982-0105,1982262N12270,82.7,MEX,484,NA1,1982,82400000,2014,586753507.8,587911847.3,0.001972204,1982-0105MEX +1982-0120,1982309N11064,53,IND,356,NI,1982,625420000,2014,6353835704,6333077626,-0.003272363,1982-0120IND +1982-0124,1982324N10193,25.8,USA,840,NA2,1982,230000000,2014,1204787041,139213192.7,-2.158051582,1982-0124USA +1982-0174,1982190N09148,53,PHL,608,WP2,1982,4500000,2014,34481009.7,34508564.46,0.000798809,1982-0174PHL +1982-0176,1982325N08176,325.7,PHL,608,WP2,1982,5000,2014,38312.233,109565.7082,1.0507552,1982-0176PHL +1982-0255,1982095S11138,25.8,AUS,36,OC,1982,6864000,2014,51906694.26,24595091.36,-0.746900881,1982-0255AUS +1982-0313,1982150N13087,40.7,IND,356,NI,1982,120000000,2014,1219117208,1213968600,-0.00423217,1982-0313IND +1983-0047,1983054S15179,59.9,FJI,242,OC,1983,50000000,2014,199598757.6,200079843.9,0.002407367,1983-0047FJI +1983-0057,1983082S11180,25.8,FJI,242,OC,1983,851000,2014,3397170.854,3043079.372,-0.110073029,1983-0057FJI +1983-0071,1983097S10224,80.2,PYF,258,OC,1983,21000000,2014,54194671.27,54184495.54,-0.00018778,1983-0071PYF +1983-0110,1983228N27270,113.5,USA,840,NA2,1983,3000000000,2014,14448395154,14460245256,0.000819831,1983-0110USA +1983-0121,1983239N10183,247.1,HKG,344,WP4,1983,12544000,2014,122247467.4,122276578.6,0.000238105,1983-0121HKG +1983-0129,1983274N18089,33.8,IND,356,NI,1983,510000000,2014,4764703292,4789699613,0.005232431,1983-0129IND +1983-0157,1983339S10065,34.9,MDG,450,SI,1983,25000000,2014,75988123.11,76350597.6,0.004758805,1983-0157MDG +1984-0034,1984094S10080,25.8,MDG,450,SI,1984,250000000,2014,907770830.7,395535661.3,-0.830751007,1984-0034MDG +1984-0105,1984302N00149,54.4,PHL,608,WP2,1984,96600000,2014,875268514.8,874308890,-0.001096979,1984-0105PHL +1984-0110,1984314N09088,153.5,IND,356,NI,1984,35000000,2014,336397308.3,336760286.3,0.001078434,1984-0110IND +1985-0044,1985070S17175,99.3,FJI,242,OC,1985,3000000,2014,11785953.11,11773200.93,-0.001082567,1985-0044FJI +1985-0063,1985143N16088,73.8,BGD,50,NI,1985,50000000,2014,388010978.9,387689559.2,-0.000828721,1985-0063BGD +1985-0104,1985240N20286,91.5,USA,840,NA2,1985,1100000000,2014,4434115752,4434804314,0.000155275,1985-0104USA +1985-0111,1985260N13336,165,USA,840,NA2,1985,900000000,2014,3627912888,3625496587,-0.000666253,1985-0111USA +1985-0118,1985268N03161,37.7,KOR,410,WP4,1985,14000000,2014,197048615.5,198029017.5,0.004963096,1985-0118KOR +1985-0126,1985299N25270,72.9,USA,840,NA2,1985,1500000000,2014,6046521480,6044937215,-0.000262047,1985-0126USA +1985-0190,1985162N05154,31.9,PHL,608,WP2,1985,20000000,2014,185189963.4,183141092.2,-0.011125276,1985-0190PHL +1986-0029,1986027S13145,45.1,AUS,36,OC,1986,70000000,2014,563514152.7,565444119.6,0.003419026,1986-0029AUS +1986-0042,1986067S11080,53.3,MDG,450,SI,1986,150000000,2014,491370641.1,493215306.8,0.003747094,1986-0042MDG +1986-0065,1986135S07160,37.5,SLB,90,OC,1986,20000000,2014,111253691.9,110450052.8,-0.007249698,1986-0065SLB +1986-0081,1986179N11175,48.1,CHN,156,WP3,1986,380000000,2014,13244203233,13188900322,-0.004184374,1986-0081CHN +1986-0115,1986252N06153,290.1,TWN,158,WP4,1986,80000000,2014,542490477.3,542431362.6,-0.000108975,1986-0115TWN +1986-0143,1986356S07183,25.8,FJI,242,OC,1986,20000000,2014,69498014.25,13482626.58,-1.639896243,1986-0143FJI +1986-0152,1986276N07177,34.1,PHL,608,WP2,1986,36000000,2014,343006780.4,344811815.2,0.00524859,1986-0152PHL +1986-0153,1986343N05176,272.6,PHL,608,WP2,1986,4000000,2014,38111864.49,38099421.55,-0.000326538,1986-0153PHL +1987-0057,1987035S12160,48.9,VUT,548,OC,1987,25000000,2014,155722786.8,155650596.3,-0.000463691,1987-0057VUT +1987-0130,1987188N10151,99.5,KOR,410,WP4,1987,325000000,2014,3138801397,3134047295,-0.001515772,1987-0130KOR +1987-0159,1987245N15133,40.7,CHN,156,WP3,1987,120000000,2014,4608092264,4627134752,0.004123887,1987-0159CHN +1987-0164,1987263N10309,59.4,BMU,60,NA1,1987,50000000,2014,214952184.2,214688521.6,-0.001227363,1987-0164BMU +1987-0212,1987320N03171,170,PHL,608,WP2,1987,56000000,2014,480080890.5,479688254.9,-0.000818188,1987-0212PHL +1987-0239,1987219N08155,105.5,PHL,608,WP2,1987,5600000,2014,48008089.05,47999808.52,-0.000172497,1987-0239PHL +1987-0240,1987343N05154,82,PHL,608,WP2,1987,8500000,2014,72869420.88,72908124.38,0.000530994,1987-0240PHL +1988-0312,1988193N09149,35.6,PHL,608,WP2,1988,11516000,2014,86504877.06,86385597.87,-0.001379824,1988-0312PHL +1988-0430,1988253N12306,168.4,MEX,484,NA1,1988,76000000,2014,550112928,550213379.9,0.000182586,1988-0430MEX +1988-0481,1988285N09318,36.5,NIC,558,NA1,1988,400000000,2014,1806289799,1817479172,0.006175564,1988-0481NIC +1988-0506,1988308N09140,42.9,PHL,608,WP2,1988,149060000,2014,1119695812,1120889297,0.001065333,1988-0506PHL +1988-0557,1988306N15130,31.9,PHL,608,WP2,1988,940000,2014,7061009.416,7131612.632,0.009949366,1988-0557PHL +1989-0115,1989254N13340,49.3,ATG,28,NA1,1989,80000000,2014,232560060.9,233463359.6,0.003876629,1989-0115ATG +1989-0115,1989254N13340,40.7,DMA,212,NA1,1989,20000000,2014,56557045.94,56990741.94,0.007639041,1989-0115DMA +1989-0115,1989254N13340,48.1,KNA,659,NA1,1989,46000000,2014,219073474.2,218799713.4,-0.001250411,1989-0115KNA +1989-0115,1989254N13340,25.8,MSR,500,NA1,1989,240000000,2014,240000000,54629110.58,-1.480072022,1989-0115MSR +1989-0115,1989254N13340,116.4,USA,840,NA2,1989,7000000000,2014,21678841358,21687159989,0.000383648,1989-0115USA +1989-0115,1989254N13340,159.9,VIR,850,NA1,1989,21800000,2014,58754072.56,58790887.87,0.000626404,1989-0115VIR +1989-0120,1989190N20160,81,PHL,608,WP2,1989,61000000,2014,407741184.1,407187405.7,-0.001359085,1989-0120PHL +1989-0125,1989279N07151,249.3,PHL,608,WP2,1989,59200000,2014,395709477,395579902.7,-0.000327502,1989-0125PHL +1989-0126,1989286N14137,87.6,PHL,608,WP2,1989,35400000,2014,236623572.4,236735425.6,0.000472593,1989-0126PHL +1989-0132,1989314N10152,298.7,PHL,608,WP2,1989,325000,2014,2172391.554,2172693.594,0.000139026,1989-0132PHL +1989-0265,1989201N11145,50.1,KOR,410,WP4,1989,176500000,2014,1022890325,1028251601,0.005227613,1989-0265KOR +1989-0398,1989089S11158,71.5,AUS,36,OC,1989,94300000,2014,461534104.7,461070798.7,-0.001004343,1989-0398AUS +1990-0019,1990124N09088,74.1,IND,356,NI,1990,580000000,2014,3684645392,3694898103,0.002778686,1990-0019IND +1990-0037,1990166N06141,41.6,CHN,156,WP3,1990,16000000,2014,464775602.6,466700655,0.004133342,1990-0037CHN +1990-0038,1990171N11148,106.6,CHN,156,WP3,1990,28000000,2014,813357304.5,812769447.7,-0.000723015,1990-0038CHN +1990-0121,1990327S07175,130.3,FJI,242,OC,1990,10000000,2014,33532784.13,33571889.31,0.001165498,1990-0121FJI +1990-0390,1990202N13130,57,CHN,156,WP3,1990,83000000,2014,2411023438,2403268533,-0.003221621,1990-0390CHN +1990-0393,1990216N13281,59.6,MEX,484,NA1,1990,90700000,2014,456380159.7,457720406.3,0.002932385,1990-0393MEX +1990-0402,1990235N10152,85,CHN,156,WP3,1990,688000000,2014,19985350911,20029007455,0.002182045,1990-0402CHN +1990-0405,1990245N16149,103.6,CHN,156,WP3,1990,154000000,2014,4473465175,4474420771,0.000213591,1990-0405CHN +1990-0407,1990251N06171,178.1,JPN,392,WP4,1990,4000000000,2014,6193036523,6196291658,0.000525474,1990-0407JPN +1990-0422,1990350S11165,43.2,AUS,36,OC,1990,155600000,2014,733330742.5,736672274.3,0.0045463,1990-0422AUS +1991-0120,1991113N10091,65.3,BGD,50,NI,1991,1780000000,2014,9940604678,9948189982,0.000762772,1991-0120BGD +1991-0218,1991228N26286,91,USA,840,NA2,1991,1500000000,2014,4256954560,4261266006,0.001012288,1991-0218USA +1991-0364,1991338S08181,42.6,WSM,882,OC,1991,278000000,2014,1782167001,1782019359,-8.28E-05,1991-0364WSM +1991-0382,1991289N06156,54.8,PHL,608,WP2,1991,90000000,2014,563936202.8,562823931.5,-0.001974283,1991-0382PHL +1991-0526,1991200N05157,66.3,JPN,392,WP4,1991,81500000,2014,110285260.8,110330966.9,0.00041435,1991-0526JPN +1991-0539,1991256N13171,131,JPN,392,WP4,1991,10000000000,2014,13531933846,13532696955,5.64E-05,1991-0539JPN +1991-0710,1991220N10133,34.1,THA,764,WP1,1991,8323000,2014,34512098.63,34986428.57,0.013650284,1991-0710THA +1992-0061,1992174N13126,172.1,VNM,704,WP1,1992,400000,2014,7548589.73,7552262.137,0.000486384,1992-0061VNM +1992-0066,1992230N11325,95.4,USA,840,NA2,1992,26500000000,2014,71005515347,71121951504,0.001638475,1992-0066USA +1992-0143,1992289N08135,46.2,VNM,704,WP1,1992,18000000,2014,339686537.9,340038182.3,0.001034667,1992-0143VNM +1992-0162,1992338S04173,260.2,FJI,242,OC,1992,1600000,2014,4683021.159,4685294.259,0.000485274,1992-0162FJI +1992-0271,1992249N12229,25.8,USA,840,NA2,1992,5000000000,2014,13397267047,139213200.5,-4.566799439,1992-0271USA +1992-0342,1992233N16254,44.8,MEX,484,NA1,1992,3000000,2014,10859450.34,10821712.85,-0.003481135,1992-0342MEX +1992-0357,1992237N14144,42.4,TWN,158,WP4,1992,35000000,2014,83218785.15,83608159.72,0.004668014,1992-0357TWN +1992-0463,1992194N07140,95.7,HKG,344,WP4,1992,219700000,2014,614100138.3,614469716.1,0.000601639,1992-0463HKG +1993-0016,1993131S04158,41.5,PNG,598,OC,1993,1500000,2014,6953406.58,6945308.68,-0.001165273,1993-0016PNG +1993-0024,1993083S12181,120.7,VUT,548,OC,1993,6000000,2014,25998065.23,26020847.91,0.000875938,1993-0024VUT +1993-0077,1993271N14134,53.6,PHL,608,WP2,1993,188000000,2014,984067975.5,980564341.4,-0.003566711,1993-0077PHL +1993-0079,1993246N16129,33,JPN,392,WP4,1993,1300000000,2014,1415656470,1419557298,0.002751701,1993-0079JPN +1993-0085,1993331N07108,88.3,IND,356,NI,1993,100000000,2014,730095393.3,729136239.4,-0.001314602,1993-0085IND +1993-0088,1993322N09137,44.8,PHL,608,WP2,1993,2000000,2014,10468808.25,10463170.82,-0.000538643,1993-0088PHL +1993-0088,1993322N09137,81,VNM,704,WP1,1993,15000000,2014,211901951.8,212217305.1,0.001487098,1993-0088VNM +1993-0199,1993224N07153,64.4,CHN,156,WP3,1993,433920000,2014,10227548827,10229454530,0.000186313,1993-0199CHN +1993-0228,1993353N05159,169.8,PHL,608,WP2,1993,17000000,2014,88984870.12,89019101.11,0.000384609,1993-0228PHL +1993-0464,1993253N06150,65.7,CHN,156,WP3,1993,263670000,2014,6214734972,6193264638,-0.003460728,1993-0464CHN +1993-0466,1993298N11154,36.4,CHN,156,WP3,1993,15890000,2014,374529293.1,378991865.8,0.011844724,1993-0466CHN +1993-0473,1993211N07161,240.6,JPN,392,WP4,1993,450000000,2014,490034931.9,490304476.1,0.0005499,1993-0473JPN +1994-0009,1994007S16056,47,MDG,450,SI,1994,10000000,2014,35852773.5,36011276.82,0.004411206,1994-0009MDG +1994-0044,1994117N07096,49.6,BGD,50,NI,1994,125000000,2014,639962654.8,641125319.8,0.001815122,1994-0044BGD +1994-0071,1994197N14115,39,PHL,608,WP2,1994,37600000,2014,166973054.6,167152538,0.001074347,1994-0071PHL +1994-0138,1994153N19113,161,CHN,156,WP3,1994,700000,2014,13002551.31,13003207.86,5.05E-05,1994-0138CHN +1994-0163,1994186N09139,133.9,CHN,156,WP3,1994,96300000,2014,1788779559,1788690280,-4.99E-05,1994-0163CHN +1994-0185,1994211N12152,244.7,TWN,158,WP4,1994,232000000,2014,479958040.5,479778510,-0.000374125,1994-0185TWN +1994-0198,1994224N20152,88.2,CHN,156,WP3,1994,1150000000,2014,21361334294,21319044816,-0.001981683,1994-0198CHN +1994-0198,1994224N20152,208.4,JPN,392,WP4,1994,6000000,2014,5930761.695,5934549.688,0.000638499,1994-0198JPN +1994-0352,1994302N11086,82.5,IND,356,NI,1994,19100000,2014,119004702,119187618.6,0.001535874,1994-0352IND +1994-0519,1994287N14156,259.2,PHL,608,WP2,1994,67400000,2014,299308082,299123832.2,-0.000615775,1994-0519PHL +1994-0594,1994345N06165,83.2,PHL,608,WP2,1994,26813000,2014,119070439.2,118906801,-0.001375242,1994-0594PHL +1995-0183,1995229N12144,70,KOR,410,WP4,1995,425000000,2014,1078553430,1077763418,-0.000732742,1995-0183KOR +1995-0188,1995236N10134,287.4,CHN,156,WP3,1995,87000000,2014,1241534250,1241256622,-0.000223641,1995-0188CHN +1995-0192,1995240N11337,42.7,ATG,28,NA1,1995,350000000,2014,773370483.3,771570241.2,-0.002330501,1995-0192ATG +1995-0192,1995240N11337,160.3,CAN,124,NA2,1995,100000000,2014,297876572.4,298136149.1,0.000871044,1995-0192CAN +1995-0192,1995240N11337,31.6,MSR,500,NA1,1995,20000000,2014,20000000,19952696.78,-0.002367962,1995-0192MSR +1995-0207,1995256N15253,36.5,MEX,484,NA1,1995,800000000,2014,2920653641,2926031587,0.001839657,1995-0207MEX +1995-0256,1995281N14278,28.9,MEX,484,NA1,1995,1500000000,2014,5476225576,5430128348,-0.00845333,1995-0256MEX +1995-0271,1995293N05177,325.7,PHL,608,WP2,1995,244000000,2014,936840738.5,1835824659,0.672735767,1995-0271PHL +1995-0274,1995294N05163,76.2,VNM,704,WP1,1995,21200000,2014,190369759.5,190451480.4,0.000429182,1995-0274VNM +1995-0275,1995310N09096,99.2,IND,356,NI,1995,46300000,2014,262049202.8,261827908.5,-0.000844833,1995-0275IND +1995-0393,1995193N06156,219.9,KOR,410,WP4,1995,140000000,2014,355288188.6,355117111.7,-0.000481632,1995-0393KOR +1995-0404,1995212N22287,66,BHS,44,NA1,1995,400000,2014,1278191.893,1280623.407,0.0019005,1995-0404BHS +1995-0404,1995212N22287,148.4,USA,840,NA2,1995,700000000,2014,1600355804,1601774396,0.000886031,1995-0404USA +1996-0052,1996001S08075,41.3,MOZ,508,SI,1996,14500000,2014,69792056.75,69531437.3,-0.003741218,1996-0052MOZ +1996-0110,1996202N17115,70.5,VNM,704,WP1,1996,362000000,2014,2733698258,2738388826,0.001714362,1996-0110VNM +1996-0168,1996203N12152,170.4,CHN,156,WP3,1996,72000000,2014,873787160.8,873155109.9,-0.000723608,1996-0168CHN +1996-0168,1996203N12152,262.2,TWN,158,WP4,1996,1100000000,2014,1993824461,1994825292,0.000501839,1996-0168TWN +1996-0201,1996248N15319,220.7,CAN,124,NA2,1996,100000,2014,286258.6963,286432.7091,0.000607702,1996-0201CAN +1996-0201,1996248N15319,60.8,PRI,630,NA1,1996,500000000,2014,1129729966,1126838603,-0.002562621,1996-0201PRI +1996-0227,1996260N19107,56.5,VNM,704,WP1,1996,11000000,2014,83068179.11,83458244.78,0.004684739,1996-0227VNM +1996-0256,1996306N15097,79.8,IND,356,NI,1996,1500300000,2014,7786525250,7792066042,0.000711334,1996-0256IND +1996-0282,1996356N08110,52.7,MYS,458,WP1,1996,52000000,2014,174301945.6,173673801.6,-0.003610279,1996-0282MYS +1996-0318,1996095S09133,46.7,AUS,36,OC,1996,46700000,2014,170904206.6,171420114,0.003014146,1996-0318AUS +1996-0325,1996187N10326,152.9,VGB,92,NA1,1996,2000000,2014,2000000,2002311.64,0.001155153,1996-0325VGB +1996-0371,1996201N07137,320.7,TWN,158,WP4,1996,200000000,2014,362513538.4,362428033.8,-0.000235894,1996-0371TWN +1997-0013,1997018S11059,33.9,MDG,450,SI,1997,50000000,2014,150510277.2,150241893.5,-0.00178475,1997-0013MDG +1997-0039,1997061S08171,119.8,FJI,242,OC,1997,27000000,2014,57809242.36,57890816.16,0.001410091,1997-0039FJI +1997-0168,1997210N15120,105.6,CHN,156,WP3,1997,579700000,2014,6319265945,6307948843,-0.001792494,1997-0168CHN +1997-0180,1997217N06168,30.6,JPN,392,WP4,1997,100000000,2014,109868789.5,111620909,0.015821558,1997-0180JPN +1997-0243,1997279N12263,66.7,MEX,484,NA1,1997,447800000,2014,1176350687,1176239750,-9.43E-05,1997-0243MEX +1997-0267,1997298N06140,77.2,KHM,116,WP1,1997,10000,2014,48505.97055,48568.14687,0.001281007,1997-0267KHM +1997-0267,1997298N06140,60.1,THA,764,WP1,1997,5000000,2014,13561680.42,13576851.17,0.001118023,1997-0267THA +1997-0267,1997298N06140,34.2,VNM,704,WP1,1997,470000000,2014,3260213213,3244977455,-0.004684193,1997-0267VNM +1997-0292,1997333N06194,135,GUM,316,OC,1997,200000000,2014,327208271.8,327242287,0.00010395,1997-0292GUM +1997-0358,1997261N13114,163.8,VNM,704,WP1,1997,5000000,2014,34683119.29,34661012.7,-0.000637591,1997-0358VNM +1998-0183,1998152N11075,66.1,IND,356,NI,1998,469000000,2014,2269722074,2272414630,0.00118559,1998-0183IND +1998-0297,1998259N17118,253.5,JPN,392,WP4,1998,3000000000,2014,3608482427,3607032520,-0.000401886,1998-0297JPN +1998-0311,1998281N11151,325.7,JPN,392,WP4,1998,335500000,2014,403548618.1,484163602.1,0.182125899,1998-0311JPN +1998-0374,1998315N09116,35.3,VNM,704,WP1,1998,93200000,2014,637799612.8,631449353.4,-0.010006409,1998-0374VNM +1998-0434,1998342N06141,66.3,VNM,704,WP1,1998,15000000,2014,102650152.3,102751784.9,0.000989597,1998-0434VNM +1999-0051,1999040S15147,64.6,AUS,36,OC,1999,300000000,2014,1131545100,1133239313,0.001496137,1999-0051AUS +1999-0177,1999135N12073,39.4,IND,356,NI,1999,20000000,2014,88885643.29,88908892.65,0.000261531,1999-0177IND +1999-0298,1999231N20266,127.1,USA,840,NA2,1999,70000000,2014,126960980,127028871.6,0.000534601,1999-0298USA +1999-0301,1999241N12133,46.1,CHN,156,WP3,1999,277900000,2014,2662759128,2670524860,0.002912178,1999-0301CHN +1999-0326,1999260N20130,160.7,JPN,392,WP4,1999,5000000000,2014,5316012420,5316956886,0.000177649,1999-0326JPN +1999-0327,1999251N15314,44.8,BHS,44,NA1,1999,450000000,2014,641705937.2,644161991,0.003820076,1999-0327BHS +1999-0327,1999251N15314,84.5,USA,840,NA2,1999,7000000000,2014,12696097995,12675805856,-0.001599576,1999-0327USA +1999-0392,1999275N16135,130.6,CHN,156,WP3,1999,241600000,2014,2314942804,2315198049,0.000110254,1999-0392CHN +1999-0401,1999288N15093,75.1,IND,356,NI,1999,470000000,2014,2088812617,2089705857,0.000427539,1999-0401IND +1999-0425,1999298N12099,82,IND,356,NI,1999,2500000000,2014,11110705411,11095873337,-0.001335827,1999-0425IND +1999-0435,1999286N16278,232.4,USA,840,NA2,1999,100000000,2014,181372828.5,181473486.7,0.000554826,1999-0435USA +1999-0619,1999236N22292,58.6,USA,840,NA2,1999,62500000,2014,113358017.8,113439034,0.000714438,1999-0619USA +1999-0625,1999230N12129,325.7,CHN,156,WP3,1999,18000000,2014,172470904.3,271662597.9,0.454332296,1999-0625CHN +2000-0097,2000056S17152,58.6,AUS,36,OC,2000,90000000,2014,317674987.2,317152965,-0.00164461,2000-0097AUS +2000-0107,2000032S11116,128.8,MDG,450,SI,2000,9000000,2014,24773011.21,24779586.39,0.000265382,2000-0107MDG +2000-0107,2000032S11116,95.7,MOZ,508,SI,2000,1000000,2014,3381086.779,3377433.308,-0.001081145,2000-0107MOZ +2000-0533,2000230N08139,325.7,CHN,156,WP3,2000,69443000,2014,600923967.1,602737067.3,0.003012645,2000-0533CHN +2000-0582,2000248N17117,45.6,VNM,704,WP1,2000,21000000,2014,125440545.4,125979702.1,0.004288895,2000-0582VNM +2000-0601,2000245N14157,319.4,KOR,410,WP4,2000,71000000,2014,178416664.1,178430679.8,7.86E-05,2000-0601KOR +2000-0706,2000299N08139,325.7,PHL,608,WP2,2000,17000000,2014,59708228.94,109753702.6,0.608768939,2000-0706PHL +2000-0706,2000299N08139,113.3,TWN,158,WP4,2000,150000000,2014,240119400,240329121.2,0.000873023,2000-0706TWN +2000-0715,2000305N06136,325.7,PHL,608,WP2,2000,31000000,2014,108879711.6,305722179.5,1.03243307,2000-0715PHL +2001-0293,2001170N11138,176.5,TWN,158,WP4,2001,5000000,2014,8829496.508,8836227.942,0.00076209,2001-0293TWN +2001-0319,2001181N08141,30.6,PHL,608,WP2,2001,68565000,2014,255861625.3,255364774,-0.001943763,2001-0319PHL +2001-0405,2001206N14134,76.5,CHN,156,WP3,2001,40000000,2014,313047801,312341037.7,-0.002260237,2001-0405CHN +2001-0405,2001206N14134,280.3,TWN,158,WP4,2001,240000000,2014,423815832.4,423746134.4,-0.000164467,2001-0405TWN +2001-0436,2001220N17118,33.6,VNM,704,WP1,2001,3200000,2014,18230113.7,18402804.93,0.009428269,2001-0436VNM +2001-0454,2001225N18146,36.4,JPN,392,WP4,2001,800000000,2014,901659328.8,894181173.4,-0.008328355,2001-0454JPN +2001-0522,2001248N23125,158.9,TWN,158,WP4,2001,800000000,2014,1412719441,1414013028,0.000915253,2001-0522TWN +2001-0553,2001278N12302,33.9,BLZ,84,NA1,2001,250000000,2014,485443358.1,487784713.7,0.004811534,2001-0553BLZ +2001-0624,2001309N10130,59,VNM,704,WP1,2001,55000000,2014,313330079.3,313747726,0.001332041,2001-0624VNM +2001-0671,2001303N13276,42.4,BHS,44,NA1,2001,300000000,2014,395198026.4,396338899.1,0.002882679,2001-0671BHS +2001-0711,2001363S10185,25.8,TON,776,OC,2001,51300000,2014,125645747.8,61874934.24,-0.708351264,2001-0711TON +2002-0004,2001364S19036,31.1,MDG,450,SI,2001,181000,2014,439343.7929,445737.8301,0.01444872,2002-0004MDG +2002-0669,2002295N11261,83.5,MEX,484,NA1,2002,200000000,2014,340513691.7,340009362.8,-0.001482181,2002-0669MEX +2002-0724,2002265N10315,94.9,USA,840,NA2,2002,2000000000,2014,3192297819,3187821874,-0.001403091,2002-0724USA +2003-0024,2003011S09182,25.8,FJI,242,OC,2003,30000000,2014,58076952.28,51280394.8,-0.124460383,2003-0024FJI +2003-0135,2003061S21148,149.3,NCL,540,OC,2003,40000000,2014,40000000,39967857.79,-0.000803878,2003-0135NCL +2003-0258,2003144N16119,40.7,PHL,608,WP2,2003,4000000,2014,13566469.09,13653992.95,0.006430762,2003-0258PHL +2003-0346,2003196N04150,132.7,CHN,156,WP3,2003,100000000,2014,631358675.5,631561257.7,0.000320816,2003-0346CHN +2003-0346,2003196N04150,116.9,PHL,608,WP2,2003,26468000,2014,89769325.95,89688671.83,-0.000898864,2003-0346PHL +2003-0443,2003240N20139,263.5,CHN,156,WP3,2003,241000000,2014,1521574408,1521111541,-0.000304249,2003-0443CHN +2003-0448,2003240N15329,109.6,BMU,60,NA1,2003,300000000,2014,399403562.6,399828430.3,0.00106319,2003-0448BMU +2003-0459,2003247N10153,100.4,JPN,392,WP4,2003,50000000,2014,54552255.91,54509967.04,-0.0007755,2003-0459JPN +2003-0459,2003247N10153,120.4,KOR,410,WP4,2003,4500000000,2014,9332563202,9339286292,0.000720131,2003-0459KOR +2003-0468,2003249N14329,92.8,USA,840,NA2,2003,3370000000,2014,5129874055,5119547369,-0.002015078,2003-0468USA +2003-0474,2003262N17254,57.8,MEX,484,NA1,2003,100000000,2014,180241122.2,179863368.4,-0.002098024,2003-0474MEX +2003-0487,2003268N28298,100.4,CAN,124,NA2,2003,110000000,2014,221788181.9,221623043,-0.000744857,2003-0487CAN +2003-0594,2003316N11141,53.1,CHN,156,WP3,2003,196938000,2014,1243385148,1243934556,0.000441767,2003-0594CHN +2003-0605,2003345N05092,72.9,IND,356,NI,2003,28000000,2014,93953651.91,93927917.74,-0.00027394,2003-0605IND +2003-0782,2003179N20271,94.1,USA,840,NA2,2003,50000000,2014,76110891.03,75976612.4,-0.001765808,2003-0782USA +2004-0103,2004061S12072,25.8,MDG,450,SI,2004,250000000,2014,611461783.3,349891343,-0.558229799,2004-0103MDG +2004-0153,2004098S15173,34.6,FJI,242,OC,2004,4000000,2014,6575111.983,6477235.422,-0.014997823,2004-0153FJI +2004-0218,2004134N07132,150.2,PHL,608,WP2,2004,1000000,2014,3114596.181,3112259.337,-0.00075057,2004-0218PHL +2004-0235,2004136N15090,44.3,MMR,104,NI,2004,688000,2014,4260951.721,4238654.264,-0.005246716,2004-0235MMR +2004-0309,2004174N14146,25.8,PHL,608,WP2,2004,19667000,2014,61254763.09,13802716.32,-1.490176204,2004-0309PHL +2004-0415,2004223N11301,104.1,CUB,192,NA1,2004,1000000000,2014,2111247808,2114143610,0.001370667,2004-0415CUB +2004-0415,2004223N11301,38.4,JAM,388,NA1,2004,300000000,2014,409384949.8,407910850.2,-0.003607265,2004-0415JAM +2004-0415,2004223N11301,112,USA,840,NA2,2004,16000000000,2014,22839070991,22861215281,0.00096911,2004-0415USA +2004-0428,2004227N15141,25.8,JPN,392,WP4,2004,500000000,2014,503661847.5,177221668.9,-1.04450379,2004-0428JPN +2004-0428,2004227N15141,134,KOR,410,WP4,2004,1000000,2014,1845168.832,1847692.412,0.001366735,2004-0428KOR +2004-0445,2004230N09172,153.1,GUM,316,OC,2004,1000000,2014,1435830.957,1437478.07,0.001146492,2004-0445GUM +2004-0448,2004241N32282,72.2,USA,840,NA2,2004,62500000,2014,89215121.06,89339480.31,0.001392955,2004-0448USA +2004-0455,2004238N11325,40.8,BHS,44,NA1,2004,1000000000,2014,1210044074,1218435858,0.006911168,2004-0455BHS +2004-0455,2004238N11325,82.9,USA,840,NA2,2004,11000000000,2014,15701861306,15696443197,-0.000345121,2004-0455USA +2004-0462,2004247N10332,75.4,TTO,780,NA1,2004,1000000,2014,2048171.488,2049992.563,0.000888727,2004-0462TTO +2004-0580,2004319N10134,142.4,PHL,608,WP2,2004,6000000,2014,18687577.08,18669893.72,-0.000946711,2004-0580PHL +2004-0580,2004319N10134,34.9,VNM,704,WP1,2004,23000000,2014,94274912.3,94402049.38,0.00134767,2004-0580VNM +2005-0351,2005186N12299,81,CUB,192,NA1,2005,1400000000,2014,2647941893,2645035134,-0.001098346,2005-0351CUB +2005-0351,2005186N12299,97.5,JAM,388,NA1,2005,30000000,2014,37089462.6,37061160.28,-0.000763374,2005-0351JAM +2005-0351,2005186N12299,113.8,USA,840,NA2,2005,2230000000,2014,2984138801,2988710313,0.001530765,2005-0351USA +2005-0381,2005192N22155,265.7,TWN,158,WP4,2005,100000000,2014,141174388.7,141183485.9,6.44E-05,2005-0381TWN +2005-0382,2005192N11318,72.1,MEX,484,NA1,2005,400000000,2014,599247676.6,600546073.2,0.002164367,2005-0382MEX +2005-0467,2005236N23285,53,USA,840,NA2,2005,1.25E+11,2014,1.67E+11,1.67E+11,0.001099496,2005-0467USA +2005-0492,2005237N14148,33.7,CHN,156,WP3,2005,1900000000,2014,8712512761,8710256578,-0.000258992,2005-0492CHN +2005-0492,2005237N14148,291.6,TWN,158,WP4,2005,38000000,2014,53646267.7,53654485.48,0.000153173,2005-0492TWN +2005-0497,2005241N15155,180.7,JPN,392,WP4,2005,1000000000,2014,1019977855,1019949598,-2.77E-05,2005-0497JPN +2005-0510,2005248N08142,100.4,CHN,156,WP3,2005,1750000000,2014,8024682806,8036888245,0.001519832,2005-0510CHN +2005-0536,2005257N15120,42.6,VNM,704,WP1,2005,20000000,2014,64617086.41,64668886.84,0.000801331,2005-0536VNM +2005-0540,2005262N13127,48.9,CHN,156,WP3,2005,1040000000,2014,4768954354,4766559108,-0.000502384,2005-0540CHN +2005-0540,2005262N13127,35.3,VNM,704,WP1,2005,219250000,2014,708364809.8,714572541.1,0.00872529,2005-0540VNM +2005-0547,2005261N21290,59.5,USA,840,NA2,2005,16000000000,2014,21410861355,21364784783,-0.002154338,2005-0547USA +2005-0565,2005268N19146,171.4,CHN,156,WP3,2005,150000000,2014,687829954.8,688297480.7,0.000679481,2005-0565CHN +2005-0565,2005268N19146,325.7,TWN,158,WP4,2005,100000000,2014,141174388.7,446897893.5,1.152334217,2005-0565TWN +2005-0585,2005289N18282,40.3,MEX,484,NA1,2005,5000000000,2014,7490595958,7496293488,0.000760335,2005-0585MEX +2005-0585,2005289N18282,121.1,USA,840,NA2,2005,14300000000,2014,19135957336,19107419455,-0.001492435,2005-0585USA +2005-0611,2005301N13117,69.6,VNM,704,WP1,2005,11000000,2014,35539397.53,35639054.33,0.002800198,2005-0611VNM +2006-0043,2006006S11129,58.3,AUS,36,OC,2006,2354000,2014,4625625.837,4645427.663,0.00427176,2006-0043AUS +2006-0139,2006074S13158,50.5,AUS,36,OC,2006,1180000000,2014,2318707938,2328083679,0.004035367,2006-0139AUS +2006-0251,2006128N09138,96.9,CHN,156,WP3,2006,475000000,2014,1809189080,1810321031,0.000625472,2006-0251CHN +2006-0251,2006128N09138,208.5,PHL,608,WP2,2006,3328000,2014,7749707.397,7751266.496,0.000201161,2006-0251PHL +2006-0388,2006198N08152,39.8,CHN,156,WP3,2006,367000000,2014,1397836616,1388499752,-0.006701918,2006-0388CHN +2006-0410,2006209N13130,39.1,CHN,156,WP3,2006,900000000,2014,3427937205,3442895603,0.00435418,2006-0410CHN +2006-0437,2006216N07151,84.3,CHN,156,WP3,2006,2510000000,2014,9560135983,9551856301,-0.000866438,2006-0437CHN +2006-0466,2006237N13298,117,USA,840,NA2,2006,32860000,2014,41553786.12,41579194.68,0.000611275,2006-0466USA +2006-0504,2006252N13139,152,JPN,392,WP4,2006,2500000000,2014,2676605774,2678884715,0.000851067,2006-0504JPN +2006-0505,2006257N16259,320.3,MEX,484,NA1,2006,2700000,2014,3638886.137,3637726.519,-0.000318725,2006-0505MEX +2006-0517,2006268N12129,325.7,PHL,608,WP2,2006,113000000,2014,263136098.5,971316188.2,1.305980664,2006-0517PHL +2006-0517,2006268N12129,70.6,VNM,704,WP1,2006,624000000,2014,1750622103,1751243470,0.000354878,2006-0517VNM +2006-0600,2006298N12143,214.7,PHL,608,WP2,2006,9077000,2014,21137047.49,21130719.11,-0.000299443,2006-0600PHL +2006-0648,2006329N06150,199.7,PHL,608,WP2,2006,66400000,2014,154621565.9,154647768.3,0.000169447,2006-0648PHL +2006-0648,2006329N06150,78,VNM,704,WP1,2006,456000000,2014,1279300767,1278681154,-0.000484455,2006-0648VNM +2007-0095,2007066S12066,25.8,MDG,450,SI,2007,240000000,2014,348858871.4,125216890.9,-1.0246201,2007-0095MDG +2007-0164,2007151N14072,33.9,OMN,512,NI,2007,3900000000,2014,7513292712,7505906625,-0.000983553,2007-0164OMN +2007-0262,2007188N04148,325.7,JPN,392,WP4,2007,60000000,2014,64453546.68,256696088.4,1.381948092,2007-0262JPN +2007-0360,2007225N12331,122.2,BLZ,84,NA1,2007,14847000,2014,19476548.08,19485983.55,0.000484336,2007-0360BLZ +2007-0360,2007225N12331,47,DMA,212,NA1,2007,20000000,2014,24849111.57,24808275.31,-0.001644721,2007-0360DMA +2007-0360,2007225N12331,141.6,JAM,388,NA1,2007,300000000,2014,323956910.3,324363348.3,0.001253819,2007-0360JAM +2007-0360,2007225N12331,63.3,LCA,662,NA1,2007,40000000,2014,47496877.29,47537233.54,0.0008493,2007-0360LCA +2007-0360,2007225N12331,121.2,MEX,484,NA1,2007,600000000,2014,749255406.1,748407649.8,-0.001132106,2007-0360MEX +2007-0380,2007223N19136,52.6,CHN,156,WP3,2007,890555000,2014,2627998249,2633866360,0.002230431,2007-0380CHN +2007-0439,2007244N12303,79.5,HND,340,NA1,2007,6579000,2014,10588404.38,10570882.76,-0.001656164,2007-0439HND +2007-0457,2007257N16134,100.4,CHN,156,WP3,2007,638000000,2014,1882716826,1880610808,-0.001119232,2007-0457CHN +2007-0463,2007272N17125,35.8,VNM,704,WP1,2007,191000000,2014,459411646.6,458341782.1,-0.002331487,2007-0463VNM +2007-0470,2007254N18140,186.8,KOR,410,WP4,2007,70000000,2014,87997870.47,88050777.92,0.000601055,2007-0470KOR +2007-0479,2007240N17153,268,JPN,392,WP4,2007,1000000000,2014,1074225778,1074609445,0.000357093,2007-0479JPN +2007-0552,2007274N18131,32.4,CHN,156,WP3,2007,1077788000,2014,3180516618,3220120624,0.012375178,2007-0552CHN +2007-0556,2007314N10093,78.6,BGD,50,NI,2007,2300000000,2014,4994688046,4984479477,-0.002045977,2007-0556BGD +2007-0560,2007306N18133,168.8,PHL,608,WP2,2007,2971000,2014,5660826.737,5662083.054,0.000221907,2007-0560PHL +2007-0576,2007324N10140,83,PHL,608,WP2,2007,5000000,2014,9526803.663,9537264.891,0.001097481,2007-0576PHL +2007-0578,2007323N09128,76.1,PHL,608,WP2,2007,1000000,2014,1905360.733,1907024.547,0.000872847,2007-0578PHL +2007-0591,2007058S12135,25.8,AUS,36,OC,2007,100000000,2014,171950641.6,46970609.91,-1.297685383,2007-0591AUS +2007-0655,2007337S12186,59.1,FJI,242,OC,2007,652000,2014,858485.7575,859280.4569,0.000925271,2007-0655FJI +2008-0051,2008026S12179,74.7,FJI,242,OC,2008,30000000,2014,38176381.62,38122406.29,-0.001414841,2008-0051FJI +2008-0070,2008037S10055,39,MDG,450,SI,2008,60000000,2014,68034718.12,67971419.61,-0.000930818,2008-0070MDG +2008-0111,2008062S10064,73.7,MOZ,508,SI,2008,20000000,2014,29510844.15,29531686.48,0.000706011,2008-0111MOZ +2008-0155,2008104N08128,104,CHN,156,WP3,2008,49000000,2014,111703612.9,111831024.7,0.001139974,2008-0155CHN +2008-0155,2008104N08128,30.4,PHL,608,WP2,2008,16000000,2014,26139377.16,26438538.32,0.01137985,2008-0155PHL +2008-0184,2008117N11090,43.7,MMR,104,NI,2008,4000000000,2014,8216064485,8247757415,0.003850014,2008-0184MMR +2008-0197,2008135N12116,91,PHL,608,WP2,2008,99174000,2014,162021661.9,162262628.3,0.001486143,2008-0197PHL +2008-0249,2008169N08135,86.3,CHN,156,WP3,2008,175000000,2014,398941474.7,399337415.4,0.000991986,2008-0249CHN +2008-0249,2008169N08135,186.9,PHL,608,WP2,2008,284694000,2014,465107740.1,465172164.6,0.000138506,2008-0249PHL +2008-0292,2008206N22133,97.7,CHN,156,WP3,2008,73000000,2014,166415586.6,166555055.4,0.000837724,2008-0292CHN +2008-0304,2008203N18276,82.1,MEX,484,NA1,2008,75000000,2014,88822764.83,88951468.92,0.00144795,2008-0304MEX +2008-0304,2008203N18276,91.8,USA,840,NA2,2008,1200000000,2014,1428540902,1428581212,2.82E-05,2008-0304USA +2008-0338,2008229N18293,62.4,USA,840,NA2,2008,180000000,2014,214281135.2,214393281.6,0.000523224,2008-0338USA +2008-0352,2008238N13293,45.3,CUB,192,NA1,2008,2072000000,2014,2748386795,2735471659,-0.004710245,2008-0352CUB +2008-0352,2008238N13293,95.2,JAM,388,NA1,2008,66198000,2014,67028878.91,67033295.53,6.59E-05,2008-0352JAM +2008-0352,2008238N13293,75.2,USA,840,NA2,2008,7000000000,2014,8333155259,8311297726,-0.002626406,2008-0352USA +2008-0369,2008229N13147,83.3,CHN,156,WP3,2008,58000000,2014,132220603.1,132190363,-0.000228736,2008-0369CHN +2008-0369,2008229N13147,325.7,HKG,344,WP4,2008,380000,2014,505083.5374,918937.0251,0.598493758,2008-0369HKG +2008-0369,2008229N13147,40.9,PHL,608,WP2,2008,33870000,2014,55333794.03,54962062.88,-0.006740644,2008-0369PHL +2008-0378,2008241N19303,211.8,USA,840,NA2,2008,160000000,2014,190472120.2,190624644.9,0.000800451,2008-0378USA +2008-0384,2008245N17323,81.6,CUB,192,NA1,2008,1500000000,2014,1989662255,1988880448,-0.000393012,2008-0384CUB +2008-0384,2008245N17323,33.5,TCA,796,NA1,2008,500000000,2014,500000000,500063361,0.000126714,2008-0384TCA +2008-0384,2008245N17323,80.6,USA,840,NA2,2008,30000000000,2014,35713522539,35674564454,-0.001091445,2008-0384USA +2008-0426,2008262N16142,144.7,CHN,156,WP3,2008,824000000,2014,1878444430,1876942978,-0.000799626,2008-0426CHN +2008-0426,2008262N16142,25.8,PHL,608,WP2,2008,7420000,2014,12122136.16,5780902.116,-0.74047347,2008-0426PHL +2008-0437,2008272N15113,58.2,VNM,704,WP1,2008,6500000,2014,12209487.86,12248048.24,0.003153254,2008-0437VNM +2008-0441,2008268N12140,325.7,TWN,158,WP4,2008,90000000,2014,114489207.2,297519658.6,0.954999744,2008-0441TWN +2008-0552,2008320N08122,111.2,VNM,704,WP1,2008,1000000,2014,1878382.747,1876049.31,-0.001243031,2008-0552VNM +2009-0137,2009093S12062,48.7,MDG,450,SI,2009,5000000,2014,6241556.912,6276216.074,0.005537606,2009-0137MDG +2009-0165,2009123N10111,147.5,PHL,608,WP2,2009,30342000,2014,51295833,51293642.52,-4.27E-05,2009-0165PHL +2009-0321,2009215N20133,53.2,TWN,158,WP4,2009,250000000,2014,338247183.2,338441840.9,0.000575324,2009-0321TWN +2009-0384,2009239N12270,61.1,MEX,484,NA1,2009,40000000,2014,58422121.35,58579297.05,0.002686733,2009-0384MEX +2009-0399,2009254N14130,82.1,CHN,156,WP3,2009,295001000,2014,605154271.7,606293567.7,0.001880884,2009-0399CHN +2009-0414,2009268N14128,32.8,PHL,608,WP2,2009,237489000,2014,401496146.7,395915626.6,-0.013996812,2009-0414PHL +2009-0414,2009268N14128,48.9,VNM,704,WP1,2009,785000000,2014,1378777736,1372999963,-0.004199308,2009-0414VNM +2009-0422,2009270N10148,41.3,CHN,156,WP3,2009,35000000,2014,71797721.06,71181089.02,-0.008625556,2009-0422CHN +2009-0422,2009270N10148,39.4,PHL,608,WP2,2009,585379000,2014,989634942.4,984393842.4,-0.005310067,2009-0422PHL +2009-0422,2009270N10148,151.9,VNM,704,WP1,2009,200000,2014,351280.9518,351352.4226,0.000203437,2009-0422VNM +2009-0423,2009272N07164,142.6,JPN,392,WP4,2009,1000000000,2014,927176205.2,926315897.9,-0.00092831,2009-0423JPN +2009-0478,2009299N12153,325.7,PHL,608,WP2,2009,15194000,2014,25686800.03,43613859.99,0.529397747,2009-0478PHL +2009-0478,2009299N12153,45.4,VNM,704,WP1,2009,280000000,2014,491793332.5,489595236.2,-0.004479571,2009-0478VNM +2009-0554,2009346S10172,76.9,FJI,242,OC,2009,13300000,2014,20772286.48,20735822.7,-0.001756948,2009-0554FJI +2009-0609,2009313N11072,44.4,IND,356,NI,2009,300000000,2014,455879199.2,456382862.4,0.001104207,2009-0609IND +2010-0106,2010069S12188,25.8,FJI,242,OC,2010,39427000,2014,56286310.68,13492148.22,-1.428343453,2010-0106FJI +2010-0210,2010151N14065,39.6,OMN,512,NI,2010,1000000000,2014,1382561646,1385900125,0.002411794,2010-0210OMN +2010-0260,2010176N16278,46.5,MEX,484,NA1,2010,2000000000,2014,2485464847,2478270330,-0.002898834,2010-0260MEX +2010-0308,2010191N12138,325.7,CHN,156,WP3,2010,500000,2014,859123.4391,2692108.347,1.142167325,2010-0308CHN +2010-0308,2010191N12138,325.7,PHL,608,WP2,2010,8675000,2014,12369162.52,31196159.09,0.9250885,2010-0308PHL +2010-0308,2010191N12138,165,VNM,704,WP1,2010,500000,2014,803078.7658,803262.4956,0.000228756,2010-0308VNM +2010-0432,2010233N17119,39,VNM,704,WP1,2010,44000000,2014,70670931.39,70678446.19,0.000106329,2010-0432VNM +2010-0468,2010236N12341,41.5,ATG,28,NA1,2010,12600000,2014,13945942.61,14028748.46,0.005920072,2010-0468ATG +2010-0484,2010256N17137,91.9,CHN,156,WP3,2010,298285000,2014,512527270.1,513249853.4,0.001408851,2010-0484CHN +2010-0484,2010256N17137,303,TWN,158,WP4,2010,63100000,2014,75033445.7,75060353.7,0.000358549,2010-0484TWN +2010-0494,2010257N16282,62.4,MEX,484,NA1,2010,3900000000,2014,4846656451,4857140116,0.002160736,2010-0494MEX +2010-0543,2010285N13145,54,CHN,156,WP3,2010,420000000,2014,721663688.8,724623069.9,0.004092391,2010-0543CHN +2010-0543,2010285N13145,91.8,PHL,608,WP2,2010,275745000,2014,393168267.4,392849298.5,-0.000811608,2010-0543PHL +2010-0543,2010285N13145,44.7,TWN,158,WP4,2010,10000000,2014,11891195.83,11938433.23,0.003964599,2010-0543TWN +2010-0554,2010293N17093,53.7,MMR,104,NI,2010,57000000,2014,75300204.74,75386609.11,0.001146807,2010-0554MMR +2010-0571,2010302N09306,122.1,LCA,662,NA1,2010,500000,2014,548667.5019,549287.125,0.001128686,2010-0571LCA +2010-0571,2010302N09306,45.1,VCT,670,NA1,2010,25000000,2014,26706058.15,26769270.95,0.002364187,2010-0571VCT +2011-0070,2011028S13180,34.4,AUS,36,OC,2011,2500000000,2014,2626722487,2625314349,-0.000536226,2011-0070AUS +2011-0091,2011020S13182,129.2,TON,776,OC,2011,3000000,2014,3148217.183,3150478.22,0.000717938,2011-0091TON +2011-0272,2011205N12130,55,PHL,608,WP2,2011,63258000,2014,80315874.36,80536440.16,0.002742465,2011-0272PHL +2011-0328,2011233N15301,53.5,BHS,44,NA1,2011,40000000,2014,43522583.4,43398979.16,-0.002844043,2011-0328BHS +2011-0328,2011233N15301,44.8,DOM,214,NA1,2011,30000000,2014,34283168.75,34047442.12,-0.006899618,2011-0328DOM +2011-0328,2011233N15301,46.2,PRI,630,NA1,2011,500000000,2014,510433804.3,513965889.6,0.00689594,2011-0328PRI +2011-0328,2011233N15301,157.5,USA,840,NA2,2011,7300000000,2014,8229569135,8230835742,0.000153897,2011-0328USA +2011-0341,2011233N12129,55,PHL,608,WP2,2011,34452000,2014,43742174.96,43822836.01,0.001842313,2011-0341PHL +2011-0378,2011270N18139,325.7,PHL,608,WP2,2011,2655000,2014,3370935.635,4948189.699,0.38383145,2011-0378PHL +2011-0379,2011266N13139,72.5,CHN,156,WP3,2011,219000000,2014,303152614.2,303944727.8,0.002609512,2011-0379CHN +2011-0379,2011266N13139,67.4,PHL,608,WP2,2011,344173000,2014,436981179.1,436500548,-0.001100495,2011-0379PHL +2011-0385,2011279N10257,85.2,MEX,484,NA1,2011,27700000,2014,30846033.58,30773744.47,-0.002346297,2011-0385MEX +2011-0456,2011245N27269,39.9,USA,840,NA2,2011,750000000,2014,845503678.2,851364151.3,0.006907428,2011-0456USA +2011-0519,2011346N03156,54.3,PHL,608,WP2,2011,38082000,2014,48351024.81,48256972.54,-0.001947091,2011-0519PHL +2011-0566,2011360N09088,93.6,IND,356,NI,2011,375625000,2014,420146061.5,420291427.8,0.00034593,2011-0566IND +2012-0043,2012039S14075,90.3,MDG,450,SI,2012,100000000,2014,107598319.7,107520211.8,-0.000726185,2012-0043MDG +2012-0259,2012201N15129,160.1,CHN,156,WP3,2012,329000000,2014,402859805.3,402882496,5.63E-05,2012-0259CHN +2012-0260,2012209N11131,306.2,TWN,158,WP4,2012,27000000,2014,28883557.6,28892236.54,0.000300435,2012-0260TWN +2012-0276,2012215N12313,60.3,MEX,484,NA1,2012,300000000,2014,328342750.7,328480450.5,0.00041929,2012-0276MEX +2012-0282,2012215N23146,55,CHN,156,WP3,2012,1500000000,2014,1836746833,1830219334,-0.003560167,2012-0282CHN +2012-0294,2012225N16133,136.9,CHN,156,WP3,2012,262000000,2014,320818446.7,320777868.8,-0.00012649,2012-0294CHN +2012-0294,2012225N16133,33.5,PHL,608,WP2,2012,3000000,2014,3413756.742,3418483.017,0.001383522,2012-0294PHL +2012-0294,2012225N16133,61.3,VNM,704,WP1,2012,6800000,2014,8125989.117,8149995.198,0.00294988,2012-0294VNM +2012-0313,2012234N16315,75.7,USA,840,NA2,2012,2000000000,2014,2163578370,2161055349,-0.001166814,2012-0313USA +2012-0401,2012166N09269,46.1,MEX,484,NA1,2012,555000000,2014,607434088.9,610325397.7,0.00474858,2012-0401MEX +2012-0406,2012296N06135,51.5,CHN,156,WP3,2012,197000000,2014,241226084,241139506.5,-0.00035897,2012-0406CHN +2012-0406,2012296N06135,112.3,PHL,608,WP2,2012,1339000,2014,1523673.426,1521994.525,-0.001102485,2012-0406PHL +2012-0406,2012296N06135,100.4,VNM,704,WP1,2012,336000000,2014,401519462.3,400817204.3,-0.001750533,2012-0406VNM +2012-0410,2012296N14283,162.2,JAM,388,NA1,2012,16542000,2014,15483975.86,15480905.55,-0.000198309,2012-0410JAM +2012-0410,2012296N14283,94.3,USA,840,NA2,2012,50000000000,2014,54089459244,53991359585,-0.001815302,2012-0410USA +2012-0414,2012232N13141,255.1,JPN,392,WP4,2012,86000000,2014,67245080.24,67227907.25,-0.000255412,2012-0414JPN +2012-0414,2012232N13141,31.2,KOR,410,WP4,2012,450000000,2014,519378870.9,517916090.4,-0.002820377,2012-0414KOR +2012-0498,2012346S14180,244,FJI,242,OC,2012,8400000,2014,9481515.123,9479088.612,-0.000255953,2012-0498FJI +2012-0498,2012346S14180,83,WSM,882,OC,2012,133000000,2014,133663025.6,133838355.8,0.001310873,2012-0498WSM +2012-0500,2012331N03157,85.6,PHL,608,WP2,2012,898352000,2014,1022251732,1020502716,-0.00171241,2012-0500PHL +2012-0588,2012254N09135,325.7,JPN,392,WP4,2012,31000000,2014,24239505.67,42923630.54,0.571438735,2012-0588JPN +2012-0588,2012254N09135,198.7,KOR,410,WP4,2012,349000000,2014,402807168.8,403100611.2,0.000728228,2012-0588KOR +2013-0032,2013046S20042,44,MDG,450,SI,2013,25000000,2014,25169373.46,25243534.94,0.002942164,2013-0032MDG +2013-0249,2013187N20156,67.9,CHN,156,WP3,2013,460000000,2014,501902623.4,502723049.4,0.001633297,2013-0249CHN +2013-0258,2013178N09133,95.3,CHN,156,WP3,2013,177000000,2014,193123400.7,192852737.9,-0.001402485,2013-0258CHN +2013-0258,2013178N09133,263.2,PHL,608,WP2,2013,1000000,2014,1046897.37,1046966.916,6.64E-05,2013-0258PHL +2013-0272,2013220N12137,73.3,CHN,156,WP3,2013,2120000000,2014,2313116438,2310410970,-0.001170305,2013-0272CHN +2013-0272,2013220N12137,129.6,PHL,608,WP2,2013,32431000,2014,33951928.59,33991276.65,0.001158264,2013-0272PHL +2013-0306,2013228N23124,108.7,CHN,156,WP3,2013,376000000,2014,410250840,409855850.5,-0.000963264,2013-0306CHN +2013-0306,2013228N23124,36.1,TWN,158,WP4,2013,12000000,2014,12443691.25,12287826.89,-0.012604679,2013-0306TWN +2013-0341,2013210N13123,93.8,CHN,156,WP3,2013,20000000,2014,21821853.19,21795648.16,-0.001201584,2013-0341CHN +2013-0341,2013210N13123,70.9,VNM,704,WP1,2013,1000000,2014,1087504.092,1085162.161,-0.002155814,2013-0341VNM +2013-0401,2013281N12098,89,IND,356,NI,2013,633471000,2014,695703513,696115605.6,0.000592164,2013-0401IND +2013-0419,2013269N15118,43,VNM,704,WP1,2013,663230000,2014,721265338.8,723859353.8,0.003590026,2013-0419VNM +2013-0429,2013272N10135,41.9,CHN,156,WP3,2013,6700000000,2014,7310320819,7266229953,-0.006049579,2013-0429CHN +2013-0430,2013282N14132,148.9,PHL,608,WP2,2013,96723000,2014,101259054.3,101188259.5,-0.00069939,2013-0430PHL +2013-0430,2013282N14132,117.1,VNM,704,WP1,2013,76000000,2014,82650310.98,82572342.38,-0.0009438,2013-0430VNM +2013-0433,2013306N07162,50.9,PHL,608,WP2,2013,10000000000,2014,10468973696,10506773245,0.003604123,2013-0433PHL +2013-0433,2013306N07162,45.5,VNM,704,WP1,2013,734000000,2014,798228003.4,798138198.4,-0.000112512,2013-0433VNM +2013-0437,2013301N13142,141.4,PHL,608,WP2,2013,4729000,2014,4950777.661,4956830.361,0.001221829,2013-0437PHL +2014-0001,2014004S17183,39.4,TON,776,OC,2014,31000000,2014,31000000,30964281.91,-0.001152861,2014-0001TON +2014-0096,2014068S16169,31.3,VUT,548,OC,2014,2000000,2014,2000000,2008990.461,0.004485157,2014-0096VUT +2014-0227,2014190N08154,130.9,CHN,156,WP3,2014,4232973000,2014,4232973000,4228685985,-0.00101328,2014-0227CHN +2014-0227,2014190N08154,248.5,PHL,608,WP2,2014,820576000,2014,820576000,820579917.5,4.77E-06,2014-0227PHL +2014-0227,2014190N08154,40.8,VNM,704,WP1,2014,6200000,2014,6200000,6228610.472,0.004603978,2014-0227VNM +2014-0236,2014184N08147,35.4,JPN,392,WP4,2014,156000000,2014,156000000,156761680.5,0.004870686,2014-0236JPN +2014-0240,2014197N10137,49.9,CHN,156,WP3,2014,500000000,2014,500000000,498637013.1,-0.002729696,2014-0240CHN +2014-0240,2014197N10137,325.7,TWN,158,WP4,2014,20000000,2014,20000000,84602726.23,1.442234217,2014-0240TWN +2014-0310,2014212N11242,37,USA,840,NA2,2014,66000000,2014,66000000,66401401.65,0.006063423,2014-0310USA +2014-0316,2014209N12152,300.1,JPN,392,WP4,2014,200000000,2014,200000000,200068150.7,0.000340696,2014-0316JPN +2014-0333,2014253N13260,66.1,MEX,484,NA1,2014,2500000000,2014,2500000000,2501601560,0.000640419,2014-0333MEX +2014-0390,2014254N10142,79.2,CHN,156,WP3,2014,2900000000,2014,2900000000,2892991825,-0.002419537,2014-0390CHN +2014-0390,2014254N10142,99.7,PHL,608,WP2,2014,19183000,2014,19183000,19172694.48,-0.000537366,2014-0390PHL +2014-0390,2014254N10142,101.3,VNM,704,WP1,2014,4500000,2014,4500000,4496723.336,-0.000728413,2014-0390VNM +2014-0392,2014279N11096,67.7,IND,356,NI,2014,7000000000,2014,7000000000,6989678402,-0.001475602,2014-0392IND +2014-0396,2014275N06166,255.2,JPN,392,WP4,2014,100000000,2014,100000000,100017513.4,0.000175118,2014-0396JPN +2014-0479,2014334N02156,85.4,PHL,608,WP2,2014,113878000,2014,113878000,113992423.7,0.001004287,2014-0479PHL +2014-0497,2014362N07130,57,PHL,608,WP2,2014,17688000,2014,17688000,17619650.11,-0.003871681,2014-0497PHL +2015-0017,2015012N09146,107.6,PHL,608,WP2,2015,1000000,2014,972027.6618,973519.9527,0.001534058,2015-0017PHL +2015-0053,2015045S12145,25.8,AUS,36,OC,2015,78000000,2014,84702479.43,2995180.152,-3.342140494,2015-0053AUS +2015-0079,2015047S15152,102.2,AUS,36,OC,2015,546000000,2014,592917356,592586612.4,-0.00055798,2015-0079AUS +2015-0093,2015066S08170,47.5,VUT,548,OC,2015,449400000,2014,496316510.4,497403875.7,0.002188474,2015-0093VUT +2015-0105,2015085N06162,45.7,FSM,583,OC,2015,11000000,2014,11098409.57,11055456.77,-0.003877684,2015-0105FSM +2015-0176,2015122N07144,228.3,JPN,392,WP4,2015,23200000,2014,25604132.8,25609493.6,0.000209351,2015-0176JPN +2015-0176,2015122N07144,193.8,PHL,608,WP2,2015,348000,2014,338265.6263,338117.5537,-0.000437837,2015-0176PHL +2015-0244,2015180N09160,37.4,CHN,156,WP3,2015,940000000,2014,890531131.4,891327043.9,0.000893351,2015-0244CHN +2015-0278,2015183N13130,169.9,CHN,156,WP3,2015,213000000,2014,201790564.9,201653318.2,-0.000680376,2015-0278CHN +2015-0278,2015183N13130,50.2,PHL,608,WP2,2015,2218000,2014,2155957.354,2153497.386,-0.001141661,2015-0278PHL +2015-0339,2015211N13162,61.1,CHN,156,WP3,2015,1282690000,2014,1215186571,1216891387,0.001401942,2015-0339CHN +2015-0458,2015263N14148,120.2,CHN,156,WP3,2015,661000000,2014,626213912.6,626317002.2,0.00016461,2015-0458CHN +2015-0462,2015285N14151,107,PHL,608,WP2,2015,210985000,2014,205083256.2,204978171.4,-0.000512532,2015-0462PHL +2015-0470,2015293N13266,100,MEX,484,NA1,2015,823000000,2014,924242990.8,923900657.4,-0.000370462,2015-0470MEX +2015-0473,2015242N12343,73.3,CPV,132,NA1,2015,1100000,2014,1281242.483,1282841.967,0.001247607,2015-0473CPV +2015-0479,2015270N27291,25.8,BHS,44,NA1,2015,90000000,2014,83627197.41,1129342.51,-4.304733181,2015-0479BHS +2015-0484,2015301N11065,67.3,YEM,887,NI,2015,200000000,2014,189625777.2,189687123.7,0.000323461,2015-0484YEM +2015-0490,2015273N12130,126.8,CHN,156,WP3,2015,4200000000,2014,3978968885,3980510860,0.000387456,2015-0490CHN +2015-0490,2015273N12130,46.9,PHL,608,WP2,2015,1300000,2014,1263635.96,1268652.402,0.003961988,2015-0490PHL +2015-0543,2015344N07145,189.3,PHL,608,WP2,2015,135217000,2014,131434664.3,131332251,-0.000779499,2015-0543PHL +2016-0041,2016041S14170,65.2,FJI,242,OC,2016,600000000,2014,575865848.2,575863677.2,-3.77E-06,2016-0041FJI +2016-0175,2016138N10081,44.8,BGD,50,NI,2016,600000000,2014,468492129.6,469418303.5,0.001974974,2016-0175BGD +2016-0268,2016207N17116,118.2,VNM,704,WP1,2016,191000000,2014,173254832,172984694.3,-0.00156041,2016-0268VNM +2016-0319,2016248N15255,102.2,MEX,484,NA1,2016,50000000,2014,60984824.31,60888078.84,-0.001587646,2016-0319MEX +2016-0322,2016242N24279,84.6,USA,840,NA2,2016,600000000,2014,561979044.5,561035932.5,-0.001679608,2016-0322USA +2016-0342,2016253N13144,145.2,CHN,156,WP3,2016,2300000000,2014,2154362604,2152625313,-0.000806731,2016-0342CHN +2016-0342,2016253N13144,25.8,PHL,608,WP2,2016,4913000,2014,4585811.217,269488.5479,-2.834196402,2016-0342PHL +2016-0350,2016266N11144,73.3,CHN,156,WP3,2016,830000000,2014,777443896.3,776944854,-0.000642107,2016-0350CHN +2016-0350,2016266N11144,314.9,TWN,158,WP4,2016,110000000,2014,109825691.6,109814310.5,-0.000103634,2016-0350TWN +2016-0361,2016269N15165,109,KOR,410,WP4,2016,126000000,2014,125690947.1,125667384.4,-0.000187483,2016-0361KOR +2016-0485,2016341N08092,116.9,IND,356,NI,2016,1000000000,2014,890280689.2,888918839.2,-0.001530857,2016-0485IND +2016-0503,2016355N07146,192.8,PHL,608,WP2,2016,103661000,2014,96757536.45,96759817.38,2.36E-05,2016-0503PHL +2017-0051,2017043S19040,42.6,MOZ,508,SI,2017,17000000,2014,22801692.01,22709916.84,-0.00403305,2017-0051MOZ +2017-0075,2017061S11061,63.7,MDG,450,SI,2017,20000000,2014,18562954.38,18597400.42,0.001853914,2017-0075MDG +2017-0105,2017081S13152,31.1,AUS,36,OC,2017,2700000000,2014,2988753820,3008926312,0.00672679,2017-0105AUS +2017-0281,2017195N16114,53.8,CHN,156,WP3,2017,3600000,2014,3083629.94,3082466.557,-0.000377348,2017-0281CHN +2017-0281,2017195N16114,30.3,VNM,704,WP1,2017,71000000,2014,59078283.51,58458649.26,-0.01054375,2017-0281VNM +2017-0334,2017219N16279,146.1,MEX,484,NA1,2017,2000000,2014,2284434.574,2285643.247,0.000528951,2017-0334MEX +2017-0352,2017232N19130,147.2,CHN,156,WP3,2017,3500000000,2014,2997973553,2996468738,-0.00050207,2017-0352CHN +2017-0352,2017232N19130,151.2,HKG,344,WP4,2017,755500000,2014,644890817.2,644839735.2,-7.92E-05,2017-0352HKG +2017-0352,2017232N19130,131.8,MAC,446,WP4,2017,1420000000,2014,1560609286,1560092036,-0.000331496,2017-0352MAC +2017-0362,2017228N14314,28.7,USA,840,NA2,2017,95000000000,2014,85426343701,85468133336,0.000489069,2017-0362USA +2017-0381,2017242N16333,60.9,ATG,28,NA1,2017,250000000,2014,211176356.8,211075260.6,-0.000478843,2017-0381ATG +2017-0381,2017242N16333,25.8,BHS,44,NA1,2017,2000000,2014,1801876.321,611837.893,-1.080116435,2017-0381BHS +2017-0381,2017242N16333,33.7,CUB,192,NA1,2017,13200000000,2014,10992753818,10904237007,-0.008084882,2017-0381CUB +2017-0381,2017242N16333,105.5,KNA,659,NA1,2017,20000000,2014,18484889.46,18486650.71,9.53E-05,2017-0381KNA +2017-0381,2017242N16333,48.7,TCA,796,NA1,2017,500000000,2014,500000000,500378956.6,0.000757626,2017-0381TCA +2017-0381,2017242N16333,84.4,USA,840,NA2,2017,57000000000,2014,51255806221,51206754325,-0.00095746,2017-0381USA +2017-0381,2017242N16333,25.8,VGB,92,NA1,2017,3000000000,2014,3000000000,623619994.9,-1.570826367,2017-0381VGB +2017-0383,2017260N12310,25.8,DMA,212,NA1,2017,1456000000,2014,1534596212,895118589.3,-0.53906636,2017-0383DMA +2017-0383,2017260N12310,45.1,DOM,214,NA1,2017,63000000,2014,54813712.03,54934660.22,0.002204101,2017-0383DOM +2017-0383,2017260N12310,59.3,PRI,630,NA1,2017,68000000000,2014,67009049565,67027181962,0.00027056,2017-0383PRI +2017-0406,2017253N14130,48.6,VNM,704,WP1,2017,484000000,2014,402730834.1,401345556.4,-0.00344564,2017-0406VNM +2017-0410,2017277N11279,90.2,USA,840,NA2,2017,250000000,2014,224806167.6,224976913.1,0.000759235,2017-0410USA +2017-0422,2017304N11127,58.9,VNM,704,WP1,2017,1000000000,2014,832088500.2,835046981.4,0.003549183,2017-0422VNM +2017-0432,2017288N09138,270,JPN,392,WP4,2017,1000000000,2014,995484463.5,995126307.3,-0.000359846,2017-0432JPN +2017-0468,2017252N14147,325.7,JPN,392,WP4,2017,500000000,2014,497742231.7,622698955.4,0.223980848,2017-0468JPN +2017-0485,2017236N15129,285.9,CHN,156,WP3,2017,56000000,2014,47967576.85,47983654.85,0.000335128,2017-0485CHN +2017-0508,2017333N06082,44.1,LKA,144,NI,2017,346000000,2014,314311010.2,316529153.6,0.007032376,2017-0508LKA \ No newline at end of file diff --git a/notebooks/vulnerability_onboarding/Wind/onboard.ipynb b/notebooks/vulnerability_onboarding/Wind/onboard.ipynb new file mode 100644 index 00000000..82a7d285 --- /dev/null +++ b/notebooks/vulnerability_onboarding/Wind/onboard.ipynb @@ -0,0 +1,266 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Regional tropical cyclone impact functions\n", + "\n", + "### CITATION\n", + "Eberenz S, Lüthi S, Bresch DN. Regional tropical cyclone impact functions for globally consistent risk assessments. Natural Hazards and Earth System Sciences. 2021 Jan 29;21(1):393-415.\n", + "\n", + "### LINK\n", + "https://nhess.copernicus.org/articles/21/393/2021/\n", + "\n", + "### NOTES\n", + "The data is used to provide a 'generic asset' vulnerability distribution. The fitted results are copied into Table_A2_Impact_Function_Slope.csv. \n", + "(a) the global default impact function (uncalibrated), (b) calibrated by optimizing RMSF, and (c) calibrated by optimizing TDR. The regions NA1 to WP4 are defined in Table A1. The row “combined” summarizes results for all regions combined based on the regionalized calibration; the row “global calibration” is based on one unified global calibration based on all matched TC 473 events. RMSF: root-mean-squared fraction; TDR: total damage ratio.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['NA1' 'NA2' 'NI' 'OC' 'SI' 'WP1' 'WP2' 'WP3' 'WP4' 'Combined'\n", + " 'Global calibration']\n", + "['59.6' '86' '58.7' '49.7' '46.8' '56.7' '84.7' '80.2' '135.6' '–' '73.4']\n" + ] + } + ], + "source": [ + "import json\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "df = pd.read_csv('Table_A2_Impact_Function_Slope.csv')\n", + "region = df[\"region\"].to_numpy()\n", + "vhalf = df[\"vhalf_b\"].to_numpy()\n", + "\n", + "\n", + "print(region)\n", + "print(vhalf)\n", + "#df = pd.read_csv('Table_S2_V_half_individual_fitting_per_event.csv')\n", + "#vhalf = df.where(df.region == \"WP2\").vhalf_fitted\n", + "#region = df[\"region\"].to_numpy()\n", + "#vhalf = df[\"vhalf_fitted\"].to_numpy()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([170., 103., 61., 36., 34., 10., 8., 15., 8., 28.]),\n", + " array([ 25.8 , 55.79, 85.78, 115.77, 145.76, 175.75, 205.74, 235.73,\n", + " 265.72, 295.71, 325.7 ]),\n", + " )" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "v_half = df[\"v_half_fitted [m/s]\"] #df[df.region == \"WP2\"][\"v_half_fitted [m/s]\"]\n", + "\n", + "import matplotlib.pyplot as plot\n", + "plot.hist(v_half)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "103.40930232558141\n", + "[ 45.1 130.6]\n" + ] + } + ], + "source": [ + "print(v_half.mean())\n", + "import numpy as np\n", + "print(np.quantile(v_half, [0.25, 0.75]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def vul(v, v_half):\n", + " v_thresh = 25.7\n", + " #v_half = 135.6 # wp4 74.7 135.6 190.5\n", + " vn = np.where(v > v_thresh, v - v_thresh, 0) / (v_half - v_thresh)\n", + " f = vn**3 / (1 + vn**3)\n", + " return f\n", + "\n", + "v = np.arange(0, 90, 10)\n", + "fig, ax = plt.subplots() \n", + "#for item in v_half.to_numpy():\n", + "# ax.plot(v, vul(v, item))\n", + "ax.plot(v, vul(v, 74.7))\n", + "ax.plot(v, vul(v, 190.5))\n", + "ax.plot(v, vul(v, 135.6))\n", + "#ax.plot(v, vul(v, 100))\n", + "#ax.plot(v, vul(v, 220))" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([175., 51., 28., 19., 13., 17., 19., 17., 37., 97.]),\n", + " array([0.00149235, 0.10134311, 0.20119387, 0.30104464, 0.4008954 ,\n", + " 0.50074616, 0.60059692, 0.70044769, 0.80029845, 0.90014921,\n", + " 0.99999998]),\n", + " )" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist([vul(60, item) for item in v_half.to_numpy()])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 39.2\n", + "1 106.8\n", + "2 58.4\n", + "3 70.1\n", + "4 37.6\n", + " ... \n", + "468 58.9\n", + "469 270.0\n", + "470 325.7\n", + "471 285.9\n", + "472 44.1\n", + "Name: v_half_fitted [m/s], Length: 473, dtype: float64" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v_half" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "physrisk-og59E7IU", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.13" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/setup.cfg b/setup.cfg index 8e01c761..45bdad45 100644 --- a/setup.cfg +++ b/setup.cfg @@ -24,7 +24,7 @@ install_requires = numba==0.56.4 numpy==1.22.0 pillow==9.4.0 - pydantic==1.9.0 + pydantic==2.4.2 python-dotenv==0.19.2 requests==2.27.1 scipy==1.7.3 diff --git a/src/physrisk/api/v1/common.py b/src/physrisk/api/v1/common.py index ff3f4ed2..c31574cc 100644 --- a/src/physrisk/api/v1/common.py +++ b/src/physrisk/api/v1/common.py @@ -33,8 +33,8 @@ class Asset(BaseModel): asset_class: str = Field( description="name of asset class; corresponds to physrisk class names, e.g. PowerGeneratingAsset" ) - type: Optional[str] = Field(description="Type of the asset //") - location: Optional[str] + type: Optional[str] = Field(None, description="Type of the asset //") + location: Optional[str] = None latitude: float = Field(description="Latitude in degrees") longitude: float = Field(description="Longitude in degrees") diff --git a/src/physrisk/api/v1/exposure_req_resp.py b/src/physrisk/api/v1/exposure_req_resp.py index ac549e71..29d7d037 100644 --- a/src/physrisk/api/v1/exposure_req_resp.py +++ b/src/physrisk/api/v1/exposure_req_resp.py @@ -10,7 +10,9 @@ class AssetExposureRequest(BaseModel): """Impact calculation request.""" assets: Assets - calc_settings: CalcSettings = Field(default_factory=CalcSettings, description="Interpolation method.") + calc_settings: CalcSettings = Field( + default_factory=CalcSettings, description="Interpolation method." # type:ignore + ) scenario: str = Field("rcp8p5", description="Name of scenario ('rcp8p5')") year: int = Field( 2050, diff --git a/src/physrisk/api/v1/hazard_data.py b/src/physrisk/api/v1/hazard_data.py index cd2e7210..4f2ba548 100644 --- a/src/physrisk/api/v1/hazard_data.py +++ b/src/physrisk/api/v1/hazard_data.py @@ -59,7 +59,7 @@ class Scenario(BaseModel): id: str years: List[int] - periods: Optional[List[Period]] + # periods: Optional[List[Period]] def expanded(item: str, key: str, param: str): @@ -89,7 +89,7 @@ class HazardResource(BaseModel): description: str = Field( description="Brief description in mark down of the indicator and model that generated the indicator." ) - map: Optional[MapInfo] = Field(description="Optional information used for display of the indicator in a map.") + map: Optional[MapInfo] = Field(None, description="Optional information used for display of the indicator in a map.") scenarios: List[Scenario] = Field(description="Climate change scenarios for which the indicator is available.") units: str = Field(description="Units of the hazard indicator.") @@ -112,13 +112,13 @@ def expand_resource( resource: HazardResource, keys: List[str], params: Dict[str, List[str]] ) -> Iterable[HazardResource]: if len(keys) == 0: - yield resource.copy(deep=True, update={"params": {}}) + yield resource.model_copy(deep=True, update={"params": {}}) else: keys = keys.copy() key = keys.pop() for item in expand_resource(resource, keys, params): for param in params[key]: - yield item.copy( + yield item.model_copy( deep=True, update={ "indicator_id": expand(item.indicator_id, key, param), @@ -128,7 +128,7 @@ def expand_resource( "map": None if item.map is None else ( - item.map.copy( + item.map.model_copy( deep=True, update={"path": expand(item.map.path if item.map.path is not None else "", key, param)}, ) @@ -148,9 +148,9 @@ class InventorySource(Flag): class HazardAvailabilityRequest(BaseModel): - types: Optional[List[str]] # e.g. ["RiverineInundation"] + types: Optional[List[str]] = [] # e.g. ["RiverineInundation"] sources: Optional[List[str]] = Field( - description="Sources of inventory, can be 'embedded', 'hazard' or 'hazard_test'." + None, description="Sources of inventory, can be 'embedded', 'hazard' or 'hazard_test'." ) @@ -171,11 +171,11 @@ class HazardDataRequestItem(BaseModel): longitudes: List[float] latitudes: List[float] request_item_id: str - hazard_type: Optional[str] # e.g. RiverineInundation - event_type: Optional[str] # e.g. RiverineInundation; deprecated: use hazard_type + hazard_type: Optional[str] = None # e.g. RiverineInundation + event_type: Optional[str] = None # e.g. RiverineInundation; deprecated: use hazard_type indicator_id: str - indicator_model_gcm: Optional[str] - path: Optional[str] + indicator_model_gcm: Optional[str] = "" + path: Optional[str] = None scenario: str # e.g. rcp8p5 year: int @@ -188,7 +188,7 @@ class HazardDataRequest(BaseHazardRequest): class HazardDataResponseItem(BaseModel): intensity_curve_set: List[IntensityCurve] request_item_id: str - event_type: str + event_type: Optional[str] model: str scenario: str year: int diff --git a/src/physrisk/api/v1/impact_req_resp.py b/src/physrisk/api/v1/impact_req_resp.py index 957420e6..6840fa21 100644 --- a/src/physrisk/api/v1/impact_req_resp.py +++ b/src/physrisk/api/v1/impact_req_resp.py @@ -1,5 +1,5 @@ from enum import Enum -from typing import List, Optional +from typing import Dict, List, Optional from pydantic import BaseModel, Field @@ -14,7 +14,9 @@ class AssetImpactRequest(BaseModel): """Impact calculation request.""" assets: Assets - calc_settings: CalcSettings = Field(default_factory=CalcSettings, description="Interpolation method.") + calc_settings: CalcSettings = Field( + default_factory=CalcSettings, description="Interpolation method." # type:ignore + ) include_asset_level: bool = Field(True, description="If true, include asset-level impacts.") include_measures: bool = Field(True, description="If true, include measures.") include_calc_details: bool = Field(True, description="If true, include impact calculation details.") @@ -25,32 +27,103 @@ class AssetImpactRequest(BaseModel): ) -# region Response +class Category(int, Enum): + NODATA = 0 + LOW = 1 + MEDIUM = 2 + HIGH = 3 + REDFLAG = 4 -class Category(str, Enum): - NODATA = "NODATA" - LOW = "LOW" - MEDIUM = "MEDIUM" - HIGH = "HIGH" - REDFLAG = "REDFLAG" +class RiskKey(BaseModel): + scenario_id: str + year: str -class Indicator(BaseModel): - value: float - label: str +class RiskMeasureKey(RiskKey): + risk_measure_id: str = Field("", description="Identifier of the risk measure.") -class RiskMeasureResult(BaseModel): - """Provides a risk category based on one or more risk indicators. - A risk indicator is a quantity derived from one or more vulnerability models, - e.g. the change in 1-in-100 year damage or disruption. +class AssetsRiskScores(BaseModel): + """Risk scores for a set of assets, with risk measures used to calculate the measures. + A single score may be derived from multiple risk measures in principle, the measures are identified + by the ScoreBasedMeasureDefinition corresponding to the asset. + In principle multiple measures may be used to compute the score, hence 'measures_0', 'measures_1' etc, + although no example yet. """ - category: Category = Field(description="Result category.") - cat_defn: str = Field(description="Definition of the category for the particular indicator.") - indicators: List[Indicator] - summary: str = Field(description="Summary of the indicator.") + key: RiskKey + scores: List[int] = Field(None, description="Identifier for the risk measure.") + measures_0: List[float] + measures_1: Optional[List[float]] + + +class AssetRiskMeasures(BaseModel): + """Risk measures for a set of assets.""" + + key: RiskMeasureKey + measures: List[float] + + +class AssetScoreModel(BaseModel): + asset_model_id: List[str] + + +class RiskMeasureDefinition(BaseModel): + measure_id: str = Field(None, description="Identifier for the risk measure.") + measure_index: int = Field(None, description="Identifier for the risk measure.") + label: str = Field( + " List[HazardResource]: if not self._fs.exists(self._full_path(path)): return [] json_str = self.read_json(path) - models = parse_obj_as(HazardModels, json.loads(json_str)).resources + models = TypeAdapter(HazardModels).validate_python(json.loads(json_str)).resources return models def read_description_markdown(self, paths: List[str]) -> Dict[str, str]: @@ -73,7 +73,7 @@ def append(self, path: str, hazard_models: Iterable[HazardResource]): for model in hazard_models: combined[model.key()] = model models = HazardModels(resources=list(combined.values())) - json_str = json.dumps(models.dict()) + json_str = json.dumps(models.model_dump()) with self._fs.open(self._full_path(path), "w") as f: f.write(json_str) diff --git a/src/physrisk/hazard_models/core_hazards.py b/src/physrisk/hazard_models/core_hazards.py index 72697b90..d398bbcc 100644 --- a/src/physrisk/hazard_models/core_hazards.py +++ b/src/physrisk/hazard_models/core_hazards.py @@ -17,11 +17,14 @@ def first(self): def match(self, hint: HazardDataHint): return next(r for r in self.resources if r.path == hint.path) - def with_model_gcm(self, gcm): + def with_group_id(self, group_id: str): + return ResourceSubset(r for r in self.resources if r.group_id == group_id) + + def with_model_gcm(self, gcm: str): return ResourceSubset(r for r in self.resources if r.indicator_model_gcm == gcm) - def with_model_id(self, gcm): - return ResourceSubset(r for r in self.resources if r.indicator_model_id == gcm) + def with_model_id(self, model_id: str): + return ResourceSubset(r for r in self.resources if r.indicator_model_id == model_id) class ResourceSelector(Protocol): @@ -58,7 +61,7 @@ def source_paths(self) -> Dict[type, SourcePath]: ) return source_paths - def _add_selector(self, hazard_type: type, indicator_id: str, selector: ResourceSelector): + def add_selector(self, hazard_type: type, indicator_id: str, selector: ResourceSelector): self._selectors[ResourceSelectorKey(hazard_type, indicator_id)] = selector def _get_resource_source_path(self, hazard_type: str): @@ -90,10 +93,10 @@ class CoreInventorySourcePaths(InventorySourcePaths): def __init__(self, inventory: Inventory): super().__init__(inventory) for indicator_id in ["mean_work_loss/low", "mean_work_loss/medium", "mean_work_loss/high"]: - self._add_selector(ChronicHeat, indicator_id, self._select_chronic_heat) - self._add_selector(ChronicHeat, "mean/degree/days/above/32c", self._select_chronic_heat) - self._add_selector(RiverineInundation, "flood_depth", self._select_riverine_inundation) - self._add_selector(CoastalInundation, "flood_depth", self._select_coastal_inundation) + self.add_selector(ChronicHeat, indicator_id, self._select_chronic_heat) + self.add_selector(ChronicHeat, "mean/degree/days/above/32c", self._select_chronic_heat) + self.add_selector(RiverineInundation, "flood_depth", self._select_riverine_inundation) + self.add_selector(CoastalInundation, "flood_depth", self._select_coastal_inundation) def resources_with(self, *, hazard_type: type, indicator_id: str): return ResourceSubset(self._inventory.resources_by_type_id[(hazard_type.__name__, indicator_id)]) @@ -146,5 +149,9 @@ def cmip6_scenario_to_rcp(scenario: str): return scenario +def get_default_source_path_provider(inventory: Inventory = EmbeddedInventory()): + return CoreInventorySourcePaths(inventory) + + def get_default_source_paths(inventory: Inventory = EmbeddedInventory()): return CoreInventorySourcePaths(inventory).source_paths() diff --git a/src/physrisk/kernel/calculation.py b/src/physrisk/kernel/calculation.py index 5d34c8e3..adea9fe6 100644 --- a/src/physrisk/kernel/calculation.py +++ b/src/physrisk/kernel/calculation.py @@ -25,7 +25,10 @@ def get_default_vulnerability_models() -> Dict[type, Sequence[VulnerabilityModel """Get default exposure/vulnerability models for different asset types.""" return { PowerGeneratingAsset: [pgam.InundationModel()], - RealEstateAsset: [RealEstateCoastalInundationModel(), RealEstateRiverineInundationModel()], + RealEstateAsset: [ + RealEstateCoastalInundationModel(), + RealEstateRiverineInundationModel(), + ], IndustrialActivity: [ChronicHeatGZNModel()], TestAsset: [pgam.TemperatureModel()], } diff --git a/src/physrisk/kernel/hazards.py b/src/physrisk/kernel/hazards.py index 2bdb350b..e5799663 100644 --- a/src/physrisk/kernel/hazards.py +++ b/src/physrisk/kernel/hazards.py @@ -1,3 +1,4 @@ +import inspect import sys from enum import Enum from typing import cast @@ -34,6 +35,11 @@ class ChronicHeat(Hazard): pass +class ChronicWind(Hazard): + kind = HazardKind.chronic + pass + + class CombinedInundation(Hazard): kind = HazardKind.chronic pass @@ -69,5 +75,11 @@ class Wind(Hazard): pass +def all_hazards(): + return [ + obj for _, obj in inspect.getmembers(sys.modules[__name__]) if inspect.isclass(obj) and issubclass(obj, Hazard) + ] + + def hazard_class(name: str): return getattr(sys.modules[__name__], name) diff --git a/src/physrisk/kernel/risk.py b/src/physrisk/kernel/risk.py index 27e1ef78..30ca1ef3 100644 --- a/src/physrisk/kernel/risk.py +++ b/src/physrisk/kernel/risk.py @@ -1,8 +1,10 @@ -from typing import Dict, List, NamedTuple, Optional, Protocol, Sequence, Tuple +from dataclasses import dataclass +from typing import Dict, List, NamedTuple, Optional, Protocol, Sequence, Set, Tuple, Type, Union -from physrisk.api.v1.impact_req_resp import RiskMeasureResult +from physrisk.api.v1.impact_req_resp import Category, ScoreBasedRiskMeasureDefinition from physrisk.kernel.assets import Asset from physrisk.kernel.hazard_model import HazardModel +from physrisk.kernel.hazards import Hazard, all_hazards from physrisk.kernel.impact import AssetImpactResult, calculate_impacts from physrisk.kernel.impact_distrib import ImpactDistrib from physrisk.kernel.vulnerability_model import VulnerabilityModelBase @@ -63,11 +65,21 @@ class MeasureKey(NamedTuple): hazard_type: type +@dataclass +class Measure: + score: Category + measure_0: float + definition: ScoreBasedRiskMeasureDefinition # reference to single instance of ScoreBasedRiskMeasureDefinition + + class RiskMeasureCalculator(Protocol): - def calc_measure(self, hazard_type: type, base_impact: ImpactDistrib, impact: ImpactDistrib) -> RiskMeasureResult: + def calc_measure(self, hazard_type: type, base_impact: ImpactDistrib, impact: ImpactDistrib) -> Measure: + ... + + def get_definition(self, hazard_type: type) -> ScoreBasedRiskMeasureDefinition: ... - def supported_hazards(self) -> List[type]: + def supported_hazards(self) -> Set[type]: ... @@ -78,6 +90,14 @@ def __init__( vulnerability_models: Dict[type, Sequence[VulnerabilityModelBase]], measure_calculators: Dict[type, RiskMeasureCalculator], ): + """Risk model that calculates risk measures at the asset level for a sequence + of assets. + + Args: + hazard_model (HazardModel): The hazard model. + vulnerability_models (Dict[type, Sequence[VulnerabilityModelBase]]): Vulnerability models for asset types. + measure_calculators (Dict[type, RiskMeasureCalculator]): Risk measure calculators for asset types. + """ super().__init__(hazard_model, vulnerability_models) self._measure_calculators = measure_calculators @@ -85,9 +105,44 @@ def calculate_impacts(self, assets: Sequence[Asset], prosp_scens: Sequence[str], impacts = self._calculate_all_impacts(assets, prosp_scens, years) return impacts + def populate_measure_definitions( + self, assets: Sequence[Asset] + ) -> Tuple[Dict[Type[Hazard], List[str]], Dict[ScoreBasedRiskMeasureDefinition, str]]: + hazards = all_hazards() + # the identifiers of the score-based risk measures used for each asset, for each hazard type + measure_ids_for_hazard: Dict[Type[Hazard], List[str]] = {} + # one + calcs_by_asset = [self._measure_calculators.get(type(asset), None) for asset in assets] + used_calcs = {c for c in calcs_by_asset if c is not None} + # get all measures + measure_id_lookup = { + cal: f"measure_{i}" + for (i, cal) in enumerate( + set( + item + for item in ( + cal.get_definition(hazard_type=hazard_type) for hazard_type in hazards for cal in used_calcs + ) + if item is not None + ) + ) + } + + def get_measure_id(measure_calc: Union[RiskMeasureCalculator, None], hazard_type: type): + if measure_calc is None: + return "na" + measure = measure_calc.get_definition(hazard_type=hazard_type) + return measure_id_lookup[measure] if measure is not None else "na" + + for hazard_type in hazards: + measure_ids = [get_measure_id(calc, hazard_type) for calc in calcs_by_asset] + measure_ids_for_hazard[hazard_type] = measure_ids + return measure_ids_for_hazard, measure_id_lookup + def calculate_risk_measures(self, assets: Sequence[Asset], prosp_scens: Sequence[str], years: Sequence[int]): impacts = self._calculate_all_impacts(assets, prosp_scens, years) - measures: Dict[MeasureKey, RiskMeasureResult] = {} + measures: Dict[MeasureKey, Measure] = {} + for asset in assets: if type(asset) not in self._measure_calculators: continue @@ -102,5 +157,5 @@ def calculate_risk_measures(self, assets: Sequence[Asset], prosp_scens: Sequence impact = scenario_impacts[key].impact risk_ind = measure_calc.calc_measure(hazard_type, base_impact, impact) measures[MeasureKey(asset, prosp_scen, year, hazard_type)] = risk_ind - # if the fractional loss is material and materially increases + return impacts, measures diff --git a/src/physrisk/kernel/vulnerability_model.py b/src/physrisk/kernel/vulnerability_model.py index 32b4ec4d..63047fb5 100644 --- a/src/physrisk/kernel/vulnerability_model.py +++ b/src/physrisk/kernel/vulnerability_model.py @@ -1,7 +1,7 @@ import importlib.resources import json from abc import ABC, abstractmethod -from typing import Iterable, List, Protocol, Tuple, Union +from typing import Iterable, List, Protocol, Sequence, Tuple, Union import numpy as np from scipy import stats @@ -81,8 +81,8 @@ class VulnerabilityModelAcuteBase(VulnerabilityModelBase): Asset. """ - def __init__(self, model: str, hazard_type: type): - super().__init__(model, hazard_type) + def __init__(self, indicator_id: str, hazard_type: type): + super().__init__(indicator_id, hazard_type) @abstractmethod def get_distributions( @@ -158,6 +158,7 @@ def get_distributions( self.hazard_type, intensity_bin_edges, self.impact_bin_edges, + # np.eye(8, 11) self.get_impact_curve(intensity_bin_centres, asset).to_prob_matrix(self.impact_bin_edges), ) @@ -207,20 +208,37 @@ def beta_distrib(mean, std): class DeterministicVulnerabilityModel(VulnerabilityModelAcuteBase): - """A vulnerability model that requires only specification of a damage/disruption curve. - This simple model contains no uncertainty around damage/disruption.""" - - def __init__(self, *, event_type: type, intensities, impacts, indicator_id=""): - self.event_type = event_type - self.intensities = intensities - self.impacts = impacts - self.indicator_id = indicator_id + def __init__( + self, + *, + hazard_type: type, + damage_curve_intensities: Sequence[float], + damage_curve_impacts: Sequence[float], + indicator_id: str, + ): + """A vulnerability model that requires only specification of a damage/disruption curve. + This simple model contains no uncertainty around damage/disruption. The damage curve is passed via the + constructor. The edges of the (hazard) intensity bins are determined by the granularity of + the hazard data itself. The impact bin edges are inferred from the intensity bin edges, by + looking up the impact corresponding to the hazard indicator intensity from the damage curve. + + Args: + event_type (type): _description_ + damage_curve_intensities (Sequence[float]): Intensities + (i.e. hazard indicator values) of the damage/disruption (aka impact) curve. + damage_curve_impacts (Sequence[float]): Fractional damage to asset/disruption + to operation resulting from a hazard of the corresponding intensity. + indicator_id (str): ID of the hazard indicator to which this applies. Defaults to "". + """ + super().__init__(indicator_id=indicator_id, hazard_type=hazard_type) + self.damage_curve_intensities = damage_curve_intensities + self.damage_curve_impacts = damage_curve_impacts def get_data_requests( self, asset: Asset, *, scenario: str, year: int ) -> Union[HazardDataRequest, Iterable[HazardDataRequest]]: return HazardDataRequest( - self.event_type, + self.hazard_type, asset.longitude, asset.latitude, scenario=scenario, @@ -237,10 +255,14 @@ def get_distributions( intensity_curve = ExceedanceCurve(1.0 / event_data.return_periods, event_data.intensities) intensity_bin_edges, probs = intensity_curve.get_probability_bins() - impact_bins_edges = np.interp(intensity_bin_edges, self.intensities, self.impacts) + # look up the impact bin edges + impact_bins_edges = np.interp(intensity_bin_edges, self.damage_curve_intensities, self.damage_curve_impacts) + # the vulnerability distribution probabilities are an identity matrix: + # we assume that if the intensity falls within a certain bin then the impacts *will* fall within the + # bin where the edges are obtained by applying the damage curve to the intensity bin edges. vul = VulnerabilityDistrib( - type(self.event_type), intensity_bin_edges, impact_bins_edges, np.eye(len(impact_bins_edges) - 1) + type(self.hazard_type), intensity_bin_edges, impact_bins_edges, np.eye(len(impact_bins_edges) - 1) ) - event = HazardEventDistrib(type(self.event_type), intensity_bin_edges, probs) + event = HazardEventDistrib(type(self.hazard_type), intensity_bin_edges, probs) return vul, event diff --git a/src/physrisk/requests.py b/src/physrisk/requests.py index 2717202a..1aa31fe5 100644 --- a/src/physrisk/requests.py +++ b/src/physrisk/requests.py @@ -2,7 +2,7 @@ import json from importlib import import_module from pathlib import PosixPath -from typing import Any, Dict, List, Optional, cast +from typing import Any, Dict, List, Optional, Sequence, Type, cast import numpy as np @@ -16,7 +16,8 @@ from physrisk.data.zarr_reader import ZarrReader from physrisk.hazard_models.core_hazards import get_default_source_paths from physrisk.kernel.exposure import JupterExposureMeasure, calculate_exposures -from physrisk.kernel.risk import AssetLevelRiskModel, BatchId, MeasureKey +from physrisk.kernel.hazards import all_hazards +from physrisk.kernel.risk import AssetLevelRiskModel, BatchId, Measure, MeasureKey from .api.v1.hazard_data import ( HazardAvailabilityRequest, @@ -35,7 +36,12 @@ AssetImpactResponse, AssetLevelImpact, Assets, - AssetSingleHazardImpact, + AssetSingleImpact, + AssetsRiskScores, + HazardRiskMeasures, + RiskKey, + RiskMeasures, + ScoreBasedRiskMeasureDefinition, ) from .data.image_creator import ImageCreator from .data.inventory import EmbeddedInventory, Inventory @@ -66,16 +72,18 @@ def __init__( def get(self, *, request_id, request_dict): if request_id == "get_hazard_data": request = HazardDataRequest(**request_dict) - return json.dumps(_get_hazard_data(request, hazard_model=self.hazard_model).dict()) # , allow_nan=False) + return json.dumps( + _get_hazard_data(request, hazard_model=self.hazard_model).model_dump() + ) # , allow_nan=False) elif request_id == "get_hazard_data_availability": request = HazardAvailabilityRequest(**request_dict) - return json.dumps(_get_hazard_data_availability(request, self.inventory, self.colormaps).dict()) + return json.dumps(_get_hazard_data_availability(request, self.inventory, self.colormaps).model_dump()) elif request_id == "get_hazard_data_description": request = HazardDescriptionRequest(**request_dict) return json.dumps(_get_hazard_data_description(request).dict()) elif request_id == "get_asset_exposure": request = AssetExposureRequest(**request_dict) - return json.dumps(_get_asset_exposures(request, self.hazard_model).dict(exclude_none=True)) + return json.dumps(_get_asset_exposures(request, self.hazard_model).model_dump(exclude_none=True)) elif request_id == "get_asset_impact": request = AssetImpactRequest(**request_dict) return dumps(_get_asset_impacts(request, self.hazard_model).dict()) @@ -205,9 +213,9 @@ def _get_hazard_data(request: HazardDataRequest, hazard_model: HazardModel): intensity_curves = [ IntensityCurve(intensities=list(resp.intensities), return_periods=list(resp.return_periods)) if isinstance(resp, hmHazardEventDataResponse) - else IntensityCurve(intensities=[resp.parameter], return_periods=[]) + else IntensityCurve(intensities=[float(resp.parameter)], return_periods=[]) if isinstance(resp, HazardParameterDataResponse) - else None + else IntensityCurve(intensities=[], return_periods=[]) for resp in resps ] response.items.append( @@ -271,18 +279,17 @@ def _get_asset_impacts(request: AssetImpactRequest, hazard_model: HazardModel): years = [request.year] if request.include_measures: batch_impacts, measures = risk_model.calculate_risk_measures(assets, scenarios, years) + measure_ids_for_asset, definitions = risk_model.populate_measure_definitions(assets) + risk_measures = _create_risk_measures(measures, measure_ids_for_asset, definitions, assets, scenarios, years) else: batch_impacts = risk_model.calculate_impacts(assets, scenarios, years) - measures = None + risk_measures = None - # results = calculate_impacts( - # assets, hazard_model, vulnerability_models, scenario=request.scenario, year=request.year - # ) results = batch_impacts[BatchId(scenarios[0], years[0])] # note that this does rely on ordering of dictionary (post 3.6) - impacts: Dict[Asset, List[AssetSingleHazardImpact]] = {} - for (asset, hazard_type), v in results.items(): + impacts: Dict[Asset, List[AssetSingleImpact]] = {} + for (asset, _), v in results.items(): # calculation details if v.event is not None and v.vulnerability is not None: hazard_exceedance = v.event.to_exceedance_curve() @@ -302,11 +309,9 @@ def _get_asset_impacts(request: AssetImpactRequest, hazard_model: HazardModel): ) impact_exceedance = v.impact.to_exceedance_curve() - measure_key = MeasureKey(asset, scenarios[0], years[0], v.impact.hazard_type) - hazard_impacts = AssetSingleHazardImpact( + hazard_impacts = AssetSingleImpact( hazard_type=v.impact.hazard_type.__name__, impact_type=v.impact.impact_type.name, - risk_measure=None if measures is None or measure_key not in measures else measures[measure_key], impact_exceedance=ExceedanceCurve( values=impact_exceedance.values, exceed_probabilities=impact_exceedance.probs ), @@ -320,7 +325,67 @@ def _get_asset_impacts(request: AssetImpactRequest, hazard_model: HazardModel): asset_impacts = [AssetLevelImpact(asset_id="", impacts=a) for a in impacts.values()] - return AssetImpactResponse(asset_impacts=asset_impacts) + return AssetImpactResponse(asset_impacts=asset_impacts, risk_measures=risk_measures) + + +def _create_risk_measures( + measures: Dict[MeasureKey, Measure], + measure_ids_for_asset: Dict[Type[Hazard], List[str]], + definitions: Dict[ScoreBasedRiskMeasureDefinition, str], + assets: List[Asset], + scenarios: Sequence[str], + years: Sequence[int], +) -> RiskMeasures: + """Prepare RiskMeasures object for (JSON) output from measure results. + + Args: + measures (Dict[MeasureKey, Measure]): The score-based risk measures. + measure_ids_for_asset (Dict[Type[Hazard], List[str]]): IDs of the score-based risk measures + for each asset. + definitions (Dict[ScoreBasedRiskMeasureDefinition, str]): Map of the score-based risk measures + definitions to ID. + assets (List[Asset]): Assets. + scenarios (Sequence[str]): Scenario IDs. + years (Sequence[int]): Years. + + Returns: + RiskMeasures: Output for writing to JSON. + """ + hazard_types = all_hazards() + hazard_risk_measures = [] + for hazard_type in hazard_types: + # assets_risk_scores contains the hazard scores for each scenario and year + assets_risk_scores: List[AssetsRiskScores] = [] + # if all asset measure IDs are empty + for scenario_id in scenarios: + for year in years: + # we calculate and tag results for each scenario, year and hazard + score_key = RiskKey(scenario_id=scenario_id, year=str(year)) + scores = [-1] * len(assets) + measures_0 = [float("nan")] * len(assets) + for i, asset in enumerate(assets): + # look up result using the MeasureKey: + measure_key = MeasureKey(asset=asset, prosp_scen=scenario_id, year=year, hazard_type=hazard_type) + measure = measures.get(measure_key, None) + if measure is not None: + scores[i] = measure.score + measures_0[i] = measure.measure_0 + assets_risk_scores.append( + AssetsRiskScores(key=score_key, scores=scores, measures_0=measures_0, measures_1=None) + ) + hazard_risk_measures.append( + HazardRiskMeasures( + hazard_type=hazard_type.__name__, + scores_for_assets=assets_risk_scores, + measures_for_assets=None, + score_measure_ids_for_assets=measure_ids_for_asset[hazard_type], + ) + ) + return RiskMeasures( + hazard_risk_measures=hazard_risk_measures, + score_definitions={v: k for (k, v) in definitions.items()}, + measures_definitions=None, + ) def _get_example_portfolios() -> List[Assets]: diff --git a/src/physrisk/risk_models/risk_models.py b/src/physrisk/risk_models/risk_models.py index ee56da87..f66b511c 100644 --- a/src/physrisk/risk_models/risk_models.py +++ b/src/physrisk/risk_models/risk_models.py @@ -1,9 +1,9 @@ -from typing import List +from typing import Set -from physrisk.api.v1.impact_req_resp import Category, Indicator, RiskMeasureResult -from physrisk.kernel.hazards import CoastalInundation, Hazard, HazardKind, RiverineInundation +from physrisk.api.v1.impact_req_resp import Category, RiskScoreValue, ScoreBasedRiskMeasureDefinition +from physrisk.kernel.hazards import CoastalInundation, RiverineInundation, Wind from physrisk.kernel.impact_distrib import ImpactDistrib -from physrisk.kernel.risk import RiskMeasureCalculator +from physrisk.kernel.risk import Measure, RiskMeasureCalculator class RealEstateToyRiskMeasures(RiskMeasureCalculator): @@ -11,41 +11,75 @@ class RealEstateToyRiskMeasures(RiskMeasureCalculator): def __init__(self): self.model_summary = {"*Toy* model for real estate risk assessment."} - self._category_defns = { - Category.NODATA: "No information.", - Category.LOW: "Marginal impact on real estate valuation very unlikely under RCP 8.5.", - Category.MEDIUM: "Material marginal impact on real estate valuation unlikely under RCP 8.5.", - Category.HIGH: "Material marginal impact on real estate valuation possible under RCP 8.5.", - Category.REDFLAG: "Material marginal impact on real estate valuation likely under RCP 8.5 " - "with possible impact on availability of insurance.", + self.return_period = 100.0 # criteria based on 1 in 100-year flood or cyclone events + self.measure_thresholds = { + Category.REDFLAG: 0.3, + Category.HIGH: 0.1, + Category.MEDIUM: 0.05, } + definition = ScoreBasedRiskMeasureDefinition( + hazard_types=[RiverineInundation.__name__, CoastalInundation.__name__], + values=[ + RiskScoreValue( + value=Category.REDFLAG, + label="Material marginal impact on valuation very likely.", + description=self._description(Category.REDFLAG), + ), + RiskScoreValue( + value=Category.HIGH, + label="Material marginal impact on valuation likely.", + description=self._description(Category.HIGH), + ), + RiskScoreValue( + value=Category.MEDIUM, + label="Marginal impact on valuation possible.", + description=self._description(Category.MEDIUM), + ), + RiskScoreValue( + value=Category.LOW, + label="Marginal impact on valuation very unlikely.", + description=self._description(Category.LOW), + ), + RiskScoreValue(value=Category.NODATA, label="No data.", description="No data."), + ], + child_measure_ids=["annual_loss_{return_period:0.0f}year"], + ) + self.measure_definitions = [definition] + self._definition_lookup = {RiverineInundation: definition, CoastalInundation: definition} - def calc_measure(self, hazard_type: type, base_impact: ImpactDistrib, impact: ImpactDistrib) -> RiskMeasureResult: - if Hazard.kind(base_impact.hazard_type) == HazardKind.acute: - return_period = 100.0 # criterion based on 1 in 100-year flood events - histo_loss = base_impact.to_exceedance_curve().get_value(1.0 / return_period) - future_loss = impact.to_exceedance_curve().get_value(1.0 / return_period) - loss_increase = future_loss - histo_loss - - if loss_increase > 0.3: - category = Category.REDFLAG - elif loss_increase > 0.1: - category = Category.HIGH - elif loss_increase > 0.05: - category = Category.MEDIUM - else: - category = Category.LOW - - summary = ( - f"Projected 1-in-{return_period:0.0f} year annual loss " - f"increases by {loss_increase*100:0.0f}% of asset value over historical baseline. " + def _description(self, category: Category): + return ( + ( + f"Projected 1-in-{self.return_period:0.0f} year annual loss " + f"increases by less than {self.measure_thresholds[Category.MEDIUM]*100:0.0f}% of asset value " + f"over historical baseline." ) - cat_defn = self._category_defns[category] - indicator = Indicator(value=loss_increase, label=f"{loss_increase * 100:0.0f}%") + if category == Category.LOW + else ( + f"Projected 1-in-{self.return_period:0.0f} year annual loss " + f"increases by at least {self.measure_thresholds[category]*100:0.0f}% of asset value over " + f"historical baseline." + ) + ) + + def calc_measure(self, hazard_type: type, base_impact: ImpactDistrib, impact: ImpactDistrib) -> Measure: + return_period = 100.0 # criterion based on 1 in 100-year flood events + histo_loss = base_impact.to_exceedance_curve().get_value(1.0 / return_period) + future_loss = impact.to_exceedance_curve().get_value(1.0 / return_period) + loss_increase = future_loss - histo_loss - return RiskMeasureResult(category=category, cat_defn=cat_defn, indicators=[indicator], summary=summary) + if loss_increase > self.measure_thresholds[Category.REDFLAG]: + score = Category.REDFLAG + elif loss_increase > self.measure_thresholds[Category.HIGH]: + score = Category.HIGH + elif loss_increase > self.measure_thresholds[Category.MEDIUM]: + score = Category.MEDIUM else: - raise NotImplementedError() + score = Category.LOW + return Measure(score=score, measure_0=loss_increase, definition=self.get_definition(hazard_type)) + + def get_definition(self, hazard_type: type): + return self._definition_lookup.get(hazard_type, None) - def supported_hazards(self) -> List[type]: - return [RiverineInundation, CoastalInundation] + def supported_hazards(self) -> Set[type]: + return set([RiverineInundation, CoastalInundation, Wind]) diff --git a/src/physrisk/vulnerability_models/real_estate_models.py b/src/physrisk/vulnerability_models/real_estate_models.py index 7e839e31..32e2efca 100644 --- a/src/physrisk/vulnerability_models/real_estate_models.py +++ b/src/physrisk/vulnerability_models/real_estate_models.py @@ -8,8 +8,13 @@ from physrisk.kernel.vulnerability_matrix_provider import VulnMatrixProvider from physrisk.kernel.vulnerability_model import VulnerabilityModel -from ..kernel.hazards import CoastalInundation, RiverineInundation -from ..kernel.vulnerability_model import applies_to_events, checked_beta_distrib, get_vulnerability_curves_from_resource +from ..kernel.hazards import CoastalInundation, RiverineInundation, Wind +from ..kernel.vulnerability_model import ( + DeterministicVulnerabilityModel, + applies_to_events, + checked_beta_distrib, + get_vulnerability_curves_from_resource, +) class RealEstateInundationModel(VulnerabilityModel): @@ -112,3 +117,37 @@ def __init__( resource=resource, impact_bin_edges=impact_bin_edges, ) + + +class GenericTropicalCycloneModel(DeterministicVulnerabilityModel): + def __init__(self): + """A very simple generic tropical cyclone vulnerability model.""" + v_half = 74.7 # m/s + intensities = np.arange(0, 100, 10) + impacts = self.wind_damage(intensities, v_half) + super().__init__( + hazard_type=Wind, + damage_curve_intensities=intensities, + damage_curve_impacts=impacts, + indicator_id="max_speed", + ) + + def wind_damage(self, v: np.ndarray, v_half: float): + """Calculates damage based on functional form of + Emanuel K. Global warming effects on US hurricane damage. Weather, Climate, and Society. 2011 Oct 1;3(4):261-8. + Using a threshold speed of 25.7 m/s. + A review of the origin of parameters is available in + Eberenz S, Lüthi S, Bresch DN. Regional tropical cyclone impact functions for + globally consistent risk assessments. + Natural Hazards and Earth System Sciences. 2021 Jan 29;21(1):393-415. + which also provides suggested region-specific variations. + Args: + v (np.ndarray[float]): Wind speeds at which to calculate the fractional damage. + v_half (float): The 'v_half' function parameter. + + Returns: + np.ndarray[float]: Fractional damage. + """ + v_thresh = 25.7 # m/s + vn = np.where(v > v_thresh, v - v_thresh, 0) / (v_half - v_thresh) + return vn**3 / (1 + vn**3) diff --git a/src/test/api/test_data_requests.py b/src/test/api/test_data_requests.py index 7aee8fab..56a7b906 100644 --- a/src/test/api/test_data_requests.py +++ b/src/test/api/test_data_requests.py @@ -1,4 +1,3 @@ -import json import unittest from test.api.container import TestContainer from test.base_test import TestWithCredentials @@ -131,6 +130,13 @@ def test_zarr_reading_live(self): container = Container() requester = container.requester() + import json + from zipfile import ZipFile + + with ZipFile("src/test/api/test_lat_lons.json.zip") as z: + with z.open("test_lat_lons.json") as f: + data = json.loads(f.read()) + request1 = { "items": [ { @@ -145,6 +151,20 @@ def test_zarr_reading_live(self): ], } + request1 = { + "items": [ + { + "request_item_id": "test_inundation", + "event_type": "ChronicHeat", + "longitudes": data["longitudes"], + "latitudes": data["latitudes"], + "year": 2030, + "scenario": "ssp585", + "indicator_id": "mean_work_loss/high", + } + ], + } + response_floor = requester.get(request_id="get_hazard_data", request_dict=request1) request1["interpolation"] = "linear" # type: ignore response_linear = requester.get(request_id="get_hazard_data", request_dict=request1) diff --git a/src/test/api/test_impact_requests.py b/src/test/api/test_impact_requests.py index 49489243..6f0024d9 100644 --- a/src/test/api/test_impact_requests.py +++ b/src/test/api/test_impact_requests.py @@ -96,4 +96,6 @@ def test_example_portfolios(self): container = Container() requester = container.requester() response = requester.get(request_id="get_asset_impact", request_dict=request_dict) + with open("out.json", "w") as f: + f.write(response) assert response is not None diff --git a/src/test/api/test_lat_lons.json.zip b/src/test/api/test_lat_lons.json.zip new file mode 100644 index 0000000000000000000000000000000000000000..a8529d3d0a8d0e5c64fcfaa2f176c5b8977decc6 GIT binary patch literal 196491 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⁢YFGF&>V$fv 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 M{I*r+yqV4k1xYj)YGY~X2yFhuEIf76 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 literal 0 HcmV?d00001 diff --git a/src/test/kernel/test_exposure.py b/src/test/kernel/test_exposure.py index 49facf16..98dbdec3 100644 --- a/src/test/kernel/test_exposure.py +++ b/src/test/kernel/test_exposure.py @@ -36,7 +36,7 @@ def test_jupiter_exposure_service(self): ] ) request = AssetExposureRequest(assets=assets_api, scenario="ssp585", year=2050) - response = requester.get(request_id="get_asset_exposure", request_dict=request.dict()) + response = requester.get(request_id="get_asset_exposure", request_dict=request.model_dump()) result = AssetExposureResponse(**json.loads(response)).items[0] expected = dict((k.__name__, v) for (k, v) in expected.items()) for key in result.exposures.keys(): diff --git a/src/test/kernel/test_live_services.py b/src/test/kernel/test_live_services.py new file mode 100644 index 00000000..f4adab07 --- /dev/null +++ b/src/test/kernel/test_live_services.py @@ -0,0 +1,21 @@ +import pytest +import requests + +# url = "https://physrisk-api2-sandbox.apps.odh-cl1.apps.os-climate.org" +url = "http://127.0.0.1:5000" + + +@pytest.mark.skip("only as example") +def test_live_exposure(): + request = { + "assets": { + "items": [ + {"asset_class": "Asset", "type": None, "location": None, "latitude": 34.556, "longitude": 69.4787} + ] + }, + "calc_settings": {"hazard_interp": "floor"}, + "scenario": "ssp585", + "year": 2050, + } + result = requests.post(url + "/api/get_asset_exposure", json=request) + print(result.json()) diff --git a/src/test/models/test_wind_models.py b/src/test/models/test_wind_models.py new file mode 100644 index 00000000..4909331a --- /dev/null +++ b/src/test/models/test_wind_models.py @@ -0,0 +1,93 @@ +import test.data.hazard_model_store as hms + +import numpy as np + +from physrisk.data.pregenerated_hazard_model import ZarrHazardModel +from physrisk.hazard_models.core_hazards import ResourceSubset, get_default_source_path_provider +from physrisk.kernel.assets import RealEstateAsset +from physrisk.kernel.hazards import Wind +from physrisk.kernel.impact import calculate_impacts +from physrisk.vulnerability_models.real_estate_models import GenericTropicalCycloneModel + + +def test_wind_real_estate_model(): + scenario = "rcp8p5" + year = 2080 + # mock some IRIS data for the calculation: + store, root = hms.zarr_memory_store() + return_periods = [ + 10.0, + 20.0, + 30.0, + 40.0, + 50.0, + 60.0, + 70.0, + 80.0, + 90.0, + 100.0, + 200.0, + 300.0, + 400.0, + 500.0, + 600.0, + 700.0, + 800.0, + 900.0, + 1000.0, + ] + intensity = np.array( + [ + 37.279999, + 44.756248, + 48.712502, + 51.685001, + 53.520000, + 55.230000, + 56.302502, + 57.336250, + 58.452499, + 59.283749, + 63.312500, + 65.482498, + 66.352501, + 67.220001, + 67.767502, + 68.117500, + 68.372498, + 69.127502, + 70.897499, + ] + ) + shape, transform = hms.shape_transform_21600_43200(return_periods=return_periods) + path = f"wind/iris/v1/max_speed_{scenario}_{year}".format(scenario=scenario, year=year) + hms.add_curves( + root, hms.TestData.longitudes, hms.TestData.latitudes, path, shape, intensity, return_periods, transform + ) + + provider = get_default_source_path_provider() + + def select_iris_osc(candidates: ResourceSubset, scenario: str, year: int, hint=None): + return candidates.with_group_id("iris_osc").first() + + # specify use of IRIS (OSC contribution) + provider.add_selector(Wind, "max_speed", select_iris_osc) + + hazard_model = ZarrHazardModel(source_paths=provider.source_paths(), store=store) + assets = [ + RealEstateAsset(lat, lon, location="Asia", type="Buildings/Industrial") + for lon, lat in zip(hms.TestData.longitudes[0:1], hms.TestData.latitudes[0:1]) + ] + vulnerability_models = {RealEstateAsset: [GenericTropicalCycloneModel()]} + results = calculate_impacts(assets, hazard_model, vulnerability_models, scenario=scenario, year=year) + # check calculation + cum_probs = 1.0 / np.array(return_periods) + probs = cum_probs[:-1] - cum_probs[1:] + model = GenericTropicalCycloneModel() + edges = np.interp(intensity, model.damage_curve_intensities, model.damage_curve_impacts) + centres = (edges[1:] + edges[:-1]) / 2 + mean_check = np.sum(probs * centres) + + impact_distrib = results[(assets[0], Wind)].impact + mean_impact = impact_distrib.mean_impact() + np.testing.assert_allclose(mean_impact, mean_check) diff --git a/src/test/risk_models/test_risk_models.py b/src/test/risk_models/test_risk_models.py index 75068321..7ec09aac 100644 --- a/src/test/risk_models/test_risk_models.py +++ b/src/test/risk_models/test_risk_models.py @@ -10,13 +10,12 @@ from physrisk.kernel.assets import RealEstateAsset from physrisk.kernel.calculation import get_default_vulnerability_models from physrisk.kernel.hazards import CoastalInundation, RiverineInundation -from physrisk.kernel.risk import AssetLevelRiskModel, MeasureKey +from physrisk.kernel.risk import AssetLevelRiskModel +from physrisk.requests import _create_risk_measures from physrisk.risk_models.risk_models import RealEstateToyRiskMeasures class TestRiskModels(unittest.TestCase): - """Tests RealEstateInundationModel.""" - def test_risk_indicator_model(self): source_paths = get_default_source_paths() scenarios = ["rcp8p5"] @@ -50,8 +49,20 @@ def sp_coastal(scenario, year): for lon, lat in zip(TestData.longitudes[0:1], TestData.latitudes[0:1]) ] + assets = [ + RealEstateAsset(TestData.latitudes[0], TestData.longitudes[0], location="Asia", type="Buildings/Industrial") + for i in range(100) + ] + model = AssetLevelRiskModel( hazard_model, get_default_vulnerability_models(), {RealEstateAsset: RealEstateToyRiskMeasures()} ) - impacts, measures = model.calculate_risk_measures(assets, prosp_scens=scenarios, years=years) - print(measures[MeasureKey(assets[0], scenarios[0], years[0], RiverineInundation)]) + measure_ids_for_asset, definitions = model.populate_measure_definitions(assets) + _, measures = model.calculate_risk_measures(assets, prosp_scens=scenarios, years=years) + + risk_measures = _create_risk_measures(measures, measure_ids_for_asset, definitions, assets, scenarios, years) + + #with open("test.json", "w") as f: + # f.write(risk_measures.model_dump_json()) + + # print(measures[MeasureKey(assets[0], scenarios[0], years[0], RiverineInundation)]) From 5c9cdf97eefb82222094cf7e01f47a255c28e02b Mon Sep 17 00:00:00 2001 From: Joe Moorhouse Date: Mon, 16 Oct 2023 20:32:49 +0100 Subject: [PATCH 2/2] Change scores API Signed-off-by: Joe Moorhouse --- src/physrisk/api/v1/impact_req_resp.py | 68 +++++++----------------- src/physrisk/requests.py | 37 ++++++------- src/test/risk_models/test_risk_models.py | 28 +++++++--- 3 files changed, 57 insertions(+), 76 deletions(-) diff --git a/src/physrisk/api/v1/impact_req_resp.py b/src/physrisk/api/v1/impact_req_resp.py index 6840fa21..592444ab 100644 --- a/src/physrisk/api/v1/impact_req_resp.py +++ b/src/physrisk/api/v1/impact_req_resp.py @@ -35,43 +35,8 @@ class Category(int, Enum): REDFLAG = 4 -class RiskKey(BaseModel): - scenario_id: str - year: str - - -class RiskMeasureKey(RiskKey): - risk_measure_id: str = Field("", description="Identifier of the risk measure.") - - -class AssetsRiskScores(BaseModel): - """Risk scores for a set of assets, with risk measures used to calculate the measures. - A single score may be derived from multiple risk measures in principle, the measures are identified - by the ScoreBasedMeasureDefinition corresponding to the asset. - In principle multiple measures may be used to compute the score, hence 'measures_0', 'measures_1' etc, - although no example yet. - """ - - key: RiskKey - scores: List[int] = Field(None, description="Identifier for the risk measure.") - measures_0: List[float] - measures_1: Optional[List[float]] - - -class AssetRiskMeasures(BaseModel): - """Risk measures for a set of assets.""" - - key: RiskMeasureKey - measures: List[float] - - -class AssetScoreModel(BaseModel): - asset_model_id: List[str] - - class RiskMeasureDefinition(BaseModel): measure_id: str = Field(None, description="Identifier for the risk measure.") - measure_index: int = Field(None, description="Identifier for the risk measure.") label: str = Field( "