// Copyright 2025 Google LLC // // Licensed 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 // // https://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. #include "cel_expr_python/py_cel_function_decl.h" #include #include #include #include #include "env/config.h" #include "env/type_info.h" #include "cel_expr_python/py_cel_overload.h" #include "cel_expr_python/py_cel_type.h" #include #include namespace cel_python { namespace py = ::pybind11; void PyCelFunctionDecl::DefinePythonBindings(pybind11::module& m) { py::class_>( m, "FunctionDecl") .def(py::init>(), py::arg("name"), py::arg("overloads")); } cel::Config::FunctionConfig PyCelFunctionDecl::ToFunctionConfig() const { cel::Config::FunctionConfig function_config; function_config.name = name_; function_config.overload_configs.reserve(overloads_.size()); for (const PyCelOverload& overload : overloads_) { function_config.overload_configs.push_back( overload.ToFunctionOverloadConfig()); } return function_config; } } // namespace cel_python