earthengine-api 1.5.13rc0__py3-none-any.whl → 1.7.4__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.

Files changed (102) hide show
  1. {earthengine_api-1.5.13rc0.dist-info → earthengine_api-1.7.4.dist-info}/METADATA +3 -3
  2. earthengine_api-1.7.4.dist-info/RECORD +109 -0
  3. {earthengine_api-1.5.13rc0.dist-info → earthengine_api-1.7.4.dist-info}/WHEEL +1 -1
  4. ee/__init__.py +29 -28
  5. ee/_arg_types.py +7 -6
  6. ee/_cloud_api_utils.py +95 -78
  7. ee/_helpers.py +17 -13
  8. ee/_state.py +105 -0
  9. ee/_utils.py +2 -1
  10. ee/apifunction.py +21 -19
  11. ee/apitestcase.py +33 -38
  12. ee/batch.py +87 -77
  13. ee/blob.py +10 -12
  14. ee/classifier.py +57 -59
  15. ee/cli/commands.py +178 -114
  16. ee/cli/eecli.py +1 -1
  17. ee/cli/utils.py +61 -42
  18. ee/clusterer.py +39 -41
  19. ee/collection.py +64 -54
  20. ee/computedobject.py +19 -16
  21. ee/confusionmatrix.py +9 -9
  22. ee/customfunction.py +13 -12
  23. ee/data.py +220 -322
  24. ee/daterange.py +10 -10
  25. ee/deprecation.py +21 -13
  26. ee/deserializer.py +25 -20
  27. ee/dictionary.py +11 -11
  28. ee/ee_array.py +22 -20
  29. ee/ee_date.py +23 -23
  30. ee/ee_list.py +15 -16
  31. ee/ee_number.py +11 -21
  32. ee/ee_string.py +24 -32
  33. ee/ee_types.py +4 -4
  34. ee/element.py +15 -15
  35. ee/encodable.py +7 -4
  36. ee/errormargin.py +4 -4
  37. ee/feature.py +68 -71
  38. ee/featurecollection.py +41 -40
  39. ee/filter.py +90 -92
  40. ee/function.py +8 -8
  41. ee/geometry.py +95 -93
  42. ee/image.py +238 -236
  43. ee/image_converter.py +4 -4
  44. ee/imagecollection.py +30 -27
  45. ee/join.py +13 -15
  46. ee/kernel.py +55 -57
  47. ee/mapclient.py +9 -9
  48. ee/model.py +29 -31
  49. ee/oauth.py +76 -63
  50. ee/pixeltype.py +6 -6
  51. ee/projection.py +5 -4
  52. ee/reducer.py +41 -41
  53. ee/serializer.py +14 -14
  54. ee/table_converter.py +7 -6
  55. ee/terrain.py +7 -9
  56. ee/tests/_cloud_api_utils_test.py +21 -6
  57. ee/tests/_helpers_test.py +57 -4
  58. ee/tests/_state_test.py +49 -0
  59. ee/tests/algorithms.json +85 -2
  60. ee/tests/apifunction_test.py +5 -5
  61. ee/tests/batch_test.py +135 -57
  62. ee/tests/blob_test.py +5 -5
  63. ee/tests/classifier_test.py +3 -3
  64. ee/tests/clusterer_test.py +3 -3
  65. ee/tests/collection_test.py +48 -13
  66. ee/tests/confusionmatrix_test.py +3 -3
  67. ee/tests/data_test.py +484 -55
  68. ee/tests/daterange_test.py +4 -4
  69. ee/tests/deprecation_test.py +6 -4
  70. ee/tests/deserializer_test.py +64 -5
  71. ee/tests/dictionary_test.py +12 -12
  72. ee/tests/ee_array_test.py +3 -3
  73. ee/tests/ee_date_test.py +4 -4
  74. ee/tests/ee_list_test.py +3 -3
  75. ee/tests/ee_number_test.py +75 -30
  76. ee/tests/ee_string_test.py +11 -3
  77. ee/tests/ee_test.py +40 -22
  78. ee/tests/element_test.py +2 -2
  79. ee/tests/errormargin_test.py +1 -1
  80. ee/tests/feature_test.py +10 -10
  81. ee/tests/featurecollection_test.py +3 -3
  82. ee/tests/filter_test.py +4 -4
  83. ee/tests/function_test.py +5 -5
  84. ee/tests/geometry_point_test.py +3 -3
  85. ee/tests/geometry_test.py +93 -52
  86. ee/tests/image_converter_test.py +1 -3
  87. ee/tests/image_test.py +3 -3
  88. ee/tests/imagecollection_test.py +3 -3
  89. ee/tests/join_test.py +3 -3
  90. ee/tests/kernel_test.py +7 -3
  91. ee/tests/model_test.py +17 -5
  92. ee/tests/oauth_test.py +189 -7
  93. ee/tests/pixeltype_test.py +6 -7
  94. ee/tests/projection_test.py +5 -6
  95. ee/tests/reducer_test.py +16 -3
  96. ee/tests/serializer_test.py +39 -12
  97. ee/tests/table_converter_test.py +51 -7
  98. ee/tests/terrain_test.py +11 -3
  99. earthengine_api-1.5.13rc0.dist-info/RECORD +0 -107
  100. {earthengine_api-1.5.13rc0.dist-info → earthengine_api-1.7.4.dist-info}/entry_points.txt +0 -0
  101. {earthengine_api-1.5.13rc0.dist-info → earthengine_api-1.7.4.dist-info}/licenses/LICENSE +0 -0
  102. {earthengine_api-1.5.13rc0.dist-info → earthengine_api-1.7.4.dist-info}/top_level.txt +0 -0
