earthengine-api 1.6.15__py3-none-any.whl → 1.7.0__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.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: earthengine-api
3
- Version: 1.6.15
3
+ Version: 1.7.0
4
4
  Summary: Earth Engine Python API
5
5
  Author-email: Google LLC <noreply@google.com>
6
6
  License: Apache-2.0
@@ -13,7 +13,6 @@ Classifier: License :: OSI Approved :: Apache Software License
13
13
  Classifier: Operating System :: OS Independent
14
14
  Classifier: Programming Language :: Python :: 3 :: Only
15
15
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.9
17
16
  Classifier: Programming Language :: Python :: 3.10
18
17
  Classifier: Programming Language :: Python :: 3.11
19
18
  Classifier: Programming Language :: Python :: 3.12
@@ -24,7 +23,7 @@ Classifier: Topic :: Scientific/Engineering :: GIS
24
23
  Classifier: Topic :: Scientific/Engineering :: Image Processing
25
24
  Classifier: Topic :: Scientific/Engineering :: Visualization
26
25
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
- Requires-Python: >=3.9
26
+ Requires-Python: >=3.10
28
27
  Description-Content-Type: text/markdown
29
28
  License-File: LICENSE
30
29
  Requires-Dist: google-cloud-storage
@@ -1,34 +1,34 @@
1
- earthengine_api-1.6.15.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
2
- ee/__init__.py,sha256=cSUaDkypabFOko3SbrcqOyv93PQEwinQM7-HbFYMqXI,16804
1
+ earthengine_api-1.7.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
2
+ ee/__init__.py,sha256=yPtZOGV1UdHmNh-XLnjgN--HN1Xn8E1yhgj_S3bZFj0,16758
3
3
  ee/_arg_types.py,sha256=nrJrnPFnAS8fzMxAGmG3TbUOi_yFVrnSGW5IP8ATzDQ,2662
4
- ee/_cloud_api_utils.py,sha256=06xr56VvGeQHl6DTeoC9_YE0hKVtE11tMnDCv98TKSA,32998
5
- ee/_helpers.py,sha256=71xYDbCO_1usY3SnedoA9zi7j6dnPBijru1eUh4o25g,4859
4
+ ee/_cloud_api_utils.py,sha256=5WPzP5bcBIbjA7yYN-Cwmht_HU-XobbTrZvRiOEn0e0,32890
5
+ ee/_helpers.py,sha256=afDDqoz1WESKE-lzqLtrCbvoQ1yVpfvJIgFcmUjO4L8,4821
6
6
  ee/_state.py,sha256=y2hdq_ZEgFkO9a-DbWFSthehlAyTbp--cz4C04XS058,2754
7
- ee/_utils.py,sha256=SAXQ_ZefZUaOtyV6Lp3pdYqEFqblMEA6Bvxz0ltLjzA,1329
7
+ ee/_utils.py,sha256=ciocjvlvR73G07IV_iZjLi1IGowpEbT53NzFqqwSbDU,1356
8
8
  ee/apifunction.py,sha256=mCCsLhBs_MofvMW49OFjT5psQGMbXWQSpAlhiqMEc4k,8732
9
- ee/apitestcase.py,sha256=fomryH6kQnYEUwQ5lWaVOdRQzsUX2fjLb0PPC5JdjBg,14029
9
+ ee/apitestcase.py,sha256=8N5y2-Tw7c5GjedbSA_HRpSjVUiVLoyM_FI2g5b9Tpc,13992
10
10
  ee/batch.py,sha256=dETwEgh2E9bsoKcmo7MrqIKrU9OEOymDHtbifl_hMS4,82400
11
11
  ee/blob.py,sha256=cnnqmrHl998U2zEmfKcxQglaGk14Ip6pjObk_Ody6Uk,3221
12
12
  ee/classifier.py,sha256=3STLrLT6Ddwzjs2324E02wRWM8VEpeifgOO81geTHJQ,23410
13
13
  ee/clusterer.py,sha256=986D68b2eJ4xiiOiIOTNZ1psF8Ro-MFNQFKed058FS4,12256
14
- ee/collection.py,sha256=ViBWCb-k79BHxEOyrN4WN5f7wDjowCQqOvI-rAbD90I,32560
15
- ee/computedobject.py,sha256=cuhgfJ3bnM2Wm5KfxjqA6jh4SLwWvXO-8UhVD3Cqb2Q,9080
14
+ ee/collection.py,sha256=c8OFIX9OVLxTbu8HGYiHOS3Yg6QjnxaO_FAhDhDQpic,32588
15
+ ee/computedobject.py,sha256=Cdlccd4vw2neeRQlo5Jn3Q5R-VpQcQufNuxOHfpd1FU,9186
16
16
  ee/confusionmatrix.py,sha256=e6vz-FcT6acWxk5pDEK0vLIN1pUjYMh5Gyn1QSGJT3I,4233
