"""Interface to the ows-features microservice.""" from ddtrace import tracer from oto import response as oto_response from sound_recordings import features from sound_recordings.logic.parallel import parallel @tracer.wrap(name="get_mobile_features") def get_mobile_features(user_id): """Get mobile features. Args: user_id (str): The User ID. Returns: oto.response.Response with feature details. """ mobile_features = features.get_mobile_features() return oto_response.Response(message=mobile_features) @tracer.wrap(name="get_mobile_features_parallel") def get_mobile_features_parallel(user_ids): """Get features in parallel. Args: user_ids (str): The User IDs. Returns: list of feature details for each user. """ requests = dict( {user_id: _features_parallel_partial(user_id) for user_id in user_ids} ) return parallel(requests).message def _features_parallel_partial(user_id): return {"func": get_mobile_features, "args": (user_id,), "kwargs": {}}