ee/filter.py CHANGED
@@ -12,8 +12,6 @@ Example usage:
12
12
 
13
13
  from __future__ import annotations
14
14
 
15
- from typing import Optional
16
-
17
15
  from ee import _arg_types
18
16
  from ee import _utils
19
17
  from ee import apifunction
@@ -110,7 +108,7 @@ class Filter(computedobject.ComputedObject):
110
108
  These are implicitly ANDed.
111
109
 
112
110
  Args:
113
- new_filter: The filter to append to this one. Possible types are:
111
+ new_filter: The filter to append to this one. Possible types are:
114
112
  1) another fully constructed Filter,
115
113
  2) a JSON representation of a filter,
116
114
  3) an array of 1 or 2.
@@ -143,7 +141,7 @@ class Filter(computedobject.ComputedObject):
143
141
  Returns:
144
142
  The new filter.
145
143
 
146
- Deprecated. Use ee.Filter.eq(), ee.Filter.gte(), etc.'
144
+ Deprecated. Use ee.Filter.eq(), ee.Filter.gte(), etc.'
147
145
  """
148
146
  operator = operator.lower()
149
147
 
@@ -178,8 +176,8 @@ class Filter(computedobject.ComputedObject):
178
176
  min: _arg_types.Number, # pylint: disable=redefined-builtin
179
177
  max: _arg_types.Number, # pylint: disable=redefined-builtin
180
178
  # pylint: disable=invalid-name
181
- maxError: Optional[_arg_types.ErrorMargin] = None,
182
- geometrySelector: Optional[_arg_types.String] = None,
179
+ maxError: _arg_types.ErrorMargin | None = None,
180
+ geometrySelector: _arg_types.String | None = None,
183
181
  # pylint: enable=invalid-name
184
182
  ) -> Filter:
185
183
  """Returns an area filter of the geometry.
@@ -202,10 +200,10 @@ class Filter(computedobject.ComputedObject):
202
200
  @staticmethod