17
- ee/customfunction.py,sha256=ONDKyd5dldQLMX7diYZJK5wc8ty_-cI8K421Jumo9SM,7381
18
- ee/data.py,sha256=eI6-JLKqw4RNsa_zOWAb2j8NgXCrVSKm9SjniGiZRPQ,85497
17
+ ee/customfunction.py,sha256=Me_iHDnjkYR33JMttGA7pKJlPCjUk8rO_kgaIhDm27M,7408
18
+ ee/data.py,sha256=Q15duH7_O2gjIlDanmjien5z8ZZRuooyhNivUpXbM6E,85370
19
19
  ee/daterange.py,sha256=nrRYkR2M2aVU0ZJyG7yiZStFt-W2TvYVuazoZK_WZqM,4948
20
- ee/deprecation.py,sha256=J6eTNrKE3pQodyE8Pig8ixPRT3C4pTxFqrraE8R_cOo,6226
21
- ee/deserializer.py,sha256=8LeCq113UQgBn9wl7h2A9IOhk9m6A1p56-H5Q8Gm-MM,8386
20
+ ee/deprecation.py,sha256=mAFdO7fBjOu9TJd8CJB_M_NsZ6VNSxtSe820QKJx8fE,6243
21
+ ee/deserializer.py,sha256=TjhQjcBnFpz8Kodoj74eSbvkJ2zLjpTTfUpcNEoQR2o,8357
22
22
  ee/dictionary.py,sha256=b0t46vaeVMsFGI2icdGNspmedRtVVxfiIcFLWcmL2v8,10508
23
23
  ee/ee_array.py,sha256=EJmQ-zku1x0e6z44SlVD-F7mafmvRS0DoByKFyeDCuc,36368
24
24
  ee/ee_date.py,sha256=ixmLMrrGjq30DX9QY92HTeUgFZhWdn485cyaJkksh6U,10757
25
25
  ee/ee_exception.py,sha256=uN3X76HuhicU0LTxqRKQu1ZU6L7zw0GuABgsBTT-Ycw,164
26
26
  ee/ee_list.py,sha256=-jf0-zcqiiNexX_6GLZaRKotfmLabJ2o071Bv3MF6kI,19819
27
- ee/ee_number.py,sha256=uLUI3AbsI9HhnR8bAVlkCogVjNhodp9OV7yXd-x0R30,22592
27
+ ee/ee_number.py,sha256=nNcgntUyc4h-zYLKcBIlanucxsiKqXC_koN-pzmuBnc,22376
28
28
  ee/ee_string.py,sha256=eg-dR1JAuazNFyOJsbCULQn3BvBpQd5LER8oDfWtXcU,7875
29
29
  ee/ee_types.py,sha256=wQCE74pDRxz_IAYc6hjSSqJwp5ozOIoZF0cHijTd8Sg,3081
30
30
  ee/element.py,sha256=SdIVljB0Sbut02a61XgsPLiJpA66n34fsYZGMwsS8jQ,6261
31
- ee/encodable.py,sha256=ZzZBOVOEwc8a8Dby3oHwIhW-5za-4tvLDE0Q2oVaNwQ,1884
31
+ ee/encodable.py,sha256=J9QanzbB-_f5LUCQcIhrEV5W9CbRZtxa5gicmSVxLsk,1911
32
32
  ee/errormargin.py,sha256=x8kAgFeUdXmpc_kv8Vx5qv-fHeJvFU9EBFbSOxhNl8Y,3039
33
33
  ee/feature.py,sha256=WItnwlQp8U3D0E0YkgJNXIAk2JviwloS9c8j2XqbKEM,30292
34
34
  ee/featurecollection.py,sha256=XbDgzYEEyhim0_y2AOD5Wi-TRIl90OnB1DHtAJXgvg8,14424
@@ -36,40 +36,40 @@ ee/filter.py,sha256=GKz3IqeZSrK4X26TjWaw_uOE8KjZgSx1pS1zM07PXfI,35321
36
36
  ee/function.py,sha256=X-Mz0AvF_l809NZXK8RM6fa2h-nP7YU2sUFp6hvIbdU,7049
37
37
  ee/geometry.py,sha256=D__UeT72DDaJFakmyaPnmfHwxNtDxLJW7Vbze0Hh2Y4,59517
38
38
  ee/image.py,sha256=LDidnOBIQaZ1Rv9X8H6DcNUzClRYxXcy2lHGoe5L6pA,170921
39
- ee/image_converter.py,sha256=CdeM5zMy0T_HylcFeoIcfZxjczWwOA2SklDLg6p9le8,1494
40
- ee/imagecollection.py,sha256=RcOd5j11x7324MYmvZG62ehyjzaGAnKqakhhXkYlOCc,27102
39
+ ee/image_converter.py,sha256=LblcmkWruE0BjItZ7ICv87XZlCCjZeX2HmGxf47HXyo,1469
40
+ ee/imagecollection.py,sha256=5ZUUreU0iY23UC9sd8gh8fLapVZTruV3DGhsjmQF0xg,27102
41
41
  ee/join.py,sha256=idnuzRNFvKHRLHV5m9unp_xTsZb-E2kfgUCEYSg64ts,7578
42
42
  ee/kernel.py,sha256=eTzJFvW4nbyiFl2dDZ0_cA_o3KqCbBewY-BDp7tCB_M,15002
