#
# 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
#
#     http://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.

[GLOBAL]
pants_version: 1.1.0-rc7

plugins: [
    'pantsbuild.pants.contrib.python.checks==%(pants_version)s',
  ]

# This is a deprecated option that needs to be set to the empty list here
# to avoid warnings.
# TODO(John Sirois): Remove once we upgrade to 1.3.0+.
default_backend_packages: []

backend_packages: [
    # Pants built-ins:
    'pants.backend.codegen',
    'pants.backend.graph_info',
    'pants.backend.python',
  ]

[thrift-binary]
# Pants 0.0.57 defaults to 0.9.2, we want to stay pinned down to 0.9.1 for now.
version: 0.9.1


[python-setup]
interpreter_requirement: CPython>=2.7,<3


# We have some modules that have side-effects upon import, including starting a repl, so we can't
# use python-eval to validate our BUILD deps currently.
[compile.python-eval]
skip: True


# We use isort for this.
[pycheck-import-order]
skip: True


[pycheck-pep8]
# Code reference is here: http://pep8.readthedocs.org/en/latest/intro.html#error-codes
ignore: [
    # Aurora custom ignores:
    'E114',  # indentation is not a multiple of four (comment)
    'E116',  # unexpected indentation (comment)
    'E122',  # continuation line missing indentation or outdented
    'E126',  # continuation line over-indented for hanging indent
    'E129',  # visually indented line with same indent as next logical line
    'E131',  # continuation line unaligned for hanging indent
    'E731',  # do not assign a lambda expression, use a def
    'W503',  # line break before binary operator

    # These are a subset of the standard ignores pre-packaged for pycheck-pep8/pep8, but we need to
    # repeat here since we add our own above:
    'E111',  # indentation is not a multiple of four
    'E121',  # continuation line under-indented for hanging indent
    'E125',  # continuation line with same indent as next logical line
    'E127',  # continuation line over-indented for visual indent
    'E128',  # continuation line under-indented for visual indent
    'E301',  # expected 1 blank line, found 0  # We allow consecutive exception declarations.
    'E401',  # multiple imports on one line
    'E701',  # multiple statements on one line (colon)  # We allow: `class Exc(Exception): pass`.
  ]


# We disable the class factoring check since it flags calls to superclass constructors from nested
# classes.  We do this commonly enough in nested exception classes.
# The error looks like so:
# T800 Instead of Context.CommandError use self.CommandError or cls.CommandError with
#      instancemethods and classmethods respectively.
[pycheck-class-factoring]
skip: True
