itw-python-builder 0.1.2__tar.gz → 0.1.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: itw_python_builder
3
- Version: 0.1.2
3
+ Version: 0.1.6
4
4
  Summary: Standardized Django deployment pipeline with Docker, testing, and SonarQube integration
5
5
  Author-email: IT-Works <contact@it-works.io>
6
6
  License: MIT
@@ -5,6 +5,10 @@
5
5
  # only in one or another interpreter, leading to false positives when analysed.
6
6
  analyse-fallback-blocks=no
7
7
 
8
+ # Clear in-memory caches upon conclusion of linting. Useful if running pylint
9
+ # in a server-like mode.
10
+ clear-cache-post-run=no
11
+
8
12
  # Load and enable all available extensions. Use --list-extensions to see a list
9
13
  # all available extensions.
10
14
  #enable-all-extensions=
@@ -35,7 +39,7 @@ extension-pkg-whitelist=
35
39
  fail-on=
36
40
 
37
41
  # Specify a score threshold under which the program will exit with error.
38
- fail-under=8.0
42
+ fail-under=8.5
39
43
 
40
44
  # Interpret the stdin as a python script, whose filename needs to be passed as
41
45
  # the module_or_package argument.
@@ -57,10 +61,11 @@ ignore-paths=.*\.venv.*,
57
61
  # Emacs file locks
58
62
  ignore-patterns=^\.#
59
63
 
60
- # List of module names for which member attributes should not be checked
61
- # (useful for modules/projects where namespaces are manipulated during runtime
62
- # and thus existing member attributes cannot be deduced by static analysis). It
63
- # supports qualified module names, as well as Unix pattern matching.
64
+ # List of module names for which member attributes should not be checked and
65
+ # will not be imported (useful for modules/projects where namespaces are
66
+ # manipulated during runtime and thus existing member attributes cannot be
67
+ # deduced by static analysis). It supports qualified module names, as well as
68
+ # Unix pattern matching.
64
69
  ignored-modules=
65
70
 
66
71
  # Python code to execute, usually for sys.path manipulation such as
@@ -79,28 +84,28 @@ limit-inference-results=100
79
84
 
80
85
  # List of plugins (as comma separated values of python module names) to load,
81
86
  # usually to register additional checkers.
82
- load-plugins=pylint_django,
83
- pylint.extensions.check_elif,
84
- pylint.extensions.bad_builtin,
85
- pylint.extensions.docparams,
86
- pylint.extensions.for_any_all,
87
- pylint.extensions.set_membership,
88
- pylint.extensions.code_style,
89
- pylint.extensions.overlapping_exceptions,
90
- pylint.extensions.typing,
91
- pylint.extensions.redefined_variable_type,
92
- pylint.extensions.comparison_placement
87
+ load-plugins=
93
88
 
94
89
  # Pickle collected data for later comparisons.
95
90
  persistent=yes
96
91
 
92
+ # Resolve imports to .pyi stubs if available. May reduce no-member messages and
93
+ # increase not-an-iterable messages.
94
+ prefer-stubs=no
95
+
97
96
  # Minimum Python version to use for version dependent checks. Will default to
98
97
  # the version used to run pylint.
99
- py-version=3.7.2
98
+ py-version=3.14
100
99
 
101
100
  # Discover python modules and packages in the file system subtree.
102
101
  recursive=no
103
102
 
103
+ # Add paths to the list of the source roots. Supports globbing patterns. The
104
+ # source root is an absolute path or a path relative to the current working
105
+ # directory used to determine a package namespace for modules located under the
106
+ # source root.
107
+ source-roots=
108
+
104
109
  # Allow loading of arbitrary C extensions. Extensions are imported into the
105
110
  # active Python interpreter and may run arbitrary code.
106
111
  unsafe-load-any-extension=no
@@ -108,8 +113,6 @@ unsafe-load-any-extension=no
108
113
  # In verbose mode, extra non-checker-related info will be displayed.