43
43
  ee/mapclient.py,sha256=feCFwL76juFFZPI4uycVxUoFMeEFbPFfIVETkmpvmcY,17491
44
- ee/model.py,sha256=nXn0qhwKgiTA6xOUQ7aFe0o6Mis68hiywLoY9twLOj0,12185
45
- ee/oauth.py,sha256=7rqMxdYHPuNcoHv_SswuiJa2taEBjyh2sX1iszjLnO0,22247
44
+ ee/model.py,sha256=ZLBT0bdo16V_fSR3eqVxvEmkpGGqMdqYBVZTwOAXvcU,12069
45
+ ee/oauth.py,sha256=gqm2nUIAk_PN9yJes1Yy8eLzQ8vvPapZPOY05BVRvOY,22118
46
46
  ee/pixeltype.py,sha256=ucUwJ5SvcOT849Ap4mlJL9z11IAbcT1w9ii8-zOoqdI,5196
47
47
  ee/projection.py,sha256=n7WvMeYEG9zksGN1tIX7RGweC4IyCrXAKsvPY0e2b8k,5868
48
48
  ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
49
  ee/reducer.py,sha256=zO-bhNOQPoWlzjvXiHC40hwg3KFmA52eQb1uutUW1MQ,33813
50
- ee/serializer.py,sha256=OldyytHpwmUVt28TEjlSS7J-3CE7GBZhyyXhvyMQIGs,22806
51
- ee/table_converter.py,sha256=6ARbOLq1VPU1_wXY2pyv0PuzY4XyEBwM3npMt6Hp__U,2088
50
+ ee/serializer.py,sha256=Nzy3NnwSTnNTkRy4qJQ8NyswaG-VbLS6R7zT0Fvoa04,22781
51
+ ee/table_converter.py,sha256=z6ttgglqpbs4RViOZ-DI7g7babySB8Qaa1Ge-ONyXxE,2062
52
52
  ee/terrain.py,sha256=TIbeQiVGv4okTTsHCnaP6TxSvaRF-GX_06asVIFN8dY,4873
53
53
  ee/cli/__init__.py,sha256=YjzBDuYi6fiOv77Xfl-Qib2O6gRZj9z7Sx2Zz6teTXU,33
54
- ee/cli/commands.py,sha256=RQhs16sE2TBDXto094utFOghpgtnxYfIhUOPXBtkg54,73456
54
+ ee/cli/commands.py,sha256=-Quo-cq0MRIpVmGt5xpAgNS0oVU6JJTXpg3npbYmyPw,73444
55
55
  ee/cli/eecli.py,sha256=1yDyingkwurai13F_PF91RYsBev6jGJ9WEoZaT2Dgy8,3043
56
56
  ee/cli/eecli_wrapper.py,sha256=Z7R3IJcht2uG1h57oY7BSrkPiwQzNmmYlyCSX1_7L7c,1089
57
- ee/cli/utils.py,sha256=wxAtAHtAmNZsCTbXh-9l-om9tH0sD-P4O7Fl8n3qfR0,14255
57
+ ee/cli/utils.py,sha256=OcGKS8fe26aXReYVSswv3n1DQlG4FcQEfHqBIHF3AOs,14233
58
58
  ee/tests/_cloud_api_utils_test.py,sha256=p8kwehArlj_j4HWsx6vNEk2Dw17MlxYw0XtzupsDWdY,19493
59
59
  ee/tests/_helpers_test.py,sha256=vyhbY9hE_zcSI692eAdjtM36P2vVXScDj_ENA-0tces,3991
60
60
  ee/tests/_state_test.py,sha256=AKe5Vopzt24FJPiPcEce_oOT861gOkd6mUOAWZr6C0g,1175
61
61
  ee/tests/_utils_test.py,sha256=bOarVj3U-VFo9Prog8WQN_hAOMwJOiWKJxevUbdFPBQ,2753
62
62
  ee/tests/algorithms.json,sha256=Vx1Kx_MhHv0z0B3WTeVAvchM8xVd3zYE7L-qT3gDGzA,729368
63
63
  ee/tests/apifunction_test.py,sha256=_6xpkJOd7hScYYQxzFR-8flraTQ6xfkm7gyER6JoBog,3779
64
- ee/tests/batch_test.py,sha256=OKfDZgDvaMD2tQ31TaL9SyeWgogAFLJ01xDWWIeBYpo,63275
64
+ ee/tests/batch_test.py,sha256=xlzL4syjQ_bqeOfmj7keajTZqZqcKdUlv-X8f30O1Ow,63259
65
65
  ee/tests/blob_test.py,sha256=uCrM-ubRfAmNgHwhmUhWn7MiXqbNQutybcXIKdVsD_Q,3587
66
66
  ee/tests/classifier_test.py,sha256=K6-wNZ2uh9oPYo7BV0vtfU73SBFpeNcFRMRmvEFc6Pg,19087
67
67
  ee/tests/cloud_api_discovery_document.json,sha256=SnOeL8One57YdeHa7XxGZM-ptDPCeDSymBc7-Bo_hkA,41154
