1*9e965d6fSRomain Jobredeaux# Copyright 2018 The Bazel Authors. All rights reserved. 2*9e965d6fSRomain Jobredeaux# 3*9e965d6fSRomain Jobredeaux# Licensed under the Apache License, Version 2.0 (the "License"); 4*9e965d6fSRomain Jobredeaux# you may not use this file except in compliance with the License. 5*9e965d6fSRomain Jobredeaux# You may obtain a copy of the License at 6*9e965d6fSRomain Jobredeaux# 7*9e965d6fSRomain Jobredeaux# http://www.apache.org/licenses/LICENSE-2.0 8*9e965d6fSRomain Jobredeaux# 9*9e965d6fSRomain Jobredeaux# Unless required by applicable law or agreed to in writing, software 10*9e965d6fSRomain Jobredeaux# distributed under the License is distributed on an "AS IS" BASIS, 11*9e965d6fSRomain Jobredeaux# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*9e965d6fSRomain Jobredeaux# See the License for the specific language governing permissions and 13*9e965d6fSRomain Jobredeaux# limitations under the License. 14*9e965d6fSRomain Jobredeaux"""Provides the base adapter functions.""" 15*9e965d6fSRomain Jobredeaux 16*9e965d6fSRomain Jobredeauxdef make_adapter(aspect_attrs, adapt): 17*9e965d6fSRomain Jobredeaux """Creates an Adapter. 18*9e965d6fSRomain Jobredeaux 19*9e965d6fSRomain Jobredeaux Args: 20*9e965d6fSRomain Jobredeaux aspect_attrs: A function that returns a list of attrs for the aspect. 21*9e965d6fSRomain Jobredeaux adapt: A function that extracts and processes data from the target. 22*9e965d6fSRomain Jobredeaux 23*9e965d6fSRomain Jobredeaux Returns: 24*9e965d6fSRomain Jobredeaux A struct that represents an adapter. 25*9e965d6fSRomain Jobredeaux """ 26*9e965d6fSRomain Jobredeaux if not aspect_attrs: 27*9e965d6fSRomain Jobredeaux fail("aspect_attrs is None.") 28*9e965d6fSRomain Jobredeaux if not adapt: 29*9e965d6fSRomain Jobredeaux fail("adapt is None.") 30*9e965d6fSRomain Jobredeaux return struct( 31*9e965d6fSRomain Jobredeaux aspect_attrs = aspect_attrs, 32*9e965d6fSRomain Jobredeaux adapt = adapt, 33*9e965d6fSRomain Jobredeaux ) 34