109
114
  #verbose=
110
115
 
111
- # Override per project via CLI: --django-settings-module=myproject.settings
112
- django-settings-module=backend.settings
113
116
 
114
117
  [BASIC]
115
118
 
@@ -119,7 +122,7 @@ argument-naming-style=snake_case
119
122
  # Regular expression matching correct argument names. Overrides argument-
120
123
  # naming-style. If left empty, argument names will be checked with the set
121
124
  # naming style.
122
- argument-rgx=[a-z_][a-z0-9_]{2,30}$
125
+ #argument-rgx=
123
126
 
124
127
  # Naming style matching correct attribute names.
125
128
  attr-naming-style=snake_case
@@ -127,7 +130,7 @@ attr-naming-style=snake_case
127
130
  # Regular expression matching correct attribute names. Overrides attr-naming-
128
131
  # style. If left empty, attribute names will be checked with the set naming
129
132
  # style.
130
- attr-rgx=[a-z_][a-z0-9_]{2,}$
133
+ #attr-rgx=
131
134
 
132
135
  # Bad variable names which should always be refused, separated by a comma.
133
136
  bad-names=foo,
@@ -147,7 +150,7 @@ class-attribute-naming-style=any
147
150
  # Regular expression matching correct class attribute names. Overrides class-
148
151
  # attribute-naming-style. If left empty, class attribute names will be checked
149
152
  # with the set naming style.
150
- class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
153
+ #class-attribute-rgx=
151
154
 
152
155
  # Naming style matching correct class constant names.
153
156
  class-const-naming-style=UPPER_CASE
@@ -162,7 +165,7 @@ class-naming-style=PascalCase
162
165
 
163
166
  # Regular expression matching correct class names. Overrides class-naming-
164
167
  # style. If left empty, class names will be checked with the set naming style.
165
- class-rgx=[A-Z_][a-zA-Z0-9]+$
168
+ #class-rgx=
166
169
 
167
170
  # Naming style matching correct constant names.
168
171
  const-naming-style=UPPER_CASE
@@ -170,7 +173,7 @@ const-naming-style=UPPER_CASE
170
173
  # Regular expression matching correct constant names. Overrides const-naming-
171
174
  # style. If left empty, constant names will be checked with the set naming
172
175
  # style.
173
- const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
176
+ #const-rgx=
174
177
 
175
178
  # Minimum line length for functions/classes that require docstrings, shorter
176
179
  # ones are exempt.
@@ -182,7 +185,7 @@ function-naming-style=snake_case
182
185
  # Regular expression matching correct function names. Overrides function-
183
186
  # naming-style. If left empty, function names will be checked with the set
184
187
  # naming style.
185
- function-rgx=[a-z_][a-z0-9_]{2,30}$
188
+ #function-rgx=
186
189
 
187
190
  # Good variable names which should always be accepted, separated by a comma.
188
191
  good-names=i,
@@ -190,16 +193,7 @@ good-names=i,
190
193
  k,
191
194
  ex,
192
195
  Run,
193
- _,
194
- pk,
195
- qs,
196
- id,
197
- db,
198
- e,
199
- f,
200
- ct,
201
- rs,
202
- fn
196
+ _
203
197
 
204
198
  # Good variable names regexes, separated by a comma. If names match any regex,
205
199
  # they will always be accepted
@@ -214,21 +208,21 @@ inlinevar-naming-style=any
214
208
  # Regular expression matching correct inline iteration names. Overrides
215
209
  # inlinevar-naming-style. If left empty, inline iteration names will be checked
216
210
  # with the set naming style.
217
- inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
211
+ #inlinevar-rgx=
218
212
 
219
213
  # Naming style matching correct method names.
220
214
  method-naming-style=snake_case
221
215
 
222
216
  # Regular expression matching correct method names. Overrides method-naming-
223
217
  # style. If left empty, method names will be checked with the set naming style.