68
68
  ee/tests/clusterer_test.py,sha256=B4m06wAtBeqvnIhRD2lnNy1UHDB_caleK_CqcrAU8dk,11620
69
- ee/tests/collection_test.py,sha256=rQ6WT5su53b14P5Wix3-SkKXDW99W1BXdB4uk0NmDck,7594
69
+ ee/tests/collection_test.py,sha256=zsBerYrFr390awe-wD8uN9VME_qEsuaEN197hom4Xps,8815
70
70
  ee/tests/computedobject_test.py,sha256=B27rDq9Urpvy0WqpdbKRYbt6AcT1i93HX-es7hrhWVY,4840
71
71
  ee/tests/confusionmatrix_test.py,sha256=46JJh1-91AiYISXWZ6-2lvY5_Njvc8ompO9kmwqlFdg,7437
72
- ee/tests/data_test.py,sha256=-_TcPdCdqqfeCNA_hGU9mpjKHl1GxBnb9tCWDWsFrrc,40394
72
+ ee/tests/data_test.py,sha256=YyVh891MuLeDWx5Fj_uGHvpudy73E8cu1BhR1G-mlWA,40391
73
73
  ee/tests/daterange_test.py,sha256=a5fpg2lko3kCJzxQPCoAc_vjXkKy2zYcXbeSZKAFovI,8583
74
74
  ee/tests/deprecation_test.py,sha256=CoVug7J9YdB2utZ-BikyJcjitYPQLz49JL_z89xuQSQ,8484
75
75
  ee/tests/deserializer_test.py,sha256=i_tlyzKgCo1-VpWPAQnTWNcr2klourcMcBbFZJN6Ivw,5050
@@ -77,7 +77,7 @@ ee/tests/dictionary_test.py,sha256=IRaXMr3GzZFQ5BiHdB35Iio2TckIK67Cnp6KH0h8Aa8,1
77
77
  ee/tests/ee_array_test.py,sha256=JVXShdbOVOjlfSpNgYc_NVrknQatuPOZ19fG0Ii5yVU,50268
78
78
  ee/tests/ee_date_test.py,sha256=8rLUXfjyiW3LiBOCSneA7ZGgmoFgN5oZr58x5THtKGY,11106
79
79
  ee/tests/ee_list_test.py,sha256=yd2EWZGdg7pLJhsHSR5AbK58ZhT31GY-n2o1dDT3p9A,21797
80
- ee/tests/ee_number_test.py,sha256=1W7xI73KC-tl6q-bgJBalUseoabG7PPEOzps4g1FGco,33679
80
+ ee/tests/ee_number_test.py,sha256=YuJAWg4V4ELCLdmpEN7f4Wc_6ayOreWKui8ZM5fkjbg,35029
81
81
  ee/tests/ee_string_test.py,sha256=X6XJwa09yJXhg0rIpRb4QFA3eeGIrh2XClwhVByMRBY,9664
82
82
  ee/tests/ee_test.py,sha256=CY5XUfh_5Bx6yIUrHDI1SbVfztIgejB-LGdgCMgT0IA,17835
83
83
  ee/tests/ee_types_test.py,sha256=oRnqplaTWg47zuYfAYTTVwembCnw8XT20HPNMdAvgNE,921
@@ -89,7 +89,7 @@ ee/tests/filter_test.py,sha256=d-KQ_zI-r7BAMazKqqHMMzNUZdeC46BZiciMfthKEO8,35033
89
89
  ee/tests/function_test.py,sha256=0hv7H-Q21vdDvqHNH_3NvFj_nPEWM2Fh7CD0wgjXE2M,3131
90
90
  ee/tests/geometry_point_test.py,sha256=w9MYTwvw2Co9rIjffFB0ezQ_jZz8nxbdgOcyhqTTmjk,15093
91
91
  ee/tests/geometry_test.py,sha256=5cNblTtXg4gg0k1_6go4XL2EldY2StOfD7sQ7Bu0WZU,32424
92
- ee/tests/image_converter_test.py,sha256=uRXYOCU3a0ZaRTHw-ovVP8FJC2mVE9wbHd3JzoExkPs,1885
92
+ ee/tests/image_converter_test.py,sha256=x29StMrzv6jlATtx3XXC7rEo7Cgrcx0XyVoM-ccVuao,1853
93
93
  ee/tests/image_test.py,sha256=_SJmee7orPot26vbxKEZcNZ6OsrNrxv3ToInWYLNZLM,150917
94
94
  ee/tests/imagecollection_test.py,sha256=qosRZXCbhwFuy8qR7DbA-FMl4ktW7Y2cUJHeXLcszpg,38444
95
95
  ee/tests/join_test.py,sha256=pFILq3qM27rO64WYbBC1A_Gs8_pabRv68X7MU_EM_cw,7630
@@ -99,11 +99,11 @@ ee/tests/oauth_test.py,sha256=jYFw8GWPFmLR0jh2NvbcrMizQo_qR_bRDBVRdIZ44g0,3067
99
99
  ee/tests/pixeltype_test.py,sha256=00IWKnZ7xxkVwSSCuWOlCwlTsHAb3XPyKp1Arc4S12U,10024