203
201
  def dateRangeContains(
204
202
  # pylint: disable=invalid-name
205
- leftField: Optional[_arg_types.String] = None,
206
- rightValue: Optional[_arg_types.Any] = None,
207
- rightField: Optional[_arg_types.String] = None,
208
- leftValue: Optional[_arg_types.Any] = None,
203
+ leftField: _arg_types.String | None = None,
204
+ rightValue: _arg_types.Any | None = None,
205
+ rightField: _arg_types.String | None = None,
206
+ leftValue: _arg_types.Any | None = None,
209
207
  # pylint: enable=invalid-name
210
208
  ) -> Filter:
211
209
  """Returns a filter that passes if a date range contains a date.
@@ -233,7 +231,7 @@ class Filter(computedobject.ComputedObject):
233
231
  def bounds(
234
232
  geometry: _arg_types.Geometry,
235
233
  # pylint: disable-next=invalid-name
236
- errorMargin: Optional[_arg_types.ErrorMargin] = None,
234
+ errorMargin: _arg_types.ErrorMargin | None = None,
237
235
  ) -> Filter:
238
236
  """Returns a filter on intersection with geometry.
239
237
 
@@ -256,8 +254,8 @@ class Filter(computedobject.ComputedObject):
256
254
  @staticmethod
257
255
  def calendarRange(
258
256
  start: _arg_types.Integer,
259
- end: Optional[_arg_types.Integer] = None,
260
- field: Optional[_arg_types.String] = None,
257
+ end: _arg_types.Integer | None = None,
258
+ field: _arg_types.String | None = None,
261
259
  ) -> Filter:
262
260
  """Returns a filter that passes if a timestamp is in a range.
263
261
 
@@ -284,11 +282,11 @@ class Filter(computedobject.ComputedObject):
284
282
  @staticmethod
285
283
  def contains(
286
284
  # pylint: disable=invalid-name
287
- leftField: Optional[_arg_types.String] = None,
288
- rightValue: Optional[_arg_types.Any] = None,
289
- rightField: Optional[_arg_types.String] = None,
290
- leftValue: Optional[_arg_types.Any] = None,
291
- maxError: Optional[_arg_types.ErrorMargin] = None,
285
+ leftField: _arg_types.String | None = None,
286
+ rightValue: _arg_types.Any | None = None,
287
+ rightField: _arg_types.String | None = None,
288
+ leftValue: _arg_types.Any | None = None,
289
+ maxError: _arg_types.ErrorMargin | None = None,
292
290
  # pylint: enable=invalid-name
293
291
  ) -> Filter:
294
292
  """Returns a filter that passes if the left contains the right geometry.
@@ -321,7 +319,7 @@ class Filter(computedobject.ComputedObject):
321
319
  @staticmethod
322
320
  @_utils.accept_opt_prefix('opt_end')
323
321
  def date(
324
- start: _arg_types.Date, end: Optional[_arg_types.Date] = None
322
+ start: _arg_types.Date, end: _arg_types.Date | None = None
325
323
  ) -> Filter:
326
324
  """Filter images by date.
327
325
 
@@ -360,11 +358,11 @@ class Filter(computedobject.ComputedObject):
360
358
  @staticmethod
361
359
  def disjoint(
362
360
  # pylint: disable=invalid-name
363
- leftField: Optional[_arg_types.String] = None,
364
- rightValue: Optional[_arg_types.Any] = None,
365
- rightField: Optional[_arg_types.String] = None,
366
- leftValue: Optional[_arg_types.Any] = None,
367
- maxError: Optional[_arg_types.ErrorMargin] = None,
361
+ leftField: _arg_types.String | None = None,
362
+ rightValue: _arg_types.Any | None = None,
363
+ rightField: _arg_types.String | None = None,
364
+ leftValue: _arg_types.Any | None = None,
365
+ maxError: _arg_types.ErrorMargin | None = None,
368
366
  # pylint: enable=invalid-name
369
367
  ) -> Filter:
370
368
  """Returns a filter.
@@ -402,10 +400,10 @@ class Filter(computedobject.ComputedObject):
402
400
  @staticmethod