224
- method-rgx=[a-z_][a-z0-9_]{2,}$
218
+ #method-rgx=
225
219
 
226
220
  # Naming style matching correct module names.
227
221
  module-naming-style=snake_case
228
222
 
229
223
  # Regular expression matching correct module names. Overrides module-naming-
230
224
  # style. If left empty, module names will be checked with the set naming style.
231
- module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
225
+ #module-rgx=
232
226
 
233
227
  # Colon-delimited sets of names that determine each other's naming style when
234
228
  # the name regexes allow several styles.
@@ -236,24 +230,37 @@ name-group=
236
230
 
237
231
  # Regular expression which should only match function or class names that do
238
232
  # not require a docstring.
239
- no-docstring-rgx=__.*__
233
+ no-docstring-rgx=^_
234
+
235
+ # Regular expression matching correct parameter specification variable names.
236
+ # If left empty, parameter specification variable names will be checked with
237
+ # the set naming style.
238
+ #paramspec-rgx=
240
239
 
241
240
  # List of decorators that produce properties, such as abc.abstractproperty. Add
242
241
  # to this list to register other decorators that produce valid properties.
243
242
  # These decorators are taken in consideration only for invalid-name.
244
243
  property-classes=abc.abstractproperty
245
244
 
245
+ # Regular expression matching correct type alias names. If left empty, type
246
+ # alias names will be checked with the set naming style.
247
+ #typealias-rgx=
248
+
246
249
  # Regular expression matching correct type variable names. If left empty, type
247
250
  # variable names will be checked with the set naming style.
248
251
  #typevar-rgx=
249
252
 
253
+ # Regular expression matching correct type variable tuple names. If left empty,
254
+ # type variable tuple names will be checked with the set naming style.
255
+ #typevartuple-rgx=
256
+
250
257
  # Naming style matching correct variable names.
251
258
  variable-naming-style=snake_case
252
259
 
253
260
  # Regular expression matching correct variable names. Overrides variable-
254
261
  # naming-style. If left empty, variable names will be checked with the set
255
262
  # naming style.
256
- variable-rgx=[a-z_][a-z0-9_]{2,30}$
263
+ #variable-rgx=
257
264
 
258
265
 
259
266
  [CLASSES]
@@ -265,15 +272,12 @@ check-protected-access-in-special-methods=no
265
272
  defining-attr-methods=__init__,
266
273
  __new__,
267
274
  setUp,
275
+ asyncSetUp,
268
276
  __post_init__
269
277
 
270
278
  # List of member names, which should be excluded from the protected access
271
279
  # warning.
272
- exclude-protected=_asdict,
273
- _fields,
274
- _replace,
275
- _source,
276
- _make
280
+ exclude-protected=_asdict,_fields,_replace,_source,_make,os._exit
277
281
 
278
282
  # List of valid names for the first argument in a class method.
279
283
  valid-classmethod-first-arg=cls
@@ -282,21 +286,6 @@ valid-classmethod-first-arg=cls
282
286
  valid-metaclass-classmethod-first-arg=mcs
283
287
 
284
288
 
285
- [CODE_STYLE]
286
-
287
- # Max line length for which to sill emit suggestions. Used to prevent optional
288
- # suggestions which would get split by a code formatter (e.g., black). Will
289
- # default to the setting for ``max-line-length``.
290
- max-line-length-suggestions=0
291
-
292
-
293
- [DEPRECATED_BUILTINS]
294
-
295
- # List of builtins function names that should not be used, separated by a comma
296
- bad-functions=map,
297
- input
298
-
299
-
300
289
  [DESIGN]
301
290
 
302
291
  # List of regular expressions of class ancestor names to ignore when counting
@@ -308,31 +297,34 @@ exclude-too-few-public-methods=
308
297
  ignored-parents=
309
298
 
310
299
  # Maximum number of arguments for function / method.
311
- max-args=10
300
+ max-args=5
312
301
 