100
100
  ee/tests/projection_test.py,sha256=fKXXxQPBvWdlMNtNsJze2pbsT0yHHlL7ON8Pdjm1Z7E,6871
101
101
  ee/tests/reducer_test.py,sha256=vqXpgLZ7fPyfZ12srpREgMpfrKYLcFQod3Qn1Niv7VM,31979
102
- ee/tests/serializer_test.py,sha256=6pPUZODnhvXa8oIIK9i5q1EDJ8Y4gw9HJ2aHwb1-2I4,9819
103
- ee/tests/table_converter_test.py,sha256=2F7DyEj-iHVbt9-W1iwAHDl-K1GA_2QHalTXzac2ot8,3373
102
+ ee/tests/serializer_test.py,sha256=d6IEW_dt-G900IRfQnZftrwjpc1wJ-ouaQQwaLO0FxI,9834
103
+ ee/tests/table_converter_test.py,sha256=KubC_IY4SpXkpEwvisplI1KQgLzHFOfxKepGgcZCoLg,3360
104
104
  ee/tests/terrain_test.py,sha256=inZ2sy807nDG_HMutzGHaqcTUaLnZQOMdWyf0NrQzV0,4561
105
- earthengine_api-1.6.15.dist-info/METADATA,sha256=9YnlmwQCVac5mLj4omv4iYvP3USthOQA2P55EqHJM9A,2194
106
- earthengine_api-1.6.15.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
107
- earthengine_api-1.6.15.dist-info/entry_points.txt,sha256=-Ax4SCU-S474r8OD2LIxata6PRmkZoDrppQ4fP_exNc,50
108
- earthengine_api-1.6.15.dist-info/top_level.txt,sha256=go5zOwCgm5lIS3yTR-Vsxp1gNI4qdS-MP5eY-7zMxVY,3
109
- earthengine_api-1.6.15.dist-info/RECORD,,
105
+ earthengine_api-1.7.0.dist-info/METADATA,sha256=uNnow1clusPNxThGPVFWh0Ro2F-F-vcRnPsmobkfWdE,2144
106
+ earthengine_api-1.7.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
107
+ earthengine_api-1.7.0.dist-info/entry_points.txt,sha256=-Ax4SCU-S474r8OD2LIxata6PRmkZoDrppQ4fP_exNc,50
108
+ earthengine_api-1.7.0.dist-info/top_level.txt,sha256=go5zOwCgm5lIS3yTR-Vsxp1gNI4qdS-MP5eY-7zMxVY,3
109
+ earthengine_api-1.7.0.dist-info/RECORD,,
ee/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """The EE Python library."""
2
2
 
3
- __version__ = '1.6.15'
3
+ __version__ = '1.7.0'
4
4
 
5
5
  # Using lowercase function naming to match the JavaScript names.
6
6
  # pylint: disable=g-bad-name
@@ -126,13 +126,13 @@ _DYNAMIC_CLASSES = [
126
126
 
127
127
 
128
128
  def Authenticate(
129
- authorization_code: Optional[str] = None,
130
- quiet: Optional[bool] = None,
131
- code_verifier: Optional[str] = None,
132
- auth_mode: Optional[str] = None,
133
- scopes: Optional[Sequence[str]] = None,
129
+ authorization_code: str | None = None,
130
+ quiet: bool | None = None,
131
+ code_verifier: str | None = None,
132
+ auth_mode: str | None = None,
133
+ scopes: Sequence[str] | None = None,
134
134
  force: bool = False,
135
- ) -> Optional[bool]:
135
+ ) -> bool | None:
136
136
  """Prompts the user to authorize access to Earth Engine via OAuth2.
137
137
 
138
138
  Args:
@@ -162,11 +162,11 @@ def Authenticate(
162
162
 
163
163
  @_utils.accept_opt_prefix('opt_url')
164
164
  def Initialize(
165
- credentials: Optional[Any] = 'persistent',
166
- url: Optional[str] = None,
167
- cloud_api_key: Optional[str] = None,
168
- http_transport: Optional[Any] = None,
169
- project: Optional[Union[str, int]] = None,
165
+ credentials: Any | None = 'persistent',
166
+ url: str | None = None,
167
+ cloud_api_key: str | None = None,
168
+ http_transport: Any | None = None,
169
+ project: str | int | None = None,
170
170
  ) -> None:
171
171
  """Initialize the EE library.
172
172
 
@@ -274,7 +274,7 @@ def _ResetGeneratedClasses() -> None:
274
274
  types._registerClasses(globals()) # pylint: disable=protected-access
275
275
 
276
276
 
277
- def _Promote(arg: Optional[Any], a_class: str) -> Optional[Any]:
277
+ def _Promote(arg: Any | None, a_class: str) -> Any | None:
278
278
  """Wrap an argument in an object of the specified class.
279
279
 
280
280
  This is used to, e.g., promote numbers or strings to Images and arrays
ee/_cloud_api_utils.py CHANGED
@@ -6,13 +6,13 @@ parameters and result values.
6
6
  """
7
7
 
8
8
  import calendar
9
- from collections.abc import Sequence
9
+ from collections.abc import Callable, Sequence
10
10
  import copy