403
401
  def equals(
404
402
  # pylint: disable=invalid-name
405
- leftField: Optional[_arg_types.String] = None,
406
- rightValue: Optional[_arg_types.Any] = None,
407
- rightField: Optional[_arg_types.String] = None,
408
- leftValue: Optional[_arg_types.Any] = None,
403
+ leftField: _arg_types.String | None = None,
404
+ rightValue: _arg_types.Any | None = None,
405
+ rightField: _arg_types.String | None = None,
406
+ leftValue: _arg_types.Any | None = None,
409
407
  # pylint: enable=invalid-name
410
408
  ) -> Filter:
411
409
  """Returns a filter that passes if the two operands are equals.
@@ -442,7 +440,7 @@ class Filter(computedobject.ComputedObject):
442
440
  def geometry(
443
441
  geometry: _arg_types.Geometry,
444
442
  # pylint: disable-next=invalid-name
445
- errorMargin: Optional[_arg_types.ErrorMargin] = None,
443
+ errorMargin: _arg_types.ErrorMargin | None = None,
446
444
  ):
447
445
  """Filter on intersection with geometry.
448
446
 
@@ -470,10 +468,10 @@ class Filter(computedobject.ComputedObject):
470
468
  @staticmethod
471
469
  def greaterThan(
472
470
  # pylint: disable=invalid-name
473
- leftField: Optional[_arg_types.String] = None,
474
- rightValue: Optional[_arg_types.Any] = None,
475
- rightField: Optional[_arg_types.String] = None,
476
- leftValue: Optional[_arg_types.Any] = None,
471
+ leftField: _arg_types.String | None = None,
472
+ rightValue: _arg_types.Any | None = None,
473
+ rightField: _arg_types.String | None = None,
474
+ leftValue: _arg_types.Any | None = None,
477
475
  # pylint: enable=invalid-name
478
476
  ) -> Filter:
479
477
  """Returns a filter that passes if value is greater than the right operand.
@@ -496,10 +494,10 @@ class Filter(computedobject.ComputedObject):
496
494
  @staticmethod
497
495
  def greaterThanOrEquals(
498
496
  # pylint: disable=invalid-name
499
- leftField: Optional[_arg_types.String] = None,
500
- rightValue: Optional[_arg_types.Any] = None,
501
- rightField: Optional[_arg_types.String] = None,
502
- leftValue: Optional[_arg_types.Any] = None,
497
+ leftField: _arg_types.String | None = None,
498
+ rightValue: _arg_types.Any | None = None,
499
+ rightField: _arg_types.String | None = None,
500
+ leftValue: _arg_types.Any | None = None,
503
501
  # pylint: enable=invalid-name
504
502
  ) -> Filter:
505
503
  """Returns filter that passes if value is greater than the right operand.
@@ -536,10 +534,10 @@ class Filter(computedobject.ComputedObject):
536
534
  @staticmethod
537
535
  def hasType(
538
536
  # pylint: disable=invalid-name
539
- leftField: Optional[_arg_types.String] = None,
540
- rightValue: Optional[_arg_types.Any] = None,
541
- rightField: Optional[_arg_types.String] = None,
542
- leftValue: Optional[_arg_types.Any] = None,
537
+ leftField: _arg_types.String | None = None,
538
+ rightValue: _arg_types.Any | None = None,
539
+ rightField: _arg_types.String | None = None,
540
+ leftValue: _arg_types.Any | None = None,
543
541
  # pylint: enable=invalid-name
544
542
  ) -> Filter:
545
543
  """Returns a filter that passes if the left has the type.
@@ -568,11 +566,11 @@ class Filter(computedobject.ComputedObject):
568
566
  @staticmethod
569
567
  def intersects(
570
568
  # pylint: disable=invalid-name
571
- leftField: Optional[_arg_types.String] = None,
572
- rightValue: Optional[_arg_types.Any] = None,
573
- rightField: Optional[_arg_types.String] = None,
574
- leftValue: Optional[_arg_types.Any] = None,
575
- maxError: Optional[_arg_types.ErrorMargin] = None,
569
+ leftField: _arg_types.String | None = None,
570
+ rightValue: _arg_types.Any | None = None,
571
+ rightField: _arg_types.String | None = None,
572
+ leftValue: _arg_types.Any | None = None,
573
+ maxError: _arg_types.ErrorMargin | None = None,
576
574
  # pylint: enable=invalid-name
577
575
  ) -> Filter:
578
576
  """Returns a filter that passes if left intersects the right geometry.
