blob: 5857719552f853e5616b561cb861017c42d8d746 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class Flake8(Package):
"""Package containing as many acceptable ``PEP8`` violations as possible.
All of these violations are exceptions that we allow in ``package.py`` files, and
Spack is more lenient than ``flake8`` is for things like URLs and long SHA sums.
See ``share/spack/qa/flake8_formatter.py`` for specifics of how we handle ``flake8``
exemptions.
"""
# Used to tell whether or not the package has been modified
state = "unmodified"
# Make sure pre-existing noqa is not interfered with
# note that black can sometimes fix shorter assignment statements by sticking them in
# parens and adding line breaks, e.g.:
#
# foo = (
# "too-long-string"
# )
#
# but the one below can't even be fixed that way -- you have to add noqa, or break
# it up inside parens yourself.
blatant_violation = "line-that-has-absolutely-no-execuse-for-being-over-99-characters-and-that-black-cannot-fix-with-parens" # noqa: E501
# All URL strings are exempt from line-length checks.
#
# flake8 normally would complain about these, but the fix it wants (a multi-line
# string) is ugbly, and we're more lenient since there are many places where Spack
# wants URLs in strings.
hg = "https://example.com/this-is-a-really-long-url/that-goes-over-99-characters/that-flake8-will-not-ignore-by-default"
list_url = "https://example.com/this-is-a-really-long-url/that-goes-over-99-characters/that-flake8-will-not-ignore-by-default"
git = "ssh://example.com/this-is-a-really-long-url/that-goes-over-99-characters/that-flake8-will-not-ignore-by-default"
# directives with URLs are exempt as well
version(
"1.0",
url="https://example.com/this-is-a-really-long-url/that-goes-over-99-characters/that-flake8-will-not-ignore-by-default",
)
#
# Also test URL comments (though flake8 will ignore these by default anyway)
#
# http://example.com/this-is-a-really-long-url/that-goes-over-99-characters/that-flake8-will-ignore-by-default
# https://example.com/this-is-a-really-long-url/that-goes-over-99-characters/that-flake8-will-ignore-by-default
# ftp://example.com/this-is-a-really-long-url/that-goes-over-99-characters/that-flake8-will-ignore-by-default
# ssh://example.com/this-is-a-really-long-url/that-goes-over-99-characters/that-flake8-will-ignore-by-default
# file://example.com/this-is-a-really-long-url/that-goes-over-99-characters/that-flake8-will-ignore-by-default
# Strings and comments with really long checksums require no noqa annotation.
sha512sum = "abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"
# the sha512sum is "abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"
def install(self, spec, prefix):
# Make sure lines with '# noqa' work as expected. Don't just
# remove them entirely. This will mess up the indentation of
# the following lines.
if (
"really-long-if-statement"
!= "this-string-is-so-long-that-it-is-over-the-line-limit-and-black-will-not-split-it-so-it-requires-noqa" # noqa: E501
):
pass
# sanity_check_prefix requires something in the install directory
mkdirp(prefix.bin)
# '@when' decorated functions are exempt from redefinition errors
@when("@2.0")
def install(self, spec, prefix):
# sanity_check_prefix requires something in the install directory
mkdirp(prefix.bin)
|