313
302
  # Maximum number of attributes for a class (see R0902).
314
- max-attributes=11
303
+ max-attributes=7
315
304
 
316
305
  # Maximum number of boolean expressions in an if statement (see R0916).
317
306
  max-bool-expr=5
318
307
 
319
308
  # Maximum number of branch for function / method body.
320
- max-branches=27
309
+ max-branches=12
321
310
 
322
311
  # Maximum number of locals for function / method body.
323
- max-locals=25
312
+ max-locals=15
324
313
 
325
314
  # Maximum number of parents for a class (see R0901).
326
315
  max-parents=7
327
316
 
317
+ # Maximum number of positional arguments for function / method.
318
+ max-positional-arguments=5
319
+
328
320
  # Maximum number of public methods for a class (see R0904).
329
- max-public-methods=25
321
+ max-public-methods=20
330
322
 
331
323
  # Maximum number of return / yield for function / method body.
332
- max-returns=11
324
+ max-returns=6
333
325
 
334
326
  # Maximum number of statements in function / method body.
335
- max-statements=100
327
+ max-statements=50
336
328
 
337
329
  # Minimum number of public methods for a class (see R0903).
338
330
  min-public-methods=2
@@ -341,7 +333,7 @@ min-public-methods=2
341
333
  [EXCEPTIONS]
342
334
 
343
335
  # Exceptions that will emit a warning when caught.
344
- overgeneral-exceptions=builtins.Exception
336
+ overgeneral-exceptions=builtins.BaseException,builtins.Exception
345
337
 
346
338
 
347
339
  [FORMAT]
@@ -359,11 +351,13 @@ indent-after-paren=4
359
351
  # tab).
360
352
  indent-string=' '
361
353
 
362
- # Maximum number of characters on a single line.
363
- max-line-length=160
354
+ # Maximum number of characters on a single line. Pylint's default of 100 is
355
+ # based on PEP 8's guidance that teams may choose line lengths up to 99
356
+ # characters.
357
+ max-line-length=800
364
358
 
365
359
  # Maximum number of lines in a module.
366
- max-module-lines=2000
360
+ max-module-lines=1000
367
361
 
368
362
  # Allow the body of a class to be on the same line as the declaration if body
369
363
  # contains single statement.
@@ -380,14 +374,14 @@ single-line-if-stmt=no
380
374
  # one.
381
375
  allow-any-import-level=
382
376
 
377
+ # Allow explicit reexports by alias from a package __init__.
378
+ allow-reexport-from-package=no
379
+
383
380
  # Allow wildcard imports from modules that define __all__.
384
381
  allow-wildcard-with-all=no
385
382
 
386
383
  # Deprecated modules which should not be used, separated by a comma.
387
- deprecated-modules=regsub,
388
- TERMIOS,
389
- Bastion,
390
- rexec
384
+ deprecated-modules=
391
385
 
392
386
  # Output a graph (.gv or any supported image format) of external dependencies
393
387
  # to the given file (report RP0402 must not be disabled).
@@ -445,66 +439,23 @@ confidence=HIGH,
445
439
  # no Warning level messages displayed, use "--disable=all --enable=classes
446
440
  # --disable=W".
447
441
  disable=raw-checker-failed,
442
+ W0223,
443
+ E1101,
448
444
  bad-inline-option,
449
445
  locally-disabled,
450
446
  file-ignored,
451
447
  suppressed-message,
448
+ useless-suppression,
452
449
  deprecated-pragma,
