Configure pylint and update the code
This will allow us to run automatic checks for future commits. Change-Id: Idbf08a44df0a940de51fb418d99f90da19fa6dc3
This commit is contained in:
parent
c4808b303a
commit
5ecd401a0a
@ -15,18 +15,14 @@
|
||||
# under the License.
|
||||
|
||||
from anvil import action
|
||||
from anvil import colorizer
|
||||
from anvil import log
|
||||
from anvil.actions import start
|
||||
from anvil.actions import stop
|
||||
|
||||
from anvil.action import PhaseFunctors
|
||||
|
||||
LOG = log.getLogger(__name__)
|
||||
|
||||
|
||||
class RestartAction(action.Action):
|
||||
|
||||
def __init__(self, name, distro, root_dir, cli_opts):
|
||||
super(RestartAction, self).__init__(name, distro, root_dir, cli_opts)
|
||||
self.start = start.StartAction(name, distro, root_dir, cli_opts.copy())
|
||||
self.stop = stop.StopAction(name, distro, root_dir, cli_opts.copy())
|
||||
|
||||
|
@ -14,18 +14,12 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from anvil import colorizer
|
||||
from anvil import components as comp
|
||||
from anvil import downloader as down
|
||||
from anvil import exceptions as excp
|
||||
from anvil import log as logging
|
||||
from anvil import shell as sh
|
||||
from anvil import utils
|
||||
|
||||
from anvil.packaging import yum
|
||||
|
||||
from tempfile import NamedTemporaryFile
|
||||
|
||||
import binascii
|
||||
import os
|
||||
import re
|
||||
|
@ -21,7 +21,7 @@ import functools
|
||||
|
||||
|
||||
# http://wiki.python.org/moin/PythonDecoratorLibrary#Memoize
|
||||
class memoized(object):
|
||||
class memoized(object): # pylint: disable=C0103
|
||||
'''Decorator. Caches a function's return value each time it is called.
|
||||
If called later with the same arguments, the cached value is returned
|
||||
(not reevaluated).
|
||||
|
@ -32,7 +32,8 @@ from anvil import shell as sh
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
Component = collections.namedtuple("Component", 'entry_point,options,siblings')
|
||||
Component = collections.namedtuple( # pylint: disable=C0103
|
||||
"Component", 'entry_point,options,siblings')
|
||||
|
||||
|
||||
class Distro(object):
|
||||
|
@ -83,11 +83,11 @@ class HorizonInstaller(horizon.HorizonInstaller):
|
||||
# Directives in the configuration files are case-insensitive,
|
||||
# but arguments to directives are often case sensitive...
|
||||
# NOTE(harlowja): we aren't handling multi-line fixups...
|
||||
if re.match("^\s*User\s+(.*)$", line, re.I):
|
||||
if re.match(r"^\s*User\s+(.*)$", line, re.I):
|
||||
line = "User %s" % (user)
|
||||
if re.match("^\s*Group\s+(.*)$", line, re.I):
|
||||
if re.match(r"^\s*Group\s+(.*)$", line, re.I):
|
||||
line = "Group %s" % (group)
|
||||
if re.match("^\s*Listen\s+(.*)$", line, re.I):
|
||||
if re.match(r"^\s*Listen\s+(.*)$", line, re.I):
|
||||
line = "Listen 0.0.0.0:80"
|
||||
new_lines.append(line)
|
||||
with sh.Rooted(True):
|
||||
|
@ -17,6 +17,8 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
# pylint: disable=C0103
|
||||
|
||||
import logging
|
||||
import sys
|
||||
|
||||
|
@ -77,7 +77,7 @@ class GitChangeLog(object):
|
||||
if len(ret) == 1:
|
||||
ret = ret[0]
|
||||
else:
|
||||
ret = filter(lambda x: x.strip() != '', ret)
|
||||
ret = [x for x in ret if x.strip() != '']
|
||||
ret = "\n".join(ret)
|
||||
return ret
|
||||
|
||||
|
@ -14,8 +14,6 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from distutils import version as vr
|
||||
|
||||
import copy
|
||||
import pkg_resources
|
||||
import xmlrpclib
|
||||
|
@ -21,7 +21,6 @@ from anvil import shell as sh
|
||||
|
||||
from anvil.packaging.helpers import pip_helper
|
||||
|
||||
import pkg_resources
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
@ -91,7 +91,7 @@ class YumPackager(pack.Packager):
|
||||
non_same_versions_packages[p.name].append(p)
|
||||
|
||||
satisfying_packages = []
|
||||
for (name, packages) in non_same_versions_packages.items():
|
||||
for (_, packages) in non_same_versions_packages.items():
|
||||
if len(packages) == 1:
|
||||
satisfying_packages.extend(packages)
|
||||
else:
|
||||
|
@ -38,8 +38,8 @@ SHELL_QUOTE_REPLACERS = {
|
||||
"\"": "\\\"",
|
||||
"(": "\\(",
|
||||
")": "\\)",
|
||||
"$": '\$',
|
||||
'`': '\`',
|
||||
"$": "\\$",
|
||||
"`": "\\`",
|
||||
}
|
||||
|
||||
# Locally stash these so that they can not be changed
|
||||
|
@ -51,7 +51,7 @@ from anvil import version
|
||||
|
||||
from anvil.pprint import center_text
|
||||
|
||||
MONTY_PYTHON_TEXT_RE = re.compile("([a-z0-9A-Z\?!.,'\"]+)")
|
||||
MONTY_PYTHON_TEXT_RE = re.compile(r"([a-z0-9A-Z\?!.,'\"]+)")
|
||||
|
||||
# Thx cowsay
|
||||
# See: http://www.nog.net/~tony/warez/cowsay.shtml
|
||||
|
269
pylintrc
269
pylintrc
@ -1,42 +1,271 @@
|
||||
# The format of this file isn't really documented; just use --generate-rcfile
|
||||
[MASTER]
|
||||
|
||||
[Master]
|
||||
# Specify a configuration file.
|
||||
#rcfile=
|
||||
|
||||
[Messages Control]
|
||||
# Python code to execute, usually for sys.path manipulation such as
|
||||
# pygtk.require().
|
||||
#init-hook=
|
||||
|
||||
# Profiled execution.
|
||||
profile=no
|
||||
|
||||
# Add <file or directory> to the black list. It should be a base name, not a
|
||||
# path. You may set this option multiple times.
|
||||
|
||||
# ignore=
|
||||
|
||||
# Pickle collected data for later comparisons.
|
||||
persistent=yes
|
||||
|
||||
# List of plugins (as comma separated values of python modules names) to load,
|
||||
# usually to register additional checkers.
|
||||
load-plugins=
|
||||
|
||||
|
||||
[MESSAGES CONTROL]
|
||||
|
||||
# Enable the message, report, category or checker with the given id(s). You can
|
||||
# either give multiple identifier separated by comma (,) or put this option
|
||||
# multiple time.
|
||||
#enable=
|
||||
# Disable the message, report, category or checker with the given id(s). You
|
||||
# can either give multiple identifier separated by comma (,) or put this option
|
||||
# multiple time.
|
||||
# http://pylint-messages.wikidot.com/all-codes
|
||||
# NOTE(justinsb): We might want to have a 2nd strict pylintrc in future
|
||||
|
||||
# I0011: Locally disabling %s
|
||||
# I0012: Locally enabling %s
|
||||
# I0013: Ignoring entire file
|
||||
# C0111: Don't require docstrings on every method
|
||||
# E0213: We want different names for 'self', e. g. 'inner_self'
|
||||
# E0611: No name in module -- test cover that
|
||||
# E1101: Mocks make pylint type deduction crazy
|
||||
# E1103: When some types could not be inferred, we ignore pylint
|
||||
# F0401: Unable to import smth -- test cover that
|
||||
# R0201: Method could be a function
|
||||
# TODO(aababilov): remove similar lines
|
||||
# R0801: Similar lines in %s files
|
||||
# R0912: Too many branches (huh)
|
||||
# R0914: Too many local variables is odd.
|
||||
# R0922: Abstract class is only referenced %s times
|
||||
# W0141: Used builtin function %r
|
||||
# W0142: *args and **kwargs are fine.
|
||||
# W0212: Access to a protected member %s of a client class
|
||||
# W0223: Don't want to override all the abstract methods
|
||||
# W0232: Our models have no __init__ methods, but this is OK
|
||||
# W0401: Wildcard imports are fine
|
||||
# W0511: TODOs in code comments are fine.
|
||||
# W0603: Using the global statement
|
||||
# W0613: Unused argument '??' should be ok (they are useful sometimes to know intention of variable)
|
||||
# W0622: Redefining id is fine.
|
||||
disable=C0111,W0142,W0622,C0301,R0902,R0201,R0914,W0613,R0912,R0801
|
||||
# W0702: No exception type(s) specified
|
||||
# W0703: Catching "Exception" is fine if you need it
|
||||
disable=I0011,I0012,I0013,C0111,E0213,E0611,E1101,E1103,F0401,R0201,R0801,R0912,R0914,R0922,W0141,W0142,W0212,W0223,W0232,W0401,W0511,W0603,W0613,W0622,W0702,W0703
|
||||
|
||||
[Basic]
|
||||
[REPORTS]
|
||||
|
||||
# Variable names can be 1 to 31 characters long, with lowercase and underscores
|
||||
variable-rgx=[a-z_][a-z0-9_]{0,30}$
|
||||
# Set the output format. Available formats are text, parseable, colorized, msvs
|
||||
# (visual studio) and html
|
||||
output-format=parseable
|
||||
|
||||
# Argument names can be 2 to 31 characters long, with lowercase and underscores
|
||||
argument-rgx=[a-z_][a-z0-9_]{1,30}$
|
||||
# Include message's id in output
|
||||
include-ids=yes
|
||||
|
||||
# Method names should be at least 3 characters long
|
||||
# and be lowercased with underscores
|
||||
method-rgx=([a-z_][a-z0-9_]{2,50}|setUp|tearDown)$
|
||||
# Put messages in a separate file for each module / package specified on the
|
||||
# command line instead of printing them on stdout. Reports (if any) will be
|
||||
# written in a file name "pylint_global.[txt|html]".
|
||||
files-output=no
|
||||
|
||||
# Don't require docstrings on tests.
|
||||
no-docstring-rgx=((__.*__)|([tT]est.*)|setUp|tearDown)$
|
||||
# Tells whether to display a full report or only the messages
|
||||
reports=no
|
||||
|
||||
[Design]
|
||||
# Python expression which should return a note less than 10 (10 is the highest
|
||||
# note). You have access to the variables errors warning, statement which
|
||||
# respectively contain the number of errors / warnings messages and the total
|
||||
# number of statements analyzed. This is used by the global evaluation report
|
||||
# (R0004).
|
||||
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
|
||||
|
||||
max-public-methods=100
|
||||
min-public-methods=0
|
||||
max-args=6
|
||||
# Add a comment according to your evaluation note. This is used by the global
|
||||
# evaluation report (R0004).
|
||||
comment=no
|
||||
|
||||
[Variables]
|
||||
|
||||
[VARIABLES]
|
||||
|
||||
# Tells whether we should check for unused import in __init__ files.
|
||||
init-import=no
|
||||
|
||||
# A regular expression matching names used for dummy variables (i.e. not used).
|
||||
dummy-variables-rgx=.*_|dummy|error
|
||||
|
||||
# List of additional names supposed to be defined in builtins. Remember that
|
||||
# you should avoid to define new builtins when possible.
|
||||
additional-builtins=_
|
||||
|
||||
|
||||
[FORMAT]
|
||||
|
||||
# Maximum number of characters on a single line.
|
||||
# make it 80 some day
|
||||
max-line-length=150
|
||||
|
||||
# Maximum number of lines in a module
|
||||
# TODO(aababilov): make it 1024
|
||||
max-module-lines=2000
|
||||
|
||||
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
|
||||
# tab).
|
||||
indent-string=' '
|
||||
|
||||
|
||||
[SIMILARITIES]
|
||||
|
||||
# Minimum lines number of a similarity.
|
||||
min-similarity-lines=5
|
||||
|
||||
# Ignore comments when computing similarities.
|
||||
ignore-comments=yes
|
||||
|
||||
# Ignore docstrings when computing similarities.
|
||||
ignore-docstrings=yes
|
||||
|
||||
|
||||
[TYPECHECK]
|
||||
|
||||
# Tells whether missing members accessed in mixin class should be ignored. A
|
||||
# mixin class is detected if its name ends with "mixin" (case insensitive).
|
||||
ignore-mixin-members=yes
|
||||
|
||||
# List of classes names for which member attributes should not be checked
|
||||
# (useful for classes with attributes dynamically set).
|
||||
ignored-classes=UUID
|
||||
|
||||
# When zope mode is activated, add a predefined set of Zope acquired attributes
|
||||
# to generated-members.
|
||||
zope=no
|
||||
|
||||
# List of members which are set dynamically and missed by pylint inference
|
||||
# system, and so shouldn't trigger E0201 when accessed.
|
||||
generated-members=AndReturn
|
||||
|
||||
|
||||
[MISCELLANEOUS]
|
||||
|
||||
# List of note tags to take in consideration, separated by a comma.
|
||||
notes=FIXME,XXX,TODO
|
||||
|
||||
|
||||
[BASIC]
|
||||
|
||||
# Required attributes for module, separated by a comma
|
||||
required-attributes=
|
||||
|
||||
# List of builtins function names that should not be used, separated by a comma
|
||||
bad-functions=map,filter,apply,input
|
||||
|
||||
# Regular expression which should only match correct module names
|
||||
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
|
||||
|
||||
# Regular expression which should only match correct module level names
|
||||
# NOTE(aababilov): allow contants have names like variables
|
||||
const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__)|[a-z_][a-z0-9_]{0,30})$
|
||||
|
||||
# Regular expression which should only match correct class names
|
||||
class-rgx=[A-Z_][a-zA-Z0-9]+$
|
||||
|
||||
# Regular expression which should only match correct function names
|
||||
function-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression which should only match correct method names
|
||||
method-rgx=[a-z_][a-z0-9_]{2,30}|setUp|tearDown$
|
||||
|
||||
# Regular expression which should only match correct instance attribute names
|
||||
attr-rgx=[a-z_][a-z0-9_]{0,30}$
|
||||
|
||||
# Regular expression which should only match correct argument names
|
||||
# allow short names like `fn'
|
||||
argument-rgx=[a-z_][a-z0-9_]{1,30}$
|
||||
|
||||
# Regular expression which should only match correct variable names
|
||||
# variable-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
variable-rgx=[a-z_][a-z0-9_]{0,30}$
|
||||
|
||||
# Regular expression which should only match correct list comprehension /
|
||||
# generator expression variable names
|
||||
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
|
||||
|
||||
# Good variable names which should always be accepted, separated by a comma
|
||||
good-names=i,j,k,ex,Run,_
|
||||
|
||||
# Bad variable names which should always be refused, separated by a comma
|
||||
bad-names=foo,bar,baz,toto,tutu,tata
|
||||
|
||||
# Regular expression which should only match functions or classes name which do
|
||||
# not require a docstring
|
||||
no-docstring-rgx=__.*__
|
||||
|
||||
|
||||
[CLASSES]
|
||||
|
||||
# List of interface methods to ignore, separated by a comma. This is used for
|
||||
# instance to not check methods defines in Zope's Interface base class.
|
||||
ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by
|
||||
|
||||
# List of method names used to declare (i.e. assign) instance attributes.
|
||||
defining-attr-methods=__init__,__new__,setUp
|
||||
|
||||
|
||||
[IMPORTS]
|
||||
|
||||
# Deprecated modules which should not be used, separated by a comma
|
||||
deprecated-modules=regsub,string,TERMIOS,Bastion,rexec
|
||||
|
||||
# Create a graph of every (i.e. internal and external) dependencies in the
|
||||
# given file (report RP0402 must not be disabled)
|
||||
import-graph=
|
||||
|
||||
# Create a graph of external dependencies in the given file (report RP0402 must
|
||||
# not be disabled)
|
||||
ext-import-graph=
|
||||
|
||||
# Create a graph of internal dependencies in the given file (report RP0402 must
|
||||
# not be disabled)
|
||||
int-import-graph=
|
||||
|
||||
|
||||
[DESIGN]
|
||||
|
||||
# Maximum number of arguments for function / method
|
||||
# TODO(aababilov): make it 10
|
||||
max-args=13
|
||||
|
||||
# Argument names that match this expression will be ignored. Default to name
|
||||
# with leading underscore
|
||||
ignored-argument-names=_.*
|
||||
|
||||
# Maximum number of locals for function / method body
|
||||
max-locals=15
|
||||
|
||||
# Maximum number of return / yield for function / method body
|
||||
max-returns=6
|
||||
|
||||
# Maximum number of branch for function / method body
|
||||
max-branchs=12
|
||||
|
||||
# Maximum number of statements in function / method body
|
||||
# TODO(aababilov): make it 50
|
||||
max-statements=60
|
||||
|
||||
# Maximum number of parents for a class (see R0901).
|
||||
max-parents=7
|
||||
|
||||
# Maximum number of attributes for a class (see R0902).
|
||||
max-attributes=12
|
||||
|
||||
# Minimum number of public methods for a class (see R0903).
|
||||
min-public-methods=0
|
||||
|
||||
# Maximum number of public methods for a class (see R0904).
|
||||
max-public-methods=80
|
||||
|
10
setup.cfg
Normal file
10
setup.cfg
Normal file
@ -0,0 +1,10 @@
|
||||
[nosetests]
|
||||
verbosity=2
|
||||
|
||||
[build_sphinx]
|
||||
source-dir = docs/source
|
||||
build-dir = docs/build
|
||||
all_files = 1
|
||||
|
||||
[upload_sphinx]
|
||||
upload-dir = docs/build/html
|
@ -9,7 +9,7 @@ trap 'git stash pop -q' EXIT
|
||||
STATUS=0
|
||||
FILES="$(git diff --cached --name-only --diff-filter=AM | grep -E '\.py$')"
|
||||
if [ -n "$FILES" ]; then
|
||||
pep8 -r $FILES || STATUS=1
|
||||
pylint $FILES || STATUS=1
|
||||
if grep -nEH --color '(import pdb|pdb.set_trace)' $FILES; then
|
||||
echo "Please remove pdb"
|
||||
STATUS=1
|
||||
|
Loading…
Reference in New Issue
Block a user