#       Licensed to the Apache Software Foundation (ASF) under one
#       or more contributor license agreements.  See the NOTICE file
#       distributed with this work for additional information
#       regarding copyright ownership.  The ASF licenses this file
#       to you 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.

line-length = 119
output-format = "full"
target-version = "py38"

lint.select = [
    # all flake8 & pep8 (except 'ignore' below)
    "F",
    "E",
    "W6",  # some deprecation checks
    "RUF100",  # unncessary noqa
    "RUF013",  # implicit Optional (=None)
    "ISC001",  # NIC001 in flake8 codes
    "B",
    "PGH",  # https://github.com/pre-commit/pygrep-hooks
    "S", # bandit
    "G010", # logging.warn
    "T10",  # debugger breakpoints
    "T20",  # print()
    "PLC",
    "PLE",
    "PLW",
    "FA",   # future annotations (to ensure compatibility with `target-version`)
]

lint.ignore = [
    'F401', # Imported but unused,
    'F811', # Redefinition of unused
    'F841', # Assigned to but never used
    'E731', # Do not assign a lambda expression, use a def
    'E741', # Ambiguous variable name: I,
    'E501', # Line too long
    'B006', # Do not use mutable data structures for argument defaults
    'B007', # Loop control variable not used within the loop body
    'B904', # use raise from
    'B905', # zip(strict=True) would be good, but need to closely evaluate all existing cases first
    'S101', # assert
    'S103', # permissive filesystem mask
    'S104', # network binding, which doesn't apply to our code, and gives false-positive on test IPs
    'S108', # temp files
    'S110', # try-except-pass, too many exist already
    'S303', # md5 & sha1
    'S311', # random
    'S324', # md5 & sha1
    'S603', # subprocess
    'S607', # partial path
    'PLW2901', # loop var overwritten
]

[lint.per-file-ignores]
'__init__.py' = ['F403']  # import *
'{**/alluratest/*,**/tests/*,run_tests}' = [
    'B011',  # assert False
    'T20',  # print
    'S105',  # hard-coded secrets
    'S106',  # hard-coded secrets
    'S107',  # hard-coded password
    'S314',  # XML parsing
    'S602',  # subprocess shell=True
    'S604',  # other shell=True
]
'{scripts,Allura/allura/scripts,Allura/allura/command}/*' = ['T20']  # print
'{fuse/accessfs.py,ForgeSVN/setup.py}' = ['T20']  # print