453
- attribute-defined-outside-init,
454
- invalid-name,
455
- missing-module-docstring,
456
- missing-class-docstring,
457
- missing-function-docstring,
458
- protected-access,
459
- too-few-public-methods,
460
- line-too-long,
461
- too-many-lines,
462
- trailing-whitespace,
463
- missing-final-newline,
464
- trailing-newlines,
465
- bad-indentation,
466
- unnecessary-semicolon,
467
- multiple-statements,
468
- superfluous-parens,
469
- mixed-line-endings,
470
- unexpected-line-ending-format,
471
- fixme,
472
- cyclic-import,
473
- missing-param-doc,
474
- missing-type-doc,
475
- missing-return-doc,
476
- missing-return-type-doc,
477
- missing-raises-doc,
478
- missing-any-param-doc,
479
- wrong-import-order,
480
- ungrouped-imports,
481
- wrong-import-position,
482
- import-outside-toplevel,
483
- too-many-ancestors,
484
- consider-using-f-string,
485
- consider-using-dict-items,
486
- consider-iterating-dictionary,
487
- unused-argument,
488
- wildcard-import,
489
- unused-wildcard-import,
490
- super-with-arguments,
491
- trailing-comma-tuple,
492
- too-many-positional-arguments,
493
- broad-exception-raised,
494
- broad-exception-caught,
495
- logging-fstring-interpolation,
496
- consider-using-in,
497
- else-if-used,
498
- too-many-nested-blocks,
499
- too-many-arguments
450
+ use-symbolic-message-instead,
451
+ use-implicit-booleaness-not-comparison-to-string,
452
+ use-implicit-booleaness-not-comparison-to-zero
500
453
 
501
454
  # Enable the message, report, category or checker with the given id(s). You can
502
455
  # either give multiple identifier separated by comma (,) or put this option
503
456
  # multiple time (only on the command line, not in the configuration file where
504
457
  # it should appear only once). See also the "--disable" option for examples.
505
- enable=useless-suppression,
506
- use-symbolic-message-instead,
507
- c-extension-no-member
458
+ enable=
508
459
 
509
460
 
510
461
  [METHOD_ARGS]
@@ -516,6 +467,9 @@ timeout-methods=requests.api.delete,requests.api.get,requests.api.head,requests.
516
467
 
517
468
  [MISCELLANEOUS]
518
469
 
470
+ # Whether or not to search for fixme's in docstrings.
471
+ check-fixme-in-docstring=no
472
+
519
473
  # List of note tags to take in consideration, separated by a comma.
520
474
  notes=FIXME,
521
475
  XXX,
@@ -525,29 +479,6 @@ notes=FIXME,
525
479
  notes-rgx=
526
480
 
527
481
 
528
- [PARAMETER_DOCUMENTATION]
529
-
530
- # Whether to accept totally missing parameter documentation in the docstring of
531
- # a function that has parameters.
532
- accept-no-param-doc=yes
533
-
534
- # Whether to accept totally missing raises documentation in the docstring of a
535
- # function that raises an exception.
536
- accept-no-raise-doc=yes
537
-
538
- # Whether to accept totally missing return documentation in the docstring of a
539
- # function that returns a statement.
540
- accept-no-return-doc=yes
541
-
542
- # Whether to accept totally missing yields documentation in the docstring of a
543
- # generator.
544
- accept-no-yields-doc=yes
545
-
546
- # If the docstring type cannot be guessed the specified docstring type will be
547
- # used.
548
- default-docstring-type=default
549
-
550
-
551
482
  [REFACTORING]
552
483
 
553
484
  # Maximum number of nested blocks for function / method body
@@ -559,6 +490,11 @@ max-nested-blocks=5
559
490
  # printed.
560
491
  never-returning-functions=sys.exit,argparse.parse_error
561
492
 
493
+ # Let 'consider-using-join' be raised when the separator to join on would be
494
+ # non-empty (resulting in expected fixes of the type: ``"- " + " -
495
+ # ".join(items)``)
496
+ suggest-join-with-non-empty-separator=yes
497
+
562
498
 
563
499
  [REPORTS]
564
500
 
@@ -573,9 +509,10 @@ evaluation=max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor
573
509
  # used to format the message information. See doc for all details.
574
510
  msg-template=
575
511
 