11
11
  import datetime
12
12
  import json
13
13
  import os
14
14
  import re
15
- from typing import Any, Callable, Optional, Type, Union
15
+ from typing import Any
16
16
  import warnings
17
17
 
18
18
  import google_auth_httplib2
@@ -24,6 +24,7 @@ import requests
24
24
 
25
25
  from ee import ee_exception
26
26
 
27
+
27
28
  # The Cloud API version.
28
29
  VERSION = os.environ.get('EE_CLOUD_API_VERSION', 'v1')
29
30
 
@@ -49,10 +50,10 @@ TASK_TO_OPERATION_STATE = {
49
50
  class _Http:
50
51
  """A httplib2.Http-like object based on requests."""
51
52
  _session: requests.Session
52
- _timeout: Optional[float]
53
+ _timeout: float | None
53
54
 
54
55
  def __init__(
55
- self, session: requests.Session, timeout: Optional[float] = None
56
+ self, session: requests.Session, timeout: float | None = None
56
57
  ):
57
58
  self._timeout = timeout
58
59
  self._session = session
@@ -61,10 +62,10 @@ class _Http:
61
62
  self,
62
63
  uri: str,
63
64
  method: str = 'GET',
64
- body: Optional[str] = None,
65
- headers: Optional[dict[str, str]] = None,
66
- redirections: Optional[int] = None,
67
- connection_type: Optional[type[Any]] = None,
65
+ body: str | None = None,
66
+ headers: dict[str, str] | None = None,
67
+ redirections: int | None = None,
68
+ connection_type: type[Any] | None = None,
68
69
  ) -> tuple[httplib2.Response, Any]:
69
70
  """Makes an HTTP request using httplib2 semantics."""
70
71
  del connection_type # Ignored
@@ -117,10 +118,10 @@ def _wrap_request(
117
118
  postproc: Callable[..., Any],
118
119
  uri: str,
119
120
  method: str = 'GET',
120
- body: Optional[Any] = None,
121
- headers: Optional[Any] = None,
122
- methodId: Optional[Any] = None,
123
- resumable: Optional[Any] = None,
121
+ body: Any | None = None,
122
+ headers: Any | None = None,
123
+ methodId: Any | None = None,
124
+ resumable: Any | None = None,
124
125
  ) -> http.HttpRequest:
125
126
  """Builds an HttpRequest, adding headers and response inspection."""
126
127
  additional_headers = headers_supplier()
@@ -146,14 +147,14 @@ def _wrap_request(
146
147
  def build_cloud_resource(
147
148
  api_base_url: str,
148
149
  session: requests.Session,
149
- api_key: Optional[str] = None,
150
- credentials: Optional[Any] = None,
151
- timeout: Optional[float] = None,
150
+ api_key: str | None = None,
151
+ credentials: Any | None = None,
152
+ timeout: float | None = None,
152
153
  num_retries: int = 1,
153
- headers_supplier: Optional[Callable[[], dict[str, Any]]] = None,
154
- response_inspector: Optional[Callable[[Any], None]] = None,
155
- http_transport: Optional[Any] = None,
156
- raw: Optional[bool] = False,
154
+ headers_supplier: Callable[[], dict[str, Any]] | None = None,
155
+ response_inspector: Callable[[Any], None] | None = None,
156
+ http_transport: Any | None = None,
157
+ raw: bool | None = False,
157
158
  ) -> Any:
158
159
  """Builds an Earth Engine Cloud API resource.
159
160
 
@@ -225,9 +226,9 @@ def build_cloud_resource(
225
226
 
226
227
  def build_cloud_resource_from_document(
227
228
  discovery_document: Any,
228
- http_transport: Optional[httplib2.Http] = None,
229
- headers_supplier: Optional[Callable[..., Any]] = None,
230
- response_inspector: Optional[Callable[..., Any]] = None,
229
+ http_transport: httplib2.Http | None = None,
230
+ headers_supplier: Callable[..., Any] | None = None,
231
+ response_inspector: Callable[..., Any] | None = None,
231
232
  raw: bool = False,
232
233
  ) -> discovery.Resource:
233
234
  """Builds an Earth Engine Cloud API resource from a description of the API.
@@ -261,7 +262,7 @@ def build_cloud_resource_from_document(
261
262
  def _convert_dict(
262
263
  to_convert: dict[str, Any],
263
264
  conversions: dict[str, Any],
264
- defaults: Optional[dict[str, Any]] = None,
265
+ defaults: dict[str, Any] | None = None,
265
266
  key_warnings: bool = False,
266
267
  retain_keys: bool = False,
267
268
  ) -> dict[str, Any]:
@@ -618,7 +619,7 @@ def convert_sources_to_one_platform_sources(sources: list[Any]) -> list[Any]:
618
619
  return converted_sources
619
620
 
620
621
 
621
- def encode_number_as_cloud_value(number: float) -> dict[str, Union[float, str]]:
622
+ def encode_number_as_cloud_value(number: float) -> dict[str, float | str]:
622
623
  # Numeric values in constantValue-style nodes end up stored in doubles. If the
623
624
  # input is an integer that loses precision as a double, use the int64 slot
624
625
  # ("integerValue") in ValueNode.
@@ -699,7 +700,7 @@ def _convert_algorithm_argument(arg: dict[str, Any]) -> dict[str, Any]:
699
700
  })