@@ -602,11 +600,11 @@ class Filter(computedobject.ComputedObject):
602
600
  @staticmethod
603
601
  def isContained(
604
602
  # pylint: disable=invalid-name
605
- leftField: Optional[_arg_types.String] = None,
606
- rightValue: Optional[_arg_types.Any] = None,
607
- rightField: Optional[_arg_types.String] = None,
608
- leftValue: Optional[_arg_types.Any] = None,
609
- maxError: Optional[_arg_types.ErrorMargin] = None,
603
+ leftField: _arg_types.String | None = None,
604
+ rightValue: _arg_types.Any | None = None,
605
+ rightField: _arg_types.String | None = None,
606
+ leftValue: _arg_types.Any | None = None,
607
+ maxError: _arg_types.ErrorMargin | None = None,
610
608
  # pylint: enable=invalid-name
611
609
  ) -> Filter:
612
610
  """Returns filter that passes if the right geometry contains the geometry.
@@ -641,10 +639,10 @@ class Filter(computedobject.ComputedObject):
641
639
  )
642
640
  def inList(
643
641
  # pylint: disable=invalid-name
644
- leftField: Optional[_arg_types.String] = None,
645
- rightValue: Optional[_arg_types.Any] = None,
646
- rightField: Optional[_arg_types.String] = None,
647
- leftValue: Optional[_arg_types.Any] = None,
642
+ leftField: _arg_types.String | None = None,
643
+ rightValue: _arg_types.Any | None = None,
644
+ rightField: _arg_types.String | None = None,
645
+ leftValue: _arg_types.Any | None = None,
648
646
  # pylint: enable=invalid-name
649
647
  ) -> Filter:
650
648
  """Filter on metadata contained in a list.
@@ -678,10 +676,10 @@ class Filter(computedobject.ComputedObject):
678
676
  @staticmethod
679
677
  def lessThan(
680
678
  # pylint: disable=invalid-name
681
- leftField: Optional[_arg_types.String] = None,
682
- rightValue: Optional[_arg_types.Any] = None,
683
- rightField: Optional[_arg_types.String] = None,
684
- leftValue: Optional[_arg_types.Any] = None,
679
+ leftField: _arg_types.String | None = None,
680
+ rightValue: _arg_types.Any | None = None,
681
+ rightField: _arg_types.String | None = None,
682
+ leftValue: _arg_types.Any | None = None,
685
683
  # pylint: enable=invalid-name
686
684
  ) -> Filter:
687
685
  """Returns filter that passes if the value is less than the right operand.
@@ -704,10 +702,10 @@ class Filter(computedobject.ComputedObject):
704
702
  @staticmethod
705
703
  def lessThanOrEquals(
706
704
  # pylint: disable=invalid-name
707
- leftField: Optional[_arg_types.String] = None,
708
- rightValue: Optional[_arg_types.Any] = None,
709
- rightField: Optional[_arg_types.String] = None,
710
- leftValue: Optional[_arg_types.Any] = None,
705
+ leftField: _arg_types.String | None = None,
706
+ rightValue: _arg_types.Any | None = None,
707
+ rightField: _arg_types.String | None = None,
708
+ leftValue: _arg_types.Any | None = None,
711
709
  # pylint: enable=invalid-name
712
710
  ) -> Filter:
713
711
  """Returns filter that passes if the value is less than the right operand.
@@ -730,10 +728,10 @@ class Filter(computedobject.ComputedObject):
730
728
  @staticmethod