576
- # Set the output format. Available formats are text, parseable, colorized, json
577
- # and msvs (visual studio). You can also give a reporter class, e.g.
578
- # mypackage.mymodule.MyReporterClass.
512
+ # Set the output format. Available formats are: 'text', 'parseable',
513
+ # 'colorized', 'json2' (improved json format), 'json' (old json format), msvs
514
+ # (visual studio) and 'github' (GitHub actions). You can also give a reporter
515
+ # class, e.g. mypackage.mymodule.MyReporterClass.
579
516
  #output-format=
580
517
 
581
518
  # Tells whether to display a full report or only the messages.
@@ -600,27 +537,32 @@ ignore-imports=yes
600
537
  ignore-signatures=yes
601
538
 
602
539
  # Minimum lines number of a similarity.
603
- min-similarity-lines=6
540
+ min-similarity-lines=4
604
541
 
605
542
 
606
543
  [SPELLING]
607
544
 
608
545
  # Limits count of emitted suggestions for spelling mistakes.
609
- max-spelling-suggestions=2
610
-
611
- # Spelling dictionary name. Available dictionaries: none. To make it work,
612
- # install the 'python-enchant' package.
546
+ max-spelling-suggestions=4
547
+
548
+ # Spelling dictionary name. Available dictionaries: en_AG (hunspell), en_AU
549
+ # (hunspell), en_BS (hunspell), en_BW (hunspell), en_BZ (hunspell), en_CA
550
+ # (hunspell), en_DK (hunspell), en_GB (hunspell), en_GH (hunspell), en_HK
551
+ # (hunspell), en_IE (hunspell), en_IN (hunspell), en_JM (hunspell), en_MW
552
+ # (hunspell), en_NA (hunspell), en_NG (hunspell), en_NZ (hunspell), en_PH
553
+ # (hunspell), en_SG (hunspell), en_TT (hunspell), en_US (hunspell), en_ZA
554
+ # (hunspell), en_ZM (hunspell), en_ZW (hunspell).
613
555
  spelling-dict=
614
556
 
615
557
  # List of comma separated words that should be considered directives if they
616
558
  # appear at the beginning of a comment and should not be checked.
617
- spelling-ignore-comment-directives=fmt: on,fmt: off,noqa:,noqa,nosec,isort:skip,mypy:,pragma:,# noinspection
559
+ spelling-ignore-comment-directives=fmt: on,fmt: off,noqa:,noqa,nosec,isort:skip,mypy:
618
560
 
619
561
  # List of comma separated words that should not be checked.
620
562
  spelling-ignore-words=
621
563
 
622
564
  # A path to a file that contains the private dictionary; one word per line.
623
- spelling-private-dict-file=.pyenchant_pylint_custom_dict.txt
565
+ spelling-private-dict-file=
624
566
 
625
567
  # Tells whether to store unknown words to the private dictionary (see the
626
568
  # --spelling-private-dict-file option) instead of raising a message.
@@ -648,15 +590,7 @@ contextmanager-decorators=contextlib.contextmanager
648
590
  # List of members which are set dynamically and missed by pylint inference
649
591
  # system, and so shouldn't trigger E1101 when accessed. Python regular
650
592
  # expressions are accepted.
651
- generated-members=REQUEST,
652
- acl_users,
653
- aq_parent,
654
- argparse.Namespace,
655
- objects,
656
- DoesNotExist,
657
- id,
658
- pk,
659
- MultipleObjectsReturned
593
+ generated-members=
660
594
 
661
595
  # Tells whether to warn about missing members when the owner of the attribute
662
596
  # is inferred to be None.
@@ -679,13 +613,13 @@ ignored-checks-for-mixins=no-member,
679
613
  # List of class names for which member attributes should not be checked (useful
680
614
  # for classes with dynamically set attributes). This supports the use of
681
615
  # qualified names.
682
- ignored-classes=SQLObject,optparse.Values,thread._local,_thread._local,WSGIRequest
616
+ ignored-classes=optparse.Values,thread._local,_thread._local,argparse.Namespace
683
617
 
