1# Copyright 2014 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import contextlib
6import logging
7import os
8
9from pylib.constants import host_paths
10
11_REQUESTS_PATH = os.path.join(
12    host_paths.DIR_SOURCE_ROOT, 'third_party', 'requests', 'src')
13_APPURIFY_PYTHON_PATH = os.path.join(
14    host_paths.DIR_SOURCE_ROOT, 'third_party', 'appurify-python', 'src')
15
16with host_paths.SysPath(_REQUESTS_PATH), (
17     host_paths.SysPath(_APPURIFY_PYTHON_PATH)):
18
19  handlers_before = list(logging.getLogger().handlers)
20
21  import appurify.api # pylint: disable=import-error
22  import appurify.utils # pylint: disable=import-error
23
24  handlers_after = list(logging.getLogger().handlers)
25  new_handler = list(set(handlers_after) - set(handlers_before))
26  while new_handler:
27    logging.info("Removing logging handler.")
28    logging.getLogger().removeHandler(new_handler.pop())
29
30  api = appurify.api
31  utils = appurify.utils
32
33# This is not thread safe. If multiple threads are ever supported with appurify
34# this may cause logging messages to go missing.
35@contextlib.contextmanager
36def SanitizeLogging(verbose_count, level):
37  if verbose_count < 2:
38    logging.disable(level)
39    yield True
40    logging.disable(logging.NOTSET)
41  else:
42    yield False
43
44