blob: f6145c4303c19e8d25e159024b803a688ec5e32f [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF 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.
from pypaimon.common.options import ConfigOption
from pypaimon.common.options.options_utils import OptionsUtils
class Options:
def __init__(self, data: dict):
self.data = data
@classmethod
def from_none(cls):
return cls({})
def to_map(self) -> dict:
return self.data
def get(self, key: ConfigOption, default=None):
"""
Get the value for the given ConfigOption, with type conversion.
Args:
key: The ConfigOption to get the value for
default: The default value to return if the ConfigOption is not found
Returns:
The converted value according to the ConfigOption's type, or default if not found
"""
main_key = key.key()
if main_key in self.data:
raw_value = self.data[main_key]
if raw_value is not None:
return OptionsUtils.convert_value(raw_value, key.get_clazz())
return default if default is not None else key.default_value()
def set(self, key: ConfigOption, value):
self.data[key.key()] = OptionsUtils.convert_to_string(value)
def contains(self, key: ConfigOption):
return key.key() in self.data
def contains_key(self, key: str) -> bool:
"""Check if the given key string exists in the options."""
return key in self.data
def copy(self) -> 'Options':
return Options(dict(self.data))