684
618
  # Show a hint with possible names when a member name was not found. The aspect
685
619
  # of finding the hint is based on edit distance.
686
620
  missing-member-hint=yes
687
621
 
688
- # The minimum edit distance a name should have in order to be considered a
622
+ # The maximum edit distance a name should have in order to be considered a
689
623
  # similar match for a missing member name.
690
624
  missing-member-hint-distance=1
691
625
 
@@ -694,23 +628,12 @@ missing-member-hint-distance=1
694
628
  missing-member-max-choices=1
695
629
 
696
630
  # Regex pattern to define which classes are considered mixins.
697
- mixin-class-rgx=.*MixIn
631
+ mixin-class-rgx=.*[Mm]ixin
698
632
 
699
633
  # List of decorators that change the signature of a decorated function.
700
634
  signature-mutators=
701
635
 
702
636
 
703
- [TYPING]
704
-
705
- # Set to ``no`` if the app / library does **NOT** need to support runtime
706
- # introspection of type annotations. If you use type annotations
707
- # **exclusively** for type checking of an application, you're probably fine.
708
- # For libraries, evaluate if some users want to access the type hints at
709
- # runtime first, e.g., through ``typing.get_type_hints``. Applies to Python
710
- # versions 3.7 - 3.9
711
- runtime-typing=no
712
-
713
-
714
637
  [VARIABLES]
715
638
 
716
639
  # List of additional names supposed to be defined in builtins. Remember that
@@ -730,14 +653,14 @@ callbacks=cb_,
730
653
 
731
654
  # A regular expression matching the name of dummy variables (i.e. expected to
732
655
  # not be used).
733
- dummy-variables-rgx=_$|dummy
656
+ dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_
734
657
 
735
658
  # Argument names that match this expression will be ignored.
736
- ignored-argument-names=_.*
659
+ ignored-argument-names=_.*|^ignored_|^unused_
737
660
 
738
661
  # Tells whether we should check for unused import in __init__ files.
739
662
  init-import=no
740
663
 
741
664
  # List of qualified module names which can have objects that can redefine
742
665
  # builtins.
743
- redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io
666
+ redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io
@@ -143,12 +143,12 @@ def taginit(ctx: Context) -> None:
143
143
 
144
144
 
145
145
  @task
146
- def incrementrc(ctx: Context, skip_pipeline=False) -> None:
146
+ def incrementrc(ctx: Context, skip_pipeline=False, pylintrc=None) -> None:
147
147
  """Increment release candidate version and deploy"""
148
148
  check_branch(ctx)
149
149
  version = Version.read_from_file()
150
150
  version.increment_release_candidate()
151
- lint(ctx)
151
+ lint(ctx, pylintrc=pylintrc)
152
152
  tag_build_push(ctx, version, skip_pipeline)
153
153
  version.save_to_file()
154
154
  commit_version(ctx, version)
@@ -213,15 +213,16 @@ def test(ctx: Context, settings='backend.test_settings'):
213
213
 
214
214
 
215
215
  @task
216
- def lint(ctx: Context):
216
+ def lint(ctx: Context, pylintrc=None):
217
217
  """Run pylint, generate reports for SonarQube"""
218
218
  detect_and_activate_venv()
219
+ rcfile = pylintrc if pylintrc else PYLINTRC
219
220
  print("\n" + "=" * 60)
220
221
  print("Running pylint...")
221
222
  print("=" * 60)