700
701
 
701
702
 
702
- def convert_to_image_file_format(format_str: Optional[str]) -> str:
703
+ def convert_to_image_file_format(format_str: str | None) -> str:
703
704
  """Converts a legacy file format string to an ImageFileFormat enum value.
704
705
 
705
706
  Args:
@@ -726,7 +727,7 @@ def convert_to_image_file_format(format_str: Optional[str]) -> str:
726
727
  return format_str
727
728
 
728
729
 
729
- def convert_to_table_file_format(format_str: Optional[str]) -> str:
730
+ def convert_to_table_file_format(format_str: str | None) -> str:
730
731
  """Converts a legacy file format string to a TableFileFormat enum value.
731
732
 
732
733
  Args:
@@ -749,7 +750,7 @@ def convert_to_table_file_format(format_str: Optional[str]) -> str:
749
750
  return format_str
750
751
 
751
752
 
752
- def convert_to_band_list(bands: Union[list[str], None, str]) -> list[str]:
753
+ def convert_to_band_list(bands: list[str] | None | str) -> list[str]:
753
754
  """Converts a band list, possibly as CSV, to a real list of bands.
754
755
 
755
756
  Args:
@@ -926,7 +927,7 @@ def convert_acl_to_iam_policy(acl: dict[str, Any]) -> dict[str, Any]:
926
927
 
927
928
 
928
929
  def convert_to_grid_dimensions(
929
- dimensions: Union[float, Sequence[float]]
930
+ dimensions: float | Sequence[float]
930
931
  ) -> dict[str, float]:
931
932
  """Converts an input value to GridDimensions.
932
933
 
ee/_helpers.py CHANGED
@@ -11,7 +11,7 @@ from collections.abc import Iterator
11
11
  import contextlib
12
12
  import json
13
13
  import sys
14
- from typing import Any, Optional, TextIO, Union
14
+ from typing import Any, TextIO
15
15
 
16
16
  from google.auth import crypt
17
17
  from google.oauth2 import service_account
@@ -27,9 +27,9 @@ _PROFILE_RETRIES = 5
27
27
 
28
28
 
29
29
  def ServiceAccountCredentials(
30
- email: Optional[str] = None,
31
- key_file: Optional[str] = None,
32
- key_data: Optional[str] = None,
30
+ email: str | None = None,
31
+ key_file: str | None = None,
32
+ key_data: str | None = None,
33
33
  ) -> service_account.Credentials:
34
34
  """Configure OAuth2 credentials for a Google Service Account.
35
35
 
@@ -75,7 +75,7 @@ def ServiceAccountCredentials(
75
75
 
76
76
 
77
77
  def call(
78
- func: Union[str, apifunction.ApiFunction], *args, **kwargs
78
+ func: str | apifunction.ApiFunction, *args, **kwargs
79
79
  ) -> computedobject.ComputedObject:
80
80
  """Invoke the given algorithm with the specified args.
81
81
 