731
729
  def listContains(
732
730
  # pylint: disable=invalid-name
733
- leftField: Optional[_arg_types.String] = None,
734
- rightValue: Optional[_arg_types.Any] = None,
735
- rightField: Optional[_arg_types.String] = None,
736
- leftValue: Optional[_arg_types.Any] = None,
731
+ leftField: _arg_types.String | None = None,
732
+ rightValue: _arg_types.Any | None = None,
733
+ rightField: _arg_types.String | None = None,
734
+ leftValue: _arg_types.Any | None = None,
737
735
  # pylint: enable=invalid-name
738
736
  ) -> Filter:
739
737
  """Returns filter that passes if the left, contains the right.
@@ -770,10 +768,10 @@ class Filter(computedobject.ComputedObject):
770
768
  def maxDifference(
771
769
  difference: _arg_types.Number,
772
770
  # pylint: disable=invalid-name
773
- leftField: Optional[_arg_types.String] = None,
774
- rightValue: Optional[_arg_types.Any] = None,
775
- rightField: Optional[_arg_types.String] = None,
776
- leftValue: Optional[_arg_types.Any] = None,
771
+ leftField: _arg_types.String | None = None,
772
+ rightValue: _arg_types.Any | None = None,
773
+ rightField: _arg_types.String | None = None,
774
+ leftValue: _arg_types.Any | None = None,
777
775
  # pylint: enable=invalid-name
778
776
  ) -> Filter:
779
777
  """Returns a filter that passes if the fields are within a given difference.
@@ -813,10 +811,10 @@ class Filter(computedobject.ComputedObject):
813
811
  @staticmethod
814
812
  def notEquals(
815
813
  # pylint: disable=invalid-name
816
- leftField: Optional[_arg_types.String] = None,
817
- rightValue: Optional[_arg_types.Any] = None,
818
- rightField: Optional[_arg_types.String] = None,
819
- leftValue: Optional[_arg_types.Any] = None,
814
+ leftField: _arg_types.String | None = None,
815
+ rightValue: _arg_types.Any | None = None,
816
+ rightField: _arg_types.String | None = None,
817
+ leftValue: _arg_types.Any | None = None,
820
818
  # pylint: enable=invalid-name
821
819
  ) -> Filter:
822
820
  """Returns a filter that passes unless the two operands are equal.
@@ -881,10 +879,10 @@ class Filter(computedobject.ComputedObject):
881
879
  @staticmethod
882
880
  def stringContains(
883
881
  # pylint: disable=invalid-name
884
- leftField: Optional[_arg_types.String] = None,
885
- rightValue: Optional[_arg_types.Any] = None,
886
- rightField: Optional[_arg_types.String] = None,
887
- leftValue: Optional[_arg_types.Any] = None,
882
+ leftField: _arg_types.String | None = None,
883
+ rightValue: _arg_types.Any | None = None,
884
+ rightField: _arg_types.String | None = None,
885
+ leftValue: _arg_types.Any | None = None,
888
886
  # pylint: enable=invalid-name
889
887
  ) -> Filter:
890
888
  """Returns a filter that passes if it contains the right string.
@@ -910,10 +908,10 @@ class Filter(computedobject.ComputedObject):
910
908
  @staticmethod
911
909
  def stringEndsWith(
912
910
  # pylint: disable=invalid-name
913
- leftField: Optional[_arg_types.String] = None,
914
- rightValue: Optional[_arg_types.Any] = None,
915
- rightField: Optional[_arg_types.String] = None,
916
- leftValue: Optional[_arg_types.Any] = None,
911
+ leftField: _arg_types.String | None = None,
912
+ rightValue: _arg_types.Any | None = None,
913
+ rightField: _arg_types.String | None = None,
914
+ leftValue: _arg_types.Any | None = None,
917
915
  # pylint: enable=invalid-name
918
916
  ) -> Filter:
