Skip to content

Commit ab4e4a3

Browse files
committed
add linting
1 parent 512d4a8 commit ab4e4a3

14 files changed

+857
-352
lines changed

Diff for: .github/workflows/ci.yml

+2-7
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
runs-on: ubuntu-latest
1515
strategy:
1616
matrix:
17-
python-version: [3.8]
17+
python-version: [3.6, 3.7, 3.8]
1818

1919
steps:
2020
- uses: actions/checkout@v2
@@ -24,9 +24,4 @@ jobs:
2424
python-version: ${{ matrix.python-version }}
2525
- name: Install, lint and unit tests
2626
run: |
27-
python3 -m venv .env
28-
source .env/bin/activate
29-
pip install --upgrade pip
30-
pip install -e .
31-
pip install -r requirements-test.txt
32-
python -m pytest -v tests -s
27+
make venv-lint-test

Diff for: .pylintrc

+331
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,331 @@
1+
[MASTER]
2+
3+
# Specify a configuration file.
4+
#rcfile=
5+
6+
# Python code to execute, usually for sys.path manipulation such as
7+
# pygtk.require().
8+
#init-hook=
9+
10+
# Profiled execution.
11+
profile=no
12+
13+
# Add files or directories to the blacklist. They should be base names, not
14+
# paths.
15+
ignore=CVS
16+
17+
# Pickle collected data for later comparisons.
18+
persistent=yes
19+
20+
# List of plugins (as comma separated values of python modules names) to load,
21+
# usually to register additional checkers.
22+
load-plugins=
23+
24+
25+
[MESSAGES CONTROL]
26+
27+
# Enable the message, report, category or checker with the given id(s). You can
28+
# either give multiple identifier separated by comma (,) or put this option
29+
# multiple time. See also the "--disable" option for examples.
30+
enable=indexing-exception,old-raise-syntax
31+
32+
# Disable the message, report, category or checker with the given id(s). You
33+
# can either give multiple identifiers separated by comma (,) or put this
34+
# option multiple times (only on the command line, not in the configuration
35+
# file where it should appear only once).You can also use "--disable=all" to
36+
# disable everything first and then reenable specific checks. For example, if
37+
# you want to run only the similarities checker, you can use "--disable=all
38+
# --enable=similarities". If you want to run only the classes checker, but have
39+
# no Warning level messages displayed, use"--disable=all --enable=classes
40+
# --disable=W"
41+
disable=design,similarities,no-self-use,attribute-defined-outside-init,locally-disabled,star-args,pointless-except,bad-option-value,global-statement,fixme,suppressed-message,useless-suppression,locally-enabled,no-member,no-name-in-module,import-error,unsubscriptable-object,unbalanced-tuple-unpacking,undefined-variable,not-context-manager,no-else-return,wrong-import-order,unnecessary-pass,logging-fstring-interpolation,logging-format-interpolation,C0330
42+
43+
44+
# Set the cache size for astng objects.
45+
cache-size=500
46+
47+
48+
[REPORTS]
49+
50+
# Set the output format. Available formats are text, parseable, colorized, msvs
51+
# (visual studio) and html. You can also give a reporter class, eg
52+
# mypackage.mymodule.MyReporterClass.
53+
output-format=text
54+
55+
# Put messages in a separate file for each module / package specified on the
56+
# command line instead of printing them on stdout. Reports (if any) will be
57+
# written in a file name "pylint_global.[txt|html]".
58+
files-output=no
59+
60+
# Tells whether to display a full report or only the messages
61+
reports=no
62+
63+
# Python expression which should return a note less than 10 (10 is the highest
64+
# note). You have access to the variables errors warning, statement which
65+
# respectively contain the number of errors / warnings messages and the total
66+
# number of statements analyzed. This is used by the global evaluation report
67+
# (RP0004).
68+
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
69+
70+
# Add a comment according to your evaluation note. This is used by the global
71+
# evaluation report (RP0004).
72+
comment=no
73+
74+
# Template used to display messages. This is a python new-style format string
75+
# used to format the message information. See doc for all details
76+
#msg-template=
77+
78+
79+
[TYPECHECK]
80+
81+
# Tells whether missing members accessed in mixin class should be ignored. A
82+
# mixin class is detected if its name ends with "mixin" (case insensitive).
83+
ignore-mixin-members=yes
84+
85+
# List of classes names for which member attributes should not be checked
86+
# (useful for classes with attributes dynamically set).
87+
ignored-classes=SQLObject
88+
89+
# When zope mode is activated, add a predefined set of Zope acquired attributes
90+
# to generated-members.
91+
zope=no
92+
93+
# List of members which are set dynamically and missed by pylint inference
94+
# system, and so shouldn't trigger E0201 when accessed. Python regular
95+
# expressions are accepted.
96+
generated-members=REQUEST,acl_users,aq_parent
97+
98+
# List of decorators that create context managers from functions, such as
99+
# contextlib.contextmanager.
100+
contextmanager-decorators=contextlib.contextmanager,contextlib2.contextmanager
101+
102+
103+
[VARIABLES]
104+
105+
# Tells whether we should check for unused import in __init__ files.
106+
init-import=no
107+
108+
# A regular expression matching the beginning of the name of dummy variables
109+
# (i.e. not used).
110+
dummy-variables-rgx=^\*{0,2}(_$|unused_|dummy_)
111+
112+
# List of additional names supposed to be defined in builtins. Remember that
113+
# you should avoid to define new builtins when possible.
114+
additional-builtins=
115+
116+
117+
[BASIC]
118+
119+
# Required attributes for module, separated by a comma
120+
required-attributes=
121+
122+
# List of builtins function names that should not be used, separated by a comma
123+
bad-functions=apply,input,reduce
124+
125+
126+
# Disable the report(s) with the given id(s).
127+
# All non-Google reports are disabled by default.
128+
disable-report=R0001,R0002,R0003,R0004,R0101,R0102,R0201,R0202,R0220,R0401,R0402,R0701,R0801,R0901,R0902,R0903,R0904,R0911,R0912,R0913,R0914,R0915,R0921,R0922,R0923
129+
130+
# Regular expression which should only match correct module names
131+
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
132+
133+
# Regular expression which should only match correct module level names
134+
const-rgx=^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$
135+
136+
# Regular expression which should only match correct class names
137+
class-rgx=^_?[A-Z][a-zA-Z0-9]*$
138+
139+
# Regular expression which should only match correct function names
140+
function-rgx=^(?:(?P<camel_case>_?[A-Z][a-zA-Z0-9]*)|(?P<snake_case>_?[a-z][a-z0-9_]*))$
141+
142+
# Regular expression which should only match correct method names
143+
method-rgx=^(?:(?P<exempt>__[a-z0-9_]+__|next)|(?P<camel_case>_{0,2}[A-Z][a-zA-Z0-9]*)|(?P<snake_case>_{0,2}[a-z][a-z0-9_]*))$
144+
145+
# Regular expression which should only match correct instance attribute names
146+
attr-rgx=^_{0,2}[a-z][a-z0-9_]*$
147+
148+
# Regular expression which should only match correct argument names
149+
argument-rgx=^[a-z][a-z0-9_]*$
150+
151+
# Regular expression which should only match correct variable names
152+
variable-rgx=^[a-z][a-z0-9_]*$
153+
154+
# Regular expression which should only match correct attribute names in class
155+
# bodies
156+
class-attribute-rgx=^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$
157+
158+
# Regular expression which should only match correct list comprehension /
159+
# generator expression variable names
160+
inlinevar-rgx=^[a-z][a-z0-9_]*$
161+
162+
# Good variable names which should always be accepted, separated by a comma
163+
good-names=main,_
164+
165+
# Bad variable names which should always be refused, separated by a comma
166+
bad-names=
167+
168+
# Regular expression which should only match function or class names that do
169+
# not require a docstring.
170+
no-docstring-rgx=(__.*__|main)
171+
172+
# Minimum line length for functions/classes that require docstrings, shorter
173+
# ones are exempt.
174+
docstring-min-length=10
175+
176+
177+
[FORMAT]
178+
179+
# Maximum number of characters on a single line.
180+
max-line-length=120
181+
182+
# Regexp for a line that is allowed to be longer than the limit.
183+
ignore-long-lines=(?x)
184+
(^\s*(import|from)\s
185+
|\$Id:\s\/\/depot\/.+#\d+\s\$
186+
|^[a-zA-Z_][a-zA-Z0-9_]*\s*=\s*("[^"]\S+"|'[^']\S+')
187+
|^\s*\#\ LINT\.ThenChange
188+
|^[^#]*\#\ type:\ [a-zA-Z_][a-zA-Z0-9_.,[\] ]*$
189+
|pylint
190+
|"""
191+
|\#
192+
|lambda
193+
|(https?|ftp):)
194+
195+
# Allow the body of an if to be on the same line as the test if there is no
196+
# else.
197+
single-line-if-stmt=y
198+
199+
# List of optional constructs for which whitespace checking is disabled
200+
no-space-check=
201+
202+
# Maximum number of lines in a module
203+
max-module-lines=99999
204+
205+
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
206+
# tab).
207+
indent-string=' '
208+
209+
210+
[SIMILARITIES]
211+
212+
# Minimum lines number of a similarity.
213+
min-similarity-lines=4
214+
215+
# Ignore comments when computing similarities.
216+
ignore-comments=yes
217+
218+
# Ignore docstrings when computing similarities.
219+
ignore-docstrings=yes
220+
221+
# Ignore imports when computing similarities.
222+
ignore-imports=no
223+
224+
225+
[MISCELLANEOUS]
226+
227+
# List of note tags to take in consideration, separated by a comma.
228+
notes=
229+
230+
231+
[IMPORTS]
232+
233+
# Deprecated modules which should not be used, separated by a comma
234+
deprecated-modules=regsub,TERMIOS,Bastion,rexec,sets
235+
236+
# Create a graph of every (i.e. internal and external) dependencies in the
237+
# given file (report RP0402 must not be disabled)
238+
import-graph=
239+
240+
# Create a graph of external dependencies in the given file (report RP0402 must
241+
# not be disabled)
242+
ext-import-graph=
243+
244+
# Create a graph of internal dependencies in the given file (report RP0402 must
245+
# not be disabled)
246+
int-import-graph=
247+
248+
extension-pkg-whitelist=_jsonnet
249+
250+
251+
[CLASSES]
252+
253+
# List of interface methods to ignore, separated by a comma. This is used for
254+
# instance to not check methods defines in Zope's Interface base class.
255+
ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by
256+
257+
# List of method names used to declare (i.e. assign) instance attributes.
258+
defining-attr-methods=__init__,__new__,setUp
259+
260+
# List of valid names for the first argument in a class method.
261+
valid-classmethod-first-arg=cls,class_
262+
263+
# List of valid names for the first argument in a metaclass class method.
264+
valid-metaclass-classmethod-first-arg=mcs
265+
266+
267+
[DESIGN]
268+
269+
# Maximum number of arguments for function / method
270+
max-args=5
271+
272+
# Argument names that match this expression will be ignored. Default to name
273+
# with leading underscore
274+
ignored-argument-names=_.*
275+
276+
# Maximum number of locals for function / method body
277+
max-locals=15
278+
279+
# Maximum number of return / yield for function / method body
280+
max-returns=6
281+
282+
# Maximum number of branch for function / method body
283+
max-branches=12
284+
285+
# Maximum number of statements in function / method body
286+
max-statements=50
287+
288+
# Maximum number of parents for a class (see R0901).
289+
max-parents=7
290+
291+
# Maximum number of attributes for a class (see R0902).
292+
max-attributes=7
293+
294+
# Minimum number of public methods for a class (see R0903).
295+
min-public-methods=2
296+
297+
# Maximum number of public methods for a class (see R0904).
298+
max-public-methods=20
299+
300+
301+
[EXCEPTIONS]
302+
303+
# Exceptions that will emit a warning when being caught. Defaults to
304+
# "Exception"
305+
overgeneral-exceptions=Exception,StandardError,BaseException
306+
307+
308+
[AST]
309+
310+
# Maximum line length for lambdas
311+
short-func-length=1
312+
313+
# List of module members that should be marked as deprecated.
314+
# All of the string functions are listed in 4.1.4 Deprecated string functions
315+
# in the Python 2.4 docs.
316+
deprecated-members=string.atof,string.atoi,string.atol,string.capitalize,string.expandtabs,string.find,string.rfind,string.index,string.rindex,string.count,string.lower,string.split,string.rsplit,string.splitfields,string.join,string.joinfields,string.lstrip,string.rstrip,string.strip,string.swapcase,string.translate,string.upper,string.ljust,string.rjust,string.center,string.zfill,string.replace,sys.exitfunc
317+
318+
319+
[DOCSTRING]
320+
321+
# List of exceptions that do not need to be mentioned in the Raises section of
322+
# a docstring.
323+
ignore-exceptions=AssertionError,NotImplementedError,StopIteration,TypeError
324+
325+
326+
327+
[TOKENS]
328+
329+
# Number of spaces of indent required when the last token on the preceding line
330+
# is an open (, [, or {.
331+
indent-after-paren=4

Diff for: Makefile

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
install: ## [Local development] Upgrade pip, install requirements, install package.
2+
python -m pip install -U pip
3+
python -m pip install -e .
4+
5+
install-dev: ## [Local development] Install test requirements
6+
python -m pip install -r requirements-test.txt
7+
8+
lint: ## [Local development] Run mypy, pylint and black
9+
python -m mypy clip_retrieval
10+
python -m pylint clip_retrieval
11+
python -m black --check -l 120 clip_retrieval
12+
13+
black: ## [Local development] Auto-format python code using black
14+
python -m black -l 120 .
15+
16+
venv-lint-test: ## [Continuous integration]
17+
python3 -m venv .env && . .env/bin/activate && make install install-dev lint test && rm -rf .env
18+
19+
test: ## [Local development] Run unit tests
20+
rm -rf tests/test_folder/
21+
python -m pytest -v --cov=clip_retrieval --cov-report term-missing --cov-fail-under 0.0 tests
22+
23+
.PHONY: help
24+
25+
help: # Run `make help` to get help on the make commands
26+
@grep -E '^[0-9a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'

0 commit comments

Comments
 (0)