earthengine-api 1.5.23__py3-none-any.whl → 1.5.24__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of earthengine-api might be problematic. Click here for more details.
- {earthengine_api-1.5.23.dist-info → earthengine_api-1.5.24.dist-info}/METADATA +1 -1
- earthengine_api-1.5.24.dist-info/RECORD +107 -0
- ee/__init__.py +3 -3
- ee/_arg_types.py +6 -6
- ee/_cloud_api_utils.py +35 -35
- ee/_helpers.py +2 -2
- ee/apifunction.py +10 -10
- ee/apitestcase.py +9 -9
- ee/batch.py +39 -39
- ee/blob.py +2 -2
- ee/cli/commands.py +15 -15
- ee/cli/utils.py +5 -5
- ee/collection.py +3 -3
- ee/computedobject.py +6 -6
- ee/confusionmatrix.py +2 -2
- ee/customfunction.py +8 -8
- ee/data.py +55 -55
- ee/daterange.py +2 -2
- ee/deprecation.py +4 -4
- ee/dictionary.py +2 -2
- ee/ee_array.py +2 -2
- ee/ee_date.py +2 -2
- ee/ee_list.py +2 -3
- ee/element.py +3 -3
- ee/errormargin.py +2 -2
- ee/feature.py +5 -5
- ee/featurecollection.py +5 -5
- ee/function.py +5 -5
- ee/geometry.py +10 -10
- ee/image.py +19 -19
- ee/image_converter.py +2 -2
- ee/imagecollection.py +7 -7
- ee/oauth.py +4 -4
- ee/pixeltype.py +2 -2
- ee/projection.py +2 -2
- ee/serializer.py +5 -5
- ee/table_converter.py +4 -4
- ee/tests/blob_test.py +3 -3
- ee/tests/classifier_test.py +3 -3
- ee/tests/clusterer_test.py +3 -3
- ee/tests/confusionmatrix_test.py +3 -3
- ee/tests/daterange_test.py +4 -4
- ee/tests/deprecation_test.py +2 -2
- ee/tests/dictionary_test.py +3 -3
- ee/tests/ee_array_test.py +3 -3
- ee/tests/ee_date_test.py +4 -4
- ee/tests/ee_list_test.py +3 -3
- ee/tests/ee_number_test.py +3 -3
- ee/tests/ee_string_test.py +3 -3
- ee/tests/feature_test.py +4 -4
- ee/tests/featurecollection_test.py +3 -3
- ee/tests/filter_test.py +4 -4
- ee/tests/geometry_point_test.py +3 -3
- ee/tests/image_test.py +3 -3
- ee/tests/imagecollection_test.py +3 -3
- ee/tests/join_test.py +3 -3
- ee/tests/kernel_test.py +3 -3
- ee/tests/model_test.py +5 -5
- ee/tests/pixeltype_test.py +5 -5
- ee/tests/projection_test.py +3 -3
- ee/tests/reducer_test.py +3 -3
- ee/tests/serializer_test.py +4 -4
- ee/tests/table_converter_test.py +3 -3
- ee/tests/terrain_test.py +3 -3
- earthengine_api-1.5.23.dist-info/RECORD +0 -107
- {earthengine_api-1.5.23.dist-info → earthengine_api-1.5.24.dist-info}/WHEEL +0 -0
- {earthengine_api-1.5.23.dist-info → earthengine_api-1.5.24.dist-info}/entry_points.txt +0 -0
- {earthengine_api-1.5.23.dist-info → earthengine_api-1.5.24.dist-info}/licenses/LICENSE +0 -0
- {earthengine_api-1.5.23.dist-info → earthengine_api-1.5.24.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
earthengine_api-1.5.24.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
2
|
+
ee/__init__.py,sha256=uw-xbOEi8ZcsxQr0Um4YL6BiVXtFlpPW3_9In4N_bus,16835
|
|
3
|
+
ee/_arg_types.py,sha256=AHSPCNoJt1PPO0OTzCby-BxtQ1-SQ29vtHa3sl65H-M,2635
|
|
4
|
+
ee/_cloud_api_utils.py,sha256=MU0ClQVZ5g79um27zcxt0A6bZSt2Pdwcd2nKz6KicU8,32466
|
|
5
|
+
ee/_helpers.py,sha256=VPVxUSKZggPbkygWivInv86bE8TpP5hVU6qAtYcKbqQ,4678
|
|
6
|
+
ee/_utils.py,sha256=SAXQ_ZefZUaOtyV6Lp3pdYqEFqblMEA6Bvxz0ltLjzA,1329
|
|
7
|
+
ee/apifunction.py,sha256=f2IVdqMZcj0uIsk7Ku0-1EzPg9NuXt_CSlNc1opfYQQ,8792
|
|
8
|
+
ee/apitestcase.py,sha256=ARg3YZaQktYqO7PPvAdYQWU2e3kN6KfcfR8pWvPHSKc,14932
|
|
9
|
+
ee/batch.py,sha256=dgXBddhKrHMi8JBqhb2FbgPYJRrokM7fxuxCcIanaek,82672
|
|
10
|
+
ee/blob.py,sha256=cKv_FGsunBqK06zm92HZbW400XMmFjGc9KB6qjBytDM,3205
|
|
11
|
+
ee/classifier.py,sha256=bvXDGZN9_XyGeDPc72mU-Y5piw1uus5vRec0Kitm7NY,23610
|
|
12
|
+
ee/clusterer.py,sha256=ndim_Iu3BFuOOw46mry1XKSEx_4SmAcLYZvOYIdCaFM,12402
|
|
13
|
+
ee/collection.py,sha256=aZVWqXwGHVwO4B7wkTCsYODUDEtDQSgs-4Zo2OKgKek,32427
|
|
14
|
+
ee/computedobject.py,sha256=sBWH4p1YoJrv10QQ1nzquOH69IepM9xTlR91Gna24_I,9112
|
|
15
|
+
ee/confusionmatrix.py,sha256=gSRG9xUv62psM86J9bpQm7d2lWOTue9ZWFooevMX-64,4260
|
|
16
|
+
ee/customfunction.py,sha256=CLtngmgRbzQ5bVXWjU283-dwikhCATDbBdNMUlbQD5g,7397
|
|
17
|
+
ee/data.py,sha256=y6_S2zAA9T78BpwwGDjdzGzbCqy040o_du6jCMEaAHc,88666
|
|
18
|
+
ee/daterange.py,sha256=8DWQw5ysVuju7a9PKaXHc6g0Bk3WF0QKbaKD5rpwbxs,5003
|
|
19
|
+
ee/deprecation.py,sha256=nyrT4dUumGp5Z1tR7kvszFlyh1rbTQbke6SaJKmsa-w,6062
|
|
20
|
+
ee/deserializer.py,sha256=sIQB-4jcZFmG40jMfxTFc1Eq9RaMxsH4WbYqhvaKSO0,8432
|
|
21
|
+
ee/dictionary.py,sha256=RH_mJQ6yYPgkHKFk1zJpjxtzWVyErnv2tLNft-TkJ_I,10548
|
|
22
|
+
ee/ee_array.py,sha256=oCKU3s-UGIWF4_gzOrWwesd8A5HFF0h22l5ruohtCIA,36369
|
|
23
|
+
ee/ee_date.py,sha256=qooNVKSNyCDQ1dQfoV4qOQC8B6hhjWH6vCYtg4qY2NM,10833
|
|
24
|
+
ee/ee_exception.py,sha256=uN3X76HuhicU0LTxqRKQu1ZU6L7zw0GuABgsBTT-Ycw,164
|
|
25
|
+
ee/ee_list.py,sha256=KI4RfMeYyGHN-XwPru9vqtqpsKWAHWhXNiZoZo9vBkI,19876
|
|
26
|
+
ee/ee_number.py,sha256=zb5LyiA4j24ml-B8ib4DTFne0Dzry2K4bSYhEdturtI,22615
|
|
27
|
+
ee/ee_string.py,sha256=gNMEJIWxRGiAa-FQrHYeAtEqdU9vJgXv4zyas3DHRZQ,7761
|
|
28
|
+
ee/ee_types.py,sha256=MWfXc0h3KgT8bLraI6qw-b0D3ogVkY5aDZKM3eoTsJA,3089
|
|
29
|
+
ee/element.py,sha256=EgRf6YYn5ZNGVHJLRkAaYJv4qjw7bg483y2oPi1hc24,6299
|
|
30
|
+
ee/encodable.py,sha256=ZzZBOVOEwc8a8Dby3oHwIhW-5za-4tvLDE0Q2oVaNwQ,1884
|
|
31
|
+
ee/errormargin.py,sha256=RVVVUIvAatipOol8UKCiRm5uUronipo0-o-ZbcAsE_M,3055
|
|
32
|
+
ee/feature.py,sha256=WftCIcSnWaoD7ZLb4AmBlHgdZbapc5oWCU0z4vl3a2g,30537
|
|
33
|
+
ee/featurecollection.py,sha256=0lHdbt-4OUSJitNXPYrfzb1Czzx7M-KkLs2Mg9Dj42U,14498
|
|
34
|
+
ee/filter.py,sha256=YFkir1W4QOBvoWM8OF_LdcEBDZu5YNGey4hgA0iILUw,35616
|
|
35
|
+
ee/function.py,sha256=wafVmduEdmT9vK2EsQLYfqAojKXMXaFhQpuk6El6wbw,7057
|
|
36
|
+
ee/geometry.py,sha256=YChyZ86DxpJcLEnjcTYFwqJSvL9uZfIEVmBnoCkHN7Y,59576
|
|
37
|
+
ee/image.py,sha256=RFlQEJ_xDqc-TbhzRAtEFKaBfmfMVhyCgwr5Q_sRh40,171630
|
|
38
|
+
ee/image_converter.py,sha256=QKVevJUoptYjAt778eQ99BkxvmI8W_Tv2iyiiW-k_AI,1500
|
|
39
|
+
ee/imagecollection.py,sha256=RFVjm-BgI8-3IjDTSCurgMMbyORP7yhB5cPvQAkSSoA,27122
|
|
40
|
+
ee/join.py,sha256=bzdGeNSIOYZf9MD5gekDRpQ9oAOuKsSftrPM3e7xssQ,7646
|
|
41
|
+
ee/kernel.py,sha256=xppt5uEQnP1BQl0XxJ8XT-pwbFl_MdggZWfBSQRGA9I,15196
|
|
42
|
+
ee/mapclient.py,sha256=QpUpKreEgOkjSXQBnfyViCwLQGiumHbKr-EA076XLYk,17500
|
|
43
|
+
ee/model.py,sha256=nXn0qhwKgiTA6xOUQ7aFe0o6Mis68hiywLoY9twLOj0,12185
|
|
44
|
+
ee/oauth.py,sha256=US64sivVT9WyFoN3aHQEKEztg1ssUm76GY4B0SLm8nw,21900
|
|
45
|
+
ee/pixeltype.py,sha256=Q1wa9RbXpMLCjY1SKIaaIJpFgscfDInkOa19S8DPrEA,5229
|
|
46
|
+
ee/projection.py,sha256=kd7i22y_xV175R1rMntczZAteXflflU6UFrev854x88,5857
|
|
47
|
+
ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
|
+
ee/reducer.py,sha256=lO4zuuZ5bSrK_wvmm6hBcAcZ33ebhvmHeYCyFLStmro,33886
|
|
49
|
+
ee/serializer.py,sha256=oT5XBf8YsuvkDLvScmzJBHsoLWQ1olL36MkcZvWrg_k,22817
|
|
50
|
+
ee/table_converter.py,sha256=XeLPo1EU1g2qZ8bSA2-qE8XPSW1mOZod7jpwClpkBRY,2067
|
|
51
|
+
ee/terrain.py,sha256=eDXtUVJkdQqvsjQmygCgHTLJKPB0FLi7H849NegDyp8,4910
|
|
52
|
+
ee/cli/__init__.py,sha256=YjzBDuYi6fiOv77Xfl-Qib2O6gRZj9z7Sx2Zz6teTXU,33
|
|
53
|
+
ee/cli/commands.py,sha256=o_Mv0OcgI1k_ddOz-_M6Q13iNZOQ5OSifug3cPwxGXM,71425
|
|
54
|
+
ee/cli/eecli.py,sha256=iws34w24UJI6H7Wl9WsEUwy-uN57Pw-bgHtr2f92olY,3044
|
|
55
|
+
ee/cli/eecli_wrapper.py,sha256=Z7R3IJcht2uG1h57oY7BSrkPiwQzNmmYlyCSX1_7L7c,1089
|
|
56
|
+
ee/cli/utils.py,sha256=Gnd5It-ty5rJyRcIG_fCPUdFNX79K__C1vf3REvq3t0,13845
|
|
57
|
+
ee/tests/_cloud_api_utils_test.py,sha256=SANsImcCZDnEcbV0nBFwT5QYM76XtAuppFns5SurM-o,18816
|
|
58
|
+
ee/tests/_helpers_test.py,sha256=exOYxGKSiXHKQF3Tn189LVfP7wcAXbmAy3BkS0690yY,1941
|
|
59
|
+
ee/tests/_utils_test.py,sha256=bOarVj3U-VFo9Prog8WQN_hAOMwJOiWKJxevUbdFPBQ,2753
|
|
60
|
+
ee/tests/algorithms.json,sha256=Vx1Kx_MhHv0z0B3WTeVAvchM8xVd3zYE7L-qT3gDGzA,729368
|
|
61
|
+
ee/tests/apifunction_test.py,sha256=62El-6jcgQmD7qt9eEDdM7IeIQmpV8M5xQ439g-zfN4,3767
|
|
62
|
+
ee/tests/batch_test.py,sha256=UdNmismzpVhH_h_iTNvfHIru9Sa8RyoN2WVSmwScZF4,62212
|
|
63
|
+
ee/tests/blob_test.py,sha256=2Y-btrQ8FQqmf1ccYR8hLzdCaM5uoHfSoB7a5OziTxA,3575
|
|
64
|
+
ee/tests/classifier_test.py,sha256=K6-wNZ2uh9oPYo7BV0vtfU73SBFpeNcFRMRmvEFc6Pg,19087
|
|
65
|
+
ee/tests/cloud_api_discovery_document.json,sha256=SnOeL8One57YdeHa7XxGZM-ptDPCeDSymBc7-Bo_hkA,41154
|
|
66
|
+
ee/tests/clusterer_test.py,sha256=B4m06wAtBeqvnIhRD2lnNy1UHDB_caleK_CqcrAU8dk,11620
|
|
67
|
+
ee/tests/collection_test.py,sha256=dnZwFADWQ8oShJHRTcYSzuP-waAxetTdM_CtVckWbMM,7563
|
|
68
|
+
ee/tests/computedobject_test.py,sha256=B27rDq9Urpvy0WqpdbKRYbt6AcT1i93HX-es7hrhWVY,4840
|
|
69
|
+
ee/tests/confusionmatrix_test.py,sha256=46JJh1-91AiYISXWZ6-2lvY5_Njvc8ompO9kmwqlFdg,7437
|
|
70
|
+
ee/tests/data_test.py,sha256=HNHI2RDL9oFzA_-dG48zYtpc10I9HeCdFa5vtyndInY,35299
|
|
71
|
+
ee/tests/daterange_test.py,sha256=a5fpg2lko3kCJzxQPCoAc_vjXkKy2zYcXbeSZKAFovI,8583
|
|
72
|
+
ee/tests/deprecation_test.py,sha256=_sCs59l6c-ijeyt5yPO-IRJsh8GGPp7ArSg3Y12u4mQ,8352
|
|
73
|
+
ee/tests/deserializer_test.py,sha256=-tbrL0cjrXdSLF7M3wl-QQuj6TjXJdkjp7RZvVErUy4,3427
|
|
74
|
+
ee/tests/dictionary_test.py,sha256=_OCE4i-NWECPnnrT4C54nUZ_2V8PyZvpTqAdKHAkvq8,11809
|
|
75
|
+
ee/tests/ee_array_test.py,sha256=JVXShdbOVOjlfSpNgYc_NVrknQatuPOZ19fG0Ii5yVU,50268
|
|
76
|
+
ee/tests/ee_date_test.py,sha256=8rLUXfjyiW3LiBOCSneA7ZGgmoFgN5oZr58x5THtKGY,11106
|
|
77
|
+
ee/tests/ee_list_test.py,sha256=yd2EWZGdg7pLJhsHSR5AbK58ZhT31GY-n2o1dDT3p9A,21797
|
|
78
|
+
ee/tests/ee_number_test.py,sha256=3MxX8Awie_L3FfwyltrL2UXNdqTyvtYJB9qIi73wlPM,33442
|
|
79
|
+
ee/tests/ee_string_test.py,sha256=9QuseILwZtbcczCyNyJ751kva96_9gPKXLRdgkgWMPs,9389
|
|
80
|
+
ee/tests/ee_test.py,sha256=t_YzfCBkKkqf4MM9yT8pN2Rb2S3FNp_3-CvkKe-uEHc,17064
|
|
81
|
+
ee/tests/ee_types_test.py,sha256=oRnqplaTWg47zuYfAYTTVwembCnw8XT20HPNMdAvgNE,921
|
|
82
|
+
ee/tests/element_test.py,sha256=Kqu_Z65FQcYHX4LebKm3LD0mWkRTRZccs-qAGz3bLsE,1964
|
|
83
|
+
ee/tests/errormargin_test.py,sha256=UVi3YcpUvo4nQCJJ3hE5a28bBTWeDt1gYvkZ2tkTNco,5066
|
|
84
|
+
ee/tests/feature_test.py,sha256=9SotWgRsQ48xZ9N-grlEWZjeamsWweXPS4sMSZCGX-s,22505
|
|
85
|
+
ee/tests/featurecollection_test.py,sha256=b3SwieXb8nyRzAlwKK_nSa4xGcy5AynIDZ1A3sV02Es,38440
|
|
86
|
+
ee/tests/filter_test.py,sha256=d-KQ_zI-r7BAMazKqqHMMzNUZdeC46BZiciMfthKEO8,35033
|
|
87
|
+
ee/tests/function_test.py,sha256=NbluwBCuWUZSzbMLAa04OP_qd95ibMjJWWNuM2P3Izo,3121
|
|
88
|
+
ee/tests/geometry_point_test.py,sha256=w9MYTwvw2Co9rIjffFB0ezQ_jZz8nxbdgOcyhqTTmjk,15093
|
|
89
|
+
ee/tests/geometry_test.py,sha256=z010i7CgwX8taJGk0NaMh6ArUDTIZllFgyZrMSpNFlI,30732
|
|
90
|
+
ee/tests/image_converter_test.py,sha256=kBFq3Ij2mNuAAMoUDqyT0IH2XzHtn9MCiijzyQxGifU,1891
|
|
91
|
+
ee/tests/image_test.py,sha256=_SJmee7orPot26vbxKEZcNZ6OsrNrxv3ToInWYLNZLM,150917
|
|
92
|
+
ee/tests/imagecollection_test.py,sha256=qosRZXCbhwFuy8qR7DbA-FMl4ktW7Y2cUJHeXLcszpg,38444
|
|
93
|
+
ee/tests/join_test.py,sha256=pFILq3qM27rO64WYbBC1A_Gs8_pabRv68X7MU_EM_cw,7630
|
|
94
|
+
ee/tests/kernel_test.py,sha256=ZblWHqgleJ-7C4lnL7awxfR1mcYtcxpXkkKUziKG2cA,19249
|
|
95
|
+
ee/tests/model_test.py,sha256=f2oLaDaAEr23QjkIAhBKY1Mt8CSRmo5N1-fyYRGd5j8,12053
|
|
96
|
+
ee/tests/oauth_test.py,sha256=hAGvot2xj1MFW6IdD1QAmSNIiuu4z4gCs3beRhp3U_k,2277
|
|
97
|
+
ee/tests/pixeltype_test.py,sha256=FpO2So2Bt_VeibrwGSo2Y1kgvOXEbLNBy_DC2Z292SA,10069
|
|
98
|
+
ee/tests/projection_test.py,sha256=_U5zDA3bBvLtathGNZHE8AvOXcJq4VjCwg6Tvy695no,6899
|
|
99
|
+
ee/tests/reducer_test.py,sha256=NYJTmX6AmBZyXGjOkgUh4t3tB6E8_vGlPYQIxJQbV9Q,31518
|
|
100
|
+
ee/tests/serializer_test.py,sha256=xZQBQMDK8dlGYLS-6s1JHhR1L5FKoaIwEkxdKlcpQTE,8802
|
|
101
|
+
ee/tests/table_converter_test.py,sha256=UJgt8ck06c9jHL-VOpKSD5VJcH-Wnw-TibtQpONsLbw,3379
|
|
102
|
+
ee/tests/terrain_test.py,sha256=8TmvGconOR-GkGrll4joXhpU9zi0b_8GFxvX_JlcCos,4328
|
|
103
|
+
earthengine_api-1.5.24.dist-info/METADATA,sha256=7LXGPodu9qYKF9EAX_ONRA0VCRNQ1zlSqrFqIoTMmR0,2143
|
|
104
|
+
earthengine_api-1.5.24.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
105
|
+
earthengine_api-1.5.24.dist-info/entry_points.txt,sha256=-Ax4SCU-S474r8OD2LIxata6PRmkZoDrppQ4fP_exNc,50
|
|
106
|
+
earthengine_api-1.5.24.dist-info/top_level.txt,sha256=go5zOwCgm5lIS3yTR-Vsxp1gNI4qdS-MP5eY-7zMxVY,3
|
|
107
|
+
earthengine_api-1.5.24.dist-info/RECORD,,
|
ee/__init__.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""The EE Python library."""
|
|
2
2
|
|
|
3
|
-
__version__ = '1.5.
|
|
3
|
+
__version__ = '1.5.24'
|
|
4
4
|
|
|
5
5
|
# Using lowercase function naming to match the JavaScript names.
|
|
6
6
|
# pylint: disable=g-bad-name
|
|
@@ -10,7 +10,7 @@ import datetime
|
|
|
10
10
|
import inspect
|
|
11
11
|
import os
|
|
12
12
|
import re
|
|
13
|
-
from typing import Any, Hashable,
|
|
13
|
+
from typing import Any, Hashable, Optional, Sequence, Type, Union
|
|
14
14
|
|
|
15
15
|
from google.oauth2 import service_account
|
|
16
16
|
|
|
@@ -66,7 +66,7 @@ from .terrain import Terrain
|
|
|
66
66
|
_HAS_DYNAMIC_ATTRIBUTES = True
|
|
67
67
|
|
|
68
68
|
# A list of autogenerated class names added by _InitializeGeneratedClasses.
|
|
69
|
-
_generatedClasses:
|
|
69
|
+
_generatedClasses: list[str] = []
|
|
70
70
|
|
|
71
71
|
NO_PROJECT_EXCEPTION = ('ee.Initialize: no project found. Call with project='
|
|
72
72
|
' or see http://goo.gle/ee-auth.')
|
ee/_arg_types.py
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
|
|
4
4
|
import datetime
|
|
5
|
-
from typing import Any as AnyType,
|
|
5
|
+
from typing import Any as AnyType, Sequence, Union
|
|
6
6
|
|
|
7
7
|
from ee import classifier
|
|
8
8
|
from ee import clusterer
|
|
@@ -27,7 +27,7 @@ from ee import reducer
|
|
|
27
27
|
|
|
28
28
|
Array = Union[
|
|
29
29
|
AnyType,
|
|
30
|
-
|
|
30
|
+
list[AnyType],
|
|
31
31
|
ee_array.Array,
|
|
32
32
|
ee_list.List,
|
|
33
33
|
computedobject.ComputedObject,
|
|
@@ -43,7 +43,7 @@ Date = Union[
|
|
|
43
43
|
]
|
|
44
44
|
DateRange = Union[daterange.DateRange, computedobject.ComputedObject]
|
|
45
45
|
Dictionary = Union[
|
|
46
|
-
|
|
46
|
+
dict[AnyType, AnyType],
|
|
47
47
|
Sequence[AnyType],
|
|
48
48
|
dictionary.Dictionary,
|
|
49
49
|
computedobject.ComputedObject,
|
|
@@ -68,9 +68,9 @@ ImageCollection = Union[
|
|
|
68
68
|
Integer = Union[int, ee_number.Number, computedobject.ComputedObject]
|
|
69
69
|
Kernel = Union[kernel.Kernel, computedobject.ComputedObject]
|
|
70
70
|
List = Union[
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
list[AnyType],
|
|
72
|
+
tuple[()],
|
|
73
|
+
tuple[AnyType, AnyType],
|
|
74
74
|
ee_list.List,
|
|
75
75
|
computedobject.ComputedObject,
|
|
76
76
|
]
|
ee/_cloud_api_utils.py
CHANGED
|
@@ -11,7 +11,7 @@ import datetime
|
|
|
11
11
|
import json
|
|
12
12
|
import os
|
|
13
13
|
import re
|
|
14
|
-
from typing import Any, Callable,
|
|
14
|
+
from typing import Any, Callable, Optional, Sequence, Type, Union
|
|
15
15
|
import warnings
|
|
16
16
|
|
|
17
17
|
import google_auth_httplib2
|
|
@@ -54,10 +54,10 @@ class _Http:
|
|
|
54
54
|
uri: str,
|
|
55
55
|
method: str = 'GET',
|
|
56
56
|
body: Optional[str] = None,
|
|
57
|
-
headers: Optional[
|
|
57
|
+
headers: Optional[dict[str, str]] = None,
|
|
58
58
|
redirections: Optional[int] = None,
|
|
59
59
|
connection_type: Optional[Type[Any]] = None,
|
|
60
|
-
) ->
|
|
60
|
+
) -> tuple[httplib2.Response, Any]:
|
|
61
61
|
"""Makes an HTTP request using httplib2 semantics."""
|
|
62
62
|
del connection_type # Ignored
|
|
63
63
|
del redirections # Ignored
|
|
@@ -84,7 +84,7 @@ class _Http:
|
|
|
84
84
|
|
|
85
85
|
|
|
86
86
|
def _wrap_request(
|
|
87
|
-
headers_supplier: Callable[[],
|
|
87
|
+
headers_supplier: Callable[[], dict[str, Any]],
|
|
88
88
|
response_inspector: Callable[[Any], None],
|
|
89
89
|
) -> Callable[..., http.HttpRequest]:
|
|
90
90
|
"""Builds a callable that wraps an API request.
|
|
@@ -147,7 +147,7 @@ def build_cloud_resource(
|
|
|
147
147
|
credentials: Optional[Any] = None,
|
|
148
148
|
timeout: Optional[float] = None,
|
|
149
149
|
num_retries: int = 1,
|
|
150
|
-
headers_supplier: Optional[Callable[[],
|
|
150
|
+
headers_supplier: Optional[Callable[[], dict[str, Any]]] = None,
|
|
151
151
|
response_inspector: Optional[Callable[[Any], None]] = None,
|
|
152
152
|
http_transport: Optional[Any] = None,
|
|
153
153
|
raw: Optional[bool] = False,
|
|
@@ -256,12 +256,12 @@ def build_cloud_resource_from_document(
|
|
|
256
256
|
|
|
257
257
|
|
|
258
258
|
def _convert_dict(
|
|
259
|
-
to_convert:
|
|
260
|
-
conversions:
|
|
261
|
-
defaults: Optional[
|
|
259
|
+
to_convert: dict[str, Any],
|
|
260
|
+
conversions: dict[str, Any],
|
|
261
|
+
defaults: Optional[dict[str, Any]] = None,
|
|
262
262
|
key_warnings: bool = False,
|
|
263
263
|
retain_keys: bool = False,
|
|
264
|
-
) ->
|
|
264
|
+
) -> dict[str, Any]:
|
|
265
265
|
"""Applies a set of conversion rules to a dict.
|
|
266
266
|
|
|
267
267
|
Args:
|
|
@@ -294,7 +294,7 @@ def _convert_dict(
|
|
|
294
294
|
The "to_convert" dict with keys renamed, values converted, and defaults
|
|
295
295
|
added.
|
|
296
296
|
"""
|
|
297
|
-
result:
|
|
297
|
+
result: dict[str, Any] = {}
|
|
298
298
|
for key, value in to_convert.items():
|
|
299
299
|
if key in conversions:
|
|
300
300
|
conversion = conversions[key]
|
|
@@ -319,7 +319,7 @@ def _convert_dict(
|
|
|
319
319
|
|
|
320
320
|
|
|
321
321
|
def _convert_value(
|
|
322
|
-
value: str, conversions:
|
|
322
|
+
value: str, conversions: dict[str, Any], default: Any) -> Any:
|
|
323
323
|
"""Converts a value using a set of value mappings.
|
|
324
324
|
|
|
325
325
|
Args:
|
|
@@ -382,7 +382,7 @@ def _convert_bounding_box_to_geo_json(bbox: Sequence[float]) -> str:
|
|
|
382
382
|
lng_min, lat_min, lng_max, lat_max))
|
|
383
383
|
|
|
384
384
|
|
|
385
|
-
def convert_get_list_params_to_list_assets_params(params) ->
|
|
385
|
+
def convert_get_list_params_to_list_assets_params(params) -> dict[str, Any]:
|
|
386
386
|
"""Converts a getList params dict to something usable with listAssets."""
|
|
387
387
|
params = _convert_dict(
|
|
388
388
|
params, {
|
|
@@ -401,7 +401,7 @@ def convert_get_list_params_to_list_assets_params(params) -> Dict[str, Any]:
|
|
|
401
401
|
return convert_list_images_params_to_list_assets_params(params)
|
|
402
402
|
|
|
403
403
|
|
|
404
|
-
def convert_list_assets_result_to_get_list_result(result) ->
|
|
404
|
+
def convert_list_assets_result_to_get_list_result(result) -> list[Any]:
|
|
405
405
|
"""Converts a listAssets result to something getList can return."""
|
|
406
406
|
if 'assets' not in result:
|
|
407
407
|
return []
|
|
@@ -452,8 +452,8 @@ def _convert_list_images_filter_params_to_list_assets_params(params) -> str:
|
|
|
452
452
|
|
|
453
453
|
|
|
454
454
|
def convert_list_images_params_to_list_assets_params(
|
|
455
|
-
params:
|
|
456
|
-
) ->
|
|
455
|
+
params: dict[str, Any]
|
|
456
|
+
) -> dict[str, Any]:
|
|
457
457
|
"""Converts a listImages params dict to something usable with listAssets."""
|
|
458
458
|
params = params.copy()
|
|
459
459
|
extra_filters = _convert_list_images_filter_params_to_list_assets_params(
|
|
@@ -470,14 +470,14 @@ def is_asset_root(asset_name: str) -> bool:
|
|
|
470
470
|
return bool(re.match(ASSET_ROOT_PATTERN, asset_name))
|
|
471
471
|
|
|
472
472
|
|
|
473
|
-
def convert_list_images_result_to_get_list_result(result) ->
|
|
473
|
+
def convert_list_images_result_to_get_list_result(result) -> list[Any]:
|
|
474
474
|
"""Converts a listImages result to something getList can return."""
|
|
475
475
|
if 'images' not in result:
|
|
476
476
|
return []
|
|
477
477
|
return [_convert_image_for_get_list_result(i) for i in result['images']]
|
|
478
478
|
|
|
479
479
|
|
|
480
|
-
def _convert_asset_for_get_list_result(asset) ->
|
|
480
|
+
def _convert_asset_for_get_list_result(asset) -> dict[str, Any]:
|
|
481
481
|
"""Converts an EarthEngineAsset to the format returned by getList."""
|
|
482
482
|
result = _convert_dict(
|
|
483
483
|
asset, {
|
|
@@ -488,7 +488,7 @@ def _convert_asset_for_get_list_result(asset) -> Dict[str, Any]:
|
|
|
488
488
|
return result
|
|
489
489
|
|
|
490
490
|
|
|
491
|
-
def _convert_image_for_get_list_result(asset) ->
|
|
491
|
+
def _convert_image_for_get_list_result(asset) -> dict[str, Any]:
|
|
492
492
|
"""Converts an Image to the format returned by getList."""
|
|
493
493
|
result = _convert_dict(
|
|
494
494
|
asset, {
|
|
@@ -539,7 +539,7 @@ def convert_asset_id_to_asset_name(asset_id: str) -> str:
|
|
|
539
539
|
return 'projects/earthengine-public/assets/{}'.format(asset_id)
|
|
540
540
|
|
|
541
541
|
|
|
542
|
-
def split_asset_name(asset_name: str) ->
|
|
542
|
+
def split_asset_name(asset_name: str) -> tuple[str, str]:
|
|
543
543
|
"""Splits an asset name into the parent and ID parts.
|
|
544
544
|
|
|
545
545
|
Args:
|
|
@@ -564,7 +564,7 @@ def convert_task_id_to_operation_name(task_id: str) -> str:
|
|
|
564
564
|
return 'projects/{}/operations/{}'.format(_cloud_api_user_project, task_id)
|
|
565
565
|
|
|
566
566
|
|
|
567
|
-
def convert_params_to_image_manifest(params:
|
|
567
|
+
def convert_params_to_image_manifest(params: dict[str, Any]) -> dict[str, Any]:
|
|
568
568
|
"""Converts params to an ImageManifest for ingestion."""
|
|
569
569
|
return _convert_dict(
|
|
570
570
|
params, {
|
|
@@ -574,7 +574,7 @@ def convert_params_to_image_manifest(params: Dict[str, Any]) -> Dict[str, Any]:
|
|
|
574
574
|
retain_keys=True)
|
|
575
575
|
|
|
576
576
|
|
|
577
|
-
def convert_params_to_table_manifest(params:
|
|
577
|
+
def convert_params_to_table_manifest(params: dict[str, Any]) -> dict[str, Any]:
|
|
578
578
|
"""Converts params to a TableManifest for ingestion."""
|
|
579
579
|
return _convert_dict(
|
|
580
580
|
params, {
|
|
@@ -584,7 +584,7 @@ def convert_params_to_table_manifest(params: Dict[str, Any]) -> Dict[str, Any]:
|
|
|
584
584
|
retain_keys=True)
|
|
585
585
|
|
|
586
586
|
|
|
587
|
-
def convert_tilesets_to_one_platform_tilesets(tilesets:
|
|
587
|
+
def convert_tilesets_to_one_platform_tilesets(tilesets: list[Any]) -> list[Any]:
|
|
588
588
|
"""Converts a tileset to a one platform representation of a tileset."""
|
|
589
589
|
converted_tilesets = []
|
|
590
590
|
for tileset in tilesets:
|
|
@@ -596,7 +596,7 @@ def convert_tilesets_to_one_platform_tilesets(tilesets: List[Any]) -> List[Any]:
|
|
|
596
596
|
return converted_tilesets
|
|
597
597
|
|
|
598
598
|
|
|
599
|
-
def convert_sources_to_one_platform_sources(sources:
|
|
599
|
+
def convert_sources_to_one_platform_sources(sources: list[Any]) -> list[Any]:
|
|
600
600
|
"""Converts the sources to one platform representation of sources."""
|
|
601
601
|
converted_sources = []
|
|
602
602
|
for source in sources:
|
|
@@ -615,7 +615,7 @@ def convert_sources_to_one_platform_sources(sources: List[Any]) -> List[Any]:
|
|
|
615
615
|
return converted_sources
|
|
616
616
|
|
|
617
617
|
|
|
618
|
-
def encode_number_as_cloud_value(number: float) ->
|
|
618
|
+
def encode_number_as_cloud_value(number: float) -> dict[str, Union[float, str]]:
|
|
619
619
|
# Numeric values in constantValue-style nodes end up stored in doubles. If the
|
|
620
620
|
# input is an integer that loses precision as a double, use the int64 slot
|
|
621
621
|
# ("integerValue") in ValueNode.
|
|
@@ -625,7 +625,7 @@ def encode_number_as_cloud_value(number: float) -> Dict[str, Union[float, str]]:
|
|
|
625
625
|
return {'constantValue': number}
|
|
626
626
|
|
|
627
627
|
|
|
628
|
-
def convert_algorithms(algorithms) ->
|
|
628
|
+
def convert_algorithms(algorithms) -> dict[str, Any]:
|
|
629
629
|
"""Converts a ListAlgorithmsResult to the internal format.
|
|
630
630
|
|
|
631
631
|
The internal code expects a dict mapping each algorithm's name to a dict
|
|
@@ -653,7 +653,7 @@ def convert_algorithms(algorithms) -> Dict[str, Any]:
|
|
|
653
653
|
return dict(_convert_algorithm(algorithm) for algorithm in algs)
|
|
654
654
|
|
|
655
655
|
|
|
656
|
-
def _convert_algorithm(algorithm:
|
|
656
|
+
def _convert_algorithm(algorithm: dict[str, Any]) -> tuple[str, dict[str, Any]]:
|
|
657
657
|
"""Converts an Algorithm to the internal format."""
|
|
658
658
|
# Strip leading 'algorithms/' from the name.
|
|
659
659
|
algorithm_name = algorithm['name'][11:]
|
|
@@ -677,11 +677,11 @@ def _convert_algorithm(algorithm: Dict[str, Any]) -> Tuple[str, Dict[str, Any]]:
|
|
|
677
677
|
|
|
678
678
|
|
|
679
679
|
def _convert_algorithm_arguments(
|
|
680
|
-
args:
|
|
680
|
+
args: list[dict[str, Any]]) -> list[dict[str, Any]]:
|
|
681
681
|
return [_convert_algorithm_argument(arg) for arg in args]
|
|
682
682
|
|
|
683
683
|
|
|
684
|
-
def _convert_algorithm_argument(arg:
|
|
684
|
+
def _convert_algorithm_argument(arg: dict[str, Any]) -> dict[str, Any]:
|
|
685
685
|
return _convert_dict(
|
|
686
686
|
arg, {
|
|
687
687
|
'argumentName': 'name',
|
|
@@ -746,7 +746,7 @@ def convert_to_table_file_format(format_str: Optional[str]) -> str:
|
|
|
746
746
|
return format_str
|
|
747
747
|
|
|
748
748
|
|
|
749
|
-
def convert_to_band_list(bands: Union[
|
|
749
|
+
def convert_to_band_list(bands: Union[list[str], None, str]) -> list[str]:
|
|
750
750
|
"""Converts a band list, possibly as CSV, to a real list of bands.
|
|
751
751
|
|
|
752
752
|
Args:
|
|
@@ -766,7 +766,7 @@ def convert_to_band_list(bands: Union[List[str], None, str]) -> List[str]:
|
|
|
766
766
|
raise ee_exception.EEException('Invalid band list ' + bands)
|
|
767
767
|
|
|
768
768
|
|
|
769
|
-
def convert_to_visualization_options(params:
|
|
769
|
+
def convert_to_visualization_options(params: dict[str, Any]) -> dict[str, Any]:
|
|
770
770
|
"""Extracts a VisualizationOptions from a param dict.
|
|
771
771
|
|
|
772
772
|
Args:
|
|
@@ -829,14 +829,14 @@ def convert_to_visualization_options(params: Dict[str, Any]) -> Dict[str, Any]:
|
|
|
829
829
|
return result
|
|
830
830
|
|
|
831
831
|
|
|
832
|
-
def _convert_csv_numbers_to_list(value: str) ->
|
|
832
|
+
def _convert_csv_numbers_to_list(value: str) -> list[float]:
|
|
833
833
|
"""Converts a string containing CSV numbers to a list."""
|
|
834
834
|
if not value:
|
|
835
835
|
return []
|
|
836
836
|
return [float(x) for x in value.split(',')]
|
|
837
837
|
|
|
838
838
|
|
|
839
|
-
def convert_operation_to_task(operation:
|
|
839
|
+
def convert_operation_to_task(operation: dict[str, Any]) -> dict[str, Any]:
|
|
840
840
|
"""Converts an Operation to a legacy Task."""
|
|
841
841
|
result = _convert_dict(
|
|
842
842
|
operation['metadata'], {
|
|
@@ -872,7 +872,7 @@ def _convert_operation_state_to_task_state(state: str) -> str:
|
|
|
872
872
|
}, 'UNKNOWN')
|
|
873
873
|
|
|
874
874
|
|
|
875
|
-
def convert_iam_policy_to_acl(policy:
|
|
875
|
+
def convert_iam_policy_to_acl(policy: dict[str, Any]) -> dict[str, Any]:
|
|
876
876
|
"""Converts an IAM Policy proto to the legacy ACL format."""
|
|
877
877
|
bindings = {
|
|
878
878
|
binding['role']: binding.get('members', [])
|
|
@@ -892,7 +892,7 @@ def convert_iam_policy_to_acl(policy: Dict[str, Any]) -> Dict[str, Any]:
|
|
|
892
892
|
return result
|
|
893
893
|
|
|
894
894
|
|
|
895
|
-
def convert_acl_to_iam_policy(acl:
|
|
895
|
+
def convert_acl_to_iam_policy(acl: dict[str, Any]) -> dict[str, Any]:
|
|
896
896
|
"""Converts the legacy ACL format to an IAM Policy proto."""
|
|
897
897
|
owners = acl.get('owners', [])
|
|
898
898
|
readers = acl.get('readers', [])
|
|
@@ -911,7 +911,7 @@ def convert_acl_to_iam_policy(acl: Dict[str, Any]) -> Dict[str, Any]:
|
|
|
911
911
|
|
|
912
912
|
def convert_to_grid_dimensions(
|
|
913
913
|
dimensions: Union[float, Sequence[float]]
|
|
914
|
-
) ->
|
|
914
|
+
) -> dict[str, float]:
|
|
915
915
|
"""Converts an input value to GridDimensions.
|
|
916
916
|
|
|
917
917
|
Args:
|
ee/_helpers.py
CHANGED
|
@@ -10,7 +10,7 @@ referenced from there (e.g., "ee.profilePrinting").
|
|
|
10
10
|
import contextlib
|
|
11
11
|
import json
|
|
12
12
|
import sys
|
|
13
|
-
from typing import Any,
|
|
13
|
+
from typing import Any, Iterator, Optional, TextIO, Union
|
|
14
14
|
|
|
15
15
|
from google.auth import crypt
|
|
16
16
|
from google.oauth2 import service_account
|
|
@@ -91,7 +91,7 @@ def call(
|
|
|
91
91
|
|
|
92
92
|
# pylint: disable-next=redefined-builtin
|
|
93
93
|
def apply(
|
|
94
|
-
func: Union[str, apifunction.ApiFunction], named_args:
|
|
94
|
+
func: Union[str, apifunction.ApiFunction], named_args: dict[str, Any]
|
|
95
95
|
) -> computedobject.ComputedObject:
|
|
96
96
|
"""Call a function with a dictionary of named arguments.
|
|
97
97
|
|
ee/apifunction.py
CHANGED
|
@@ -18,7 +18,7 @@ from __future__ import annotations
|
|
|
18
18
|
import copy
|
|
19
19
|
import keyword
|
|
20
20
|
import re
|
|
21
|
-
from typing import Any,
|
|
21
|
+
from typing import Any, Optional, Type
|
|
22
22
|
|
|
23
23
|
from ee import _utils
|
|
24
24
|
from ee import computedobject
|
|
@@ -31,17 +31,17 @@ from ee import function
|
|
|
31
31
|
|
|
32
32
|
class ApiFunction(function.Function):
|
|
33
33
|
"""An object representing an EE API Function."""
|
|
34
|
-
_signature:
|
|
34
|
+
_signature: dict[str, Any]
|
|
35
35
|
|
|
36
36
|
# A dictionary of functions defined by the API server.
|
|
37
|
-
_api:
|
|
37
|
+
_api: dict[str, ApiFunction] = {}
|
|
38
38
|
|
|
39
39
|
# A set of algorithm names containing all algorithms that have been bound to
|
|
40
40
|
# a function so far using importApi().
|
|
41
|
-
_bound_signatures:
|
|
41
|
+
_bound_signatures: set[str] = set()
|
|
42
42
|
|
|
43
43
|
@_utils.accept_opt_prefix('opt_signature')
|
|
44
|
-
def __init__(self, name: str, signature: Optional[
|
|
44
|
+
def __init__(self, name: str, signature: Optional[dict[str, Any]] = None):
|
|
45
45
|
"""Creates a function defined by the EE API.
|
|
46
46
|
|
|
47
47
|
Args:
|
|
@@ -84,7 +84,7 @@ class ApiFunction(function.Function):
|
|
|
84
84
|
return cls.lookup(name).call(*args, **kwargs)
|
|
85
85
|
|
|
86
86
|
@classmethod
|
|
87
|
-
def apply_(cls, name: str, named_args:
|
|
87
|
+
def apply_(cls, name: str, named_args: dict[str, Any]) -> Any:
|
|
88
88
|
"""Call a named API function with a dictionary of named arguments.
|
|
89
89
|
|
|
90
90
|
Args:
|
|
@@ -101,23 +101,23 @@ class ApiFunction(function.Function):
|
|
|
101
101
|
del encoder # Unused.
|
|
102
102
|
return self._signature['name']
|
|
103
103
|
|
|
104
|
-
def encode_cloud_invocation(self, encoder: Any) ->
|
|
104
|
+
def encode_cloud_invocation(self, encoder: Any) -> dict[str, Any]:
|
|
105
105
|
del encoder # Unused.
|
|
106
106
|
return {'functionName': self._signature['name']}
|
|
107
107
|
|
|
108
|
-
def getSignature(self) ->
|
|
108
|
+
def getSignature(self) -> dict[str, Any]:
|
|
109
109
|
"""Returns a description of the interface provided by this function."""
|
|
110
110
|
return self._signature
|
|
111
111
|
|
|
112
112
|
@classmethod
|
|
113
|
-
def allSignatures(cls) ->
|
|
113
|
+
def allSignatures(cls) -> dict[str, dict[str, Any]]:
|
|
114
114
|
"""Returns a map from the name to signature for all API functions."""
|
|
115
115
|
cls.initialize()
|
|
116
116
|
return dict([(name, func.getSignature())
|
|
117
117
|
for name, func in cls._api.items()])
|
|
118
118
|
|
|
119
119
|
@classmethod
|
|
120
|
-
def unboundFunctions(cls) ->
|
|
120
|
+
def unboundFunctions(cls) -> dict[str, Any]:
|
|
121
121
|
"""Returns the functions that have not been bound using importApi() yet."""
|
|
122
122
|
cls.initialize()
|
|
123
123
|
return dict([(name, func) for name, func in cls._api.items()
|
ee/apitestcase.py
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import contextlib
|
|
4
4
|
import json
|
|
5
5
|
import os
|
|
6
|
-
from typing import Any,
|
|
6
|
+
from typing import Any, Iterable, Optional
|
|
7
7
|
|
|
8
8
|
from googleapiclient import discovery
|
|
9
9
|
|
|
@@ -13,10 +13,10 @@ from ee import _cloud_api_utils
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
# Cached algorithms list
|
|
16
|
-
_algorithms_cache: Optional[
|
|
16
|
+
_algorithms_cache: Optional[dict[str, Any]] = None
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
def GetAlgorithms() ->
|
|
19
|
+
def GetAlgorithms() -> dict[str, Any]:
|
|
20
20
|
"""Returns a static version of the ListAlgorithms call.
|
|
21
21
|
|
|
22
22
|
After ApiTestCase.setUp is called, ee.data.getAlgorithms() is patched to use
|
|
@@ -102,30 +102,30 @@ class ApiTestCase(unittest.TestCase):
|
|
|
102
102
|
ee.Initialize(None, '', project='my-project')
|
|
103
103
|
|
|
104
104
|
# We are mocking the url here so the unit tests are happy.
|
|
105
|
-
def _MockMapId(self, params:
|
|
105
|
+
def _MockMapId(self, params: dict[str, Any]) -> dict[str, str]:
|
|
106
106
|
self.last_mapid_call = {'url': '/mapid', 'data': params}
|
|
107
107
|
return {'mapid': 'fakeMapId', 'token': 'fakeToken'}
|
|
108
108
|
|
|
109
|
-
def _MockDownloadUrl(self, params:
|
|
109
|
+
def _MockDownloadUrl(self, params: dict[str, Any]) -> dict[str, str]:
|
|
110
110
|
self.last_download_call = {'url': '/download', 'data': params}
|
|
111
111
|
return {'docid': '1', 'token': '2'}
|
|
112
112
|
|
|
113
113
|
def _MockThumbUrl(
|
|
114
114
|
self,
|
|
115
|
-
params:
|
|
115
|
+
params: dict[str, Any],
|
|
116
116
|
# pylint: disable-next=invalid-name
|
|
117
117
|
thumbType: Optional[str] = None,
|
|
118
|
-
) ->
|
|
118
|
+
) -> dict[str, str]:
|
|
119
119
|
del thumbType # Unused.
|
|
120
120
|
# Hang on to the call arguments.
|
|
121
121
|
self.last_thumb_call = {'url': '/thumb', 'data': params}
|
|
122
122
|
return {'thumbid': '3', 'token': '4'}
|
|
123
123
|
|
|
124
|
-
def _MockTableDownload(self, params:
|
|
124
|
+
def _MockTableDownload(self, params: dict[str, Any]) -> dict[str, str]:
|
|
125
125
|
self.last_table_call = {'url': '/table', 'data': params}
|
|
126
126
|
return {'docid': '5', 'token': '6'}
|
|
127
127
|
|
|
128
|
-
def _MockFetchDataCatalogStac(self) ->
|
|
128
|
+
def _MockFetchDataCatalogStac(self) -> dict[str, Any]:
|
|
129
129
|
return {}
|
|
130
130
|
|
|
131
131
|
|