222
223
  ctx.run(
223
224
  f'python -m pylint . '
224
- f'--rcfile={PYLINTRC} '
225
+ f'--rcfile={rcfile} '
225
226
  f'--output-format=parseable '
226
227
  f'--msg-template="{{path}}:{{line}}: [{{msg_id}}({{symbol}}), {{obj}}] {{msg}}" '
227
228
  f'> pylint-report.txt'
@@ -231,13 +232,14 @@ def lint(ctx: Context):
231
232
 
232
233
 
233
234
  @task
234
- def lintlocal(ctx: Context):
235
+ def lintlocal(ctx: Context, pylintrc=None):
235
236
  """Run pylint locally with human-readable output (no report files)"""
236
237
  detect_and_activate_venv()
238
+ rcfile = pylintrc if pylintrc else PYLINTRC
237
239
  print("\n" + "=" * 60)
238
240
  print("Running pylint...")
239
241
  print("=" * 60)
240
- ctx.run(f'python -m pylint . --exit-zero --output-format=parseable --rcfile={PYLINTRC}', warn=True)
242
+ ctx.run(f'python -m pylint . --exit-zero --output-format=parseable --rcfile={rcfile}', warn=True)
241
243
 
242
244
 
243
245
  @task
@@ -258,7 +260,7 @@ def analyze(ctx: Context):
258
260
  if not sonar_host or not sonar_token:
259
261
  raise RuntimeError('SONAR_HOST_URL and SONAR_TOKEN environment variables must be set.')
260
262
  ctx.run(
261
- f'podman run --rm -e SONAR_HOST_URL={sonar_host} -e SONAR_TOKEN={sonar_token} -e GIT_DEPTH={git_depth} --user=root -v $(pwd):/usr/src:Z docker.io/sonarsource/sonar-scanner-cli:latest -X -Dsonar.projectVersion={sonar_version}')
263
+ f'podman run --rm -e SONAR_HOST_URL={sonar_host} -e SONAR_TOKEN={sonar_token} -e GIT_DEPTH={git_depth} --user=root -v "$(pwd)":/usr/src:Z docker.io/sonarsource/sonar-scanner-cli:latest -X -Dsonar.projectVersion={sonar_version}')
262
264
 
263
265
 
264
266
  @task
@@ -299,19 +301,19 @@ def analyzelocal(ctx: Context):
299
301
  if not sonar_host or not sonar_token:
300
302
  raise RuntimeError('SONAR_HOST_URL and SONAR_TOKEN environment variables must be set.')
301
303
  ctx.run(
302
- f'podman run --rm -e SONAR_HOST_URL={sonar_host} -e SONAR_TOKEN={sonar_token} -e GIT_DEPTH={git_depth} --user=root -v $(pwd):/usr/src:Z docker.io/sonarsource/sonar-scanner-cli:latest -X -Dsonar.projectVersion={sonar_version}',
304
+ f'podman run --rm -e SONAR_HOST_URL={sonar_host} -e SONAR_TOKEN={sonar_token} -e GIT_DEPTH={git_depth} --user=root -v "$(pwd)":/usr/src:Z docker.io/sonarsource/sonar-scanner-cli:latest -X -Dsonar.projectVersion={sonar_version}',
303
305
  pty=True)
304
306
  print("✓ SonarQube analysis completed")
305
307
 
306
308
 
307
309
  @task
308
- def pipelinelocal(ctx: Context, settings='backend.test_settings'):
310
+ def pipelinelocal(ctx: Context, settings='backend.test_settings', pylintrc=None):
309
311
  """Local pipeline: lint → test → analyze → build"""
310
312
  detect_and_activate_venv()
311
313
  print("=" * 60)
312
314
  print("Step 1: Running lint...")
313
315
  print("=" * 60)
314
- lint(ctx)
316
+ lint(ctx, pylintrc=pylintrc)
315
317
 
316
318
  print("\n" + "=" * 60)
317
319
  print("Step 2: Running tests...")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: itw_python_builder
3
- Version: 0.1.2
3
+ Version: 0.1.6
4
4
  Summary: Standardized Django deployment pipeline with Docker, testing, and SonarQube integration
5
5
  Author-email: IT-Works <contact@it-works.io>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "itw_python_builder"
7
- version = "0.1.2"
7
+ version = "0.1.6"
8
8
  description = "Standardized Django deployment pipeline with Docker, testing, and SonarQube integration"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"