old_contents: # Copyright 2020 The Pigweed Authors
  #
  # 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.
  """Preconfigured checks for Python code.
  
  These checks assume that they are running in a preconfigured Python environment.
  """
  
  import logging
  import os
  import sys
  from typing import Callable, Tuple
  
  try:
      import pw_presubmit
  except ImportError:
      # Append the pw_presubmit package path to the module search path to allow
      # running this module without installing the pw_presubmit package.
      sys.path.append(os.path.dirname(os.path.dirname(
          os.path.abspath(__file__))))
      import pw_presubmit
  
  from pw_presubmit import build, filter_paths, PresubmitContext
  
  _LOG = logging.getLogger(__name__)
  
  _PYTHON_EXTENSIONS = ('.py', '.gn', '.gni')
  
  
  @filter_paths(endswith=_PYTHON_EXTENSIONS)
  def gn_python_check(ctx: PresubmitContext):
      build.gn_gen(ctx.root, ctx.output_dir)
      build.ninja(ctx.output_dir, 'python.tests', 'python.lint')
  
  
  @filter_paths(endswith=_PYTHON_EXTENSIONS)
  def gn_python_lint(ctx: pw_presubmit.PresubmitContext) -> None:
      build.gn_gen(ctx.root, ctx.output_dir)
      build.ninja(ctx.output_dir, 'python.lint')
  
  
  # TODO(mohrr) Remove gn_lint when downstream projects no longer reference it.
  gn_lint = gn_python_lint
  
  # TODO(pwbug/454) Remove after downstream projects switch to using functions
  # directly.
  _LINT_CHECKS = (gn_python_lint, )
  _ALL_CHECKS = (gn_python_check, )
  
  
  # TODO(pwbug/454) Remove after downstream projects switch to using functions
  # directly.
  def lint_checks(endswith: str = '.py',
                  **filter_paths_args) -> Tuple[Callable, ...]:
      return tuple(
          filter_paths(endswith=endswith, **filter_paths_args)(function)
          for function in _LINT_CHECKS)
  
  
  # TODO(pwbug/454) Remove after downstream projects switch to using functions
  # directly.
  def all_checks(endswith: str = '.py',
                 **filter_paths_args) -> Tuple[Callable, ...]:
      return tuple(
          filter_paths(endswith=endswith, **filter_paths_args)(function)
          for function in _ALL_CHECKS)
  
new_contents: # Copyright 2020 The Pigweed Authors
  #
  # 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.
  """Preconfigured checks for Python code.
  
  These checks assume that they are running in a preconfigured Python environment.
  """
  
  import logging
  import os
  import sys
  
  try:
      import pw_presubmit
  except ImportError:
      # Append the pw_presubmit package path to the module search path to allow
      # running this module without installing the pw_presubmit package.
      sys.path.append(os.path.dirname(os.path.dirname(
          os.path.abspath(__file__))))
      import pw_presubmit
  
  from pw_presubmit import build, filter_paths, PresubmitContext
  
  _LOG = logging.getLogger(__name__)
  
  _PYTHON_EXTENSIONS = ('.py', '.gn', '.gni')
  
  
  @filter_paths(endswith=_PYTHON_EXTENSIONS)
  def gn_python_check(ctx: PresubmitContext):
      build.gn_gen(ctx.root, ctx.output_dir)
      build.ninja(ctx.output_dir, 'python.tests', 'python.lint')
  
  
  @filter_paths(endswith=_PYTHON_EXTENSIONS)
  def gn_python_lint(ctx: pw_presubmit.PresubmitContext) -> None:
      build.gn_gen(ctx.root, ctx.output_dir)
      build.ninja(ctx.output_dir, 'python.lint')
  
subject: Remove helpers from python_checks.py