919
917
  """Returns a filter that passes if the string ends with the right string.
@@ -939,10 +937,10 @@ class Filter(computedobject.ComputedObject):
939
937
  @staticmethod
940
938
  def stringStartsWith(
941
939
  # pylint: disable=invalid-name
942
- leftField: Optional[_arg_types.String] = None,
943
- rightValue: Optional[_arg_types.Any] = None,
944
- rightField: Optional[_arg_types.String] = None,
945
- leftValue: Optional[_arg_types.Any] = None,
940
+ leftField: _arg_types.String | None = None,
941
+ rightValue: _arg_types.Any | None = None,
942
+ rightField: _arg_types.String | None = None,
943
+ leftValue: _arg_types.Any | None = None,
946
944
  # pylint: enable=invalid-name
947
945
  ) -> Filter:
948
946
  """Returns a filter that passes if the string starts with the right string.
@@ -969,11 +967,11 @@ class Filter(computedobject.ComputedObject):
969
967
  def withinDistance(
970
968
  distance: _arg_types.Number,
971
969
  # pylint: disable=invalid-name
972
- leftField: Optional[_arg_types.String] = None,
973
- rightValue: Optional[_arg_types.Any] = None,
974
- rightField: Optional[_arg_types.String] = None,
975
- leftValue: Optional[_arg_types.Any] = None,
976
- maxError: Optional[_arg_types.ErrorMargin] = None,
970
+ leftField: _arg_types.String | None = None,
971
+ rightValue: _arg_types.Any | None = None,
972
+ rightField: _arg_types.String | None = None,
973
+ leftValue: _arg_types.Any | None = None,
974
+ maxError: _arg_types.ErrorMargin | None = None,
977
975
  # pylint: enable=invalid-name
978
976
  ) -> Filter:
979
977
  """Returns a filter that passes if the geometry is within a distance.
ee/function.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """A base class for EE Functions."""
2
2
 
3
3
  import textwrap
4
- from typing import Any, Dict, Set
4
+ from typing import Any
5
5
 
6
6
  from ee import computedobject
7
7
  from ee import ee_exception
@@ -31,7 +31,7 @@ class Function(encodable.EncodableFunction):
31
31
  """
32
32
  Function._promoter = staticmethod(promoter)
33
33
 
34
- def getSignature(self) -> Dict[str, Any]:
34
+ def getSignature(self) -> dict[str, Any]:
35
35
  """Returns a description of the interface provided by this function.
36
36
 
37
37
  Returns:
@@ -75,7 +75,7 @@ class Function(encodable.EncodableFunction):
75
75
  result = computedobject.ComputedObject(self, self.promoteArgs(named_args))
76
76
  return Function._promoter(result, self.getReturnType())
77
77
 
78
- def promoteArgs(self, args: Dict[str, Any]) -> Dict[str, Any]:
78
+ def promoteArgs(self, args: dict[str, Any]) -> dict[str, Any]:
79
79
  """Promotes arguments to their types based on the function's signature.
80
80
 
81
81
  Verifies that all required arguments are provided and no unknown arguments
@@ -95,8 +95,8 @@ class Function(encodable.EncodableFunction):
95
95
  arg_specs = signature['args']
96
96
 
97
97
  # Promote all recognized args.
98
- promoted_args: Dict[str, Any] = {}
99
- known: Set[str] = set()
98
+ promoted_args: dict[str, Any] = {}
99
+ known: set[str] = set()
100
100
  for arg_spec in arg_specs:
101
101
  name = arg_spec['name']
102
102
  if name in args:
@@ -142,9 +142,9 @@ class Function(encodable.EncodableFunction):
142
142
  'Too many (%d) arguments to function: %s'
143
143
  % (len(args), signature.get('name'))
144
144
  )
145
- named_args = dict(
146
- [(arg_spec['name'], value) for arg_spec, value in zip(arg_specs, args)]
147
- )
145
+ named_args = {
146
+ arg_spec['name']: value for arg_spec, value in zip(arg_specs, args)
147
+ }
148
148
 
149
149
  # Handle keyword arguments.
150
150
  if extra_keyword_args: