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.
- {earthengine_api-1.5.13rc0.dist-info → earthengine_api-1.7.4.dist-info}/METADATA +3 -3
- earthengine_api-1.7.4.dist-info/RECORD +109 -0
- {earthengine_api-1.5.13rc0.dist-info → earthengine_api-1.7.4.dist-info}/WHEEL +1 -1
- ee/__init__.py +29 -28
- ee/_arg_types.py +7 -6
- ee/_cloud_api_utils.py +95 -78
- ee/_helpers.py +17 -13
- ee/_state.py +105 -0
- ee/_utils.py +2 -1
- ee/apifunction.py +21 -19
- ee/apitestcase.py +33 -38
- ee/batch.py +87 -77
- ee/blob.py +10 -12
- ee/classifier.py +57 -59
- ee/cli/commands.py +178 -114
- ee/cli/eecli.py +1 -1
- ee/cli/utils.py +61 -42
- ee/clusterer.py +39 -41
- ee/collection.py +64 -54
- ee/computedobject.py +19 -16
- ee/confusionmatrix.py +9 -9
- ee/customfunction.py +13 -12
- ee/data.py +220 -322
- ee/daterange.py +10 -10
- ee/deprecation.py +21 -13
- ee/deserializer.py +25 -20
- ee/dictionary.py +11 -11
- ee/ee_array.py +22 -20
- ee/ee_date.py +23 -23
- ee/ee_list.py +15 -16
- ee/ee_number.py +11 -21
- ee/ee_string.py +24 -32
- ee/ee_types.py +4 -4
- ee/element.py +15 -15
- ee/encodable.py +7 -4
- ee/errormargin.py +4 -4
- ee/feature.py +68 -71
- ee/featurecollection.py +41 -40
- ee/filter.py +90 -92
- ee/function.py +8 -8
- ee/geometry.py +95 -93
- ee/image.py +238 -236
- ee/image_converter.py +4 -4
- ee/imagecollection.py +30 -27
- ee/join.py +13 -15
- ee/kernel.py +55 -57
- ee/mapclient.py +9 -9
- ee/model.py +29 -31
- ee/oauth.py +76 -63
- ee/pixeltype.py +6 -6
- ee/projection.py +5 -4
- ee/reducer.py +41 -41
- ee/serializer.py +14 -14
- ee/table_converter.py +7 -6
- ee/terrain.py +7 -9
- ee/tests/_cloud_api_utils_test.py +21 -6
- ee/tests/_helpers_test.py +57 -4
- ee/tests/_state_test.py +49 -0
- ee/tests/algorithms.json +85 -2
- ee/tests/apifunction_test.py +5 -5
- ee/tests/batch_test.py +135 -57
- ee/tests/blob_test.py +5 -5
- ee/tests/classifier_test.py +3 -3
- ee/tests/clusterer_test.py +3 -3
- ee/tests/collection_test.py +48 -13
- ee/tests/confusionmatrix_test.py +3 -3
- ee/tests/data_test.py +484 -55
- ee/tests/daterange_test.py +4 -4
- ee/tests/deprecation_test.py +6 -4
- ee/tests/deserializer_test.py +64 -5
- ee/tests/dictionary_test.py +12 -12
- 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 +75 -30
- ee/tests/ee_string_test.py +11 -3
- ee/tests/ee_test.py +40 -22
- ee/tests/element_test.py +2 -2
- ee/tests/errormargin_test.py +1 -1
- ee/tests/feature_test.py +10 -10
- ee/tests/featurecollection_test.py +3 -3
- ee/tests/filter_test.py +4 -4
- ee/tests/function_test.py +5 -5
- ee/tests/geometry_point_test.py +3 -3
- ee/tests/geometry_test.py +93 -52
- ee/tests/image_converter_test.py +1 -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 +7 -3
- ee/tests/model_test.py +17 -5
- ee/tests/oauth_test.py +189 -7
- ee/tests/pixeltype_test.py +6 -7
- ee/tests/projection_test.py +5 -6
- ee/tests/reducer_test.py +16 -3
- ee/tests/serializer_test.py +39 -12
- ee/tests/table_converter_test.py +51 -7
- ee/tests/terrain_test.py +11 -3
- earthengine_api-1.5.13rc0.dist-info/RECORD +0 -107
- {earthengine_api-1.5.13rc0.dist-info → earthengine_api-1.7.4.dist-info}/entry_points.txt +0 -0
- {earthengine_api-1.5.13rc0.dist-info → earthengine_api-1.7.4.dist-info}/licenses/LICENSE +0 -0
- {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.
|
|
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.
|
|
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:
|
|
182
|
-
geometrySelector:
|
|
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:
|
|
206
|
-
rightValue:
|
|
207
|
-
rightField:
|
|
208
|
-
leftValue:
|
|
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:
|
|
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:
|
|
260
|
-
field:
|
|
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:
|
|
288
|
-
rightValue:
|
|
289
|
-
rightField:
|
|
290
|
-
leftValue:
|
|
291
|
-
maxError:
|
|
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:
|
|
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:
|
|
364
|
-
rightValue:
|
|
365
|
-
rightField:
|
|
366
|
-
leftValue:
|
|
367
|
-
maxError:
|
|
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:
|
|
406
|
-
rightValue:
|
|
407
|
-
rightField:
|
|
408
|
-
leftValue:
|
|
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:
|
|
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:
|
|
474
|
-
rightValue:
|
|
475
|
-
rightField:
|
|
476
|
-
leftValue:
|
|
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:
|
|
500
|
-
rightValue:
|
|
501
|
-
rightField:
|
|
502
|
-
leftValue:
|
|
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:
|
|
540
|
-
rightValue:
|
|
541
|
-
rightField:
|
|
542
|
-
leftValue:
|
|
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:
|
|
572
|
-
rightValue:
|
|
573
|
-
rightField:
|
|
574
|
-
leftValue:
|
|
575
|
-
maxError:
|
|
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:
|
|
606
|
-
rightValue:
|
|
607
|
-
rightField:
|
|
608
|
-
leftValue:
|
|
609
|
-
maxError:
|
|
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:
|
|
645
|
-
rightValue:
|
|
646
|
-
rightField:
|
|
647
|
-
leftValue:
|
|
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:
|
|
682
|
-
rightValue:
|
|
683
|
-
rightField:
|
|
684
|
-
leftValue:
|
|
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:
|
|
708
|
-
rightValue:
|
|
709
|
-
rightField:
|
|
710
|
-
leftValue:
|
|
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:
|
|
734
|
-
rightValue:
|
|
735
|
-
rightField:
|
|
736
|
-
leftValue:
|
|
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:
|
|
774
|
-
rightValue:
|
|
775
|
-
rightField:
|
|
776
|
-
leftValue:
|
|
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:
|
|
817
|
-
rightValue:
|
|
818
|
-
rightField:
|
|
819
|
-
leftValue:
|
|
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:
|
|
885
|
-
rightValue:
|
|
886
|
-
rightField:
|
|
887
|
-
leftValue:
|
|
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:
|
|
914
|
-
rightValue:
|
|
915
|
-
rightField:
|
|
916
|
-
leftValue:
|
|
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:
|
|
943
|
-
rightValue:
|
|
944
|
-
rightField:
|
|
945
|
-
leftValue:
|
|
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:
|
|
973
|
-
rightValue:
|
|
974
|
-
rightField:
|
|
975
|
-
leftValue:
|
|
976
|
-
maxError:
|
|
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
|
|
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) ->
|
|
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:
|
|
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:
|
|
99
|
-
known:
|
|
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 =
|
|
146
|
-
|
|
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:
|