@@ -97,7 +97,7 @@ def call(
97
97
 
98
98
  # pylint: disable-next=redefined-builtin
99
99
  def apply(
100
- func: Union[str, apifunction.ApiFunction], named_args: dict[str, Any]
100
+ func: str | apifunction.ApiFunction, named_args: dict[str, Any]
101
101
  ) -> computedobject.ComputedObject:
102
102
  """Call a function with a dictionary of named arguments.
103
103
 
ee/_utils.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """General decorators and helper methods which should not import ee."""
2
2
 
3
3
  import functools
4
- from typing import Any, Callable
4
+ from typing import Any
5
+ from collections.abc import Callable
5
6
 
6
7
 
7
8
  def accept_opt_prefix(*opt_args) -> Callable[..., Any]:
ee/apitestcase.py CHANGED
@@ -5,7 +5,7 @@ import contextlib
5
5
  import copy
6
6
  import json
7
7
  import os
8
- from typing import Any, Optional
8
+ from typing import Any
9
9
 
10
10
  from googleapiclient import discovery
11
11
 
@@ -16,7 +16,7 @@ from ee import _state
16
16
 
17
17
 
18
18
  # Cached algorithms list
19
- _algorithms_cache: Optional[dict[str, Any]] = None
19
+ _algorithms_cache: dict[str, Any] | None = None
20
20
 
21
21
 
22
22
  def GetAlgorithms() -> dict[str, Any]:
@@ -40,10 +40,10 @@ def GetAlgorithms() -> dict[str, Any]:
40
40
 
41
41
  class ApiTestCase(unittest.TestCase):
42
42
  """A TestCase that initializes the library with standard API methods."""
43
- last_download_call: Optional[Any]
44
- last_thumb_call: Optional[Any]
45
- last_table_call: Optional[Any]
46
- last_mapid_call: Optional[Any]
43
+ last_download_call: Any | None
44
+ last_thumb_call: Any | None
45
+ last_table_call: Any | None
46
+ last_mapid_call: Any | None
47
47
 
48
48
  def setUp(self):
49
49
  super().setUp()
@@ -108,7 +108,7 @@ class ApiTestCase(unittest.TestCase):
108
108
  self,
109
109
  params: dict[str, Any],
110
110
  # pylint: disable-next=invalid-name
111
- thumbType: Optional[str] = None,
111
+ thumbType: str | None = None,
112
112
  ) -> dict[str, str]:
113
113
  del thumbType # Unused.
114
114
  # Hang on to the call arguments.
@@ -141,9 +141,9 @@ def _GenerateCloudApiResource(mock_http: Any, raw: Any) -> discovery.Resource:
141
141
 
142
142
  @contextlib.contextmanager # pytype: disable=wrong-arg-types
143
143
  def UsingCloudApi(
144
- cloud_api_resource: Optional[Any] = None,
145
- cloud_api_resource_raw: Optional[Any] = None,
146
- mock_http: Optional[Any] = None,
144
+ cloud_api_resource: Any | None = None,
145
+ cloud_api_resource_raw: Any | None = None,
146
+ mock_http: Any | None = None,
147
147
  ) -> Iterable[Any]: # pytype: disable=wrong-arg-types
148
148
  """Returns a context manager under which the Cloud API is enabled."""
149
149
  # pylint: disable=protected-access
ee/cli/commands.py CHANGED
@@ -226,7 +226,7 @@ def _format_cloud_timestamp(timestamp: str | None) -> str:
226
226
  return _datetime_from_cloud_timestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')
227
227
 
228
228
 
229
- def _decode_date(string: str) -> Union[float, str]:
229
+ def _decode_date(string: str) -> float | str:
230
230
  """Decodes a date from a command line argument, returning msec since epoch".
231
231
 
232
232
  Args:
@@ -598,7 +598,7 @@ class AclChCommand:
598
598
  return permissions
599
599
 
600
600
  def _apply_permissions(
601
- self, acl: dict[str, Union[bool, list[str]]], permissions: dict[str, str]
601
+ self, acl: dict[str, bool | list[str]], permissions: dict[str, str]
602
602
  ) -> None:
603
603
  """Applies the given permission edits to the given acl."""
604
604
  for user, role in permissions.items():
ee/cli/utils.py CHANGED
@@ -14,7 +14,7 @@ import re
14
14
  import tempfile
15
15
  import threading
16
16
  import time
17
- from typing import Any, AnyStr, Optional, Union
17
+ from typing import Any, AnyStr
18
18
  import urllib.parse
19
19
 
20
20
  from google.cloud import storage
@@ -32,7 +32,7 @@ DEFAULT_EE_CONFIG_FILE_RELATIVE = os.path.join(
32
32
  DEFAULT_EE_CONFIG_FILE = os.path.join(
33
33
  HOMEDIR, DEFAULT_EE_CONFIG_FILE_RELATIVE)
34
34
 
35
- CONFIG_PARAMS: dict[str, Union[str, list[str], None]] = {
35
+ CONFIG_PARAMS: dict[str, str | list[str] | None] = {
36
36
  'account': None,
37
37
  'cloud_api_key': None,
38
38
  'private_key': None,
ee/collection.py CHANGED
@@ -5,8 +5,9 @@ This class is never intended to be instantiated by the user.
5
5
 
6
6
  from __future__ import annotations
7
7
 
8
+ from collections.abc import Callable
8
9
  import datetime
9
- from typing import Any, Callable, Generic, TypeVar
10
+ from typing import Any, Generic, TypeVar
10
11
 
11
12
  from ee import _arg_types
12
13
  from ee import _utils
@@ -204,7 +205,7 @@ class Collection(Generic[ElementType], element.Element):
204
205
 
205
206
  # pylint: disable-next=redefined-builtin
206
207
  def aggregate_product(self, property: _arg_types.String) -> ee_number.Number:
207
- """Returns the product of the values ofthe selected property.
208
+ """Returns the product of the values of the selected property.
208
209
 
209
210
  Aggregates over a given property of the objects in a collection, calculating
210
211
  the product of the values of the selected property.
ee/computedobject.py CHANGED
@@ -2,7 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Any, Callable
5
+ from collections.abc import Callable
6
+ from typing import Any
6
7
 
7
8
  from ee import _utils
8
9
  from ee import data
@@ -233,9 +234,11 @@ class ComputedObject(encodable.Encodable, metaclass=ComputedObjectMetaclass):
233
234
  return obj
234
235
  else:
235
236
  result = cls.__new__(cls) # pylint: disable=no-value-for-parameter
237
+ # pylint: disable=attribute-error
236
238
  result.func = obj.func
237
239
  result.args = obj.args
238
240
  result.varName = obj.varName
241
+ # pylint: enable=attribute-error
239
242
  return result
240
243
 
241
244
  @staticmethod
ee/customfunction.py CHANGED
@@ -2,7 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Any, Callable
5
+ from collections.abc import Callable
6
+ from typing import Any
6
7
 
7
8
  from ee import computedobject
8
9
  from ee import ee_exception