# SPDX-License-Identifier: Apache-2.0## The OpenSearch Contributors require contributions made to# this file be licensed under the Apache-2.0 license or a# compatible open source license.## Modifications Copyright OpenSearch Contributors. See# GitHub history for details.## Licensed to Elasticsearch B.V. under one or more contributor# license agreements. See the NOTICE file distributed with# this work for additional information regarding copyright# ownership. Elasticsearch B.V. licenses this file to you under# the Apache License, Version 2.0 (the "License"); you may# not use this file except in compliance with the License.# You may obtain a copy of the License at## http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing,# software distributed under the License is distributed on an# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY# KIND, either express or implied. See the License for the# specific language governing permissions and limitations# under the License.importoperatorfromtypingimportAnyfrom.utilsimportAttrDict
[docs]classRange(AttrDict):OPS={"lt":operator.lt,"lte":operator.le,"gt":operator.gt,"gte":operator.ge,}def__init__(self,*args:Any,**kwargs:Any)->None:ifargsand(len(args)>1orkwargsornotisinstance(args[0],dict)):raiseValueError("Range accepts a single dictionary or a set of keyword arguments.")data=args[0]ifargselsekwargsforkindata:ifknotinself.OPS:raiseValueError(f"Range received an unknown operator {k!r}")if"gt"indataand"gte"indata:raiseValueError("You cannot specify both gt and gte for Range.")if"lt"indataand"lte"indata:raiseValueError("You cannot specify both lt and lte for Range.")super().__init__(args[0]ifargselsekwargs)